-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCatalogedPrivilege.php
70 lines (62 loc) · 2.36 KB
/
CatalogedPrivilege.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
/*
You may not change or alter any portion of this comment or credits
of supporting developers from this source code or any supporting source code
which is considered copyrighted (c) material of the original comment or credit authors.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
namespace Xmf\Xadr;
use Xmf\Xadr\Catalog\Entry;
/**
* Privilege defines a privilege needed to complete an action
*
* A Privilege contains three items
* - a privilege name
* - an item the privilege applies to, this can be a symbolic name, or an
* integer (usually representing the id of a protected asset)
* - a Catalog that holds the privilege details. The catalog should have a
* privilege entry with the specified privilege name
*
* @category Xmf\Xadr\Privilege
* @package Xmf
* @author Richard Griffith <[email protected]>
* @copyright 2015 XOOPS Project (http://xoops.org)
* @license GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html)
* @link http://xoops.org
*/
class CatalogedPrivilege extends Privilege
{
/**
* @var Catalog $privilegeCatalog catalog used for privilege lookups
*/
protected $privilegeCatalog = null;
/**
* @param string $privilegeName the name of the entry being constructed
* @param string|integer $privilegeItem the item of the entry being constructed
* @param Catalog $privilegeCatalog the Catalog defining this privilege
*/
public function __construct($privilegeName, $privilegeItem, Catalog $privilegeCatalog)
{
parent::__construct($privilegeName, $privilegeItem);
$this->privilegeCatalog = $privilegeCatalog;
}
/**
* return a privilegeItem in a normal form
*
* @return integer|false id to use in Xoops privilege lookup
*/
public function getNormalizedPrivilegeItem()
{
$id = false;
if (0 < (int) $this->privilegeItem) {
return (int) $this->privilegeItem;
}
$permission = $this->privilegeCatalog->getEntry(Entry::PERMISSION, $this->privilegeName);
if ($permission instanceof \Xmf\Xadr\Catalog\Permission) {
$id = $permission->translateNameToItemId($this->privilegeItem);
}
return $id;
}
}