RoleMembershipHandler.php
3.07 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
/**
* RoleMembershipHandler.php
*
* The RoleMembershipHandler class file.
*
* PHP versions 5
*
* @author Alexander Schneider <alexanderschneider85@gmail.com>
* @copyright 2008-2017 Alexander Schneider
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2
* @version SVN: $id$
* @link http://wordpress.org/extend/plugins/user-access-manager/
*/
declare(strict_types=1);
namespace UserAccessManager\ObjectMembership;
use Exception;
use UserAccessManager\Object\ObjectHandler;
use UserAccessManager\UserGroup\AbstractUserGroup;
use UserAccessManager\UserGroup\AssignmentInformation;
use UserAccessManager\UserGroup\AssignmentInformationFactory;
use UserAccessManager\Wrapper\Wordpress;
/**
* Class RoleMembershipHandler
*
* @package UserAccessManager\UserGroup
*/
class RoleMembershipHandler extends ObjectMembershipHandler
{
/**
* @var Wordpress
*/
private $wordpress;
/**
* @var string
*/
protected $generalObjectType = ObjectHandler::GENERAL_ROLE_OBJECT_TYPE;
/**
* RoleMembershipHandler constructor.
* @param AssignmentInformationFactory $assignmentInformationFactory
* @param Wordpress $wordpress
* @throws Exception
*/
public function __construct(AssignmentInformationFactory $assignmentInformationFactory, Wordpress $wordpress)
{
parent::__construct($assignmentInformationFactory);
$this->wordpress = $wordpress;
}
/**
* Returns the object and type name.
* @param int|string $objectId
* @param string $typeName
* @return int|string
*/
public function getObjectName($objectId, &$typeName = '')
{
$typeName = $this->generalObjectType;
$roles = $this->wordpress->getRoles()->role_names;
return (isset($roles[$objectId]) === true) ? $roles[$objectId] : $objectId;
}
/**
* Checks if the role is a member of the user group.
* @param AbstractUserGroup $userGroup
* @param bool $lockRecursive
* @param int|string $objectId
* @param null|AssignmentInformation $assignmentInformation
* @return bool
*/
public function isMember(
AbstractUserGroup $userGroup,
bool $lockRecursive,
$objectId,
?AssignmentInformation &$assignmentInformation = null
): bool {
$isMember = $userGroup->isObjectAssignedToGroup(
$this->generalObjectType,
$objectId,
$assignmentInformation
);
$assignmentInformation = ($isMember === true) ? $assignmentInformation : null;
return $isMember;
}
/**
* Returns the full role objects.
* @param AbstractUserGroup $userGroup
* @param bool $lockRecursive
* @param null $objectType
* @return array
*/
public function getFullObjects(AbstractUserGroup $userGroup, bool $lockRecursive, $objectType = null): array
{
$objectType = ($objectType === null) ? $this->generalObjectType : $objectType;
return $this->getSimpleAssignedObjects($userGroup, $objectType);
}
}