Passed
Push — developer ( 762b64...a1cff0 )
by Radosław
20:19
created

CustomView_EditAjax_View::process()   C

Complexity

Conditions 13
Paths 96

Size

Total Lines 61
Code Lines 48

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 182

Importance

Changes 0
Metric Value
eloc 48
dl 0
loc 61
ccs 0
cts 37
cp 0
rs 6.6166
c 0
b 0
f 0
cc 13
nc 96
nop 1
crap 182

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
 * The contents of this file are subject to the vtiger CRM Public License Version 1.0
4
 * ("License"); You may not use this file except in compliance with the License
5
 * The Original Code is:  vtiger CRM Open Source
6
 * The Initial Developer of the Original Code is vtiger.
7
 * Portions created by vtiger are Copyright (C) vtiger.
8
 * All Rights Reserved.
9
 * Contributor(s): YetiForce S.A.
10
 * *********************************************************************************** */
11
12
class CustomView_EditAjax_View extends Vtiger_IndexAjax_View
13
{
14
	/** {@inheritdoc} */
15
	public function checkPermission(App\Request $request)
16
	{
17
		$sourceModule = $request->getByType('source_module', \App\Purifier::ALNUM);
18
		$permissions = false;
19
		if ($request->getBoolean('duplicate') || $request->isEmpty('record')) {
20
			$permissions = \App\Privilege::isPermitted($sourceModule, 'CreateCustomFilter');
21
		} else {
22
			$permissions = CustomView_Record_Model::getInstanceById($request->getInteger('record'))->isEditable();
23
		}
24
		if (!$permissions) {
25
			throw new \App\Exceptions\NoPermitted('LBL_PERMISSION_DENIED', 406);
26
		}
27
	}
28
29
	/** {@inheritdoc} */
30
	public function process(App\Request $request)
31
	{
32
		$viewer = $this->getViewer($request);
33
		$sourceModuleName = $request->getByType('source_module', \App\Purifier::ALNUM);
34
		$moduleName = $request->getModule();
35
		$record = $request->getInteger('record');
36
		if (is_numeric($sourceModuleName)) {
37
			$sourceModuleName = \App\Module::getModuleName($sourceModuleName);
38
		}
39
		$sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModuleName);
40
		$recordStructureModulesField = [];
41
		foreach ($sourceModuleModel->getFieldsByReference() as $referenceField) {
42
			if (!$referenceField->isActiveField()) {
43
				continue;
44
			}
45
			foreach ($referenceField->getReferenceList() as $relatedModuleName) {
46
				$recordStructureModulesField[$relatedModuleName][$referenceField->getFieldName()] = Vtiger_RecordStructure_Model::getInstanceForModule(Vtiger_Module_Model::getInstance($relatedModuleName))->getStructure();
47
			}
48
		}
49
		$invFields = [];
50
		if ($sourceModuleModel->isInventory()) {
51
			foreach ($sourceModuleModel->getInventoryModel()->getFields() as $invField) {
52
				if ($invField->isSearchable()) {
53
					$invFields['LBL_ADVANCED_BLOCK'][$invField->getColumnName()] = $invField;
54
				}
55
			}
56
		}
57
58
		if (!empty($record)) {
59
			$customViewModel = CustomView_Record_Model::getInstanceById($record);
60
			$viewer->assign('MODE', 'edit');
61
		} else {
62
			$customViewModel = new CustomView_Record_Model();
63
			$customViewModel->setModule($sourceModuleName);
64
			$viewer->assign('MODE', '');
65
		}
66
		$viewer->assign('ADVANCE_CRITERIA', $customViewModel->getConditions());
67
		$viewer->assign('DUPLICATE_FIELDS', $customViewModel->getDuplicateFields());
68
		$viewer->assign('CURRENTDATE', date('Y-n-j'));
69
		$viewer->assign('RECORD_STRUCTURE_RELATED_MODULES', $recordStructureModulesField);
70
		$viewer->assign('RECORD_STRUCTURE', Vtiger_RecordStructure_Model::getInstanceForModule($sourceModuleModel)->getStructure());
71
		$viewer->assign('RECORD_STRUCTURE_INV', $invFields);
72
		$viewer->assign('CUSTOMVIEW_MODEL', $customViewModel);
73
		if (!$request->getBoolean('duplicate')) {
74
			$viewer->assign('RECORD_ID', $record);
75
		}
76
		$viewer->assign('QUALIFIED_MODULE', $sourceModuleName);
77
		$viewer->assign('SOURCE_MODULE', $sourceModuleName);
78
		$viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
79
		if (0 === $customViewModel->get('presence') && !$request->getBoolean('duplicate')) {
80
			$viewer->assign('CV_PRIVATE_VALUE', App\CustomView::CV_STATUS_DEFAULT);
81
		} else {
82
			$viewer->assign('CV_PRIVATE_VALUE', App\CustomView::CV_STATUS_PRIVATE);
83
		}
84
		$viewer->assign('CV_PENDING_VALUE', App\CustomView::CV_STATUS_PENDING);
85
		$viewer->assign('CV_PUBLIC_VALUE', App\CustomView::CV_STATUS_PUBLIC);
86
		$viewer->assign('MODULE_MODEL', $sourceModuleModel);
87
		$viewer->assign('MID', $request->has('mid') ? $request->getInteger('mid') : null);
88
		$viewer->assign('RELATIONS', $sourceModuleModel->getRelations());
89
		$viewer->assign('ADVANCED_CONDITIONS', \App\Condition::validAdvancedConditions($customViewModel->getAdvancedConditions()));
90
		$viewer->view('EditView.tpl', $moduleName);
91
	}
92
}
93