/**
  * 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;
     }
 }
Example #2
0
$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" />
Example #3
0
 /**
  * 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;
 }