|
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
|
|
|
|