public function __construct(\ExtensionManager $extensionManager, UserAccountModel $user) { foreach ($extensionManager->getExtensionsIncludingCore() as $extension) { $extID = $extension->getId(); foreach ($extension->getUserNotificationPreferenceTypes() as $type) { $key = str_replace(".", "_", $extID . '.' . $type); $this->preferences[$key] = $extension->getUserNotificationPreference($type); } } $this->user = $user; }
function __construct(ExtensionManager $extensionManager, $permissions, \models\UserAccountModel $userAccountModel = null, $removeEditorPermissions = false, $includeChildrenPermissions = false) { if ($userAccountModel) { $this->has_user = true; $this->has_user_editor = $userAccountModel->getIsEditor(); $this->has_user_verified = $userAccountModel->getIsEmailVerified(); $this->has_user_system_administrator = $userAccountModel->getIsSystemAdmin(); } $this->removeEditorPermissions = $removeEditorPermissions; $this->permissions = array(); // Add direct permissions, checking user stats as we do so. foreach ($permissions as $permission) { $this->addPermission($permission); } // now add children if ($includeChildrenPermissions) { $loopCount = 0; do { $loopCount++; $addedAny = false; foreach ($extensionManager->getExtensionsIncludingCore() as $extension) { foreach ($extension->getUserPermissions() as $possibleChildID) { $possibleChildPermission = $extension->getUserPermission($possibleChildID); if (!$this->hasPermission($extension->getId(), $possibleChildID)) { $addThisOne = false; foreach ($possibleChildPermission->getParentPermissionsIDs() as $parentData) { if (!$addThisOne && $this->hasPermission($parentData[0], $parentData[1])) { $addThisOne = true; } } if ($addThisOne) { $this->addPermission($possibleChildPermission); $addedAny = true; } } } } } while ($addedAny && $loopCount < 100); } }