/** * 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); }
/** * 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; } }
$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());
/** * 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; }
/** * 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; } }
} $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()) {