roles() public static method

public static roles ( null $RoleID = null, boolean $Force = false ) : array | mixed | null | type
$RoleID null
$Force boolean
return array | mixed | null | type
コード例 #1
0
ファイル: class.usermodel.php プロジェクト: vanilla/vanilla
 /**
  *
  *
  * @param array $Roles
  * @return array
  */
 protected function lookupRoleIDs($Roles)
 {
     if (is_string($Roles)) {
         $Roles = explode(',', $Roles);
     } elseif (!is_array($Roles)) {
         $Roles = [];
     }
     $Roles = array_map('trim', $Roles);
     $Roles = array_map('strtolower', $Roles);
     $AllRoles = RoleModel::roles();
     $RoleIDs = [];
     foreach ($AllRoles as $RoleID => $Role) {
         $Name = strtolower($Role['Name']);
         if (in_array($Name, $Roles) || in_array($RoleID, $Roles)) {
             $RoleIDs[] = $RoleID;
         }
     }
     return $RoleIDs;
 }
コード例 #2
0
ファイル: class.dbamodel.php プロジェクト: sitexa/vanilla
 /**
  * If any role has no permission records, set Member-like permissions on it.
  *
  * @return array
  */
 public function fixPermissions()
 {
     $Roles = RoleModel::roles();
     $RoleModel = new RoleModel();
     $PermissionModel = new PermissionModel();
     // Find roles missing permission records
     foreach ($Roles as $RoleID => $Role) {
         $Permissions = $this->SQL->select('*')->from('Permission p')->where('p.RoleID', $RoleID)->get()->resultArray();
         if (!count($Permissions)) {
             // Set basic permission record
             $DefaultRecord = array('RoleID' => $RoleID, 'JunctionTable' => null, 'JunctionColumn' => null, 'JunctionID' => null, 'Garden.Email.View' => 1, 'Garden.SignIn.Allow' => 1, 'Garden.Activity.View' => 1, 'Garden.Profiles.View' => 1, 'Garden.Profiles.Edit' => 1, 'Conversations.Conversations.Add' => 1);
             $PermissionModel->save($DefaultRecord);
             // Set default category permission
             $DefaultCategory = array('RoleID' => $RoleID, 'JunctionTable' => 'Category', 'JunctionColumn' => 'PermissionCategoryID', 'JunctionID' => -1, 'Vanilla.Discussions.View' => 1, 'Vanilla.Discussions.Add' => 1, 'Vanilla.Comments.Add' => 1);
             $PermissionModel->save($DefaultCategory);
         }
     }
     return array('Complete' => true);
 }
コード例 #3
0
 /**
  *
  *
  * @param $UserID
  * @return Gdn_DataSet
  */
 public function getRoles($UserID)
 {
     $UserRolesKey = formatString(self::USERROLES_KEY, array('UserID' => $UserID));
     $RolesDataArray = Gdn::cache()->get($UserRolesKey);
     if ($RolesDataArray === Gdn_Cache::CACHEOP_FAILURE) {
         $RolesDataArray = $this->SQL->getWhere('UserRole', array('UserID' => $UserID))->resultArray();
         $RolesDataArray = consolidateArrayValuesByKey($RolesDataArray, 'RoleID');
     }
     $Result = array();
     foreach ($RolesDataArray as $RoleID) {
         $Result[] = RoleModel::roles($RoleID, true);
     }
     return new Gdn_DataSet($Result);
 }
コード例 #4
0
ファイル: class.rolemodel.php プロジェクト: austins/vanilla
 /**
  * Get a role by name.
  *
  * @param array|string $Names
  */
 public static function getByName($Names, &$Missing = null)
 {
     if (is_string($Names)) {
         $Names = explode(',', $Names);
         $Names = array_map('trim', $Names);
     }
     // Make a lookup array of the names.
     $Names = array_unique($Names);
     $Names = array_combine($Names, $Names);
     $Names = array_change_key_case($Names);
     $Roles = RoleModel::roles();
     $Result = array();
     foreach ($Roles as $RoleID => $Role) {
         $Name = strtolower($Role['Name']);
         if (isset($Names[$Name])) {
             $Result[$RoleID] = $Role;
             unset($Names[$Name]);
         }
     }
     $Missing = array_values($Names);
     return $Result;
 }
コード例 #5
0
 /**
  * Settings screen for role and restriction choice.
  *
  * @param object $sender SettingsController.
  * @return void.
  * @package ReadOnly
  * @since 0.1
  */
 public function settingsController_readOnly_create($sender)
 {
     // Define general settings properties.
     $sender->permission('Garden.Settings.Manage');
     $sender->addSideMenu('/dashboard/settings/plugins');
     $sender->setData('Title', t('ReadOnly Settings'));
     $sender->setData('Description', t('ReadOnly Settings Description', 'Choose which roles and actions should be restricted.<br/>You
         should inform your users about the read only state by ' . anchor('adding a message', '/dashboard/message/add') . ' to the forum.'));
     // Consolidate/prepare permissions.
     $permissionModel = Gdn::PermissionModel();
     $perms = $permissionModel->PermissionColumns();
     unset($perms['PermissionID']);
     $permissions = array();
     foreach ($perms as $key => $value) {
         $action = substr($key, strrpos($key, '.') + 1);
         $permissions[$action] .= $key . ', ';
     }
     $permissionItems = array();
     foreach ($permissions as $key => $value) {
         $text = $key . '<span>' . trim($value, ', ') . '</span>';
         $permissionItems[$text] = $key;
     }
     // Consolidate/prepare roles.
     $roleModel = new RoleModel();
     $roles = $roleModel->roles();
     $roleItems = array();
     foreach ($roles as $role) {
         $roleItems[$role['Name']] = $role['RoleID'];
     }
     // Build form info.
     $configurationModule = new configurationModule($sender);
     $configurationModule->initialize(array('ReadOnly.Restrictions' => array('Control' => 'CheckBoxList', 'Description' => t('ReadOnly Settings Restrictions', 'Choose the actions that should be restricted. Below each action is a list of all the current permissions with that action."Add" and "Edit" is recommended.'), 'Items' => $permissionItems, 'LabelCode' => 'Restrictions'), 'ReadOnly.Roles' => array('Control' => 'CheckBoxList', 'Description' => t('Choose the roles that should <strong>not</strong> be restricted (Admin users will always have all permissions).'), 'Items' => $roleItems, 'LabelCode' => 'Roles'), 'ReadOnly.Message' => array('Control' => 'TextBox', 'LabelCode' => 'Message Text', 'Description' => 'It is a good idea to ' . anchor('inform your users', '/dashboard/message') . ' about the restrictions so that they now what\'s going on...', 'Options' => array('MultiLine' => true)), 'ReadOnly.ShowAlert' => array('Control' => 'Checkbox', 'Description' => 'You can choose show or deactivate the message, however.', 'LabelCode' => 'Show Message')));
     // Handle alert message.
     if ($sender->Request->isPostBack()) {
         $post = $sender->Request->getRequestArguments('post');
         $messageModel = new MessageModel();
         $messageID = c('ReadOnly.MessageID');
         $message = $messageModel->getID($messageID);
         if (!$post['ReadOnly-dot-Message']) {
             // Delete message when no text is given.
             if ($message) {
                 $messageModel->delete(array('MessageID' => $messageID));
                 removeFromConfig('ReadOnly.MessageID');
             }
         } else {
             // Check if message already exists.
             if ($message) {
                 // Set MessageID so that existing message gets updated
                 $formPostValues['MessageID'] = $messageID;
             }
             $formPostValues['Location'] = '[Base]';
             $formPostValues['AssetTarget'] = 'Content';
             $formPostValues['Content'] = $post['ReadOnly-dot-Message'];
             $formPostValues['CssClass'] = 'AlertMessage';
             $formPostValues['Enabled'] = $post['ReadOnly-dot-ShowAlert'];
             $formPostValues['AllowDismiss'] = false;
             $formPostValues['TransientKey'] = Gdn::session()->transientKey();
             saveToConfig('ReadOnly.MessageID', $messageModel->save($formPostValues));
         }
     }
     // Show form.
     $configurationModule->renderAll();
 }