Passed
Pull Request — developer (#15831)
by Arkadiusz
20:14
created

Vtiger_TransferOwnership_Action::checkPermission()   B

Complexity

Conditions 8
Paths 2

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 72

Importance

Changes 0
Metric Value
eloc 9
dl 0
loc 12
ccs 0
cts 8
cp 0
rs 8.4444
c 0
b 0
f 0
cc 8
nc 2
nop 1
crap 72
1
<?php
2
/**
3
 * Transfer ownership modal action file.
4
 *
5
 * @package   Action
6
 *
7
 * @copyright YetiForce S.A.
8
 * @license   YetiForce Public License 5.0 (licenses/LicenseEN.txt or yetiforce.com)
9
 * @author    Mariusz Krzaczkowski <[email protected]>
10
 */
11
12
/**
13
 * Transfer ownership modal action class.
14
 */
15
class Vtiger_TransferOwnership_Action extends \App\Controller\Action
16
{
17
	/** {@inheritdoc} */
18
	public function checkPermission(App\Request $request)
19
	{
20
		$moduleName = $request->getModule();
21
		$currentUserPrivilegesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
22
		$sourceView = $request->getByType('sourceView');
23
		if (
24
			$currentUserPrivilegesModel->hasModuleActionPermission($moduleName, 'EditView')
25
			&& ('Detail' !== $sourceView && 'List' !== $sourceView)
26
			|| ('List' === $sourceView && !$currentUserPrivilegesModel->hasModuleActionPermission($moduleName, 'MassTransferOwnership'))
27
			|| ('Detail' === $sourceView && !$currentUserPrivilegesModel->hasModuleActionPermission($moduleName, 'DetailTransferOwnership'))
28
		) {
29
			throw new \App\Exceptions\NoPermitted('LBL_PERMISSION_DENIED', 406);
30
		}
31
	}
32
33
	/** {@inheritdoc} */
34
	public function process(App\Request $request)
35
	{
36
		$moduleName = $request->getModule();
37
		$transferOwnerId = $request->getInteger('transferOwnerId');
38
		$relatedModules = $request->getByType('related_modules', 'Text');
39
		$modelClassName = Vtiger_Loader::getComponentClassName('Model', 'TransferOwnership', $moduleName);
40
		$transferModel = new $modelClassName();
41
		if ($request->isEmpty('record', true)) {
42
			$recordIds = Vtiger_Mass_Action::getRecordsListFromRequest($request);
43
		} else {
44
			$recordIds = [$request->getInteger('record')];
45
		}
46
		$configMaxTransferRecords = App\Config::performance('maxMassTransferOwnershipRecords');
47
		if (\count($recordIds) > $configMaxTransferRecords) {
48
			$response = new Vtiger_Response();
49
			$response->setResult(['notify' => ['text' => \App\Language::translateArgs('LBL_SELECT_UP_TO_RECORDS', '_Base', $configMaxTransferRecords), 'type' => 'error']]);
50
			$response->emit();
51
			return;
52
		}
53
		if (!empty($recordIds)) {
54
			$transferModel->transferRecordsOwnership($moduleName, $transferOwnerId, $recordIds);
55
		}
56
		if (!empty($relatedModules)) {
57
			foreach ($relatedModules as $relatedData) {
58
				$explodedData = explode('::', $relatedData);
59
				$relatedModule = current($explodedData);
60
				$relatedModuleRecordIds = $transferModel->getRelatedModuleRecordIds($request, $recordIds, $relatedData);
61
				if (!empty($relatedModuleRecordIds)) {
62
					$transferModel->transferRecordsOwnership($relatedModule, $transferOwnerId, $relatedModuleRecordIds);
63
				}
64
			}
65
		}
66
		$response = new Vtiger_Response();
67
		$response->setResult(['success' => true]);
68
		$response->emit();
69
	}
70
}
71