Example #1
0
    /**
     * 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;
 }
Example #4
0
 /**
  * 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;
 }
Example #5
0
	<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) . '&nbsp;:</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];
 }
Example #7
0
        $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;
            }
        }
Example #8
0
		<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')) . '" />&nbsp;</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')) . '" />&nbsp;</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>&nbsp;</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')) . '" />&nbsp; <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>
Example #9
0
 /**
  * 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
Example #11
0
 /**
  * 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;
 }
Example #12
0
 /**
  * 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;
 }
Example #13
0
				<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>
Example #14
0
 /**
  * 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);
 }
Example #15
0
 /**
  * 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);
     }
 }
Example #16
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)
 {
     //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;
         }
     }
 }
Example #17
0
 /**
  * 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;
 }
Example #18
0
 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;
 }
Example #19
0
 /**
  * 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);
 }
Example #20
0
 /**
  * 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;
 }
Example #21
0
 /**
 * 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;
 }
Example #22
0
// +----------------------------------------------------------------------+
//
// $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':
Example #24
0
 /**
  * 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();
     }
 }
Example #25
0
 /**
  * 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();
 }
Example #26
0
 /**
  * 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;
 }
Example #27
0
//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);
                }
            }
        }
    }