Passed
Push — developer ( 5f736c...9195d5 )
by Mariusz
18:14
created

checkPermission()   A

Complexity

Conditions 5
Paths 4

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 7
c 1
b 0
f 0
dl 0
loc 10
rs 9.6111
cc 5
nc 4
nop 1
1
<?php
2
/**
3
 * Calendar extra sources modal view file.
4
 *
5
 * @package View
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
 * Calendar extra sources modal view class.
14
 */
15
class Vtiger_CalendarExtraSourcesModal_View extends \App\Controller\Modal
16
{
17
	/** {@inheritdoc} */
18
	public $modalIcon = 'fa-solid fa-code-branch';
19
	/** @var Vtiger_CalendarExtSource_Model Extra source model */
20
	private $source;
21
22
	/** {@inheritdoc} */
23
	public function checkPermission(App\Request $request)
24
	{
25
		$privileges = Users_Privileges_Model::getCurrentUserPrivilegesModel();
26
		if (!$privileges->hasModuleActionPermission($request->getModule(), 'CalendarExtraSources')) {
27
			throw new \App\Exceptions\NoPermitted('LBL_PERMISSION_DENIED', 406);
28
		}
29
		if (!$request->isEmpty('id', true)) {
30
			$this->source = Vtiger_CalendarExtSource_Model::getInstanceById($request->getInteger('id'));
31
			if (!$privileges->isAdminUser() && $this->source->get('user_id') != $privileges->getId()) {
32
				throw new \App\Exceptions\NoPermitted('ERR_NO_PERMISSIONS_FOR_THE_RECORD', 406);
33
			}
34
		}
35
	}
36
37
	/** {@inheritdoc} */
38
	public function preProcessAjax(App\Request $request)
39
	{
40
		if (!$request->has('target_module')) {
41
			parent::preProcessAjax($request);
42
		}
43
	}
44
45
	/** {@inheritdoc} */
46
	public function process(App\Request $request)
47
	{
48
		$viewer = $this->getViewer($request);
49
		$viewer->assign('SOURCE', $this->source);
50
		if ($request->has('target_module')) {
51
			$dynamicFields = [
52
				'target_module' => $request->getInteger('target_module'),
53
				'custom_view' => $request->getInteger('custom_view'),
54
				'type' => $request->getInteger('type'),
55
				'fieldid_a_date' => $request->getInteger('fieldid_a_date'),
56
				'fieldid_a_time' => $request->isEmpty('fieldid_a_time', true) ? 0 : $request->getInteger('fieldid_a_time'),
57
				'fieldid_b_date' => $request->isEmpty('fieldid_b_date', true) ? 0 : $request->getInteger('fieldid_b_date'),
58
				'fieldid_b_time' => $request->isEmpty('fieldid_b_time', true) ? 0 : $request->getInteger('fieldid_b_time'),
59
			];
60
			$isDynamic = true;
61
		} else {
62
			$dynamicFields = $this->source ? $this->source->getData() : [];
63
			$isDynamic = false;
64
		}
65
		$viewer->assign('IS_DYNAMIC', $isDynamic);
66
		$viewer->assign('DYNAMIC_FIELDS', $dynamicFields);
67
		$viewer->view('Calendar/ExtraSourcesModal.tpl', $request->getModule());
68
	}
69
70
	/** {@inheritdoc} */
71
	public function postProcessAjax(App\Request $request)
72
	{
73
		if (!$request->has('target_module')) {
74
			parent::postProcessAjax($request);
75
		}
76
	}
77
78
	/** {@inheritdoc} */
79
	public function getPageTitle(App\Request $request)
80
	{
81
		return \App\Language::translate('LBL_EXTRA_SOURCES', $request->getModule(), null, true, 'Calendar');
82
	}
83
}
84