//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()); $firstname = sensitiveIO::sanitizeJSString($user->getFirstName()); $lastname = sensitiveIO::sanitizeJSString($user->getLastName()); $lastnameValue = $lastname ? "value:'{$lastname}'," : ''; $login = sensitiveIO::sanitizeJSString($user->getLogin()); $loginValue = $login ? "value:'{$login}'," : ''; $email = sensitiveIO::sanitizeJSString($user->getEmail()); $emailValue = $email ? "value:'{$email}'," : ''; //Contact datas $service = sensitiveIO::sanitizeJSString($contactData->getService()); $jobtitle = sensitiveIO::sanitizeJSString($contactData->getJobTitle()); $address1 = sensitiveIO::sanitizeJSString($contactData->getAddressField1()); $address2 = sensitiveIO::sanitizeJSString($contactData->getAddressField2()); $address3 = sensitiveIO::sanitizeJSString($contactData->getAddressField3()); $zipcode = sensitiveIO::sanitizeJSString($contactData->getZip()); $city = sensitiveIO::sanitizeJSString($contactData->getCity()); $state = sensitiveIO::sanitizeJSString($contactData->getState()); $country = sensitiveIO::sanitizeJSString($contactData->getCountry()); $phone = sensitiveIO::sanitizeJSString($contactData->getPhone()); $cellphone = sensitiveIO::sanitizeJSString($contactData->getCellphone()); $fax = sensitiveIO::sanitizeJSString($contactData->getFax()); $company = sensitiveIO::sanitizeJSString($contactData->getCompany());
/** * 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; } }
} 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()) { $cms_message = $cms_language->getMessage(MESSAGE_INCORRECT_FIELD_VALUE, array($cms_language->getMessage(MESSAGE_FIELD_LASTNAME))) . "\n"; } //firstname $user->setFirstName(ucfirst($firstname)); //login if ($login && CMS_profile_usersCatalog::loginExists($login, $user)) { $cms_message .= $cms_language->getMessage(MESSAGE_LOGIN_EXISTS, array($login)) . "\n"; } elseif ($login && !$user->setLogin($login)) { $cms_message .= $cms_language->getMessage(MESSAGE_INCORRECT_FIELD_VALUE, array($cms_language->getMessage(MESSAGE_FIELD_LOGIN))) . "\n";