/** * Return the module code for the specified treatment mode, visualization mode and object. * * @param mixed $modulesCode the previous modules codes (usually string) * @param integer $treatmentMode The current treatment mode (see constants on top of this file for accepted values). * @param integer $visualizationMode The current visualization mode (see constants on top of cms_page class for accepted values). * @param object $treatedObject The reference object to treat. * @param array $treatmentParameters : optionnal parameters used for the treatment. Usually an array of objects. * * @return string : the module code to add * @access public */ function getModuleCode($modulesCode, $treatmentMode, $visualizationMode, &$treatedObject, $treatmentParameters) { switch ($treatmentMode) { case MODULE_TREATMENT_PAGECONTENT_HEADER_CODE: $modulesCode[MOD_STANDARD_CODENAME] = ''; $modulesCode[MOD_STANDARD_CODENAME] .= '<?php' . "\n" . '//Generated on ' . date('r') . ' by ' . CMS_grandFather::SYSTEM_LABEL . ' ' . AUTOMNE_VERSION . "\n"; //HTTPS constant if ($treatedObject->isHTTPS()) { $modulesCode[MOD_STANDARD_CODENAME] .= 'defined(\'PAGE_SSL_MODE\') || define(\'PAGE_SSL_MODE\', true);' . "\n"; } else { $modulesCode[MOD_STANDARD_CODENAME] .= '//Page can be HTTPS' . "\n" . 'if (!((isset($_SERVER["REQUEST_URI"]) && strpos($_SERVER["REQUEST_URI"], \'' . PATH_ADMIN_WR . '\') !== false) || (isset($_REQUEST[\'atm-context\']) && $_REQUEST[\'atm-context\'] == \'adminframe\'))) {' . "\n" . ' if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] && strtolower($_SERVER["HTTPS"]) != \'off\') {' . "\n" . ' defined(\'PAGE_SSL_MODE\') || define(\'PAGE_SSL_MODE\', true);' . "\n" . ' }' . "\n" . '}' . "\n"; } //Current page constant $modulesCode[MOD_STANDARD_CODENAME] .= 'defined(\'CURRENT_PAGE\') || define(\'CURRENT_PAGE\', ' . $treatedObject->getID() . ');' . "\n"; if ($visualizationMode == PAGE_VISUALMODE_HTML_PUBLIC || $visualizationMode == PAGE_VISUALMODE_PRINT) { //path to cms_rc_frontend $path = PATH_PAGES_HTML_WR == PATH_MAIN_WR . "/html" ? '/../../cms_rc_frontend.php' : '/../cms_rc_frontend.php'; //cms_rc_frontend include $modulesCode[MOD_STANDARD_CODENAME] .= 'if (!defined(\'PATH_REALROOT_FS\')){' . "\n" . ' require_once(dirname(__FILE__).\'' . $path . '\');' . "\n" . '} else {' . "\n" . ' require_once(PATH_REALROOT_FS."/cms_rc_frontend.php");' . "\n" . '}' . "\n"; //redirection code if any $redirectlink = $treatedObject->getRedirectLink(true); if ($redirectlink->hasValidHREF()) { $href = $redirectlink->getHTML(false, MOD_STANDARD_CODENAME, RESOURCE_DATA_LOCATION_PUBLIC, false, true); $modulesCode[MOD_STANDARD_CODENAME] .= 'CMS_view::redirect(\'' . $href . '\', true, 302);' . "\n"; } //old url pattern redireciton $modulesCode[MOD_STANDARD_CODENAME] .= 'if (!isset($cms_page_included) && !$_POST && !$_GET) {' . "\n" . ' CMS_view::redirect(\'' . $treatedObject->getURL($visualizationMode == PAGE_VISUALMODE_PRINT ? true : false) . '\', true, 301);' . "\n" . '}' . "\n"; //non-https redirection for https page if ($treatedObject->isHTTPS()) { $modulesCode[MOD_STANDARD_CODENAME] .= '//Page must be HTTPS' . "\n" . 'if (!(strpos($_SERVER["REQUEST_URI"], PATH_ADMIN_WR) !== false || (isset($_REQUEST[\'atm-context\']) && $_REQUEST[\'atm-context\'] == \'adminframe\')) && (!defined("APPLICATION_ENFORCE_SSL") || APPLICATION_ENFORCE_SSL == true)) {' . "\n" . ' if (!(isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] && strtolower($_SERVER["HTTPS"]) != \'off\')) {' . "\n" . ' CMS_view::redirect(\'' . $treatedObject->getURL($visualizationMode == PAGE_VISUALMODE_PRINT ? true : false) . '\', true, 301);' . "\n" . ' }' . "\n" . '}' . "\n"; } //rights 403 redirection if (APPLICATION_ENFORCES_ACCESS_CONTROL) { //include user access checking on top of output file $modulesCode[MOD_STANDARD_CODENAME] .= 'if (!is_object($cms_user) || !$cms_user->hasPageClearance(' . $treatedObject->getID() . ', CLEARANCE_PAGE_VIEW)) {' . "\n" . ' CMS_view::redirect(PATH_FRONTEND_SPECIAL_LOGIN_WR.\'?referer=\'.base64_encode($_SERVER[\'REQUEST_URI\']));' . "\n" . '}' . "\n"; } } else { //page previz & edition $modulesCode[MOD_STANDARD_CODENAME] .= 'if (!in_array(\'' . PATH_REALROOT_FS . '/cms_rc_frontend.php\', get_included_files())){ require_once(\'' . PATH_REALROOT_FS . '/cms_rc_frontend.php\');} else { global $cms_user,$cms_language;}'; } $modulesCode[MOD_STANDARD_CODENAME] .= ' ?>'; //Get header code (atm-header tags) if ($usage = CMS_module::moduleUsage($treatedObject->getID(), $this->_codename)) { //add header codes if (isset($usage['headCallback'])) { foreach ($usage['headCallback'] as $headCallback) { if (isset($headCallback['code'])) { $modulesCode[MOD_STANDARD_CODENAME] .= $headCallback['code']; } } } } return $modulesCode; break; case MODULE_TREATMENT_EDITOR_CODE: if ($treatmentParameters["editor"] == "fckeditor") { $languages = implode(',', array_keys(CMS_languagesCatalog::getAllLanguages(MOD_STANDARD_CODENAME))); //This is an exception of the method, because here we return an array, see admin/fckeditor/fckconfig.php for the detail return array("Default" => array("'automneLinks'"), "modulesDeclaration" => array("FCKConfig.Plugins.Add( 'automneLinks', '" . $languages . "' );")); } else { return $modulesCode; } break; case MODULE_TREATMENT_EDITOR_PLUGINS: if ($treatmentParameters["editor"] == "fckeditor") { $language = $treatmentParameters["user"]->getLanguage(); $modulesCode['automneLinks'] = $language->getMessage(self::MESSAGE_MOD_STANDARD_PLUGIN); } break; case MODULE_TREATMENT_EDITOR_JSCODE: $modulesCode[MOD_STANDARD_CODENAME] = "\n\t\t\t\t<script type=\"text/javascript\">\n\t\t\t\tfunction openWindow(url, name, w, h, r, s, m, left, top) {\n\t\t\t\t\tpopupWin = window.open(url, name, 'width=' + w + ',height=' + h + ',resizable=' + r + ',scrollbars='+ s + ',menubar=' + m + ',left=' + left + ',top=' + top);\n\t\t\t\t}\n\t\t\t\t</script>"; return $modulesCode; break; case MODULE_TREATMENT_ROWS_EDITION_LABELS: $modulesCode[$this->_codename] = ''; //if user has rights on module if ($treatmentParameters["user"]->hasModuleClearance($this->_codename, CLEARANCE_MODULE_EDIT)) { if (!isset($treatmentParameters['request'])) { //add form to choose object to display $modulesCode[$this->_codename] = ' <h1>' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_TAGS_CHOOSE) . '<select onchange="Ext.get(\'help' . $this->_codename . '\').getUpdater().update({url: \'' . PATH_ADMIN_WR . '/help-detail.php\',params: {module: \'' . $this->_codename . '\',object: this.value, mode:' . MODULE_TREATMENT_ROWS_EDITION_LABELS . '}});"> <option value="">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_CHOOSE) . '</option> <option value="block">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_TAGS) . '</option> <option value="working">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_WORKING_TAGS) . '</option> <option value="working-standard">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_WORKING_STANDARD_TAGS) . '</option> <option value="vars">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_GENERAL_VARS) . '</option> </select></h1> <div id="help' . $this->_codename . '"></div> '; } //then display chosen object infos if (isset($treatmentParameters['request'][$this->_codename]) && isset($treatmentParameters['request'][$this->_codename . 'object'])) { switch ($treatmentParameters['request'][$this->_codename . 'object']) { case 'block': $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_TAGS_EXPLANATION); break; case 'working': $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_WORKING_TAGS_EXPLANATION); break; case 'working-standard': $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_WORKING_STANDARD_TAGS_EXPLANATION); break; case 'vars': $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_GENERAL_VARS_EXPLANATION, array($treatmentParameters["language"]->getDateFormatMask(), $treatmentParameters["language"]->getDateFormatMask(), $treatmentParameters["language"]->getDateFormatMask())); break; } } } return $modulesCode; break; case MODULE_TREATMENT_TEMPLATES_EDITION_LABELS: $modulesCode[$this->_codename] = ''; //if user has rights on module if ($treatmentParameters["user"]->hasModuleClearance($this->_codename, CLEARANCE_MODULE_EDIT)) { if (!isset($treatmentParameters['request'])) { //add form to choose object to display $modulesCode[$this->_codename] = ' <h1>' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_TAGS_CHOOSE) . '<select onchange="Ext.get(\'help' . $this->_codename . '\').getUpdater().update({url: \'' . PATH_ADMIN_WR . '/help-detail.php\',params: {module: \'' . $this->_codename . '\',object: this.value, mode:' . MODULE_TREATMENT_TEMPLATES_EDITION_LABELS . '}});"> <option value="">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_CHOOSE) . '</option> <option value="block">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_TAGS) . '</option> <option value="working">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_WORKING_TAGS) . '</option> <option value="working-standard">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_WORKING_STANDARD_TAGS) . '</option> <option value="vars">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_GENERAL_VARS) . '</option> </select></h1> <div id="help' . $this->_codename . '"></div> '; } //then display chosen object infos if (isset($treatmentParameters['request'][$this->_codename]) && isset($treatmentParameters['request'][$this->_codename . 'object'])) { switch ($treatmentParameters['request'][$this->_codename . 'object']) { case 'block': $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_TEMPLATE_EXPLANATION); break; case 'working': $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_WORKING_TAGS_EXPLANATION); break; case 'working-standard': $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_WORKING_STANDARD_TAGS_EXPLANATION); break; case 'vars': $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_GENERAL_VARS_EXPLANATION, array($treatmentParameters["language"]->getDateFormatMask(), $treatmentParameters["language"]->getDateFormatMask(), $treatmentParameters["language"]->getDateFormatMask())); break; } } } return $modulesCode; /*$modulesCode[MOD_STANDARD_CODENAME] = $treatmentParameters["language"]->getMessage(self::MESSAGE_MOD_STANDARD_TEMPLATE_EXPLANATION); return $modulesCode;*/ break; case MODULE_TREATMENT_ALERTS: $modulesCode[MOD_STANDARD_CODENAME] = array(ALERT_LEVEL_PROFILE => array('label' => CMS_profile::MESSAGE_ALERT_LEVEL_PROFILE, 'description' => CMS_profile::MESSAGE_ALERT_LEVEL_PROFILE_DESCRIPTION)); //only if user has validation clearances if ($treatmentParameters['user']->hasValidationClearance(MOD_STANDARD_CODENAME)) { $modulesCode[MOD_STANDARD_CODENAME][ALERT_LEVEL_VALIDATION] = array('label' => CMS_profile::MESSAGE_ALERT_LEVEL_VALIDATION, 'description' => CMS_profile::MESSAGE_ALERT_LEVEL_VALIDATION_DESCRIPTION); } //only if user has edition clearances if ($treatmentParameters['user']->hasEditablePages()) { $modulesCode[MOD_STANDARD_CODENAME][ALERT_LEVEL_PAGE_ALERTS] = array('label' => CMS_profile::MESSAGE_ALERT_LEVEL_PAGE_ALERTS, 'description' => CMS_profile::MESSAGE_ALERT_LEVEL_PAGE_ALERTS_DESCRIPTION); } return $modulesCode; break; } return $modulesCode; }
$view->show(); } $cms_message = ''; switch ($action) { case 'save': if ($code) { $language = CMS_languagesCatalog::getByCode($code); if (!$language || $language->hasError()) { CMS_grandFather::raiseError('Unknown language code : ' . $code); $view->setContent($content); $view->show(); } } else { $language = new CMS_language(); $language->setCode($selectedCode); $languagesCodes = CMS_languagesCatalog::getAllLanguagesCodes(); $language->setLabel($languagesCodes[$selectedCode]); } $language->setDateFormat($dateFormat); if ($modulesDenied) { $modulesDenied = array_map('trim', explode(',', $modulesDenied)); $language->setModulesDenied($modulesDenied); } else { $language->setModulesDenied(array()); } $language->setAvailableForBackoffice($admin); if ($language->writeToPersistence()) { $content = array('success' => true); $cms_message = $cms_language->getMessage(MESSAGE_ACTION_OPERATION_DONE); } else { $view->setContent($content);
protected function checkTagValues(&$tag, $requirements) { if (!is_array($requirements)) { $this->raiseError('Tag requirements must be an array'); return false; } foreach ($requirements as $name => $requirementType) { //check parameter existence if ($requirementType['mandatory'] && !isset($tag['attributes'][$name])) { if ($this->_mode == self::CHECK_PARSING_MODE) { $this->_parsingError .= "\n" . 'Malformed ' . $tag['nodename'] . ' tag : missing \'' . $name . '\' attribute'; return false; } else { $this->raiseError('Malformed ' . $tag['nodename'] . ' tag : missing \'' . $name . '\' attribute'); return false; } } elseif (isset($tag['attributes'][$name])) { //if any, check value requirement $message = false; switch ($requirementType['value']) { case 'alphanum': if ($tag['attributes'][$name] != sensitiveIO::sanitizeAsciiString($tag['attributes'][$name], '', '_')) { $message = 'Malformed ' . $tag['nodename'] . ' tag : \'' . $name . '\' attribute must only be composed with alphanumeric caracters (0-9a-z_) : ' . $tag['attributes'][$name]; } break; case 'language': if (isset($this->_parameters['module'])) { $languages = CMS_languagesCatalog::getAllLanguages($this->_parameters['module']); } else { $languages = CMS_languagesCatalog::getAllLanguages(); } if (!isset($languages[$tag['attributes'][$name]])) { $message = 'Malformed ' . $tag['nodename'] . ' tag : \'' . $name . '\' attribute must only be a valid language code : ' . $tag['attributes'][$name]; } break; case 'object': if (!sensitiveIO::isPositiveInteger(io::substr($tag['attributes'][$name], 9, -3))) { $message = 'Malformed ' . $tag['nodename'] . ' tag : \'' . $name . '\' attribute does not represent a valid object'; } break; case 'field': if (strrpos($tag['attributes'][$name], 'fields') === false || !sensitiveIO::isPositiveInteger(io::substr($tag['attributes'][$name], strrpos($tag['attributes'][$name], 'fields') + 9, -2))) { $message = 'Malformed ' . $tag['nodename'] . ' tag : \'' . $name . '\' attribute does not represent a valid object field'; } break; case 'page': if (!io::isPositiveInteger($tag['attributes'][$name])) { // Assuming the structure {websitecodename:pagecodename} $page = trim($tag['attributes'][$name], "{}"); if (strpos($page, ":") !== false) { list($websiteCodename, $pageCodename) = explode(':', $page); $website = CMS_websitesCatalog::getByCodename($websiteCodename); if (!$website) { $message = 'Malformed ' . $tag['nodename'] . ' tag : \'' . $name . '\' attribute : unknow Website codename : ' . $websiteCodename . ''; } else { $pageID = CMS_tree::getPageByCodename($pageCodename, $website, false, false); if (!$pageID) { $message = 'Malformed ' . $tag['nodename'] . ' tag : \'' . $name . '\' attribute : unknow page codename ' . $pageCodename . ' in website : ' . $websiteCodename . ''; } } } else { $message = 'Malformed ' . $tag['nodename'] . ' tag : \'' . $name . '\' attribute must be an integer or use the format websitecodename:pagecodename'; } } else { if (!CMS_tree::getPageByID($tag['attributes'][$name])) { $message = 'Malformed ' . $tag['nodename'] . ' tag : \'' . $name . '\' attribute : unknow pageID : ' . $tag['attributes'][$name]; } } break; default: //check if (!preg_match('#^' . $requirementType['value'] . '$#i', $tag['attributes'][$name])) { $message = 'Malformed ' . $tag['nodename'] . ' tag : \'' . $name . '\' attribute must match expression \'' . $requirementType['value'] . '\' : ' . $tag['attributes'][$name]; } break; } if ($message) { if ($this->_mode == self::CHECK_PARSING_MODE) { $this->_parsingError .= "\n<br />" . $message; return false; } else { $this->raiseError($message); return false; } } } } return true; }
/** * Write to disk the linx file, i.e. the content for the specified page. * Doesn't translates the atm-linx tags. * Also writes the "print" linx file * * @return boolean true on success, false on failure to write the content to this file. * @access private */ function writeLinxFile() { $defaultLanguage = CMS_languagesCatalog::getDefaultLanguage(); //get public page content (without linxes process) $pageContent = $this->getContent($defaultLanguage, PAGE_VISUALMODE_HTML_PUBLIC); //then write the page linx file $linxFile = new CMS_file($this->getLinxFilePath()); $linxFile->setContent($pageContent); if (!$linxFile->writeToPersistence()) { $this->raiseError("Can't write linx file : " . $this->getLinxFilePath()); return false; } //writes the "print" linx file if any if (USE_PRINT_PAGES && $this->_template->getPrintingClientSpaces()) { //get print page content (without linxes process) $printPageContent = $this->getContent($defaultLanguage, PAGE_VISUALMODE_PRINT); //then write the print page linx file $linxFile = new CMS_file($this->getLinxFilePath() . ".print", CMS_file::FILE_SYSTEM, CMS_file::TYPE_FILE); $linxFile->setContent($printPageContent); if (!$linxFile->writeToPersistence()) { $this->raiseError("Can't write print linx file : " . $this->getLinxFilePath() . ".print"); return false; } } return true; }
<form action="' . $_SERVER["SCRIPT_NAME"] . '" method="post"> <input type="hidden" name="page" value="' . $cms_page->getID() . '" /> <input type="hidden" name="cs" value="' . $cs . '" /> <input type="hidden" name="rowTag" value="' . $rowTag . '" /> <input type="hidden" name="rowType" value="' . $rowId . '" /> <input type="hidden" name="block" value="' . $blockId . '" /> <input type="hidden" name="cms_action" value="search" />'; // // Build list of all languages in which module is available // $content .= ' <tr> <td width="150" class="admin"> ' . $cms_language->getMessage(MESSAGE_PAGE_FIELD_LANGUAGE) . ' :</td> <td width="350" class="admin">'; $all_languages = CMS_languagesCatalog::getAllLanguages(MOD_CMS_FORMS_CODENAME); foreach ($all_languages as $aLanguage) { $checked = $aLanguage->getCode() == $items_language->getCode() ? ' checked="checked"' : ''; $content .= ' <label><input name="items_language" type="radio" value="' . $aLanguage->getCode() . '"' . $checked . ' onclick="submit();" /> ' . $aLanguage->getLabel() . '</label>'; } $content .= '</td> </tr>'; // Categories $a_all_categories = CMS_forms_formularCategories::getAllCategoriesAsArray($cms_language, true); if (sizeof($a_all_categories)) { $s_categories_listbox = CMS_moduleCategories_catalog::getListBox(array('field_name' => 'items_ctg', 'items_possible' => $a_all_categories, 'default_value' => CMS_session::getSessionVar("items_ctg"), 'attributes' => 'class="admin_input_text" style="width:250px;"')); $content .= ' <tr> <td class="admin">' . $cms_language->getMessage(MESSAGE_PAGE_FIELD_CATEGORY, false, MOD_CMS_FORMS_CODENAME) . ' :</td> <td class="admin">' . $s_categories_listbox . '</td>
/** * get an object field * * @param integer $fieldID : the field to get * @return mixed : the object field * @access public */ function objectValues($fieldID) { if (!isset($this->_objectValues[$fieldID])) { global $cms_language; $language = $cms_language ? $cms_language : CMS_languagesCatalog::getDefaultLanguage(); $objectDef = $this->getObjectDefinition(); $this->raiseError('Object field with ID ' . $fieldID . ' does not exists as a field of object ' . $objectDef->getObjectLabel($language)); return $this; } return $this->_objectValues[$fieldID]; }
$body .= 'User : '******'REMOTE_ADDR'] . ' (' . $_SERVER['HTTP_ACCEPT_LANGUAGE'] . ')' . "\n\n"; } else { $body .= 'User : '******'REMOTE_ADDR'] . "\n\n"; } if (isset($_SERVER['HTTP_USER_AGENT'])) { $body .= 'Browser : ' . $_SERVER['HTTP_USER_AGENT'] . "\n\n"; } $body .= 'Host : ' . $_SERVER['HTTP_HOST'] . ' (' . $_SERVER['SERVER_ADDR'] . ")\n\n"; $body .= 'This email is automaticaly sent from your website. You can stop this sending with the parameter ERROR404 EMAIL ALERT.'; $mail = new CMS_email(); $mail->setSubject("404 Error in " . APPLICATION_LABEL); $mail->setBody($body); $mail->setEmailFrom(APPLICATION_POSTMASTER_EMAIL . "<" . APPLICATION_POSTMASTER_EMAIL . ">"); $mail->setEmailTo(APPLICATION_MAINTAINER_EMAIL); $mainURL = CMS_websitesCatalog::getMainURL(); $cms_language = CMS_languagesCatalog::getByCode('en'); $mail->setFooter($cms_language->getMessage(CMS_emailsCatalog::MESSAGE_EMAIL_BODY_URLS, array(APPLICATION_LABEL, $mainURL . "/", $mainURL . PATH_ADMIN_WR . "/"))); $mail->setTemplate(PATH_MAIL_TEMPLATES_FS); $mail->sendEmail(); } //try to get website by path to serve specific 404 page $path = pathinfo(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), PATHINFO_DIRNAME); $website = null; if ($path && $path != '/') { $websites = CMS_websitesCatalog::getAll('order'); foreach ($websites as $website) { if ($website->getPagesPath(PATH_RELATIVETO_WEBROOT)) { if (strpos($path, $website->getPagesPath(PATH_RELATIVETO_WEBROOT)) === 0 && is_object($website->get404())) { break; } }
<td class="admin" align="right">' . $cms_language->getMessage(MESSAGE_PAGE_FIELD_REPLYTO) . '</td> <td class="admin"><input type="text" size="15" maxlength="255" class="admin_input_long_text" name="replyto" value="' . htmlspecialchars($website->getMeta('replyto')) . '" /> </td> </tr> <tr> <td class="admin" align="right">' . $cms_language->getMessage(MESSAGE_PAGE_FIELD_COPYRIGHT) . '</td> <td class="admin"><input type="text" size="30" maxlength="255" class="admin_input_long_text" name="copyright" value="' . htmlspecialchars($website->getMeta('copyright')) . '" /> </td> </tr> <tr> <td class="admin" align="right">' . $cms_language->getJsMessage(MESSAGE_PAGE_META_DATA_LABEL) . '</td> <td class="admin"><textarea cols="45" rows="2" class="admin_long_textarea" name="metas">' . htmlspecialchars($website->getMeta('metas')) . '</textarea> </td> </tr> <tr> <td class="admin" align="right"><span class="admin_text_alert">*</span> ' . $cms_language->getMessage(MESSAGE_PAGE_FIELD_LANGUAGE) . '</td> <td class="admin"><select name="language" class="admin_input_text"> <option value="">' . $cms_language->getMessage(MESSAGE_PAGE_CHOOSE) . '</option>'; $languages = CMS_languagesCatalog::getAllLanguages(MOD_STANDARD_CODENAME); foreach ($languages as $aLanguage) { $content .= '<option value="' . $aLanguage->getCode() . '"' . ($aLanguage->getCode() == $website->getMeta('language') ? ' selected="selected"' : '') . '>' . $aLanguage->getLabel() . '</option>'; } $content .= ' </select> </td> </tr> <tr> <td class="admin" align="right">' . $cms_language->getMessage(MESSAGE_PAGE_FIELD_FAVICON) . '</td> <td class="admin"><input type="text" size="30" maxlength="255" class="admin_input_long_text" name="favicon" value="' . htmlspecialchars($website->getMeta('favicon')) . '" /> <span class="admin_comment">(' . $cms_language->getMessage(MESSAGE_PAGE_FIELD_FAVICON_COMMENT) . ')</span></td> </tr> <tr> <td colspan="2" class="admin"><br /><input type="submit" class="admin_input_submit" value="' . $cms_language->getMessage(MESSAGE_BUTTON_VALIDATE) . '" /></td> </tr> </table>
/** * Constructor. * Loads all Id variables if * * @param integer $id id of profile in DB * @return void * @access public */ function __construct($id = false) { // Initiate Stack objects $this->_alerts = new CMS_stack(); if ($id) { if (!SensitiveIO::isPositiveInteger($id)) { $this->raiseError("Id is not a positive integer"); return; } $sql = "\n\t\t\t\tselect\n\t\t\t\t\t*\n\t\t\t\tfrom\n\t\t\t\t\tprofilesUsers,\n\t\t\t\t\tcontactDatas,\n\t\t\t\t\tprofiles\n\t\t\t\twhere\n\t\t\t\t\tid_pru='{$id}' and\n\t\t\t\t\tid_cd=contactData_pru and\n\t\t\t\t\tid_pr=profile_pru\n\t\t\t"; $q = new CMS_query($sql); if ($q->getNumRows()) { $data = $q->getArray(); } else { $this->raiseError("Unknown DB ID : " . $id); $this->_language = new CMS_language(); $this->_contactData = CMS_contactDatas_catalog::getByUser(array()); // Initialize super class parent::__construct(); } if (isset($data) && is_array($data)) { $this->_userId = $id; $this->_login = $data["login_pru"]; $this->_password = $data["password_pru"]; $this->_firstName = $data["firstName_pru"]; $this->_lastName = $data["lastName_pru"]; parent::__construct($data); $this->_language = CMS_languagesCatalog::getByCode($data["language_pru"]); $this->_active = $data["active_pru"]; $this->_deleted = $data["deleted_pru"]; $this->_favorites = $data["favorites_pru"] ? explode(',', $data["favorites_pru"]) : array(); $this->_alerts->setTextDefinition($data["alerts_pru"]); $this->_contactData = CMS_contactDatas_catalog::getByUser($data); } } else { $this->_language = new CMS_language(); $this->_contactData = CMS_contactDatas_catalog::getByUser(array()); // Initialize super class parent::__construct(); } }
if (!$cms_user->hasModuleClearance($codename, CLEARANCE_MODULE_EDIT)) { CMS_grandFather::raiseError('User has no rights on module : ' . $codename); $view->setActionMessage($cms_language->getmessage(MESSAGE_ERROR_MODULE_RIGHTS, array($module->getLabel($cms_language)))); $view->show(); } //CHECKS if user has module category manage clearance if ($categoryId && !$cms_user->hasModuleCategoryClearance($categoryId, CLEARANCE_MODULE_MANAGE)) { CMS_grandFather::raiseError('User has no rights on category : ' . $categoryId . ' for module : ' . $codename); $view->setActionMessage($cms_language->getmessage(MESSAGE_ERROR_CATEGORY_RIGHTS)); $view->show(); } $cms_message = ''; $content = array('success' => false); switch ($action) { case 'save': $all_languages = CMS_languagesCatalog::getAllLanguages($codename); $parentId = sensitiveIO::request('parentId', 'sensitiveIO::isPositiveInteger'); $icon = sensitiveIO::request('icon'); $defaultLabel = sensitiveIO::request('label_' . $module->getDefaultLanguageCodename()); // Current category object to manipulate $item = new CMS_moduleCategory($categoryId); //check protected status $protected = sensitiveIO::request('protected') ? true : false; if (!$item->isProtected() || !$protected && $cms_user->hasAdminClearance(CLEARANCE_ADMINISTRATION_EDITVALIDATEALL)) { $item->setAttribute('language', $cms_language); $item->setAttribute('moduleCodename', $codename); $item->setProtected($protected); if (!$parentId) { $parentCategory = $item->getParent(); } else { // Parent category
/** * Return a list of all objects names of given type * * @param boolean $public are the needed datas public ? /!\ Does not apply for this type of object * @param array $searchConditions, search conditions to add. /!\ Does not apply for this type of object * @return array(integer objectID => string objectName) * @access public * @static */ function getListOfNamesForObject($public = false, $searchConditions = array()) { //get module $module = CMS_poly_object_catalog::getModuleCodenameForField($this->_field->getID()); // Get languages $a_all_languages = CMS_languagesCatalog::getAllLanguages($module); $languages = array(); foreach ($a_all_languages as $code => $language) { $languages[$code] = $language->getLabel(); } return $languages; }
/** * Import module datas * * @param mixed $datas, the import datas * @param string $format, the import format in : php (default), xml * @param CMS_language $cms_language, the current cms_language to use. Passed by reference to temporary overwrite it with import language * @param string $infos (reference), the returned import infos * @return boolean : the import status */ function import($datas, $format = 'php', &$cms_language, &$infos) { $infos = ''; $return = true; switch ($format) { case 'xml': //convert XML to PHP array $xml2Array = new CMS_xml2Array($datas, CMS_xml2Array::XML_ARRAY2XML_FORMAT); $importedArray = $xml2Array->getParsedArray(); break; case 'php': //try to eval PHP Array if (!is_array($datas)) { $infos .= 'Error : PHP datas must be a valid PHP array ... ' . "\n"; return false; } else { $importedArray = $datas; } break; default: $infos .= 'Error : Unknown import format ... ' . $format . "\n"; return false; break; } if (!isset($importedArray) || !is_array($importedArray)) { $infos .= 'Error : no datas to import or incorrect datas ...' . "\n"; return false; } if (isset($importedArray['version'])) { $version = $importedArray['version']; unset($importedArray['version']); } else { $version = ''; } //Check for version compliance if ($version && version_compare(AUTOMNE_VERSION, $version, '<')) { $infos .= 'Error: Automne version below the version of imported datas' . "\n"; return false; } if (isset($importedArray['language'])) { //force import language to overwrite user language because imported datas refer to this language $oldLanguage = $cms_language->getCode(); $cms_language = CMS_languagesCatalog::getByCode($importedArray['language']); if (!$cms_language || $cms_language->hasError()) { //reload user language $cms_language = CMS_languagesCatalog::getByCode($oldLanguage); } unset($importedArray['language']); } //return import description if exists if (isset($importedArray['description']) && $importedArray['description']) { $infos .= '--------------------------------------------------------------------------------------------------------' . "\n"; $infos .= 'Import description: ' . "\n"; $infos .= io::htmlspecialchars($importedArray['description']) . "\n"; $infos .= '--------------------------------------------------------------------------------------------------------' . "\n"; unset($importedArray['description']); } foreach ($importedArray as $type => $data) { switch ($type) { case 'modules': $idsRelation = array(); $importInfos = ''; if (CMS_modulesCatalog::fromArray($data, $this->_parameters, $cms_language, $idsRelation, $importInfos)) { $infos .= 'Import completed successfully' . ($importInfos ? ': ' . "\n" . $importInfos : '') . "\n"; } else { $infos .= 'Error: ' . "\n" . $importInfos . "\n"; $return &= false; } break; default: $infos .= 'Error: Unknown data type to import : ' . $type . "\n"; $return &= false; break; } } if (isset($importedArray['language'])) { //reload user language $cms_language = CMS_languagesCatalog::getByCode($oldLanguage); } return $return; }
<input type="submit" class="admin_input_submit" value="' . $cms_language->getMessage(MESSAGE_PAGE_EXPORT_MODULE) . '" /> </form>'; switch (io::post('action')) { case 'export': if (io::post('desc')) { $options['description'] = io::post('desc'); } //set export parameters $export->setParameters($options); //force default language loading to overwrite user language because datas is more accurate in default language $oldLanguage = $cms_language->getCode(); $cms_language = CMS_languagesCatalog::getDefaultLanguage(false); //export datas $exportDatas = $export->export($format); //reload user language $cms_language = CMS_languagesCatalog::getByCode($oldLanguage); switch ($format) { case 'php': $content .= ' <br /><a name="exportDatas"></a> <fieldset> <legend>' . $cms_language->getMessage(MESSAGE_PAGE_EXPORTED_DATAS) . '</legend> <textarea style="width:100%;height:300px;">' . htmlspecialchars(var_export($exportDatas, true)) . '</textarea> </fielset>'; break; case 'xml': $content .= ' <br /><a name="exportDatas"></a> <fieldset> <legend>' . $cms_language->getMessage(MESSAGE_PAGE_EXPORTED_DATAS) . '</legend> <textarea style="width:100%;height:300px;">' . htmlspecialchars($exportDatas) . '</textarea>
/** * Get the default language. * * @param boolean guessFromNavigator : try to guess default user language from HTTP_ACCEPT_LANGUAGE (default : false) * @return CMS_language The default language * @access public */ static function getDefaultLanguage($guessFromNavigator = false) { if ($guessFromNavigator) { //load language object from get value if any if (isset($_GET["language"]) && SensitiveIO::isInSet($_GET["language"], array_keys(CMS_languagesCatalog::getAllLanguages()))) { $language = CMS_languagesCatalog::getByCode($_GET["language"]); if ($language) { return $language; } } elseif (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]) && SensitiveIO::isInSet(io::substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2), array_keys(CMS_languagesCatalog::getAllLanguages()))) { $language = CMS_languagesCatalog::getByCode(io::substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2)); if ($language) { return $language; } } } return CMS_languagesCatalog::getByCode(APPLICATION_DEFAULT_LANGUAGE); }
/** * Gets the data in HTML mode. * * @param CMS_language &$language The language of the administration frontend * @param CMS_page &$page The page which contains the client space * @param CMS_clientSpace &$clientSpace The client space which contains the row * @param CMS_row &$row The row which contains the block * @param integer $visualizationMode The visualization mode used * @return string the HTML data * @access public */ function getData(&$language, &$page, &$clientSpace, &$row, $visualizationMode) { parent::getData($language, $page, $clientSpace, $row, $visualizationMode); //get the data switch ($visualizationMode) { case PAGE_VISUALMODE_HTML_PUBLIC: case PAGE_VISUALMODE_PRINT: $data = $this->getRawData($page->getID(), $clientSpace->getTagID(), $row->getTagID(), RESOURCE_LOCATION_USERSPACE, true); break; case PAGE_VISUALMODE_HTML_EDITED: $data = $this->getRawData($page->getID(), $clientSpace->getTagID(), $row->getTagID(), RESOURCE_LOCATION_USERSPACE, false); break; case PAGE_VISUALMODE_HTML_EDITION: case PAGE_VISUALMODE_FORM: case PAGE_VISUALMODE_CLIENTSPACES_FORM: $data = $this->getRawData($page->getID(), $clientSpace->getTagID(), $row->getTagID(), RESOURCE_LOCATION_EDITION, false); break; } //build the HTML $html_attributes = ""; foreach ($this->_attributes as $name => $value) { if ($name != "module" && $name != "type") { $html_attributes .= ' ' . $name . '="' . $value . '"'; } } $src = ''; $this->_hasContent = $data && $data["file"] ? true : false; switch ($visualizationMode) { case PAGE_VISUALMODE_HTML_PUBLIC: case PAGE_VISUALMODE_PRINT: if ($this->_hasContent) { $language = CMS_languagesCatalog::getByCode($page->getLanguage(true)); $src = PATH_MODULES_FILES_STANDARD_WR . '/public/' . $data["file"]; } break; case PAGE_VISUALMODE_HTML_EDITED: if ($this->_hasContent) { $language = CMS_languagesCatalog::getByCode($page->getLanguage(false)); $src = PATH_MODULES_FILES_STANDARD_WR . '/edited/' . $data["file"]; } break; case PAGE_VISUALMODE_HTML_EDITION: if ($this->_hasContent) { $language = CMS_languagesCatalog::getByCode($page->getLanguage(false)); $src = PATH_MODULES_FILES_STANDARD_WR . '/edition/' . $data["file"]; } break; case PAGE_VISUALMODE_FORM: $this->_editable = true; if ($this->_hasContent) { $language = CMS_languagesCatalog::getByCode($page->getLanguage(false)); $src = PATH_MODULES_FILES_STANDARD_WR . '/edition/' . $data["file"]; } else { $html = '<img src="' . PATH_MODULES_FILES_STANDARD_WR . '/flash.gif" alt="X" title="X" />'; $form_data = str_replace("{{data}}", $html, $this->_definition); return $this->_getHTMLForm($language, $page, $clientSpace, $row, $this->_tagID, $form_data); } break; case PAGE_VISUALMODE_CLIENTSPACES_FORM: $this->_hasContent = false; $this->_editable = false; $html = '<img src="' . PATH_MODULES_FILES_STANDARD_WR . '/flash.gif" alt="X" title="X" />'; return $this->_getHTMLForm($language, $page, $clientSpace, $row, $this->_tagID, $form_data); break; } if (!$src) { return ''; } $id = $data["name"] ? 'flash-' . sensitiveIO::sanitizeHTMLString($data["name"]) : 'flash-' . md5(mt_rand() . microtime()); $html = '<div>' . "\n" . ' <script type="text/javascript">' . "\n" . ' swfobject.embedSWF(\'' . $src . '\', \'' . $id . '\', \'' . $data['width'] . '\', \'' . $data['height'] . '\', \'' . $data['version'] . '\', "' . PATH_MAIN_WR . '/swfobject/expressInstall.swf", {' . sensitiveIO::sanitizeJSString($data['flashvars'], false, false) . '}, {' . sensitiveIO::sanitizeJSString($data['params'], false, false) . '}, {' . sensitiveIO::sanitizeJSString($data['attributes'], false, false) . '});' . "\n" . ' </script>' . "\n" . ' <div id="' . $id . '" class="atm-blockflash" style="width:' . $data["width"] . 'px;height:' . $data["height"] . 'px;">' . "\n" . ' <noscript>' . $language->getMessage(self::MESSAGE_PAGE_JAVASCRIPT_MANDATORY) . '</noscript>' . "\n" . ' <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>' . "\n" . ' </div>' . '</div>' . "\n"; $blockinfos = array('blockflash' => array()); $blockinfos['blockflash'] = true; CMS_module::moduleUsage($page->getID(), MOD_STANDARD_CODENAME, $blockinfos); if ($visualizationMode != PAGE_VISUALMODE_FORM) { return str_replace("{{data}}", $html, $this->_definition); } else { $form_data = str_replace("{{data}}", $html, $this->_definition); return $this->_getHTMLForm($language, $page, $clientSpace, $row, $this->_tagID, $form_data); } }
/** * 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) { //if script concern a field, pass to it if (isset($parameters['field']) && sensitiveIO::isPositiveInteger($parameters['field'])) { if (!is_object($this->_objectValues[$parameters['field']]) || !method_exists($this->_objectValues[$parameters['field']], 'scriptTask')) { return false; } //then pass task to field return $this->_objectValues[$parameters['field']]->scriptTask($parameters); } else { //this is an object related script switch ($parameters['task']) { case 'emailNotification': //instanciate user $user = CMS_profile_usersCatalog::getByID($parameters['validator']); if ($this->userHasClearance($user, CLEARANCE_MODULE_EDIT)) { //get Object definition $objectDef = $this->getObjectDefinition(); //get module $codename = CMS_poly_object_catalog::getModuleCodenameForObjectType($objectDef->getID()); switch ($parameters['type']) { case 'validate': $group_email = new CMS_emailsCatalog(); $languages = CMS_languagesCatalog::getAllLanguages(); $subjects = array(); $bodies = array(); //editors $editorsIds = $parameters['editors']; $editors = array(); foreach ($editorsIds as $editorId) { $editor = CMS_profile_usersCatalog::getByID($editorId); if (is_a($editor, 'CMS_profile_user') && !$editor->hasError()) { $editors[] = $editor; } } //$editors = $this->getEditors(); $editorsInfos = ''; foreach ($editors as $editor) { $editorsInfos .= $editorsInfos ? ",\n" : ''; $editorsInfos .= $editor->getFullName() . ($editor->getEmail() ? ' (' . $editor->getEmail() . ')' : ''); } foreach ($languages as $language) { $subjects[$language->getCode()] = $language->getMessage(self::MESSAGE_POLYMOD_ACTION_EMAIL_SUBJECT, array($objectDef->getLabel($language)), MOD_POLYMOD_CODENAME); $bodies[$language->getCode()] = $language->getMessage(MESSAGE_EMAIL_VALIDATION_AWAITS) . "\n" . $language->getMessage(self::MESSAGE_POLYMOD_ACTION_EMAIL_BODY, array($objectDef->getLabel($language), $this->getLabel(), $editorsInfos), MOD_POLYMOD_CODENAME); } $group_email->setUserMessages(array($user), $bodies, $subjects, ALERT_LEVEL_VALIDATION, $codename); $group_email->sendMessages(); break; case 'delete': $group_email = new CMS_emailsCatalog(); $languages = CMS_languagesCatalog::getAllLanguages(); $subjects = array(); $bodies = array(); //editors $editorsIds = $parameters['editors']; $editors = array(); foreach ($editorsIds as $editorId) { $editor = CMS_profile_usersCatalog::getByID($editorId); if (is_a($editor, 'CMS_profile_user') && !$editor->hasError()) { $editors[] = $editor; } } //$editors = $this->getEditors(); $editorsInfos = ''; foreach ($editors as $editor) { $editorsInfos .= $editorsInfos ? ",\n" : ''; $editorsInfos .= $editor->getFullName() . ($editor->getEmail() ? ' (' . $editor->getEmail() . ')' : ''); } foreach ($languages as $language) { $subjects[$language->getCode()] = $language->getMessage(self::MESSAGE_POLYMOD_ACTION_EMAIL_DELETE_SUBJECT, array($objectDef->getLabel($language)), MOD_POLYMOD_CODENAME); $bodies[$language->getCode()] = $language->getMessage(MESSAGE_EMAIL_VALIDATION_AWAITS) . "\n" . $language->getMessage(self::MESSAGE_POLYMOD_ACTION_EMAIL_DELETE_BODY, array($objectDef->getLabel($language), $this->getLabel(), $editorsInfos), MOD_POLYMOD_CODENAME); } $group_email->setUserMessages(array($user), $bodies, $subjects, ALERT_LEVEL_VALIDATION, $codename); $group_email->sendMessages(); break; default: $this->raiseError('Unknown script task to do : ' . print_r($parameters, true)); return false; break; } } return true; break; default: $this->raiseError('Unknown script task to do : ' . print_r($parameters, true)); return false; break; } } }
/** * Writes into persistence (MySQL for now), along with base data. * * @return boolean true on success, false on failure * @access public */ function writeToPersistence() { if (!$this->_uuid) { $this->_uuid = io::uuid(); } $isNew = $this->_categoryID === NULL; // Inform modules of the object creation $modules = CMS_modulesCatalog::getAll('id'); foreach ($modules as $codename => $module) { if (method_exists($module, 'moduleCategoryPreSave')) { $module->moduleCategoryPreSave($this, $isNew); } } // Prepare SQL $sql_fields = "\n\t\t\tmodule_mca='" . SensitiveIO::sanitizeSQLString($this->_moduleCodename) . "',\n\t\t\troot_mca='" . SensitiveIO::sanitizeSQLString($this->_rootID) . "',\n\t\t\tparent_mca='" . SensitiveIO::sanitizeSQLString($this->_parentID) . "',\n\t\t\torder_mca='" . SensitiveIO::sanitizeSQLString($this->_order) . "',\n\t\t\ticon_mca='" . SensitiveIO::sanitizeSQLString($this->_icon) . "',\n\t\t\tuuid_mca='" . SensitiveIO::sanitizeSQLString($this->_uuid) . "',\n\t\t\tprotected_mca='" . ($this->_protected ? 1 : 0) . "'\n\t\t"; // Finish SQL if ($this->_categoryID) { $sql = "\n\t\t\t\tupdate\n\t\t\t\t\tmodulesCategories\n\t\t\t\tset\n\t\t\t\t\t" . $sql_fields . "\n\t\t\t\twhere\n\t\t\t\t\tid_mca='" . $this->_categoryID . "'\n\t\t\t"; } else { $sql = "\n\t\t\t\tinsert into\n\t\t\t\t\tmodulesCategories\n\t\t\t\tset\n\t\t\t\t\t" . $sql_fields; } $q = new CMS_query($sql); if ($q->hasError()) { return false; } elseif (!$this->_categoryID) { $this->_categoryID = $q->getLastInsertedID(); } //reset catalog info CMS_moduleCategories_catalog::getParentIdOf($this->_categoryID, true); // Update lineage again with current ID $lineage = (string) @implode(';', CMS_moduleCategories_catalog::getLineageOfCategory($this->_categoryID, true)); if ($this->_lineageFromDB != $lineage) { $sql = "\n\t\t\t\tupdate\n\t\t\t\t\tmodulesCategories\n\t\t\t\tset\n\t\t\t\t\tlineage_mca='" . SensitiveIO::sanitizeSQLString($lineage) . "'\n\t\t\t\twhere\n\t\t\t\t\tid_mca='" . $this->_categoryID . "'\n\t\t\t"; $q = new CMS_query($sql); //update siblings lineage if any if ($this->hasSiblings()) { $siblings = $this->getSiblings(); foreach ($siblings as $aSibling) { $aSibling->writeToPersistence(); } } } // Save translations // Number of languages availables depends on module // instead of languages initially stored into object // A way to support easily any new language if (is_array($this->_labels) && $this->_labels && $this->_categoryID) { $err = 0; // Insert each label foreach (CMS_languagesCatalog::getAllLanguages($this->_moduleCodename) as $aLanguage) { $lang = $aLanguage->getCode(); // Delete $sql = "\n\t\t\t\t\tdelete\n\t\t\t\t\tfrom\n\t\t\t\t\t\tmodulesCategories_i18nm\n\t\t\t\t\twhere\n\t\t\t\t\t\tcategory_mcl='" . $this->_categoryID . "'\n\t\t\t\t\t\tand language_mcl='" . SensitiveIO::sanitizeSQLString($lang) . "'\n\t\t\t\t"; $qD = new CMS_query($sql); if ($qD->hasError()) { $err++; $this->raiseError("Error deleting label in language : `{$lang}`"); } // Insert $sql = "\n\t\t\t\t\tinsert into\n\t\t\t\t\t\tmodulesCategories_i18nm\n\t\t\t\t\tset\n\t\t\t\t\t\tlanguage_mcl='" . SensitiveIO::sanitizeSQLString($lang) . "',\n\t\t\t\t\t\tcategory_mcl = " . $this->_categoryID . ",\n\t\t\t\t\t\tlabel_mcl='" . SensitiveIO::SanitizeSQLString(@$this->_labels[$lang]) . "',\n\t\t\t\t\t\tdescription_mcl='" . SensitiveIO::SanitizeSQLString(@$this->_descriptions[$lang]) . "',\n\t\t\t\t\t\tfile_mcl='" . SensitiveIO::SanitizeSQLString(@$this->_files[$lang]) . "'\n\t\t\t\t"; $q = new CMS_query($sql); if ($q->hasError()) { $err++; $this->raiseError("Error inserting label in language : `{$lang}`"); } } // have to repeat the call here $modules = CMS_modulesCatalog::getAll('id'); foreach ($modules as $codename => $module) { if (method_exists($module, 'moduleCategoryPostSave')) { $module->moduleCategoryPostSave($this, $isNew); } } //Clear polymod cache //CMS_cache::clearTypeCacheByMetas('polymod', array('module' => $this->_moduleCodename)); CMS_cache::clearTypeCache('polymod'); return $err <= 0; } $modules = CMS_modulesCatalog::getAll('id'); foreach ($modules as $codename => $module) { if (method_exists($module, 'moduleCategoryPostSave')) { $module->moduleCategoryPostSave($this, $isNew); } } //Clear polymod cache //CMS_cache::clearTypeCacheByMetas('polymod', array('module' => $this->_moduleCodename)); CMS_cache::clearTypeCache('polymod'); return true; }
public static function getNewsletterContent($pageId) { $page = CMS_tree::getPageByID($pageId); if ($page->hasError()) { return; } $website = $page->getWebsite(); $websiteUrl = $website->getURL(); $language = CMS_languagesCatalog::getByCode($page->getLanguage()); $content = $page->getContent($language, PAGE_VISUALMODE_HTML_PUBLIC); $modulesTreatment = new CMS_modulesTags(MODULE_TREATMENT_LINXES_TAGS, PAGE_VISUALMODE_HTML_PUBLIC, $page); $modulesTreatment->setDefinition($content); $content = $modulesTreatment->treatContent(true); //eval all php code in page $php_evalued_content = io::evalPHPCode($content); //change all relative URL in page $parsed_content = self::prepareHTML($php_evalued_content, $websiteUrl); return $parsed_content; }
/** * Get available languages codes * * @return array, the available languages codes * @access public * @static */ function getAvailableLanguages() { static $availableLanguages, $languagesPriority; if (!is_array($availableLanguages)) { $availableLanguages = array(); //check for polymod properly loaded $module = class_exists('CMS_polymod') ? MOD_POLYMOD_CODENAME : ''; //order by dateFormat to get fr in first place $languages = CMS_languagesCatalog::getAllLanguages($module); //set default language as first one $firstLanguage = $languages[APPLICATION_DEFAULT_LANGUAGE]; unset($languages[APPLICATION_DEFAULT_LANGUAGE]); $languages = array_merge(array(APPLICATION_DEFAULT_LANGUAGE => $firstLanguage), $languages); foreach ($languages as $language) { $availableLanguages[$language->getCode()] = $language->getLabel(); $languagesPriority[] = $language->getCode(); } } if (isset($this)) { $this->_languageLabels = $availableLanguages; $this->_languageCodesPriority = $languagesPriority; } return array_keys($availableLanguages); }
/** * Get object as an array structure used for export * * @param array $params The export parameters. * array( * categories => false|true : export module categories (default : true) * rows => false|true : export module rows (default : true) * css => false|true : export module JS (default : true) * js => false|true : export module CSS (default : true) * ) * @param array $files The reference to the found files used by object * @return array : the object array structure * @access public */ public function asArray($params = array(), &$files) { if (!is_array($files)) { $files = array(); } $aModule = array('codename' => $this->_codename, 'polymod' => false, 'labels' => CMS_language::getMessages(1, $this->_codename), 'parameters' => $this->getParameters(false, true)); $defaultLanguage = CMS_languagesCatalog::getDefaultLanguage(); if (in_array('categories', $params)) { global $cms_user; if (APPLICATION_ENFORCES_ACCESS_CONTROL != false && isset($cms_user)) { $categories = $this->getModuleCategories(array('language' => $defaultLanguage, 'root' => 0, 'cms_user' => $cms_user)); } else { $categories = $this->getModuleCategories(array('language' => $defaultLanguage, 'root' => 0)); } foreach ($categories as $category) { $aModule['categories'][] = $category->asArray($params, $files); } } if (in_array('rows', $params)) { $modulesRows = CMS_rowsCatalog::getByModules(array($this->_codename)); if ($this->_codename != MOD_STANDARD_CODENAME) { $modulesStandardRows = CMS_rowsCatalog::getByModules(array($this->_codename, MOD_STANDARD_CODENAME)); foreach ($modulesStandardRows as $id => $row) { $modulesRows[$id] = $row; } } foreach ($modulesRows as $row) { $aModule['rows'][] = $row->asArray($params, $files); } } if (in_array('js', $params)) { $jsFiles = $this->getJSFiles('', true); $aModule['js'] = array(); if ($jsFiles) { foreach ($jsFiles as $key => $jsFile) { $jsFiles[$key] = '/' . $jsFile; } $aModule['js'] = $jsFiles; $files = array_merge($files, $jsFiles); } } if (in_array('css', $params)) { $cssFiles = $this->getCSSFiles('', true); $aModule['css'] = array(); if ($cssFiles) { foreach ($cssFiles as $media => $cssMediaFiles) { if ($cssMediaFiles) { foreach ($cssMediaFiles as $key => $cssFile) { $cssMediaFiles[$key] = '/' . $cssFile; } $files = array_merge($files, $cssMediaFiles); $aModule['css'] = array_merge($aModule['css'], $cssMediaFiles); } } } } if (in_array('img', $params)) { $imgFiles = array(); $aModule['css'] = array(); if (is_dir(PATH_REALROOT_FS . '/img/modules/' . $this->getCodename())) { $imgFiles = glob(PATH_REALROOT_FS . '/img/modules/' . $this->getCodename() . '/*.*', GLOB_NOSORT); } if ($imgFiles && is_array($imgFiles)) { foreach ($imgFiles as $key => $imgFile) { $imgFiles[$key] = str_replace(PATH_REALROOT_FS, '', $imgFile); } $aModule['img'] = $imgFiles; $files = array_merge($files, $imgFiles); } } return $aModule; }
/** * Check tags attributes requirements * * @param array $requirements : tag attributes requirements at the following format : array(string attributeName => mixed attributeType) With attributeType in : - boolean true : check only presence of an attribute value - alphanum : attribute value must be a simple alphanumeric value without special chars - language : attribute value must be a valid language code - orderType : attribute value must be a valid order type - valid PERL regular expression : attribute value must be mattch the regular expression * @return string indented php code * @access public */ function checkTagRequirements($requirements) { if (!is_array($requirements)) { $this->raiseError('Tag requirements must be an array'); return false; } foreach ($requirements as $name => $requirementType) { //check parameter existence if (!isset($this->_attributes[$name])) { $this->_tagError .= "\n" . 'Malformed ' . $this->_name . ' tag : missing \'' . $name . '\' attribute'; return false; } elseif ($requirementType !== true) { //if any, check value requirement switch ($requirementType) { case 'alphanum': if ($this->_attributes[$name] != sensitiveIO::sanitizeAsciiString($this->_attributes[$name], '', '_')) { $this->_tagError .= "\n" . 'Malformed ' . $this->_name . ' tag : \'' . $name . '\' attribute must only be composed with alphanumeric caracters (0-9a-z_) : ' . $this->_attributes[$name]; return false; } break; case 'language': if (isset($this->_parameters['module'])) { $languages = CMS_languagesCatalog::getAllLanguages($this->_parameters['module']); } else { $languages = CMS_languagesCatalog::getAllLanguages(); } if (!isset($languages[$this->_attributes[$name]])) { $this->_tagError .= "\n" . 'Malformed ' . $this->_name . ' tag : \'' . $name . '\' attribute must only be a valid language code : ' . $this->_attributes[$name]; return false; } break; case 'object': if (!sensitiveIO::isPositiveInteger(io::substr($this->_attributes[$name], 9, -3))) { $this->_tagError .= "\n" . 'Malformed ' . $this->_name . ' tag : \'' . $name . '\' attribute does not represent a valid object'; return false; } break; case 'field': if (strrpos($this->_attributes[$name], 'fields') === false || !sensitiveIO::isPositiveInteger(io::substr($this->_attributes[$name], strrpos($this->_attributes[$name], 'fields') + 9, -2))) { $this->_tagError .= "\n" . 'Malformed ' . $this->_name . ' tag : \'' . $name . '\' attribute does not represent a valid object field'; return false; } break; case 'paramType': if (!in_array($this->_attributes[$name], CMS_object_search::getStaticSearchConditionTypes()) && !sensitiveIO::isPositiveInteger($this->_attributes[$name]) && io::substr($this->_attributes[$name], -12) != "['fieldID']}") { $this->_tagError .= "\n" . 'Malformed ' . $this->_name . ' tag : \'' . $name . '\' attribute, must be one of these values : ' . implode(', ', CMS_object_search::getStaticSearchConditionTypes()); return false; } break; case 'orderType': if (!in_array($this->_attributes[$name], CMS_object_search::getStaticOrderConditionTypes()) && !sensitiveIO::isPositiveInteger($this->_attributes[$name]) && io::substr($this->_attributes[$name], -12) != "['fieldID']}") { $this->_tagError .= "\n" . 'Malformed ' . $this->_name . ' tag : \'' . $name . '\' attribute, must be one of these values : ' . implode(', ', CMS_object_search::getStaticOrderConditionTypes()); return false; } break; default: //check if (!preg_match('#^' . $requirementType . '$#i', $this->_attributes[$name])) { $this->_tagError .= "\n" . 'Malformed ' . $this->_name . ' tag : \'' . $name . '\' attribute must match expression \'' . $requirementType . '\' : ' . $this->_attributes[$name]; return false; } break; } } } return true; }
// +----------------------------------------------------------------------+ // // $Id: index.php,v 1.12 2010/03/08 16:41:18 sebastien Exp $ /** * PHP page : index * Manages the login and logout of users. Creates the context and put it into $_SESSION. * * @package Automne * @subpackage admin * @author Sébastien Pauchet <*****@*****.**> */ require_once dirname(__FILE__) . '/../../cms_rc_admin.php'; define("MESSAGE_PAGE_TITLE", 51); define("MESSAGE_PAGE_LOADING", 1321); //load language object $language = CMS_languagesCatalog::getDefaultLanguage(true); //load interface instance $view = CMS_view::getInstance(); //set main and ext CSS $view->addCSSFile('ext'); $view->addCSSFile('main'); $view->addCSSFile('codemirror'); if (SYSTEM_DEBUG) { $view->addCSSFile('debug'); } //set needed JS files if (SYSTEM_DEBUG) { $jsfiles = array('ext', 'debug', 'codemirror', 'main'); } else { $jsfiles = array('ext', 'codemirror', 'main'); }
<option value="working-polymod"' . $selected['working-polymod'] . '>' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_WORKING_POLYMOD_TAGS, false, MOD_POLYMOD_CODENAME) . '</option> <option value="vars"' . $selected['vars'] . '>' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_BLOCK_GENERAL_VARS) . '</option> </optgroup> <optgroup label="' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_ROW_OBJECTS_VARS_EXPLANATION, false, MOD_POLYMOD_CODENAME) . '">'; $helpContent .= CMS_poly_module_structure::viewObjectInfosList($moduleCodename, $cms_language, $_POST['objectexplanation'], $objectDefinition->getID()); $helpContent .= ' </optgroup>'; $helpContent .= ' </select> </div> </div>'; //then display chosen object infos if ($_POST['objectexplanation']) { switch ($_POST['objectexplanation']) { case 'rss': $moduleLanguages = CMS_languagesCatalog::getAllLanguages($moduleCodename); foreach ($moduleLanguages as $moduleLanguage) { $moduleLanguagesCodes[] = $moduleLanguage->getCode(); } $helpContent .= $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_RSS_TAG_EXPLANATION, array(implode(', ', $moduleLanguagesCodes)), MOD_POLYMOD_CODENAME); break; case 'search': $helpContent .= $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_SEARCH_TAGS_EXPLANATION, false, MOD_POLYMOD_CODENAME); break; case 'working': $helpContent .= $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_WORKING_TAGS_EXPLANATION); break; case 'working-polymod': $helpContent .= $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_WORKING_POLYMOD_TAGS_EXPLANATION, false, MOD_POLYMOD_CODENAME); break; case 'vars':
/** * Constructor * * @access public * @param integer $id * @param boolean $public if only public data to retrieve * @param CMS_profile_user $cms_user */ function __construct($id, $cms_user = false) { if ($id) { if (!SensitiveIO::isPositiveInteger($id)) { $this->raiseError("Id is not a positive integer"); return; } $sql = "\n\t\t\t\tselect\n\t\t\t\t\t*\n\t\t\t\tfrom\n\t\t\t\t\tmod_cms_forms_formulars\n\t\t\t\twhere\n\t\t\t\t\tid_frm='" . $id . "'\n\t\t\t"; $q = new CMS_query($sql); if ($q->getNumRows()) { $data = $q->getArray(); $this->_formID = $id; $this->_name = $data["name_frm"]; $this->_source = $data["source_frm"]; $this->_public = $data["closed_frm"] > 0 ? false : true; // Form creator $this->_ownerID = (int) $data["owner_frm"]; $this->_language = new CMS_language($data["language_frm"]); $this->_responses = (int) $data["responses_frm"]; } else { $this->raiseError("Unknown ID :" . $id); } } else { $this->_public = true; if (is_a($cms_user, 'CMS_profile_user')) { $this->_ownerID = $cms_user->getID(); } $this->_language = CMS_languagesCatalog::getDefaultLanguage(); } }
/** * Destroy the module * * @return void * @access public */ function destroy() { global $cms_user; // Check module exists and is polymod if (!$this->isDestroyable()) { return false; } // CHECK USED ROWS $rowsIds = CMS_rowsCatalog::getByModules(array($this->_codename), false, false); //delete all module rows foreach ($rowsIds as $rowId) { $row = CMS_rowsCatalog::getByID($rowId); if (is_object($row)) { $row->destroy(); } } // TREAT CATEGORIES $attrs = array("module" => $this->_codename, "language" => CMS_languagesCatalog::getDefaultLanguage(), "level" => -1, "root" => -1, "cms_user" => $cms_user, "clearanceLevel" => CLEARANCE_MODULE_EDIT, "strict" => false); $cats = CMS_moduleCategories_catalog::getAll($attrs); if ($cats) { foreach ($cats as $cat) { // Destroy category $cat->destroy(); } } // TREAT MODULE & VALIDATIONS RIGHTS $sql = "\n\t\t\tselect \n\t\t\t\t*\n\t\t\tfrom\n\t\t\t\tprofiles\n\t\t\twhere\n\t\t\t\tmoduleClearancesStack_pr like '" . io::sanitizeSQLString($this->_codename) . ",%'\n\t\t\t\t or moduleClearancesStack_pr like '%;" . io::sanitizeSQLString($this->_codename) . ",%'\n\t\t "; $q = new CMS_query($sql); if ($q->getNumRows()) { while ($r = $q->getArray()) { $stack = new CMS_stack(); $stack->setTextDefinition($r['moduleClearancesStack_pr']); $stack->delAllWithOneKey($this->_codename); $qInsert = new CMS_query("update profiles set moduleClearancesStack_pr='" . io::sanitizeSQLString($stack->getTextDefinition()) . "' where id_pr='" . $r['id_pr'] . "'"); } } $sql = "\n\t\t\tselect \n\t\t\t\t*\n\t\t\tfrom\n\t\t\t\tprofiles\n\t\t\twhere\n\t\t\t\tvalidationClearancesStack_pr like '" . io::sanitizeSQLString($this->_codename) . ";%'\n\t\t\t\t or validationClearancesStack_pr like '%;" . io::sanitizeSQLString($this->_codename) . ";%'\n\t\t\t\t or validationClearancesStack_pr = '" . io::sanitizeSQLString($this->_codename) . "'\n\t\t\t"; $q = new CMS_query($sql); if ($q->getNumRows()) { while ($r = $q->getArray()) { $stack = new CMS_stack(); $stack->setTextDefinition($r['validationClearancesStack_pr']); $stack->delAllWithOneKey($this->_codename); $qInsert = new CMS_query("update profiles set validationClearancesStack_pr='" . io::sanitizeSQLString($stack->getTextDefinition()) . "' where id_pr='" . $r['id_pr'] . "'"); } } //remove module files if (CMS_file::deltreeSimulation(PATH_MODULES_FILES_FS . '/' . $this->_codename, true)) { CMS_file::deltree(PATH_MODULES_FILES_FS . '/' . $this->_codename, true); } //remove JS and CSS if (is_dir(PATH_JS_FS . '/modules/' . $this->_codename) && CMS_file::deltreeSimulation(PATH_JS_FS . '/modules/' . $this->_codename, true)) { CMS_file::deltree(PATH_JS_FS . '/modules/' . $this->_codename, true); } if (is_dir(PATH_CSS_FS . '/modules/' . $this->_codename) && CMS_file::deltreeSimulation(PATH_CSS_FS . '/modules/' . $this->_codename, true)) { CMS_file::deltree(PATH_CSS_FS . '/modules/' . $this->_codename, true); } $cssFiles = $this->getCSSFiles('', true); foreach ($cssFiles as $mediaCssFiles) { foreach ($mediaCssFiles as $cssFile) { CMS_file::deleteFile(PATH_REALROOT_FS . '/' . $cssFile); } } //Clear polymod cache //CMS_cache::clearTypeCacheByMetas('polymod', array('module' => $this->_codename)); CMS_cache::clearTypeCache('polymod'); // Destroy module return parent::destroy(); }
/** * Return the module code for the specified treatment mode, visualization mode and object. * * @param mixed $modulesCode the previous modules codes (usually string) * @param integer $treatmentMode The current treatment mode (see constants on top of this file for accepted values). * @param integer $visualizationMode The current visualization mode (see constants on top of cms_page class for accepted values). * @param object $treatedObject The reference object to treat. * @param array $treatmentParameters : optionnal parameters used for the treatment. Usually an array of objects. * * @return string : the module code to add * @access public */ function getModuleCode($modulesCode, $treatmentMode, $visualizationMode, &$treatedObject, $treatmentParameters) { switch ($treatmentMode) { case MODULE_TREATMENT_EDITOR_CODE: if ($treatmentParameters["editor"] == "fckeditor") { $languages = implode(',', array_keys(CMS_languagesCatalog::getAllLanguages(MOD_CMS_FORMS_CODENAME))); //This is an exception of the method, because here we return an array, see admin/fckeditor/fckconfig.php for the detail // add cms_form wizard $modulesCode["modulesDeclaration"][] = "FCKConfig.Plugins.Add( 'cms_forms', '" . $languages . "' );"; // create specific cms_form toolbar $modulesCode["ToolbarSets"][] = "FCKConfig.ToolbarSets['cms_forms'] = [\n\t\t\t\t\t\t\t\t['Source','-','Preview'],//['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],\n\t\t\t\t\t\t\t\t['Cut','Copy','Paste','PasteText','PasteWord','-','Print'], //'SpellCheck'],\n\t\t\t\t\t\t\t\t['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],\n\t\t\t\t\t\t\t\t['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],\n\t\t\t\t\t\t\t\t['OrderedList','UnorderedList','-','Outdent','Indent'],\n\t\t\t\t\t\t\t\t['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],\n\t\t\t\t\t\t\t\t['Link','Unlink','Anchor'],\n\t\t\t\t\t\t\t\t['Table','Rule','SpecialChar'],//['Image','Flash','Table','Rule','Smiley','SpecialChar','UniversalKey'],\n\t\t\t\t\t\t\t\t['Style','FontFormat','FontSize'],//['Style','FontFormat','FontName','FontSize'],\n\t\t\t\t\t\t\t\t['TextColor','BGColor'],//\n\t\t\t\t\t\t\t\t//'/',\n\t\t\t\t\t\t\t\t['cms_forms']//,'Checkbox','Radio','TextField','Textarea','Select','Button','HiddenField']\n\t\t\t\t\t\t\t];"; return $modulesCode; } else { return $modulesCode; } break; case MODULE_TREATMENT_PAGECONTENT_HEADER_CODE: //if this page use a row of this module then add the header code to the page (see CMS_block_cms_forms::getData for GLOBAL var creation) if ($visualizationMode != PAGE_VISUALMODE_HTML_PUBLIC_INDEXABLE && isset($treatedObject) && isset($GLOBALS[MOD_CMS_FORMS_CODENAME]["pageUseModule"][$treatedObject->getID()])) { //call clientspace header content $cs = new CMS_moduleClientspace(array("module" => MOD_CMS_FORMS_CODENAME, "id" => "cms_forms_header", "type" => "header", "usedforms" => $GLOBALS[MOD_CMS_FORMS_CODENAME]["pageUseModule"][$treatedObject->getID()])); $modulesCode[MOD_CMS_FORMS_CODENAME] = $cs->getClientspaceData(MOD_CMS_FORMS_CODENAME, new CMS_date(), $treatedObject, $visualizationMode); return $modulesCode; } else { return $modulesCode; } break; case MODULE_TREATMENT_ROWS_EDITION_LABELS: $modulesCode[MOD_CMS_FORMS_CODENAME] = $treatmentParameters["language"]->getMessage(MESSAGE_MOD_CMS_FORMS_ROWS_EXPLANATION, false, MOD_CMS_FORMS_CODENAME); return $modulesCode; break; case MODULE_TREATMENT_TEMPLATES_EDITION_LABELS: $modulesCode[MOD_CMS_FORMS_CODENAME] = $treatmentParameters["language"]->getMessage(MESSAGE_MOD_CMS_FORMS_TEMPLATE_EXPLANATION, false, MOD_CMS_FORMS_CODENAME); return $modulesCode; break; } return $modulesCode; }
//set default display mode for this page $view->setDisplayMode(CMS_view::SHOW_JSON); //This file is an admin file. Interface must be secure $view->setSecure(); //get search vars $dir = sensitiveIO::request('dir'); $itemsDatas = array(); $itemsDatas['results'] = array(); //check user rights if (!$cms_user->hasAdminClearance(CLEARANCE_ADMINISTRATION_EDITVALIDATEALL)) { CMS_grandFather::raiseError('User has no rights on language management'); $view->show(); } //get messages $resultCount = 0; $languages = CMS_languagesCatalog::getAllLanguages('all'); // Vars for lists output purpose and pages display, see further $itemsDatas['total'] = sizeof($languages); //loop on results items foreach ($languages as $language) { $modulesDenied = ''; if ($language->getModulesDenied()) { foreach ($language->getModulesDenied() as $codename) { if ($codename) { $module = CMS_modulesCatalog::getByCodename($codename); if ($module) { $modulesDenied .= ($modulesDenied ? ', ' : '') . $module->getLabel($cms_language); } } } }