/
create.class.php
54 lines (46 loc) · 2.08 KB
/
create.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
/**
* @package modx
* @subpackage processors.security.group.category
*/
class modSecurityAccessUserGroupSourceCreateProcessor extends modObjectCreateProcessor {
public $classKey = 'sources.modAccessMediaSource';
public $languageTopics = array('source','access','user');
public $permission = 'access_permissions';
public $elementType = 'source';
public function beforeSet() {
$policyId = $this->getProperty('policy');
$principalId = $this->getProperty('principal');
$target = $this->getProperty('target');
if ($principalId == null) {
$this->addFieldError('principal',$this->modx->lexicon('usergroup_err_ns'));
}
if (empty($policyId)) {
$this->addFieldError('policy',$this->modx->lexicon('access_policy_err_ns'));
}
/* validate for invalid data */
if (!empty($target)) {
/** @var modMediaSource $mediaSource */
$mediaSource = $this->modx->getObject('sources.modMediaSource',$target);
if (empty($mediaSource)) $this->addFieldError('target',$this->modx->lexicon('source_err_nf'));
if (!$mediaSource->checkPolicy('view')) $this->addFieldError('target',$this->modx->lexicon('access_denied'));
}
$policy = $this->modx->getObject('modAccessPolicy',$policyId);
if (empty($policy)) $this->addFieldError('policy',$this->modx->lexicon('access_policy_err_nf'));
return parent::beforeSave();
}
public function beforeSave() {
if ($this->doesAlreadyExist(array(
'principal' => $this->getProperty('principal'),
'principal_class' => 'modUserGroup',
'target' => $this->getProperty('target'),
'policy' => $this->getProperty('policy'),
'context_key' => $this->getProperty('context_key'),
))) {
$this->addFieldError('target',$this->modx->lexicon('access_source_err_ae'));
}
$this->object->set('principal_class','modUserGroup');
return parent::beforeSave();
}
}
return 'modSecurityAccessUserGroupSourceCreateProcessor';