/** * Get a user's permissions. * * @param int $userID Unique ID of the user. * @return Vanilla\Permissions */ public function getPermissions($userID) { $permissions = new Vanilla\Permissions(); $permissionsKey = ''; if (Gdn::cache()->activeEnabled()) { $permissionsIncrement = $this->getPermissionsIncrement(); $permissionsKey = formatString(self::USERPERMISSIONS_KEY, ['UserID' => $userID, 'PermissionsIncrement' => $permissionsIncrement]); $cachedPermissions = Gdn::cache()->get($permissionsKey); if ($cachedPermissions !== Gdn_Cache::CACHEOP_FAILURE) { $permissions->setPermissions($cachedPermissions); return $permissions; } } $data = Gdn::permissionModel()->cachePermissions($userID); $permissions->compileAndLoad($data); $this->EventArguments['UserID'] = $userID; $this->EventArguments['Permissions'] = $permissions; $this->fireEvent('loadPermissions'); if (Gdn::cache()->activeEnabled()) { Gdn::cache()->store($permissionsKey, $permissions->getPermissions()); } else { // Save the permissions to the user table if ($userID > 0) { $this->SQL->put('User', ['Permissions' => dbencode($permissions->getPermissions())], ['UserID' => $userID]); } } return $permissions; }
/** * Returns all "allowed" permissions for the authenticated user in a one-dimensional array of permission names. * * @return array */ public function getPermissionsArray() { return $this->permissions->getPermissions(); }