Example #1
0
 /**
  * Gets the toolbar elements
  *
  * @param CMS_profile_user $user the toolbar elements to set
  * @return array the toolbar elements
  * @access public
  * @static
  */
 function getAllElements($user = '')
 {
     if (isset($this)) {
         $modulesElements = $this->_getModulesElements();
         $defaultElements = $this->_getDefaultElements();
         $language = $this->_user->getLanguage();
     } elseif (is_a($user, 'CMS_profile_user')) {
         $tmp = new CMS_wysiwyg_toolbar(0, $user);
         $modulesElements = $tmp->_getModulesElements();
         $defaultElements = $tmp->_getDefaultElements();
         $language = $user->getLanguage();
     } else {
         CMS_grandFather::raiseError('User parameter must be a valid CMS_profile_user when function is used statically');
         return false;
     }
     foreach ($defaultElements as $code => $languageCode) {
         $defaultElements[$code] = $language->getMessage($languageCode);
     }
     return array_merge($defaultElements, $modulesElements);
 }
Example #2
0
 /**
  * Module script task
  * @param array $parameters the task parameters
  *		task : string task to execute
  *		object : string module codename for the task
  *		field : string module uid
  *		...	: optional field relative parameters
  * @return Boolean true/false
  * @access public
  */
 function scriptTask($parameters)
 {
     switch ($parameters['task']) {
         case 'emailNotification':
             @set_time_limit(300);
             $module = CMS_poly_object_catalog::getModuleCodenameForField($this->_field->getID());
             //create a new script for all recipients
             $allUsers = $this->_getRecipients($parameters['object']);
             foreach ($allUsers as $userId) {
                 //add script to send email for user if needed
                 CMS_scriptsManager::addScript($module, array('task' => 'emailSend', 'user' => $userId, 'field' => $parameters['field'], 'object' => $parameters['object']));
             }
             //then set sending date to current date
             $sendingDate = new CMS_date();
             $sendingDate->setNow();
             $this->_subfieldValues[1]->setValue($sendingDate->getDBValue());
             $this->writeToPersistence();
             break;
         case 'emailSend':
             @set_time_limit(300);
             $params = $this->getParamsValues();
             if (!sensitiveIO::isPositiveInteger($parameters['user'])) {
                 return false;
             }
             //instanciate script related item
             $item = CMS_poly_object_catalog::getObjectByID($parameters['object'], false, true);
             if (!is_object($item) || $item->hasError()) {
                 return false;
             }
             //instanciate user
             $cms_user = new CMS_profile_user($parameters['user']);
             //check user
             if (!$cms_user || $cms_user->hasError() || !$cms_user->isActive() || $cms_user->isDeleted() || !sensitiveIO::isValidEmail($cms_user->getEmail())) {
                 return false;
             }
             $cms_language = $cms_user->getLanguage();
             //globalise cms_user and cms_language
             $GLOBALS['cms_language'] = $cms_user->getLanguage();
             $GLOBALS['cms_user'] = $cms_user;
             //check user clearance on object
             if (!$item->userHasClearance($cms_user, CLEARANCE_MODULE_VIEW)) {
                 return false;
             }
             //create email subject
             $parameters['item'] = $item;
             $parameters['public'] = true;
             $polymodParsing = new CMS_polymod_definition_parsing($params['emailSubject'], false);
             $subject = $polymodParsing->getContent(CMS_polymod_definition_parsing::OUTPUT_RESULT, $parameters);
             $body = '';
             //create email body
             if ($params['emailBody']['type'] == 1) {
                 //send body
                 $parameters['module'] = CMS_poly_object_catalog::getModuleCodenameForField($this->_field->getID());
                 $polymodParsing = new CMS_polymod_definition_parsing($params['emailBody']['html'], true, CMS_polymod_definition_parsing::PARSE_MODE, $parameters['module']);
                 $body = $polymodParsing->getContent(CMS_polymod_definition_parsing::OUTPUT_RESULT, $parameters);
             } elseif ($params['emailBody']['type'] == 2) {
                 //send a page
                 $page = CMS_tree::getPageById($params['emailBody']['pageID']);
                 if (!$page || $page->hasError()) {
                     $this->raiseError('Page ID is not a valid page : ' . $params['emailBody']['pageID']);
                     return false;
                 }
                 $pageHTMLFile = new CMS_file($page->getHTMLURL(false, false, PATH_RELATIVETO_FILESYSTEM));
                 if (!$pageHTMLFile->exists()) {
                     $this->raiseError('Page HTML file does not exists : ' . $page->getHTMLURL(false, false, PATH_RELATIVETO_FILESYSTEM));
                     return false;
                 }
                 $body = $pageHTMLFile->readContent();
                 //create page URL call
                 $polymodParsing = new CMS_polymod_definition_parsing($params['emailBody']['pageURL'], false);
                 $pageURL = $polymodParsing->getContent(CMS_polymod_definition_parsing::OUTPUT_RESULT, $parameters);
                 parse_str($pageURL, $GLOBALS['_REQUEST']);
                 //$GLOBALS['_REQUEST']
                 //parse and eval HTML page
                 $cms_page_included = true;
                 $GLOBALS['cms_page_included'] = $cms_page_included;
                 //eval() the PHP code
                 $body = sensitiveIO::evalPHPCode($body);
                 $website = $page->getWebsite();
                 $webroot = $website->getURL();
                 //replace URLs values
                 $replace = array('="/' => '="' . $webroot . '/', "='/" => "='" . $webroot . "/", "url(/" => "url(" . $webroot . "/");
                 $body = str_replace(array_keys($replace), $replace, $body);
             } else {
                 $this->raiseError('No valid email type to send : ' . $params['emailBody']['type']);
                 return false;
             }
             if (isset($sendmail)) {
                 //$body .= print_r($sendmail,true);
             }
             //drop email sending
             if (isset($sendmail) && $sendmail === false) {
                 return false;
             }
             //if no body for email or if sendmail var is set to false, quit
             if (!$body) {
                 $this->raiseError('No email body to send ... Email parameters : user : '******'user'] . ' - object ' . $parameters['object']);
                 return false;
             }
             //This code is for debug purpose only.
             //$testFile = new CMS_file('/test/test_'.$cms_user->getUserId().'.php', CMS_file::WEBROOT);
             //$testFile->setContent($body);
             //$testFile->writeToPersistence();
             // Set email
             $email = new CMS_email();
             $email->setSubject($subject);
             $email->setEmailHTML($body);
             $email->setEmailTo($cms_user->getEmail());
             if ($params['includeFiles']) {
                 //check for file fields attached to object
                 $files = array();
                 $this->_getFieldsFiles($item, $files);
                 if (sizeof($files)) {
                     foreach ($files as $file) {
                         $email->setFile($file);
                     }
                 }
             }
             //set email From
             if (!$params['emailFrom']) {
                 $email->setFromName(APPLICATION_LABEL);
                 $email->setEmailFrom(APPLICATION_POSTMASTER_EMAIL);
             } else {
                 $email->setFromName($params['emailFrom']);
                 $email->setEmailFrom($params['emailFrom']);
             }
             //Send
             if ($email->sendEmail()) {
                 //store email sent number
                 $this->_subfieldValues[2]->setValue($this->_subfieldValues[2]->getValue() + 1);
                 $this->writeToPersistence();
                 return true;
             } else {
                 return false;
             }
             break;
         default:
             $this->raiseError('No valid task given : ' . $parameters['task']);
             return false;
             break;
     }
 }
Example #3
0
$view->setSecure();
//check user rights
if ($cms_user->getUserId() != $userId && !$cms_user->hasAdminClearance(CLEARANCE_ADMINISTRATION_EDITUSERS)) {
    CMS_grandFather::raiseError('User has no users management rights ...');
    $view->show();
}
//load user if any
if (sensitiveIO::isPositiveInteger($userId)) {
    $user = CMS_profile_usersCatalog::getByID($userId);
    if (!$user || $user->hasError()) {
        CMS_grandFather::raiseError('Unknown user for given Id : ' . $userId);
        $view->show();
    }
} else {
    //create new user
    $user = new CMS_profile_user();
}
//Contact Data
$contactData = $user->getContactData();
//is it a personal profile edition ?
$personalProfile = $user->getUserId() == $cms_user->getUserId();
//MAIN TAB
//load languages
$languages = CMS_languagesCatalog::getAllLanguages();
$languagesDatas = array();
foreach ($languages as $language) {
    $languagesDatas[] = array('id' => $language->getCode(), 'label' => $language->getLabel());
}
$languagesDatas = sensitiveIO::jsonEncode($languagesDatas);
//Need to sanitize all datas which can contain single quotes
$fullname = sensitiveIO::sanitizeJSString($user->getFullName());
Example #4
0
 /**
  * Set Login
  *
  * @param string $login
  * @return void
  * @access public
  */
 public function setLogin($login)
 {
     if (!CMS_profile_user::checkLogin($login)) {
         $this->raiseError('Login is invalid. A login may not start or end by a space nor contain a non-printable character');
         return false;
     }
     // Check if login allready exists
     if (CMS_profile_usersCatalog::loginExists($login, $this)) {
         $this->raiseError('Login allready exists. Choose another one');
         return false;
     }
     $this->_login = $login;
     return true;
 }
Example #5
0
 /**
  * Locks the page. Takes the user DB ID and place it as locksmith data. Impossible if resource is already locked.
  *
  * @param CMS_profile_user $user The user placing the lock
  * @return boolean true on success, false on failure.
  * @access public
  */
 function lock(&$user)
 {
     if ($this->getLock()) {
         return false;
     }
     $this->_lockDate = new CMS_date();
     $this->_lockDate->setNow();
     $sql = "\n\t\t\tinsert into\n\t\t\t\tlocks\n\t\t\tset\n\t\t\t\tresource_lok = '" . $this->_id . "',\n\t\t\t\tlocksmithData_lok = '" . $user->getUserID() . "',\n\t\t\t\tdate_lok = '" . $this->_lockDate->getDBValue() . "'\n\t\t";
     $q = new CMS_query($sql);
     //set object lock status
     $this->_lockStatus = $user->getUserID();
     return true;
 }
 /**
  * Get by user : returns the contact data for given user
  *
  * @param array $data : datas from DB (loaded by CMS_profile_user) or CMS_profile_user object
  * @return CMS_contactData
  * @access public
  */
 static function getByUser($data)
 {
     if (is_array($data)) {
         return CMS_contactDatas_catalog::getById($data);
     } elseif (is_a($data, 'CMS_profile_user')) {
         //ugly method but need it for compatibility
         //I do not think that it is very often useful, so ...
         $user = new CMS_profile_user($data->getUserID());
         return $user->getContactData();
     } else {
         return null;
     }
 }
Example #7
0
             }
             $group_email->setUserMessages(array($user), $bodies, $subjects, ALERT_LEVEL_PROFILE, MOD_STANDARD_CODENAME);
             $group_email->sendMessages();
         }
         $content = array('success' => true);
         $cms_message = $cms_language->getMessage(MESSAGE_PAGE_USER_DATA_REGISTERED);
         if ($personalProfile) {
             $cms_message .= '<br /><br /><span class="atm-red">' . $cms_language->getMessage(MESSAGE_EMAIL_USER_MUST_RECONNECT) . '</span>';
         }
     }
     break;
 case 'identity':
     //set return to false by default
     $content = array('success' => false);
     if (!isset($user) || !is_a($user, "CMS_profile_user")) {
         $user = new CMS_profile_user();
     }
     //is it a new user creation ?
     $userCreation = $user->getUserId() ? false : true;
     //email
     if ($email) {
         $contactData = $user->getContactData();
         $contactData->setEmail($email);
         $user->setContactData($contactData);
     } elseif (!$user->getEmail()) {
         $cms_message = $cms_language->getMessage(MESSAGE_INCORRECT_FIELD_VALUE, array($cms_language->getMessage(MESSAGE_FIELD_EMAIL))) . "\n";
     }
     //lastname
     if ($lastname) {
         $user->setLastName(ucfirst($lastname));
     } elseif (!$user->getLastName()) {