PluginProbe
User Access Manager / 2.0.8
User Access Manager v2.0.8
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 / UserAccessManager / UserGroup / UserGroup.php

UserGroup.php in User Access Manager 2.0.8, at src/UserAccessManager/UserGroup/UserGroup.php

952 lines 26.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * UserGroup.php
4 *
5 * The UserGroup 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\UserGroup;
16
17 use UserAccessManager\Config\Config;
18 use UserAccessManager\Database\Database;
19 use UserAccessManager\ObjectHandler\ObjectHandler;
20 use UserAccessManager\Util\Util;
21 use UserAccessManager\Wrapper\Php;
22 use UserAccessManager\Wrapper\Wordpress;
23
24 /**
25 * Class UserGroup
26 *
27 * @package UserAccessManager\UserGroup
28 */
29 class UserGroup
30 {
31 const NONE_ROLE = '_none-role_';
32
33 /**
34 * @var Php
35 */
36 private $php;
37
38 /**
39 * @var Wordpress
40 */
41 private $wordpress;
42
43 /**
44 * @var Database
45 */
46 private $database;
47
48 /**
49 * @var Config
50 */
51 private $config;
52
53 /**
54 * @var Util
55 */
56 private $util;
57
58 /**
59 * @var ObjectHandler
60 */
61 private $objectHandler;
62
63 /**
64 * @var int
65 */
66 private $id = null;
67
68 /**
69 * @var string
70 */
71 private $name = null;
72
73 /**
74 * @var string
75 */
76 private $description = null;
77
78 /**
79 * @var string
80 */
81 private $readAccess = null;
82
83 /**
84 * @var string
85 */
86 private $writeAccess = null;
87
88 /**
89 * @var string
90 */
91 private $ipRange = null;
92
93 /**
94 * @var array
95 */
96 private $assignedObjects = [];
97
98 /**
99 * @var array
100 */
101 private $roleMembership = [];
102
103 /**
104 * @var array
105 */
106 private $userMembership = [];
107
108 /**
109 * @var array
110 */
111 private $termMembership = [];
112
113 /**
114 * @var array
115 */
116 private $postMembership = [];
117
118 /**
119 * @var array
120 */
121 private $pluggableObjectMembership = [];
122
123 /**
124 * @var array
125 */
126 private $fullObjectMembership = [];
127
128 /**
129 * UserGroup constructor.
130 *
131 * @param Php $php
132 * @param Wordpress $wordpress
133 * @param Database $database
134 * @param Config $config
135 * @param Util $util
136 * @param ObjectHandler $objectHandler
137 * @param null|string $id
138 */
139 public function __construct(
140 Php $php,
141 Wordpress $wordpress,
142 Database $database,
143 Config $config,
144 Util $util,
145 ObjectHandler $objectHandler,
146 $id = null
147 ) {
148 $this->php = $php;
149 $this->wordpress = $wordpress;
150 $this->database = $database;
151 $this->config = $config;
152 $this->util = $util;
153 $this->objectHandler = $objectHandler;
154
155 if ($id !== null) {
156 $this->load($id);
157 }
158 }
159
160 /*
161 * Primary values.
162 */
163
164 /**
165 * Returns the group _iId.
166 *
167 * @return integer
168 */
169 public function getId()
170 {
171 return $this->id;
172 }
173
174 /**
175 * Returns the group name.
176 *
177 * @return string
178 */
179 public function getName()
180 {
181 return $this->name;
182 }
183
184 /**
185 * Sets the group name.
186 *
187 * @param string $name The new group name.
188 */
189 public function setName($name)
190 {
191 $this->name = $name;
192 }
193
194 /**
195 * Returns the group description.
196 *
197 * @return string
198 */
199 public function getDescription()
200 {
201 return $this->description;
202 }
203
204 /**
205 * Sets the group description.
206 *
207 * @param string $description The new group description.
208 */
209 public function setDescription($description)
210 {
211 $this->description = $description;
212 }
213
214 /**
215 * Returns the read access.
216 *
217 * @return string
218 */
219 public function getReadAccess()
220 {
221 return $this->readAccess;
222 }
223
224 /**
225 * Sets the read access.
226 *
227 * @param string $readAccess The read access.
228 */
229 public function setReadAccess($readAccess)
230 {
231 $this->readAccess = $readAccess;
232 }
233
234 /**
235 * Returns the write access.
236 *
237 * @return string
238 */
239 public function getWriteAccess()
240 {
241 return $this->writeAccess;
242 }
243
244 /**
245 * Sets the write access.
246 *
247 * @param string $writeAccess The write access.
248 */
249 public function setWriteAccess($writeAccess)
250 {
251 $this->writeAccess = $writeAccess;
252 }
253
254 /**
255 * Returns the ip range.
256 *
257 * @return array|string
258 */
259 public function getIpRange()
260 {
261 return $this->ipRange;
262 }
263
264 /**
265 * Returns the ip range as array
266 *
267 * @return array
268 */
269 public function getIpRangeArray()
270 {
271 return explode(';', $this->ipRange);
272 }
273
274 /**
275 * Sets the ip range.
276 *
277 * @param string|array $ipRange The new ip range.
278 */
279 public function setIpRange($ipRange)
280 {
281 $this->ipRange = (is_array($ipRange) === true) ? implode(';', $ipRange) : $ipRange;
282 }
283
284 /**
285 * Loads the user group.
286 *
287 * @param $id
288 *
289 * @return bool
290 */
291 public function load($id)
292 {
293 $query = $this->database->prepare(
294 "SELECT *
295 FROM {$this->database->getUserGroupTable()}
296 WHERE ID = %s
297 LIMIT 1",
298 $id
299 );
300
301 $dbUserGroup = $this->database->getRow($query);
302
303 if ($dbUserGroup !== null) {
304 $this->id = $id;
305 $this->name = $dbUserGroup->groupname;
306 $this->description = $dbUserGroup->groupdesc;
307 $this->readAccess = $dbUserGroup->read_access;
308 $this->writeAccess = $dbUserGroup->write_access;
309 $this->ipRange = $dbUserGroup->ip_range;
310
311 return true;
312 }
313
314 return false;
315 }
316
317 /**
318 * Saves the user group.
319 *
320 * @return bool
321 */
322 public function save()
323 {
324 if ($this->id === null) {
325 $return = $this->database->insert(
326 $this->database->getUserGroupTable(),
327 [
328 'groupname' => $this->name,
329 'groupdesc' => $this->description,
330 'read_access' => $this->readAccess,
331 'write_access' => $this->writeAccess,
332 'ip_range' => $this->ipRange
333 ]
334 );
335
336 if ($return !== false) {
337 $this->id = $this->database->getLastInsertId();
338 }
339 } else {
340 $return = $this->database->update(
341 $this->database->getUserGroupTable(),
342 [
343 'groupname' => $this->name,
344 'groupdesc' => $this->description,
345 'read_access' => $this->readAccess,
346 'write_access' => $this->writeAccess,
347 'ip_range' => $this->ipRange
348 ],
349 ['ID' => $this->id]
350 );
351 }
352
353 return ($return !== false);
354 }
355
356 /**
357 * Deletes the user group.
358 *
359 * @return bool
360 */
361 public function delete()
362 {
363 if ($this->id === null) {
364 return false;
365 }
366
367 $success = $this->database->delete(
368 $this->database->getUserGroupTable(),
369 ['ID' => $this->id]
370 );
371
372 if ($success !== false) {
373 $allObjectTypes = $this->objectHandler->getAllObjectTypes();
374
375 foreach ($allObjectTypes as $objectType) {
376 $this->removeObject($objectType);
377 }
378 }
379
380 return $success;
381 }
382
383 /**
384 * Resets the objects
385 */
386 private function resetObjects()
387 {
388 $this->assignedObjects = [];
389 $this->roleMembership = [];
390 $this->userMembership = [];
391 $this->termMembership = [];
392 $this->postMembership = [];
393 $this->pluggableObjectMembership = [];
394 $this->fullObjectMembership = [];
395 }
396
397 /**
398 * Adds a object of the given type.
399 *
400 * @param string $objectType The object type.
401 * @param string $objectId The object id.
402 *
403 * @return bool
404 */
405 public function addObject($objectType, $objectId)
406 {
407 $generalObjectType = $this->objectHandler->getGeneralObjectType($objectType);
408
409 if ($generalObjectType === null
410 || $this->objectHandler->isValidObjectType($objectType) === false
411 ) {
412 return false;
413 }
414
415 $return = $this->database->insert(
416 $this->database->getUserGroupToObjectTable(),
417 [
418 'group_id' => $this->id,
419 'object_id' => $objectId,
420 'general_object_type' => $generalObjectType,
421 'object_type' => $objectType
422 ],
423 [
424 '%d',
425 '%s',
426 '%s',
427 '%s'
428 ]
429 );
430
431 if ($return !== false) {
432 $this->resetObjects();
433 return true;
434 }
435
436 return false;
437 }
438
439 /**
440 * Removes a object of the given type.
441 *
442 * @param string $objectType The object type.
443 * @param string $objectId The object id.
444 *
445 * @return bool
446 */
447 public function removeObject($objectType, $objectId = null)
448 {
449 if ($this->objectHandler->isValidObjectType($objectType) === false) {
450 return false;
451 }
452
453 $query = "DELETE FROM {$this->database->getUserGroupToObjectTable()}
454 WHERE group_id = %d
455 AND (general_object_type = '%s' OR object_type = '%s')";
456
457 $values = [
458 $this->id,
459 $objectType,
460 $objectType
461 ];
462
463 if ($objectId !== null) {
464 $query .= ' AND object_id = %d';
465 $values[] = $objectId;
466 }
467
468 $query = $this->database->prepare($query, $values);
469 $success = ($this->database->query($query) !== false);
470
471 if ($success === true) {
472 $this->resetObjects();
473 }
474
475 return $success;
476 }
477
478 /**
479 * Returns the assigned objects.
480 *
481 * @param string $objectType The object type.
482 *
483 * @return array
484 */
485 public function getAssignedObjects($objectType)
486 {
487 if (isset($this->assignedObjects[$objectType]) === false) {
488 $query = $this->database->prepare(
489 "SELECT object_id AS id, object_type AS objectType
490 FROM {$this->database->getUserGroupToObjectTable()}
491 WHERE group_id = %d
492 AND (general_object_type = '%s' OR object_type = '%s')",
493 [
494 $this->getId(),
495 $objectType,
496 $objectType
497 ]
498 );
499
500 $results = (array)$this->database->getResults($query);
501 $this->assignedObjects[$objectType] = [];
502
503 foreach ($results as $result) {
504 $this->assignedObjects[$objectType][$result->id] = $result->objectType;
505 }
506 }
507
508 return $this->assignedObjects[$objectType];
509 }
510
511 /**
512 * Checks if the object is assigned to the group.
513 *
514 * @param string $objectType The object type.
515 * @param string $objectId The object id.
516 *
517 * @return bool
518 */
519 private function isObjectAssignedToGroup($objectType, $objectId)
520 {
521 $assignedObjects = $this->getAssignedObjects($objectType);
522 return isset($assignedObjects[$objectId]);
523 }
524
525 /**
526 * Returns the recursive membership.
527 *
528 * @param \Closure $mapFunction
529 * @param string $objectType
530 * @param string $objectId
531 * @param array $recursiveMembership
532 *
533 * @return bool
534 */
535 private function isObjectRecursiveMember(
536 $mapFunction,
537 $objectType,
538 $objectId,
539 array &$recursiveMembership = []
540 ) {
541 // Reset value to prevent errors
542 $recursiveMembership = [];
543
544 if ($this->config->lockRecursive() === true) {
545 $map = $mapFunction();
546 $generalMap = isset($map[ObjectHandler::TREE_MAP_PARENTS][$objectType]) ?
547 $map[ObjectHandler::TREE_MAP_PARENTS][$objectType] : [];
548
549 if (isset($generalMap[$objectId]) === true) {
550 foreach ($generalMap[$objectId] as $parentId => $type) {
551 if ($this->isObjectAssignedToGroup($objectType, $parentId)) {
552 $recursiveMembership[$objectType][$parentId] = $type;
553 }
554 }
555 }
556 }
557
558 return $this->isObjectAssignedToGroup($objectType, $objectId)
559 || count($recursiveMembership) > 0;
560 }
561
562 /**
563 * Checks if the role is a group member.
564 *
565 * @param string $roleId
566 * @param array $recursiveMembership
567 *
568 * @return bool
569 */
570 public function isRoleMember($roleId, array &$recursiveMembership = [])
571 {
572 if (isset($this->roleMembership[$roleId]) === false) {
573 $recursiveMembership = [];
574 $isMember = $this->isObjectAssignedToGroup(ObjectHandler::GENERAL_ROLE_OBJECT_TYPE, $roleId);
575 $this->roleMembership[$roleId] = ($isMember === true) ? $recursiveMembership : false;
576 }
577
578 $recursiveMembership = ($this->roleMembership[$roleId] !== false) ? $this->roleMembership[$roleId] : [];
579
580 return ($this->roleMembership[$roleId] !== false);
581 }
582
583 /**
584 * Checks if the user is a group member.
585 *
586 * @param integer $userId The user id.
587 * @param array $recursiveMembership The recursive membership array.
588 *
589 * @return bool
590 */
591 public function isUserMember($userId, array &$recursiveMembership = [])
592 {
593 if (isset($this->userMembership[$userId]) === false) {
594 $recursiveMembership = [];
595 $user = $this->objectHandler->getUser($userId);
596
597 if ($user !== false) {
598 $capabilitiesTable = $this->database->getCapabilitiesTable();
599
600 $capabilities = (isset($user->{$capabilitiesTable}) === true) ? $user->{$capabilitiesTable} : [];
601
602 if (is_array($capabilities) === true && count($capabilities) > 0) {
603 $assignedRoles = $this->getAssignedObjects(ObjectHandler::GENERAL_ROLE_OBJECT_TYPE);
604 $recursiveRoles = array_intersect(
605 array_keys($capabilities),
606 array_keys($assignedRoles)
607 );
608
609 if (count($recursiveRoles) > 0) {
610 $recursiveMembership[ObjectHandler::GENERAL_ROLE_OBJECT_TYPE] = array_combine(
611 $recursiveRoles,
612 $this->php->arrayFill(
613 0,
614 count($recursiveRoles),
615 ObjectHandler::GENERAL_ROLE_OBJECT_TYPE
616 )
617 );
618 }
619 }
620 }
621
622 $isMember = $this->isObjectAssignedToGroup(ObjectHandler::GENERAL_USER_OBJECT_TYPE, $userId)
623 || count($recursiveMembership) > 0;
624
625 $this->userMembership[$userId] = ($isMember === true) ? $recursiveMembership : false;
626 }
627
628 $recursiveMembership = ($this->userMembership[$userId] !== false) ? $this->userMembership[$userId] : [];
629
630 return ($this->userMembership[$userId] !== false);
631 }
632
633 /**
634 * Checks if the term is a group member.
635 *
636 * @param int $termId
637 * @param array $recursiveMembership
638 *
639 * @return bool
640 */
641 public function isTermMember($termId, array &$recursiveMembership = [])
642 {
643 if (isset($this->termMembership[$termId]) === false) {
644 $isMember = $this->isObjectRecursiveMember(
645 function () {
646 return $this->objectHandler->getTermTreeMap();
647 },
648 ObjectHandler::GENERAL_TERM_OBJECT_TYPE,
649 $termId,
650 $recursiveMembership
651 );
652
653 $this->termMembership[$termId] = ($isMember === true) ? $recursiveMembership : false;
654 }
655
656 $recursiveMembership = ($this->termMembership[$termId] !== false) ? $this->termMembership[$termId] : [];
657
658 return ($this->termMembership[$termId] !== false);
659 }
660
661 /**
662 * Checks if the post is a group member
663 *
664 * @param int $postId
665 * @param array $recursiveMembership
666 *
667 * @return bool
668 */
669 public function isPostMember($postId, array &$recursiveMembership = [])
670 {
671 if (isset($this->postMembership[$postId]) === false) {
672 $isMember = $this->isObjectRecursiveMember(
673 function () {
674 return $this->objectHandler->getPostTreeMap();
675 },
676 ObjectHandler::GENERAL_POST_OBJECT_TYPE,
677 $postId,
678 $recursiveMembership
679 );
680
681 if ($this->config->lockRecursive() === true) {
682 $postTermMap = $this->objectHandler->getPostTermMap();
683
684 if (isset($postTermMap[$postId]) === true) {
685 foreach ($postTermMap[$postId] as $termId => $type) {
686 if ($this->isTermMember($termId) === true) {
687 $recursiveMembership[ObjectHandler::GENERAL_TERM_OBJECT_TYPE][$termId] = $type;
688 }
689 }
690 }
691
692 $isMember = $isMember || count($recursiveMembership) > 0;
693 }
694
695 $this->postMembership[$postId] = ($isMember === true) ? $recursiveMembership : false;
696 }
697
698 $recursiveMembership = ($this->postMembership[$postId] !== false) ? $this->postMembership[$postId] : [];
699
700 return ($this->postMembership[$postId] !== false);
701 }
702
703 /**
704 * Returns a the recursive membership for a pluggable object.
705 *
706 * @param string $objectType The pluggable object type.
707 * @param string $objectId The object id.
708 * @param array $recursiveMembership The object id.
709 *
710 * @return bool
711 */
712 public function isPluggableObjectMember($objectType, $objectId, array &$recursiveMembership = [])
713 {
714 if (isset($this->pluggableObjectMembership[$objectType]) === false) {
715 $this->pluggableObjectMembership[$objectType] = [];
716 }
717
718 if (isset($this->pluggableObjectMembership[$objectType][$objectId]) === false) {
719 $isMember = false;
720 $pluggableObject = $this->objectHandler->getPluggableObject($objectType);
721
722 if ($pluggableObject !== null) {
723 $recursiveMembership = $pluggableObject->getRecursiveMembership($this, $objectId);
724 $isMember = $this->isObjectAssignedToGroup($objectType, $objectId)
725 || count($recursiveMembership) > 0;
726 }
727
728 $this->pluggableObjectMembership[$objectType][$objectId] =
729 ($isMember === true) ? $recursiveMembership : false;
730 }
731
732 $recursiveMembership = ($this->pluggableObjectMembership[$objectType][$objectId] !== false) ?
733 $this->pluggableObjectMembership[$objectType][$objectId] : [];
734
735 return ($this->pluggableObjectMembership[$objectType][$objectId] !== false);
736 }
737
738 /**
739 * Returns a single object.
740 *
741 * @param string $objectType The object type.
742 * @param string $objectId The id of the object which should be checked.
743 * @param array $recursiveMembership The recursive membership.
744 *
745 * @return bool
746 */
747 public function isObjectMember($objectType, $objectId, array &$recursiveMembership = [])
748 {
749 $isMember = false;
750 $recursiveMembership = [];
751
752 if ($objectType === ObjectHandler::GENERAL_ROLE_OBJECT_TYPE) {
753 $isMember = $this->isRoleMember($objectId, $recursiveMembership);
754 } elseif ($objectType === ObjectHandler::GENERAL_USER_OBJECT_TYPE) {
755 $isMember = $this->isUserMember($objectId, $recursiveMembership);
756 } elseif ($objectType === ObjectHandler::GENERAL_TERM_OBJECT_TYPE
757 || $this->objectHandler->isTaxonomy($objectType) === true
758 ) {
759 $isMember = $this->isTermMember($objectId, $recursiveMembership);
760 } elseif ($objectType === ObjectHandler::GENERAL_POST_OBJECT_TYPE
761 || $this->objectHandler->isPostType($objectType) === true
762 ) {
763 $isMember = $this->isPostMember($objectId, $recursiveMembership);
764 } elseif ($this->objectHandler->isPluggableObject($objectType) === true) {
765 $isMember = $this->isPluggableObjectMember($objectType, $objectId, $recursiveMembership);
766 }
767
768 return $isMember;
769 }
770
771 /**
772 * Returns the recursive membership.
773 *
774 * @param string $objectType The object type.
775 * @param string $objectId The object id.
776 *
777 * @return array
778 */
779 public function getRecursiveMembershipForObject($objectType, $objectId)
780 {
781 $recursiveMembership = [];
782
783 if ($this->isObjectMember($objectType, $objectId, $recursiveMembership) === true) {
784 return $recursiveMembership;
785 }
786
787 return [];
788 }
789
790 /**
791 * Returns true if the requested object is locked recursive.
792 *
793 * @param string $objectType The object type.
794 * @param string $objectId The object id.
795 *
796 * @return bool
797 */
798 public function isLockedRecursive($objectType, $objectId)
799 {
800 $recursiveMembership = [];
801
802 if ($this->isObjectMember($objectType, $objectId, $recursiveMembership) === true) {
803 return (count($recursiveMembership) > 0);
804 }
805
806 return false;
807 }
808
809 /**
810 * Returns the objects by the given type including the children.
811 *
812 * @param \Closure $mapFunction
813 * @param string $objectType
814 *
815 * @return array
816 */
817 private function getFullObjects($mapFunction, $objectType)
818 {
819 $objects = $this->getAssignedObjects($objectType);
820
821 if ($this->config->lockRecursive() === true) {
822 $map = $mapFunction();
823 $map = isset($map[ObjectHandler::TREE_MAP_CHILDREN][$objectType]) ?
824 $map[ObjectHandler::TREE_MAP_CHILDREN][$objectType] : [];
825 $map = array_intersect_key($map, $objects);
826
827 foreach ($map as $childrenIds) {
828 foreach ($childrenIds as $parentId => $type) {
829 if ($this->isObjectMember($objectType, $parentId) === true) {
830 $objects[$parentId] = $type;
831 }
832 }
833 }
834 }
835
836 return $objects;
837 }
838
839 /**
840 * Returns the users assigned to the group.
841 *
842 * @return array
843 */
844 public function getFullUsers()
845 {
846 if (isset($this->fullObjectMembership[ObjectHandler::GENERAL_USER_OBJECT_TYPE]) === false) {
847 $this->fullObjectMembership[ObjectHandler::GENERAL_USER_OBJECT_TYPE] = [];
848
849 $databaseUsers = (array)$this->database->getResults(
850 "SELECT ID, user_nicename
851 FROM {$this->database->getUsersTable()}"
852 );
853
854 foreach ($databaseUsers as $user) {
855 if ($this->isObjectMember(ObjectHandler::GENERAL_USER_OBJECT_TYPE, $user->ID) === true) {
856 $this->fullObjectMembership[ObjectHandler::GENERAL_USER_OBJECT_TYPE][$user->ID] =
857 ObjectHandler::GENERAL_USER_OBJECT_TYPE;
858 }
859 }
860 }
861
862 return $this->fullObjectMembership[ObjectHandler::GENERAL_USER_OBJECT_TYPE];
863 }
864
865 /**
866 * Returns the terms assigned to the group.
867 *
868 * @param string $termType The term type.
869 *
870 * @return array
871 */
872 public function getFullTerms($termType = null)
873 {
874 if (isset($this->fullObjectMembership[$termType]) === false) {
875 $termType = ($termType === null) ? ObjectHandler::GENERAL_TERM_OBJECT_TYPE : $termType;
876
877 $this->fullObjectMembership[$termType] = $this->getFullObjects(
878 function () {
879 return $this->objectHandler->getTermTreeMap();
880 },
881 $termType
882 );
883 }
884
885 return $this->fullObjectMembership[$termType];
886 }
887
888 /**
889 * Returns the posts assigned to the group.
890 *
891 * @param string $postType The post type.
892 *
893 * @return array
894 */
895 public function getFullPosts($postType = null)
896 {
897 if (isset($this->fullObjectMembership[$postType]) === false) {
898 $postType = ($postType === null) ? ObjectHandler::GENERAL_POST_OBJECT_TYPE : $postType;
899 $posts = $this->getFullObjects(
900 function () {
901 return $this->objectHandler->getPostTreeMap();
902 },
903 $postType
904 );
905
906 if ($this->config->lockRecursive() === true) {
907 $termsPostMap = $this->objectHandler->getTermPostMap();
908 $terms = $this->getFullTerms();
909
910 foreach ($terms as $termId => $term) {
911 if (isset($termsPostMap[$termId]) === true) {
912 $posts += $termsPostMap[$termId];
913 }
914 }
915 }
916
917 $this->fullObjectMembership[$postType] = $posts;
918 }
919
920 return $this->fullObjectMembership[$postType];
921 }
922
923 /**
924 * Returns all objects of the given type.
925 *
926 * @param string $objectType The object type.
927 *
928 * @return array
929 */
930 public function getAssignedObjectsByType($objectType)
931 {
932 if ($objectType === ObjectHandler::GENERAL_ROLE_OBJECT_TYPE) {
933 return $this->getAssignedObjects($objectType);
934 } elseif ($objectType === ObjectHandler::GENERAL_USER_OBJECT_TYPE) {
935 return $this->getFullUsers();
936 } elseif ($objectType === ObjectHandler::GENERAL_TERM_OBJECT_TYPE
937 || $this->objectHandler->isTaxonomy($objectType) === true
938 ) {
939 return $this->getFullTerms($objectType);
940 } elseif ($objectType === ObjectHandler::GENERAL_POST_OBJECT_TYPE
941 || $this->objectHandler->isPostType($objectType) === true
942 ) {
943 return $this->getFullPosts($objectType);
944 } elseif ($this->objectHandler->isPluggableObject($objectType)) {
945 $pluggableObject = $this->objectHandler->getPluggableObject($objectType);
946 return ($pluggableObject !== null) ? $pluggableObject->getFullObjects($this) : [];
947 }
948
949 return [];
950 }
951 }
952