1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/** |
4
|
|
|
* MailSmtp SaveAjax action model class. |
5
|
|
|
* |
6
|
|
|
* @copyright YetiForce S.A. |
7
|
|
|
* @license YetiForce Public License 6.5 (licenses/LicenseEN.txt or yetiforce.com) |
8
|
|
|
* @author Adrian Koń <[email protected]> |
9
|
|
|
*/ |
10
|
|
|
class Settings_MailSmtp_SaveAjax_Action extends Settings_Vtiger_Basic_Action |
11
|
|
|
{ |
12
|
|
|
/** |
13
|
|
|
* Class constructor. |
14
|
|
|
*/ |
15
|
|
|
public function __construct() |
16
|
|
|
{ |
17
|
|
|
parent::__construct(); |
18
|
|
|
$this->exposeMethod('updateSmtp'); |
19
|
|
|
} |
20
|
|
|
|
21
|
|
|
/** |
22
|
|
|
* Function updates smtp configuration. |
23
|
|
|
* |
24
|
|
|
* @param \App\Request $request |
25
|
|
|
*/ |
26
|
|
|
public function updateSmtp(App\Request $request) |
27
|
|
|
{ |
28
|
|
|
$encryptInstance = \App\Encryption::getInstance(); |
29
|
|
|
$data = [ |
30
|
|
|
'mailer_type' => $request->getByType('mailer_type'), |
31
|
|
|
'password' => $encryptInstance->encrypt($request->getRaw('password')), |
32
|
|
|
'smtp_password' => $encryptInstance->encrypt($request->getRaw('smtp_password')), |
33
|
|
|
'default' => $request->isEmpty('default') ? 0 : $request->getInteger('default'), |
34
|
|
|
'name' => $request->getByType('name', 'Text'), |
35
|
|
|
'host' => $request->getByType('host', 'Text'), |
36
|
|
|
'port' => $request->getInteger('port'), |
37
|
|
|
'username' => $request->getByType('username', 'Text'), |
38
|
|
|
'authentication' => $request->isEmpty('authentication') ? 0 : $request->getInteger('authentication'), |
39
|
|
|
'secure' => $request->getByType('secure'), |
40
|
|
|
'options' => $request->getByType('options', 'Text'), |
41
|
|
|
'from_email' => $request->getByType('from_email', 'Text'), |
42
|
|
|
'from_name' => $request->getByType('from_name', 'Text'), |
43
|
|
|
'reply_to' => $request->getByType('reply_to', 'Text'), |
44
|
|
|
'priority' => $request->getByType('priority', 'Text'), |
45
|
|
|
'confirm_reading_to' => $request->getByType('confirm_reading_to', 'Text'), |
46
|
|
|
'organization' => $request->getByType('organization', 'Text'), |
47
|
|
|
'unsubscribe' => App\Json::encode($request->getArray('unsubscribe', 'Text')), |
48
|
|
|
'individual_delivery' => $request->isEmpty('individual_delivery') ? 0 : $request->getInteger('individual_delivery'), |
49
|
|
|
'smtp_username' => $request->getByType('smtp_username', 'Text'), |
50
|
|
|
'smtp_host' => $request->getByType('smtp_host', 'Text'), |
51
|
|
|
'smtp_port' => $request->isEmpty('smtp_port') ? '' : $request->getInteger('smtp_port'), |
52
|
|
|
'smtp_folder' => \App\Purifier::decodeHtml($request->getByType('smtp_folder', 'Text')), |
53
|
|
|
'save_send_mail' => $request->isEmpty('save_send_mail') ? 0 : $request->getInteger('save_send_mail'), |
54
|
|
|
'smtp_validate_cert' => $request->isEmpty('smtp_validate_cert') ? 0 : $request->getInteger('smtp_validate_cert'), |
55
|
|
|
]; |
56
|
|
|
$mailer = new \App\Mailer(); |
57
|
|
|
$mailer->loadSmtp($data); |
58
|
|
|
$testMailer = $mailer->test(); |
59
|
|
|
if (isset($testMailer['result']) && false !== $testMailer['result']) { |
60
|
|
|
if (!empty($data['default'])) { |
61
|
|
|
App\Db::getInstance('admin')->createCommand()->update('s_#__mail_smtp', ['default' => 0])->execute(); |
62
|
|
|
} |
63
|
|
|
if (!$request->isEmpty('record')) { |
64
|
|
|
$recordModel = Settings_MailSmtp_Record_Model::getInstanceById($request->getInteger('record')); |
65
|
|
|
} else { |
66
|
|
|
$recordModel = Settings_MailSmtp_Record_Model::getCleanInstance(); |
67
|
|
|
} |
68
|
|
|
foreach ($data as $key => $value) { |
69
|
|
|
$recordModel->set($key, $value); |
70
|
|
|
} |
71
|
|
|
$recordModel->save(); |
72
|
|
|
$result = ['success' => true, 'url' => $recordModel->getDetailViewUrl()]; |
73
|
|
|
} else { |
74
|
|
|
$result = ['success' => false, 'message' => \App\Purifier::purify($testMailer['error'])]; |
75
|
|
|
} |
76
|
|
|
$response = new Vtiger_Response(); |
77
|
|
|
$response->setResult($result); |
78
|
|
|
$response->emit(); |
79
|
|
|
} |
80
|
|
|
} |
81
|
|
|
|