Passed
Push — developer ( 6b5868...bed0f9 )
by Radosław
22:42 queued 03:39
created

Settings_MailSmtp_SaveAjax_Action::updateSmtp()   D

Complexity

Conditions 12
Paths 320

Size

Total Lines 53
Code Lines 46

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 156

Importance

Changes 0
Metric Value
eloc 46
dl 0
loc 53
ccs 0
cts 44
cp 0
rs 4.6333
c 0
b 0
f 0
cc 12
nc 320
nop 1
crap 156

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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