PluginProbe
User Access Manager / 2.1.10
User Access Manager v2.1.10
2.3.20 2.3.19 2.3.18 2.3.17 2.3.16 2.3.15 2.3.14 2.3.13 trunk 0.6 0.6.1 0.6.2 0.7 0.7 Beta 0.7.0.1 0.8 0.8.0.1 0.8.0.2 0.9 0.9.1 0.9.1.1 0.9.1.2 0.9.1.3 0.9.1.4 1.0 All 136 releases
user-access-manager / src / ObjectMembership / UserMembershipHandler.php

UserMembershipHandler.php in User Access Manager 2.1.10, at src/ObjectMembership/UserMembershipHandler.php

169 lines 5.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * UserMembershipHandler.php
4 *
5 * The UserMembershipHandler class file.
6 *
7 * PHP versions 5
8 *
9 * @author Alexander Schneider <alexanderschneider85@gmail.com>
10 * @copyright 2008-2017 Alexander Schneider
11 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2
12 * @version SVN: $id$
13 * @link http://wordpress.org/extend/plugins/user-access-manager/
14 */
15 namespace UserAccessManager\ObjectMembership;
16
17 use UserAccessManager\Database\Database;
18 use UserAccessManager\Object\ObjectHandler;
19 use UserAccessManager\UserGroup\AbstractUserGroup;
20 use UserAccessManager\UserGroup\AssignmentInformation;
21 use UserAccessManager\UserGroup\AssignmentInformationFactory;
22 use UserAccessManager\Wrapper\Php;
23
24 /**
25 * Class UserMembershipHandler
26 *
27 * @package UserAccessManager\UserGroup
28 */
29 class UserMembershipHandler extends ObjectMembershipHandler
30 {
31 /**
32 * @var string
33 */
34 protected $generalObjectType = ObjectHandler::GENERAL_USER_OBJECT_TYPE;
35
36 /**
37 * @var Php
38 */
39 private $php;
40
41 /**
42 * @var ObjectHandler
43 */
44 private $objectHandler;
45
46 /**
47 * @var Database
48 */
49 private $database;
50
51 /**
52 * UserMembershipHandler constructor.
53 *
54 * @param AssignmentInformationFactory $assignmentInformationFactory
55 * @param Php $php
56 * @param Database $database
57 * @param ObjectHandler $objectHandler
58 *
59 * @throws \Exception
60 */
61 public function __construct(
62 AssignmentInformationFactory $assignmentInformationFactory,
63 Php $php,
64 Database $database,
65 ObjectHandler $objectHandler
66 ) {
67 parent::__construct($assignmentInformationFactory);
68
69 $this->php = $php;
70 $this->database = $database;
71 $this->objectHandler = $objectHandler;
72 }
73
74 /**
75 * Returns the object and type name.
76 *
77 * @param string $objectId
78 * @param string $typeName
79 *
80 * @return string
81 */
82 public function getObjectName($objectId, &$typeName = '')
83 {
84 $typeName = $this->generalObjectType;
85 $user = $this->objectHandler->getUser($objectId);
86 return ($user !== false) ? $user->display_name : $objectId;
87 }
88
89 /**
90 * Checks if the user is a member of the user group.
91 *
92 * @param AbstractUserGroup $userGroup
93 * @param bool $lockRecursive
94 * @param string $objectId
95 * @param null|AssignmentInformation $assignmentInformation
96 *
97 * @return bool
98 */
99 public function isMember(AbstractUserGroup $userGroup, $lockRecursive, $objectId, &$assignmentInformation = null)
100 {
101 $assignmentInformation = null;
102 $recursiveMembership = [];
103 $user = $this->objectHandler->getUser($objectId);
104
105 if ($user !== false) {
106 $capabilitiesTable = $this->database->getCapabilitiesTable();
107 $capabilities = (isset($user->{$capabilitiesTable}) === true) ? $user->{$capabilitiesTable} : [];
108
109 if (is_array($capabilities) === true && count($capabilities) > 0) {
110 $assignedRoles = $userGroup->getAssignedObjects(ObjectHandler::GENERAL_ROLE_OBJECT_TYPE);
111
112 $recursiveRoles = array_intersect(
113 array_keys($capabilities),
114 array_keys($assignedRoles)
115 );
116
117 if (count($recursiveRoles) > 0) {
118 $recursiveMembership[ObjectHandler::GENERAL_ROLE_OBJECT_TYPE] = array_combine(
119 $recursiveRoles,
120 $this->php->arrayFill(
121 0,
122 count($recursiveRoles),
123 $this->assignmentInformationFactory->createAssignmentInformation(
124 ObjectHandler::GENERAL_ROLE_OBJECT_TYPE
125 )
126 )
127 );
128 }
129 }
130 }
131
132 $isMember = $userGroup->isObjectAssignedToGroup(
133 $this->generalObjectType,
134 $objectId,
135 $assignmentInformation
136 );
137
138
139 return $this->checkAccessWithRecursiveMembership($isMember, $recursiveMembership, $assignmentInformation);
140 }
141
142 /**
143 * Returns the user role objects.
144 *
145 * @param AbstractUserGroup $userGroup
146 * @param bool $lockRecursive
147 * @param null $objectType
148 *
149 * @return array
150 */
151 public function getFullObjects(AbstractUserGroup $userGroup, $lockRecursive, $objectType = null)
152 {
153 $users = [];
154
155 $databaseUsers = (array)$this->database->getResults(
156 "SELECT ID, user_nicename
157 FROM {$this->database->getUsersTable()}"
158 );
159
160 foreach ($databaseUsers as $user) {
161 if ($userGroup->isObjectMember($this->generalObjectType, $user->ID) === true) {
162 $users[$user->ID] = $this->generalObjectType;
163 }
164 }
165
166 return $users;
167 }
168 }
169