PluginProbe
User Access Manager / 2.1.5
User Access Manager v2.1.5
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.5, at src/ObjectMembership/UserMembershipHandler.php

168 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 *
55 * @param AssignmentInformationFactory $assignmentInformationFactory
56 * @param Php $php
57 * @param Database $database
58 * @param ObjectHandler $objectHandler
59 */
60 public function __construct(
61 AssignmentInformationFactory $assignmentInformationFactory,
62 Php $php,
63 Database $database,
64 ObjectHandler $objectHandler
65 ) {
66 parent::__construct($assignmentInformationFactory);
67
68 $this->php = $php;
69 $this->database = $database;
70 $this->objectHandler = $objectHandler;
71 }
72
73 /**
74 * Returns the object and type name.
75 *
76 * @param string $objectId
77 * @param string $typeName
78 *
79 * @return string
80 */
81 public function getObjectName($objectId, &$typeName = '')
82 {
83 $typeName = $this->generalObjectType;
84 $user = $this->objectHandler->getUser($objectId);
85 return ($user !== false) ? $user->display_name : $objectId;
86 }
87
88 /**
89 * Checks if the user is a member of the user group.
90 *
91 * @param AbstractUserGroup $userGroup
92 * @param bool $lockRecursive
93 * @param string $objectId
94 * @param null|AssignmentInformation $assignmentInformation
95 *
96 * @return bool
97 */
98 public function isMember(AbstractUserGroup $userGroup, $lockRecursive, $objectId, &$assignmentInformation = null)
99 {
100 $assignmentInformation = null;
101 $recursiveMembership = [];
102 $user = $this->objectHandler->getUser($objectId);
103
104 if ($user !== false) {
105 $capabilitiesTable = $this->database->getCapabilitiesTable();
106 $capabilities = (isset($user->{$capabilitiesTable}) === true) ? $user->{$capabilitiesTable} : [];
107
108 if (is_array($capabilities) === true && count($capabilities) > 0) {
109 $assignedRoles = $userGroup->getAssignedObjects(ObjectHandler::GENERAL_ROLE_OBJECT_TYPE);
110
111 $recursiveRoles = array_intersect(
112 array_keys($capabilities),
113 array_keys($assignedRoles)
114 );
115
116 if (count($recursiveRoles) > 0) {
117 $recursiveMembership[ObjectHandler::GENERAL_ROLE_OBJECT_TYPE] = array_combine(
118 $recursiveRoles,
119 $this->php->arrayFill(
120 0,
121 count($recursiveRoles),
122 $this->assignmentInformationFactory->createAssignmentInformation(
123 ObjectHandler::GENERAL_ROLE_OBJECT_TYPE
124 )
125 )
126 );
127 }
128 }
129 }
130
131 $isMember = $userGroup->isObjectAssignedToGroup(
132 $this->generalObjectType,
133 $objectId,
134 $assignmentInformation
135 );
136
137
138 return $this->checkAccessWithRecursiveMembership($isMember, $recursiveMembership, $assignmentInformation);
139 }
140
141 /**
142 * Returns the user role objects.
143 *
144 * @param AbstractUserGroup $userGroup
145 * @param bool $lockRecursive
146 * @param null $objectType
147 *
148 * @return array
149 */
150 public function getFullObjects(AbstractUserGroup $userGroup, $lockRecursive, $objectType = null)
151 {
152 $users = [];
153
154 $databaseUsers = (array)$this->database->getResults(
155 "SELECT ID, user_nicename
156 FROM {$this->database->getUsersTable()}"
157 );
158
159 foreach ($databaseUsers as $user) {
160 if ($userGroup->isObjectMember($this->generalObjectType, $user->ID) === true) {
161 $users[$user->ID] = $this->generalObjectType;
162 }
163 }
164
165 return $users;
166 }
167 }
168