/**
  * Lazy load the userId list.
  *
  * @return array $_userIdList
  */
 protected function _getUserIdList()
 {
     if (empty(self::$_userIdList)) {
         /* @var $user Phprojekt_User_User */
         $user = new Phprojekt_User_User();
         $users = $user->getAllowedUsers();
         foreach ($users as $node) {
             self::$_userIdList[$node['id']] = $this->getRangeValues($node['id'], $node['name']);
         }
     }
     return self::$_userIdList;
 }
Exemple #2
0
 /**
  * Sets a fields definitions for each field.
  *
  * @return void
  */
 public function setFields()
 {
     // password
     $this->fillField('password', 'Password', 'password', 0, 1, array('length' => 50));
     // confirmValue
     $this->fillField('confirmValue', 'Confirm Password', 'password', 0, 2, array('length' => 50));
     // oldValue
     $this->fillField('oldValue', 'Old Password', 'password', 0, 3, array('length' => 50));
     // email
     $this->fillField('email', 'Email', 'text', 0, 4, array('length' => 255));
     // language
     $range = array();
     foreach ($this->_languageRange as $key => $value) {
         $range[] = $this->getRangeValues($key, $value);
     }
     $this->fillField('language', 'Language', 'selectbox', 0, 5, array('range' => $range, 'required' => true, 'default' => 'en'));
     // timeZone
     $range = array();
     foreach ($this->_timeZoneRange as $key => $value) {
         $range[] = $this->getRangeValues($key, $value);
     }
     $this->fillField('timeZone', 'Time zone', 'selectbox', 0, 6, array('range' => $range, 'required' => true, 'default' => '000'));
     // Proxies
     Phprojekt::setCurrentProjectId(IndexController::INVISIBLE_ROOT);
     $user = new Phprojekt_User_User();
     $range = $user->getAllowedUsers();
     // remove ourselves from the proxy list
     $i = 0;
     foreach ($range as $entry) {
         if ((int) $entry['id'] == Phprojekt_Auth::getUserId()) {
             array_splice($range, $i, 1);
             break;
         }
         $i++;
     }
     $this->fillField('proxies', 'Proxies', 'multiplefilteringselectbox', 0, 7, array('range' => $range, 'required' => true));
 }
 /**
  * Save the roles-user relation for one projectId.
  *
  * @param array   $roles     Array with the roles ID.
  * @param array   users      Array with the users ID.
  * @param integer $projectId The project ID.
  *
  * @return void
  */
 public function saveRelation($roles, $users, $projectId)
 {
     $where = sprintf('project_id = %d', (int) $projectId);
     foreach ($this->fetchAll($where) as $relation) {
         $relation->delete();
     }
     // Save roles only for allowed users
     $activeRecord = new Phprojekt_User_User();
     $result = $activeRecord->getAllowedUsers();
     foreach ($result as $user) {
         $userId = $user['id'];
         if (in_array($userId, $users)) {
             $clone = clone $this;
             $clone->roleId = $roles[$userId];
             $clone->userId = $userId;
             $clone->projectId = $projectId;
             $clone->save();
             // Reset cache
             $sessionName = 'Project_Models_ProjectRoleUserPermissions-fetchUserRole-' . $projectId . '-' . $userId;
             $roleNamespace = new Zend_Session_Namespace($sessionName);
             $roleNamespace->unsetAll();
         }
     }
 }
 /**
  * Gets the data range for a select using a model.
  *
  * @param Phprojekt_ModelInformation_Interface $field Class with data of the field.
  *
  * @return array Array with 'id' and 'name'.
  */
 public function getRangeFromModel(Phprojekt_ModelInformation_Interface $field)
 {
     $options = array();
     list($module, $key, $value) = explode('#', $field->formRange);
     $module = trim($module);
     $key = trim($key);
     $value = trim($value);
     switch ($module) {
         case 'Project':
             $activeRecord = new Project_Models_Project();
             $tree = new Phprojekt_Tree_Node_Database($activeRecord, 1);
             $tree = $tree->setup();
             foreach ($tree as $node) {
                 $options[] = array('id' => (int) $node->{$key}, 'name' => $node->getDepthDisplay($value));
             }
             break;
         case 'User':
             $activeRecord = new Phprojekt_User_User();
             $result = $activeRecord->getAllowedUsers();
             if (!$field->isRequired && $field->formType == 'selectValues') {
                 $options[] = array('id' => 0, 'name' => '');
             }
             $options = array_merge($options, $result);
             break;
         default:
             $activeRecord = Phprojekt_Loader::getModel($module, $module);
             if (method_exists($activeRecord, 'getRangeFromModel')) {
                 $options = call_user_func(array($activeRecord, 'getRangeFromModel'), $field);
             } else {
                 $result = $activeRecord->fetchAll();
                 $options = $this->_setRangeValues($field, $result, $key, $value);
             }
             break;
     }
     return $options;
 }