コード例 #1
0
 /**
  * get an object value
  *
  * @param string $name : the name of the value to get
  * @param string $parameters (optional) : parameters for the value to get
  * @return multidimentionnal array : the object values structure
  * @access public
  */
 function getValue($name, $parameters = '')
 {
     global $cms_language;
     $params = $this->getParamsValues();
     $name = $name !== 0 ? $name : "0";
     switch ($name) {
         case 'ids':
             $ids = array();
             foreach (array_keys($this->_subfieldValues) as $subFieldID) {
                 if (is_object($this->_subfieldValues[$subFieldID])) {
                     $ids[] = $this->_subfieldValues[$subFieldID]->getValue();
                 }
             }
             return $ids;
             break;
         case 'values':
             return $this->_subfieldValues;
             break;
         case 'count':
             return sizeof($this->_subfieldValues);
             break;
         default:
             if (sensitiveIO::isPositiveInteger($name) || $name === "0") {
                 if (!is_object($this->_subfieldValues[$name])) {
                     return '';
                 }
                 switch ($parameters) {
                     case 'id':
                         return $this->_subfieldValues[$name]->getValue();
                         break;
                     case 'label':
                         //load user/group
                         $userGroup = $params['isGroup'] ? CMS_profile_usersGroupsCatalog::getByID($this->_subfieldValues[$name]->getValue()) : CMS_profile_usersCatalog::getByID($this->_subfieldValues[$name]->getValue());
                         if (is_object($userGroup) && !$userGroup->hasError()) {
                             return $params['isGroup'] ? io::htmlspecialchars($userGroup->getLabel()) : io::htmlspecialchars($userGroup->getFirstName() . ' ' . $userGroup->getLastName());
                         }
                         return '';
                         break;
                     case 'email':
                         //load user/group
                         $userGroup = $params['isGroup'] ? CMS_profile_usersGroupsCatalog::getByID($this->_subfieldValues[$name]->getValue()) : CMS_profile_usersCatalog::getByID($this->_subfieldValues[$name]->getValue());
                         if (is_object($userGroup) && !$userGroup->hasError()) {
                             return $params['isGroup'] ? '' : io::htmlspecialchars($userGroup->getEmail());
                         }
                         return '';
                         break;
                 }
             } else {
                 if (!isset($this->_subfieldValues[0]) || !is_object($this->_subfieldValues[0])) {
                     return '';
                 }
                 switch ($name) {
                     case 'label':
                         //load user/group
                         $userGroup = $params['isGroup'] ? CMS_profile_usersGroupsCatalog::getByID($this->_subfieldValues[0]->getValue()) : CMS_profile_usersCatalog::getByID($this->_subfieldValues[0]->getValue());
                         if (is_object($userGroup) && !$userGroup->hasError()) {
                             return $params['isGroup'] ? io::htmlspecialchars($userGroup->getLabel()) : io::htmlspecialchars($userGroup->getFirstName() . ' ' . $userGroup->getLastName());
                         }
                         return '';
                         break;
                     case 'email':
                         //load user/group
                         $userGroup = $params['isGroup'] ? CMS_profile_usersGroupsCatalog::getByID($this->_subfieldValues[0]->getValue()) : CMS_profile_usersCatalog::getByID($this->_subfieldValues[0]->getValue());
                         if (is_object($userGroup) && !$userGroup->hasError()) {
                             return $params['isGroup'] ? '' : io::htmlspecialchars($userGroup->getEmail());
                         }
                         return '';
                         break;
                     case 'id':
                         return $this->_subfieldValues[0]->getValue();
                         break;
                     default:
                         return parent::getValue($name, $parameters);
                         break;
                 }
             }
             break;
     }
 }
コード例 #2
0
 if ($userId) {
     $user = CMS_profile_usersCatalog::getByID($userId);
     if (!$user || $user->hasError()) {
         $user = false;
     }
 }
 if (is_a($group, "CMS_profile_usersGroup") && is_a($user, "CMS_profile_user")) {
     //Get current user groups ids
     $userGroupIds = CMS_profile_usersGroupsCatalog::getGroupsOfUser($user, true, true);
     //first reset profile clearances
     $user->resetClearances();
     //then loop through user groups
     foreach ($userGroupIds as $userGroupId) {
         if ($userGroupId == $groupId) {
             //remove user to group
             $oldGroup = CMS_profile_usersGroupsCatalog::getByID($groupId);
             if ($oldGroup->removeUser($user)) {
                 $oldGroup->writeToPersistence();
             }
         } else {
             //add group to user
             $user->addGroup($userGroupId);
         }
     }
     //then write user profile into persistence
     $user->writeToPersistence();
     $log = new CMS_log();
     $log->logMiscAction(CMS_log::LOG_ACTION_PROFILE_USER_EDIT, $cms_user, "User : "******" (remove group to user)");
 } else {
     $cms_message = $cms_language->getMessage(MESSAGE_PAGE_USER_OR_GROUP_UNKNOWN);
 }
コード例 #3
0
ファイル: profile.php プロジェクト: davidmottet/automne
 /**
  * Add a given group to user
  *
  * @param mixed $group : the group to add or the group id to add
  * @return boolean
  * @access public
  */
 function addGroup($group)
 {
     if (sensitiveIO::isPositiveInteger($group)) {
         //instanciate group to add
         $group = CMS_profile_usersGroupsCatalog::getByID($group);
     }
     if (!is_a($group, 'CMS_profile_usersGroup')) {
         $this->raiseError('Invalid group value to add : ' . $group);
         return false;
     }
     return $group->addToUserAndWriteToPersistence($this);
 }
コード例 #4
0
ファイル: profileuser.php プロジェクト: davidmottet/automne
 /**
  * Set user by xml definition. Return XML
  *
  * @access public
  * @param string $xmlInput XML definition to define user properties
  * @return boolean True on success, false on failure
  */
 function setSoapValues($domdocument)
 {
     $view = CMS_view::getInstance();
     $contactData = new CMS_contactData();
     $currentPassword = '';
     $newGroups = array();
     foreach ($domdocument->childNodes as $childNode) {
         if ($childNode->nodeType == XML_ELEMENT_NODE) {
             switch ($childNode->tagName) {
                 case 'contactData':
                     foreach ($childNode->childNodes as $cdChildNode) {
                         if ($cdChildNode->nodeType == XML_ELEMENT_NODE) {
                             if (!$contactData->setValue($cdChildNode->tagName, $cdChildNode->nodeValue)) {
                                 $view->addError('Invalid value for contactData tag ' . $cdChildNode->tagName . ' and value ' . $cdChildNode->nodeValue);
                                 return false;
                             }
                         } elseif ($cdChildNode->nodeType == XML_TEXT_NODE && trim($cdChildNode->nodeValue)) {
                             $view->addError('Unknown xml content contactData tag ' . $cdChildNode->nodeValue . ' to process.');
                             return false;
                         }
                     }
                     break;
                 case 'groups':
                     foreach ($childNode->childNodes as $groupChildNode) {
                         if ($groupChildNode->nodeType == XML_ELEMENT_NODE) {
                             $group = CMS_profile_usersGroupsCatalog::getByID($groupChildNode->nodeValue);
                             if ($group && !$group->hasError()) {
                                 $newGroups[$group->getGroupId()] = $group->getGroupId();
                             } else {
                                 $view->addError('Unknown group ID ' . $groupChildNode->nodeValue . '.');
                                 return false;
                             }
                         } elseif ($cdChildNode->nodeType == XML_TEXT_NODE && trim($cdChildNode->nodeValue)) {
                             $view->addError('Unknown xml content contactData tag ' . $cdChildNode->nodeValue . ' to process.');
                             return false;
                         }
                     }
                     break;
                 default:
                     if (!$this->setValue($childNode->tagName, $childNode->nodeValue)) {
                         $view->addError('Invalid value for tag ' . $childNode->tagName . ' and value ' . $childNode->nodeValue);
                         return false;
                     }
                     if ($childNode->tagName == 'password') {
                         $currentPassword = $childNode->nodeValue;
                     }
                     break;
             }
         } elseif ($childNode->nodeType == XML_TEXT_NODE && trim($childNode->nodeValue)) {
             $view->addError('Unknown xml content tag ' . $childNode->nodeValue . ' to process.');
             return false;
         }
     }
     // Check user required fields.
     if ($this->hasError()) {
         $view->addError('Values to set are invalid.');
         return false;
     }
     if ($currentPassword == $this->getValue('login')) {
         $view->addError('Login and password must be different.');
         return false;
     }
     if ($this->getValue('login') && $contactData->getValue('email')) {
         // Save contact data object
         if ($contactData->writeToPersistence() && $this->setValue('contactData', $contactData)) {
             // Get current user groups ids
             $userGroupIds = CMS_profile_usersGroupsCatalog::getGroupsOfUser($this, true, true);
             // First reset profile clearances
             $this->resetClearances();
             // Second, loop through user groups to remove group
             foreach ($userGroupIds as $oldGroupId) {
                 if (!in_array($oldGroupId, $newGroups)) {
                     // Remove user to group
                     $oldGroup = CMS_profile_usersGroupsCatalog::getByID($oldGroupId);
                     if (!$oldGroup->removeUser($this) || !$oldGroup->writeToPersistence()) {
                         $view->addError('Error deleting user\'s group : ' . $oldGroupId);
                         return false;
                     }
                 }
             }
             // Third, loop through user groups to add groups
             foreach ($newGroups as $newGroupId) {
                 if (!in_array($newGroupId, $userGroupIds)) {
                     $newGroup = CMS_profile_usersGroupsCatalog::getByID($newGroupId);
                     if ($newGroup && !$newGroup->hasError()) {
                         // Add group to user
                         $this->addGroup($newGroupId);
                     } else {
                         $view->addError('Error adding user\'s group : ' . $newGroupId);
                         return false;
                     }
                 }
             }
             //Clear polymod cache
             //CMS_cache::clearTypeCacheByMetas('polymod', array('resource' => 'users'));
             CMS_cache::clearTypeCache('polymod');
             return true;
         } else {
             $view->addError('Error saving contactData.');
             return false;
         }
     } else {
         $view->addError('Missing values to set user. Check the login, password and email.');
     }
     return false;
 }