/** * Get the parsing content * only with self::PARSE_MODE * * @param constant $type : the content type to return in : * - self::OUTPUT_RESULT output evalued PHP result * - self::OUTPUT_PHP output valid PHP to execute * @param array $parameters parameters to help parsing * 'public' : current public status * 'pageID' : current parsed page * 'itemID' : current item ID to work with * 'objectID' : current object type ID to work with * 'item' : current item to work with * 'module' : current module codename * 'block_attributes' : current block attributes values * 'language' : current language code * @return string the PHP / HTML content parsed * @access public */ function getContent($type = self::OUTPUT_RESULT, &$parameters) { if (!trim($this->_definition)) { return; } //set parameters $this->_parameters = array_merge($this->_parameters, $parameters); // //Create all pre-execution variables with parameters values // $headers = $return = ''; if (is_object($this->_parser)) { //init exported vars $languageObject = $blockAttributes = $pageID = $pluginSelection = $polyobjectsDefinitions = ''; //load all poly objects for module if (!$this->_parameters['module']) { $this->raiseError("Missing valid module codename in parameters."); } else { //set module as cached element $this->_elements['module'][] = $this->_parameters['module']; //prefetch module objects $polyObjects = CMS_poly_object_catalog::getObjectsForModule($this->_parameters['module']); if (is_array($polyObjects) && $polyObjects) { foreach ($polyObjects as $polyObject) { $polyobjectsDefinitions .= 'if (!isset($object[' . $polyObject->getID() . '])) $object[' . $polyObject->getID() . '] = new CMS_poly_object(' . $polyObject->getID() . ', 0, array(), $parameters[\'public\']);' . "\n"; } } $polyobjectsDefinitions .= '$parameters[\'module\'] = \'' . $this->_parameters['module'] . '\';' . "\n"; } $blockAttributes = $objectID = $pageID = $pluginSelection = $languageObject = $public = ''; //set plugin selection if any if (isset($this->_parameters['selection'])) { $pluginSelection = '$parameters[\'selection\'] = ' . var_export($this->_parameters['selection'], true) . ';' . "\n"; } //set pageID if any if (isset($this->_parameters['pageID']) && sensitiveIO::isPositiveInteger($this->_parameters['pageID'])) { $pageID = '$parameters[\'pageID\'] = \'' . $this->_parameters['pageID'] . '\';' . "\n"; } //set itemID if any if (isset($this->_parameters['itemID']) && sensitiveIO::isPositiveInteger($this->_parameters['itemID'])) { $pageID = '$parameters[\'itemID\'] = \'' . $this->_parameters['itemID'] . '\';' . "\n"; } //export block attributes if (isset($this->_parameters['block_attributes'])) { $blockAttributes = '$blockAttributes = ' . CMS_polymod_definition_parsing::preReplaceVars(var_export($this->_parameters['block_attributes'], true), true) . ';' . "\n"; } //instanciate language if exists if (isset($this->_parameters['language'])) { $languageObject = 'if (!isset($cms_language) || (isset($cms_language) && $cms_language->getCode() != \'' . $this->_parameters['language'] . '\')) $cms_language = new CMS_language(\'' . $this->_parameters['language'] . '\');' . "\n"; } //instanciate objectID if exists if (isset($this->_parameters['objectID']) && sensitiveIO::isPositiveInteger($this->_parameters['objectID'])) { $objectID = '$parameters[\'objectID\'] = ' . $this->_parameters['objectID'] . ';' . "\n"; } //set public status if (isset($this->_parameters['public'])) { //if value exists here, use it $public = '$parameters[\'public\'] = ' . ($this->_parameters['public'] ? 'true' : 'false') . ';' . "\n"; } else { //else if it exists during execution, use it or force public status $public = '$parameters[\'public\'] = (isset($parameters[\'public\'])) ? $parameters[\'public\'] : true;' . "\n"; } $headers = $footers = ''; //do not add cache reference if no cache is queried if (!isset($this->_parameters['cache']) || $this->_parameters['cache'] != false) { $footers .= '$content .= \'<!--{elements:\'.base64_encode(serialize(' . var_export($this->_elements, true) . ')).\'}-->\';' . "\n"; } $headers = '$content = "";' . "\n" . '$replace = "";' . "\n" . '$atmIfResults = array();' . "\n" . 'if (!isset($objectDefinitions) || !is_array($objectDefinitions)) $objectDefinitions = array();' . "\n" . $blockAttributes . $objectID . $pageID . $pluginSelection . $languageObject . $public . 'if (isset($parameters[\'item\'])) {' . "\n" . ' $parameters[\'objectID\'] = $parameters[\'item\']->getObjectID();' . "\n" . '} elseif (isset($parameters[\'itemID\']) && sensitiveIO::isPositiveInteger($parameters[\'itemID\']) && !isset($parameters[\'objectID\'])) {' . "\n" . ' $parameters[\'objectID\'] = CMS_poly_object_catalog::getObjectDefinitionByID($parameters[\'itemID\']);' . "\n" . '}' . "\n" . 'if (!isset($object) || !is_array($object)) $object = array();' . "\n" . $polyobjectsDefinitions; } switch ($type) { case self::OUTPUT_PHP: //if header callback exists, add it to module useage for this page if (is_array($this->_headCallBack) && $this->_headCallBack) { if (sensitiveIO::isPositiveInteger($this->_parameters['pageID']) && $this->_parameters['module'] && $this->_parameters['language']) { //add language to callBack infos $this->_headCallBack['language'] = $this->_parameters['language']; $this->_headCallBack['headcode'] = $headers; $this->_headCallBack['footcode'] = $footers; CMS_module::moduleUsage($this->_parameters['pageID'], $this->_parameters['module'], array('headCallback' => array($this->_headCallBack))); } else { $this->raiseError('Missing valid pageID or module codename or language code in parameters to use header callback.'); return false; } } $return = '<?php' . "\n" . '/*Generated on ' . date('r') . ' by ' . CMS_grandFather::SYSTEM_LABEL . ' ' . AUTOMNE_VERSION . " */\n" . 'if(!APPLICATION_ENFORCES_ACCESS_CONTROL || (isset($cms_user) && is_a($cms_user, \'CMS_profile_user\') && $cms_user->hasModuleClearance(\'' . $this->_parameters['module'] . '\', CLEARANCE_MODULE_VIEW))){' . "\n"; $return .= $headers . "\n" . $this->_definition . "\n" . '$content = CMS_polymod_definition_parsing::replaceVars($content, $replace);' . "\n" . $footers . "\n" . 'echo $content;' . "\n" . 'unset($content);' . "\n" . 'unset($replace);'; $return .= '}' . "\n" . '?>'; return CMS_XMLTag::indentPHP($return); break; case self::OUTPUT_RESULT: global $cms_user, $cms_language; //then eval content if (is_object($this->_parser)) { if (isset($this->_parameters['item']) && is_object($this->_parameters['item'])) { //make object available $object[$this->_parameters['item']->getObjectID()] =& $this->_parameters['item']; } $this->_definition = $headers . "\n" . $this->_definition . "\n" . '$content = CMS_polymod_definition_parsing::replaceVars($content, $replace);' . "\n" . $footers . "\n" . 'return $content;' . "\n"; $return = eval(sensitiveIO::sanitizeExecCommand($this->_definition)); } else { if (!is_object($this->_parameters['item'])) { $this->raiseError('Missing valid item in parameters.'); return false; } //make object available $object[$this->_parameters['item']->getObjectID()] = $this->_parameters['item']; //CMS_grandFather::log($this->_definition); $return = eval(sensitiveIO::sanitizeExecCommand('return "' . $this->_definition . '";')); } if (isset($ckeck) && $ckeck === false) { $this->raiseError('Can\'t eval content type to return : ' . $this->_definition); return false; } return $return; break; default: $this->raiseError('Unknown content type to return : ' . $type); return false; break; } }
$dialog->setTitle($cms_language->getMessage(MESSAGE_PAGE_TITLE_APPLICATIONS) . " :: " . $cms_language->getMessage(MESSAGE_PAGE_TITLE, array($object->getLabel($cms_languege))), 'picto_modules.gif'); $dialog->setBacklink("modules_admin.php?moduleCodename=" . $moduleCodename . "&object=" . $object->getID() . "&field=" . $field->getID()); if ($cms_message) { $dialog->setActionMessage($cms_message); } if ($moduleCodename) { $polymod = CMS_modulesCatalog::getByCodename($moduleCodename); } $required = $field->getValue("required") ? ' checked="checked"' : ''; $indexable = $field->getValue("indexable") ? ' checked="checked"' : ''; $searchlist = $field->getValue("searchlist") ? ' checked="checked"' : ''; $searchable = $field->getValue("searchable") ? ' checked="checked"' : ''; $polyModules = CMS_modulesCatalog::getAll("label", true); $poly_types = array(); foreach ($polyModules as $aModule) { $poly_types = array_merge($poly_types, CMS_poly_object_catalog::getObjectsForModule($aModule->getCodename())); } $object_types = CMS_object_catalog::getObjects($field, true); $typeObject = $field->getTypeObject(true); $objectUseage = CMS_poly_object_catalog::getObjectUsage($object->getID()); if (is_object($typeObject) && $typeObject->hasParameters()) { if (is_a($typeObject, 'CMS_poly_object_definition')) { //need to load parameters first $typeObject->loadParameters($field); } $parametersHTML = $typeObject->getHTMLSubFieldsParameters($cms_language, 'type'); } $content = ' <table width="80%" border="0" cellpadding="3" cellspacing="2"> <form name="frm" action="' . $_SERVER["SCRIPT_NAME"] . '" method="post"> <input type="hidden" id="cms_action" name="cms_action" value="validate" />
/** * Does this module is destroyable ? * * @return boolean * @access public */ function isDestroyable() { global $cms_user; // Check module exists and is polymod if ($this->hasError() || !$this->isPolymod()) { return false; } //check if user is admin if (!$cms_user->hasAdminClearance(CLEARANCE_ADMINISTRATION_EDITVALIDATEALL)) { return false; } //check if module has objects if (CMS_poly_object_catalog::getObjectsForModule($this->_codename)) { return false; } // CHECK USED ROWS $usedRows = array(); $rowsIds = CMS_rowsCatalog::getByModules(array($this->_codename), false, false); if ($rowsIds) { foreach ($rowsIds as $rowId) { if (CMS_rowsCatalog::getPagesByRow($rowId, false, false)) { $usedRows[] = $rowId; } } } // If any used rows : alert user and break module deletion if ($usedRows) { return false; } return true; }