예제 #1
0
 /**
  * Constructor.
  * initializes the linxCondition.
  *
  * @param string $property The page property we're gonna test. Only a set of these are available here.
  * @param string $operator The comparison operator serving to test the condition.
  * @param string $tagContent The tag content.
  * @return void
  * @access public
  */
 function __construct($tag)
 {
     $authorized_properties = array("rank", "title", "id", "lvl", "father", "website", "codename");
     $property = $tag->getAttribute('property');
     $operator = $tag->getAttribute('operator');
     if (SensitiveIO::isInSet($property, $authorized_properties)) {
         $this->_pageProperty = $property;
         $this->_operator = io::decodeEntities(io::decodeEntities(io::decodeEntities($operator)));
         $values = $tag->getElementsByTagName('value');
         if ($values->length > 0) {
             $value = $values->item(0);
             //if value type is "nodeproperty", we must parse the inner content to find a nodespec tag
             if ($value->hasAttribute("type") && $value->getAttribute("type") == "nodeproperty") {
                 $this->_valueIsScalar = false;
                 $this->_valueNodespecProperty = $value->getAttribute("property");
                 $nodespecs = $value->getElementsByTagName('nodespec');
                 if ($nodespecs->length > 0) {
                     $nodespec = $nodespecs->item(0);
                     $this->_valueNodespec = CMS_linxNodespec::createNodespec($nodespec);
                 }
             } else {
                 $this->_valueScalar = $value->nodeValue;
             }
         } else {
             $this->raiseError("Malformed innerContent");
             return;
         }
     } else {
         $this->raiseError("Unknown property : " . $property);
     }
 }
예제 #2
0
파일: if.php 프로젝트: davidmottet/automne
    /**
     * Compute the tag
     *
     * @return string the PHP / HTML content computed
     * @access private
     */
    protected function _compute()
    {
        //decode ampersand
        $this->_attributes['what'] = io::decodeEntities($this->_attributes['what']);
        $return = '
		$ifcondition_' . $this->_uniqueID . ' = CMS_polymod_definition_parsing::replaceVars("' . $this->replaceVars($this->_attributes['what'], false, false, array($this, 'encloseWithPrepareVar')) . '", @$replace);
		';
        //if attribute name is set, store if result
        if (isset($this->_attributes['name']) && $this->_attributes['name']) {
            $return .= '$atmIfResults[\'' . $this->_attributes['name'] . '\'][\'if\'] = false;';
        }
        $return .= '
		if ($ifcondition_' . $this->_uniqueID . '):
			$func_' . $this->_uniqueID . ' = @create_function("","return (".$ifcondition_' . $this->_uniqueID . '.");");
			if ($func_' . $this->_uniqueID . ' === false) {
				CMS_grandFather::raiseError(\'Error in atm-if [' . $this->_uniqueID . '] syntax : \'.$ifcondition_' . $this->_uniqueID . ');
			}
			if ($func_' . $this->_uniqueID . ' && $func_' . $this->_uniqueID . '()):
			';
        //if attribute name is set, store if result
        if (isset($this->_attributes['name']) && $this->_attributes['name']) {
            $return .= '$atmIfResults[\'' . $this->_attributes['name'] . '\'][\'if\'] = true;';
        }
        $return .= '
				' . $this->_computeChilds() . '
			endif;
			unset($func_' . $this->_uniqueID . ');
		endif;
		unset($ifcondition_' . $this->_uniqueID . ');
		';
        return $return;
    }
 /**
  * Gets a validation for a given item
  *
  * @param integer $itemID The item we want the validations for
  * @param CMS_user $user The user we want the validations for
  * @param integer $getEditionType The validation type we want.
  *  by default function return RESOURCE_EDITION_LOCATION then RESOURCE_EDITION_CONTENT then RESOURCE_EDITION_SIBLINGSORDER
  * @return array(CMS_resourceValidation) The resourceValidations objects, false if none found for the given user.
  * @access public
  */
 function getValidationByID($itemID, &$user, $getEditionType = false)
 {
     if (!$user instanceof CMS_profile_user) {
         $this->raiseError("User is not a valid CMS_profile_user object");
         return false;
     }
     if (!$user->hasValidationClearance($this->_codename)) {
         return false;
     }
     if (CMS_poly_object_catalog::hasPrimaryResource($this->getCodename())) {
         //get object type ID
         $objectID = CMS_poly_object_catalog::getPrimaryResourceObjectType($this->getCodename());
         //get viewvable objects list for current user
         if (CMS_poly_object_catalog::objectHasCategories($objectID)) {
             $objects = CMS_poly_object_catalog::getAllObjects($objectID, false, array(), false);
             //$where = (is_array($objects) && $objects) ? ' and objectID in ('.implode(',',$objects).')' : '';
             if (is_array($objects) && $objects) {
                 $where = ' and objectID in (' . implode(',', $objects) . ')';
             } else {
                 return false;
             }
         } else {
             $where = '';
         }
         $this->getPrimaryResourceDefinition();
         if (!$getEditionType) {
             $getEditionType = RESOURCE_EDITION_LOCATION + RESOURCE_EDITION_CONTENT;
         }
         $sql = "\n\t\t\t\t\tselect\n\t\t\t\t\t\tobjectID as id,\n\t\t\t\t\t\tlocation_rs as location,\n\t\t\t\t\t\tproposedFor_rs as proposedFor,\n\t\t\t\t\t\tvalidationsRefused_rs as validationsRefused,\n\t\t\t\t\t\teditions_rs as editions,\n\t\t\t\t\t\tmod_subobject_integer_edited.id as fieldID\n\t\t\t\t\tfrom\n\t\t\t\t\t\tmod_subobject_integer_edited,\n\t\t\t\t\t\tmod_object_polyobjects,\n\t\t\t\t\t\tresources,\n\t\t\t\t\t\tresourceStatuses\n\t\t\t\t\twhere\n\t\t\t\t\t\tobjectID = '" . $itemID . "'\n\t\t\t\t\t\tand value = id_res\n\t\t\t\t\t\tand object_type_id_moo = '" . $objectID . "'\n\t\t\t\t\t\tand id_moo = objectID\n\t\t\t\t\t\tand objectFieldID = 0\n\t\t\t\t\t\tand objectSubFieldID = 0\n\t\t\t\t\t\tand status_res = id_rs\n\t\t\t\t\t\t{$where}\n\t\t\t\t";
         $q = new CMS_query($sql);
         if ($q->getNumRows() >= 1) {
             $r = $q->getArray();
             $id = $r["id"];
             //here, this is an ugly hack to resolve a strange bug (multiple resources for an unique object).
             //not time to found the real cause for now ...
             if ($q->getNumRows() > 1) {
                 while ($exceptionFiledID = $q->getValue('fieldID')) {
                     $sql_delete = "delete from mod_subobject_integer_edited where id = '" . $exceptionFiledID . "'";
                     $q_delete = new CMS_query($sql_delete);
                 }
             }
             //search the type of edition
             //RESOURCE_EDITION_LOCATION
             if ($r["location"] == RESOURCE_LOCATION_USERSPACE && $r["proposedFor"] != 0 && !($r["validationsRefused"] & RESOURCE_EDITION_LOCATION) && $getEditionType & RESOURCE_EDITION_LOCATION) {
                 $language = $user->getLanguage();
                 $item = $this->getResourceByID($id);
                 $validation = new CMS_resourceValidation($this->_codename, RESOURCE_EDITION_LOCATION, $item);
                 if (!$validation->hasError()) {
                     $validation->setValidationTypeLabel($language->getMessage(self::MESSAGE_MOD_POLYMOD_VALIDATION_LOCATIONCHANGE, array($this->_primaryResourceObjectDefinition->getLabel($language)), MOD_POLYMOD_CODENAME));
                     $validation->setValidationLabel($language->getMessage(self::MESSAGE_MOD_POLYMOD_VALIDATION_LOCATIONCHANGE_OFRESOURCE, array($this->_primaryResourceObjectDefinition->getLabel($language)), MOD_POLYMOD_CODENAME) . " " . io::decodeEntities($item->{$this->_resourceNameMethod}()));
                     $validation->setValidationShortLabel(io::decodeEntities($item->{$this->_resourceNameMethod}()));
                     $previzURL = $item->getPrevizPageURL();
                     if ($previzURL) {
                         $validation->addHelpUrl($language->getMessage(self::MESSAGE_PAGE_ACTION_PREVIZ), $previzURL);
                     }
                     $validation->setEditorsStack($item->getEditorsStack());
                     return $validation;
                 } else {
                     return false;
                 }
                 //RESOURCE_EDITION_CONTENT
             } elseif ($r["location"] == RESOURCE_LOCATION_USERSPACE && $r["proposedFor"] == 0 && ($r["editions"] & RESOURCE_EDITION_CONTENT && !($r["validationsRefused"] & RESOURCE_EDITION_CONTENT)) && $getEditionType & RESOURCE_EDITION_CONTENT) {
                 $language = $user->getLanguage();
                 $editions = $r["editions"];
                 //RESOURCE_EDITION_CONTENT
                 $item = $this->getResourceByID($id);
                 $validation = new CMS_resourceValidation($this->_codename, $editions, $item);
                 if (!$validation->hasError()) {
                     $validation->setValidationTypeLabel($language->getMessage(self::MESSAGE_MOD_POLYMOD_VALIDATION_EDITION, array($this->_primaryResourceObjectDefinition->getLabel($language)), MOD_POLYMOD_CODENAME));
                     $validation->setValidationLabel($language->getMessage(self::MESSAGE_MOD_POLYMOD_VALIDATION_EDITION_OFRESOURCE, array($this->_primaryResourceObjectDefinition->getLabel($language)), MOD_POLYMOD_CODENAME) . " " . io::decodeEntities($item->{$this->_resourceNameMethod}()));
                     $validation->setValidationShortLabel(io::decodeEntities($item->{$this->_resourceNameMethod}()));
                     $previzURL = $item->getPrevizPageURL();
                     if ($previzURL) {
                         $validation->addHelpUrl($language->getMessage(self::MESSAGE_PAGE_ACTION_PREVIZ), $previzURL);
                     }
                     $validation->setEditorsStack($item->getEditorsStack());
                     return $validation;
                 } else {
                     return false;
                 }
             }
         } elseif ($q->getNumRows() == 0) {
             return false;
         } else {
             $this->raiseError("Can't have more than one item for a given ID");
             return false;
         }
     } else {
         return false;
     }
 }
예제 #4
0
 /**
  * Builds where statement with a key and its value
  * The key can be a known string, this class will create statements in consequence
  * or it can be a field id
  *
  * @access public
  * @param string $key name of statement to set
  * @param string $value , the value to give
  * @param string $operator, additional optional search operator
  * @return void or false if an error occured
  */
 function addWhereCondition($type, $value, $operator = false)
 {
     if (!$type || !$value && !$operator) {
         return;
     }
     //clean value
     if (!is_object($value) && !is_array($value)) {
         $value = sensitiveIO::sanitizeSQLString($value);
     } elseif (is_array($value)) {
         $value = array_map(array('sensitiveIO', 'sanitizeSQLString'), $value);
     }
     $operator = $operator ? io::decodeEntities($operator) : false;
     $statusSuffix = $this->_public ? "_public" : "_edited";
     switch ($type) {
         case "object":
             if ($value && !is_a($value, 'CMS_poly_object_definition')) {
                 $this->raiseError('Value must be a valid CMS_poly_object_definition.');
                 return false;
             }
             $this->_object = $value;
             $this->_whereConditions['object'][] = array('value' => $value, 'operator' => $operator);
             break;
         case "item":
             if (!sensitiveIO::isPositiveInteger($value)) {
                 $this->raiseError("Value must be a positive Integer.");
                 return false;
             }
             $this->_whereConditions['item'][] = array('value' => $value, 'operator' => $operator);
             break;
         case "items":
             if (!$value) {
                 $this->raiseError('Value must be a populated array.');
                 return false;
             }
             $this->_whereConditions['items'][] = array('value' => $value, 'operator' => $operator);
             break;
         case 'archives':
             if ($this->_public && $this->_object->isPrimaryResource() && ($value == 1 || $value == 'true' || $value == true)) {
                 unset($this->_whereConditions['publication date before']);
                 unset($this->_whereConditions['publication date end']);
             }
             break;
         case "itemsOrdered":
             if (!$value) {
                 $this->raiseError('Value must be a populated array.');
                 return false;
             }
             $this->_whereConditions['items'][] = array('value' => $value, 'operator' => $operator);
             $this->_orderConditions['itemsOrdered']['order'] = $value;
             break;
         case "profile":
             if (!is_a($value, 'CMS_profile_user')) {
                 $this->raiseError('Value must be a valid CMS_profile_user.');
                 return false;
             }
             $this->_whereConditions['profile'][] = array('value' => $value, 'operator' => $operator);
             break;
         case "category":
             //this search type is deprecated, keep it for compatibility but now it is replaced by direct field id access
             //get field of categories for searched object type (assume it uses categories)
             $categoriesFields = CMS_poly_object_catalog::objectHasCategories($this->_object->getId());
             $this->_whereConditions[$categoriesFields[0]][] = array('value' => $value, 'operator' => $operator);
             break;
         case "keywords":
             if ($value) {
                 $this->_whereConditions['keywords'][] = array('value' => $value, 'operator' => $operator);
             }
             break;
         case "publication date after":
             // Date start
             if ($this->_object->isPrimaryResource()) {
                 if (!is_a($value, 'CMS_date')) {
                     $this->raiseError('Value must be a valid CMS_date.');
                     return false;
                 }
                 $this->_whereConditions['publication date after'][] = array('value' => $value, 'operator' => $operator);
             }
             break;
         case "publication date before":
             // Date End
             if ($this->_object->isPrimaryResource()) {
                 if (!is_a($value, 'CMS_date')) {
                     $this->raiseError('Value must be a valid CMS_date.');
                     return false;
                 }
                 $this->_whereConditions['publication date before'][] = array('value' => $value, 'operator' => $operator);
             }
             break;
         case "publication date end":
             // End Date of publication
             if ($this->_object->isPrimaryResource()) {
                 if (!is_a($value, 'CMS_date')) {
                     $this->raiseError('Value must be a valid CMS_date.');
                     return false;
                 }
                 $this->_whereConditions['publication date end'][] = array('value' => $value, 'operator' => $operator);
             }
             break;
         case "status":
             // Publication status
             if ($this->_object->isPrimaryResource()) {
                 if (!in_array($value, array('online', 'offline', 'validated', 'awaiting'))) {
                     $this->raiseError('Status value must be one of them : online, offline, public, awaiting');
                     return false;
                 }
                 $this->_whereConditions['status'][] = array('value' => $value, 'operator' => $operator);
             }
             break;
         default:
             if (sensitiveIO::IsPositiveInteger($type)) {
                 $this->_whereConditions[$type][] = array('value' => $value, 'operator' => $operator);
                 break;
             }
             $this->raiseError('Unknown type : ' . $type . ' or value ' . $value);
             return false;
             break;
     }
 }
예제 #5
0
 $view->setDisplayMode(CMS_view::SHOW_RAW);
 $selectedContent = sensitiveIO::request('content');
 $pluginId = sensitiveIO::request('plugin');
 $selectedPlugin = new CMS_poly_plugin_definitions($pluginId);
 //then create the code to paste for the current selected object if any
 if (sensitiveIO::isPositiveInteger($itemId) && !$selectedPlugin->needSelection()) {
     //$item = CMS_poly_object_catalog::getObjectByID($selectedItem);
     $definition = $selectedPlugin->getValue('definition');
     $parameters = array();
     $parameters['itemID'] = $itemId;
     $parameters['module'] = $codename;
     $cms_page = CMS_session::getPage();
     if (is_object($cms_page) && !$cms_page->hasError()) {
         $parameters['pageID'] = $cms_page->getID();
     }
     $parameters['selection'] = io::decodeEntities($selectedContent);
     $parameters['public'] = false;
     $parameters['plugin-view'] = true;
     $definitionParsing = new CMS_polymod_definition_parsing($definition, true, CMS_polymod_definition_parsing::PARSE_MODE);
     $codeTopaste = $definitionParsing->getContent(CMS_polymod_definition_parsing::OUTPUT_RESULT, $parameters);
     //add some attributes to images to prevent resizing into editor
     $codeTopaste = str_replace('<img ', '<img contenteditable="false" unselectable="on" ', $codeTopaste);
     //encode all ampersand without reencode already encoded ampersand
     $codeTopaste = sensitiveIO::reencodeAmpersand($codeTopaste);
     if ($codeTopaste) {
         //add identification span tag arround code to paste
         $codeTopaste = '<span id="polymod-' . $pluginId . '-' . $itemId . '" class="polymod" title="' . io::htmlspecialchars($selectedPlugin->getLabel($cms_language) . ' : ' . trim($item->getLabel($cms_language))) . '">' . $codeTopaste . '</span>';
     }
     $content = $codeTopaste;
 } elseif (sensitiveIO::isPositiveInteger($itemId) && $selectedPlugin->needSelection()) {
     $codeTopaste = '<span id="polymod-' . $pluginId . '-' . $itemId . '" class="polymod">' . $selectedContent . '</span>';
예제 #6
0
							<th width="130"><span fckLang="DlgCMSFormsLabel">Libell&eacute;</span></th>
							<th width="130"><span fckLang="DlgCMSFormsType">Type</span></th>
							<th width="60"><span fckLang="DlgCMSFormsOptions">Options</span></th>
							<th width="50"><span fckLang="DlgCMSFormsActions">Actions</span></th>
						</tr>
					</table>
					<ul id="sortField" class="sortable">';
                }
                $content .= '
				<li id="f_' . $aFormField->getID() . '">
				<table border="0" cellspacing="1" cellpadding="0" width="100%">
					<tr>';
                $required = $aFormField->getAttribute("required") ? ' checked="checked"' : '';
                $content .= '
						<td align="right"><input type="checkbox" name="required_' . $aFormField->getID() . '" value="1"' . $required . ' /></td>
						<td align="center" width="130"><input type="text" name="label_' . $aFormField->getID() . '" value="' . htmlspecialchars(io::decodeEntities($aFormField->getAttribute("label"))) . '" /><input type="hidden" name="name_' . $aFormField->getID() . '" value="' . $aFormField->getAttribute("name") . '" /></td>
						<td align="center" width="130">
							<select name="type_' . $aFormField->getID() . '" onchange="viewHideOptionsButton(this,\'options_' . $aFormField->getID() . '\');">';
                foreach ($fieldTypes as $aFieldType => $aFieldTypeLabel) {
                    $selected = $aFormField->getAttribute("type") == $aFieldType ? ' selected="selected"' : '';
                    $content .= '<option value="' . $aFieldType . '"' . $selected . '>' . $aFieldTypeLabel . '</option>';
                }
                $content .= '
							</select>
						</td>
						<td align="center" width="60">';
                $selectValues = '';
                $selectLabels = '';
                $countOptions = 0;
                if (sizeof($aFormField->getAttribute("options"))) {
                    foreach ($aFormField->getAttribute("options") as $aSelectValue => $aSelectValueLabel) {
예제 #7
0
     $field = $objectFields[$paramType];
     if (is_object($field)) {
         //check if field has a method to provide a list of names
         $objectType = $field->getTypeObject();
         if (method_exists($objectType, 'getListOfNamesForObject')) {
             //check if we can associate unused objects
             $params = $objectType->getParamsValues();
             if (method_exists($objectType, 'getParamsValues') && isset($params['associateUnused']) && $params['associateUnused']) {
                 $objectsNames = $objectType->getListOfNamesForObject(true, array(), false);
             } else {
                 $objectsNames = $objectType->getListOfNamesForObject(true);
             }
             $availableItems = array();
             if (is_array($objectsNames) && $objectsNames) {
                 foreach ($objectsNames as $id => $label) {
                     $availableItems[] = array($id, io::decodeEntities($label));
                 }
             } else {
                 $availableItems[] = array('', $cms_language(MESSAGE_EMPTY_OBJECTS_SET));
             }
             $mandatory = $paramValue == true ? '<span class="atm-red">*</span> ' : '';
             $value = isset($data["value"]['search'][$searchName][$paramType]) ? $data["value"]['search'][$searchName][$paramType] : '';
             $searchParamContent[] = array('fieldLabel' => $mandatory . $field->getLabel($cms_language), 'name' => 'value[search][' . $searchName . '][' . $paramType . ']', 'hiddenName' => 'value[search][' . $searchName . '][' . $paramType . ']', 'anchor' => '99%', 'xtype' => 'atmCombo', 'forceSelection' => true, 'mode' => 'local', 'valueField' => 'id', 'displayField' => 'label', 'triggerAction' => 'all', 'allowBlank' => !$mandatory, 'selectOnFocus' => true, 'editable' => false, 'value' => $value, 'store' => array('xtype' => 'arraystore', 'fields' => array('id', 'label'), 'data' => $availableItems));
         } else {
             $cms_message .= $cms_language->getMessage(MESSAGE_PAGE_SEARCH_FIELD_ERROR, array($searchName, $row->getLabel()), MOD_POLYMOD_CODENAME) . "\n";
         }
     } else {
         $cms_message .= $cms_language->getMessage(MESSAGE_PAGE_SEARCH_FIELD_ERROR, array($searchName, $row->getLabel()), MOD_POLYMOD_CODENAME) . "\n";
     }
 } else {
     $cms_message .= $cms_language->getMessage(MESSAGE_PAGE_SEARCH_FIELDTYPE_ERROR, array($searchName, $row->getLabel(), $paramType), MOD_POLYMOD_CODENAME) . "\n";
예제 #8
0
 /**
  * get HTML admin (used to enter object values in admin)
  *
  * @param integer $fieldID, the current field id (only for poly object compatibility)
  * @param CMS_language $language, the current admin language
  * @param string prefixname : the prefix to use for post names
  * @return string : the html admin
  * @access public
  */
 function getHTMLAdmin($fieldID, $language, $prefixName)
 {
     $return = parent::getHTMLAdmin($fieldID, $language, $prefixName);
     global $cms_user;
     $params = $this->getParamsValues();
     $return['name'] = 'polymodFieldsValue[list' . $prefixName . $this->_field->getID() . '_0]';
     if ($params['multiUserGroup']) {
         // Get all users or groups
         $a_all_users = $this->getListOfNamesForObject();
         $associatedItems = $availableItems = array();
         if (is_array($a_all_users) && $a_all_users) {
             foreach (array_keys($this->_subfieldValues) as $subFieldID) {
                 if (is_object($this->_subfieldValues[$subFieldID])) {
                     $associatedItems[$this->_subfieldValues[$subFieldID]->getValue()] = $this->_subfieldValues[$subFieldID]->getValue();
                 }
             }
             foreach ($a_all_users as $id => $user) {
                 $availableItems[] = array($id, $user);
             }
         } else {
             $availableItems[] = array('', $language->getMessage(self::MESSAGE_EMPTY_OBJECTS_SET));
             $return['disabled'] = true;
             $return['value'] = '';
         }
         /*$return['xtype'] 			= 'multiselect';
         		$return['dataFields'] 		= array('id', 'label');
         		$return['data'] 			= $availableItems;
         		$return['value'] 			= implode(',',$associatedItems);
         		$return['valueField'] 		= "id";
         		$return['displayField'] 	= "label";
         		$return['width'] 			= '97%';*/
         $return['xtype'] = 'superboxselect';
         $return['dataFields'] = array('id', 'label');
         $return['store'] = $availableItems;
         $return['mode'] = 'local';
         $return['value'] = implode(',', $associatedItems);
         $return['valueField'] = "id";
         $return['displayField'] = "label";
         $return['width'] = '100%';
         $return['stackItems'] = true;
     } else {
         $usersDatas = array();
         if ($params['isCurrentUser']) {
             $usersDatas[] = array($cms_user->getUserId(), $cms_user->getFullName());
             $return['disabled'] = true;
             $return['value'] = $cms_user->getUserId();
         } elseif ($params['creationUser']) {
             if (sensitiveIO::isPositiveInteger($this->_subfieldValues[0]->getValue())) {
                 $user = CMS_profile_usersCatalog::getByID($this->_subfieldValues[0]->getValue());
             } else {
                 $user = $cms_user;
             }
             $usersDatas[] = array($user->getUserId(), $user->getFullName());
             $return['disabled'] = true;
             $return['value'] = $user->getUserId();
         } else {
             // Get all users or groups
             $a_all_users = $this->getListOfNamesForObject();
             if (is_array($a_all_users) && $a_all_users) {
                 $usersDatas[] = array('', $language->getMessage(self::MESSAGE_CHOOSE_OBJECT));
                 foreach ($a_all_users as $userGroupID => $aUserGroupLabel) {
                     $usersDatas[] = array($userGroupID, io::decodeEntities($aUserGroupLabel));
                 }
                 $return['value'] = $this->_subfieldValues[0]->getValue();
             } else {
                 $usersDatas[] = array('', $language->getMessage(self::MESSAGE_EMPTY_OBJECTS_SET));
                 $return['disabled'] = true;
                 $return['value'] = '';
             }
         }
         $return['hiddenName'] = $return['name'];
         /*unset($return['id']);*/
         $return['xtype'] = 'atmCombo';
         $return['forceSelection'] = true;
         $return['mode'] = 'local';
         $return['valueField'] = 'id';
         $return['displayField'] = 'name';
         $return['triggerAction'] = 'all';
         $return['store'] = array('xtype' => 'arraystore', 'fields' => array('id', 'name'), 'data' => $usersDatas);
         $return['selectOnFocus'] = true;
         $return['editable'] = true;
     }
     return $return;
 }
예제 #9
0
    $view->setContent($objectsDatas);
    $view->show();
}
//CHECKS objectId
if (!$objectId && !$fieldId) {
    CMS_grandFather::raiseError('Missing objectId to list in module ' . $codename);
    $view->setContent($objectsDatas);
    $view->show();
} elseif (!$objectId && $fieldId) {
    $objectId = CMS_poly_object_catalog::getObjectIDForField($fieldId);
}
//load current object definition
$object = CMS_poly_object_catalog::getObjectDefinition($objectId);
if (!$object->hasError()) {
    $conditions = $query ? array('keywords' => $query) : array();
    $objectsNames = CMS_poly_object_catalog::getListOfNamesForObject($objectId, false, $conditions);
    if (is_array($objectsNames) && $objectsNames) {
        $objectsDatas['objects'][] = array('id' => '0', 'label' => ' ');
        foreach ($objectsNames as $id => $label) {
            if (!$removeIds || !in_array($id, $removeIds)) {
                $objectsDatas['objects'][] = array('id' => $id, 'label' => io::decodeEntities($label));
            }
        }
    } else {
        $objectsDatas['objects'][] = array('id' => '0', 'label' => $cms_language->getMessage(MESSAGE_PAGE_NO_ITEM, false, MOD_POLYMOD_CODENAME));
    }
} else {
    $objectsDatas['objects'][] = array('id' => '0', 'label' => $cms_language->getMessage(MESSAGE_PAGE_ITEM_NON_EXISTENT, false, MOD_POLYMOD_CODENAME));
}
$view->setContent($objectsDatas);
$view->show();
예제 #10
0
    /**
     * Return the needed form field tag for current object field
     *
     * @param array $values : parameters values array(parameterName => parameterValue) in :
     *     id : the form field id to set
     * @param multidimentionnal array $tags : xml2Array content of atm-function tag
     * @return string : the form field HTML tag
     * @access public
     */
    function getInput($fieldID, $language, $inputParams)
    {
        if (isset($this->_objectValues[$fieldID])) {
            if (is_a($this->_objectValues[$fieldID], 'CMS_poly_object')) {
                if (isset($inputParams['prefix'])) {
                    $prefixName = $inputParams['prefix'];
                    unset($inputParams['prefix']);
                } else {
                    $prefixName = '';
                }
                //serialize all htmlparameters
                $htmlParameters = CMS_object_common::serializeHTMLParameters($inputParams);
                $html = '';
                //get searched objects conditions
                $searchedObjects = is_array($this->_objectFieldsDefinition[$fieldID]->getParameter('searchedObjects')) ? $this->_objectFieldsDefinition[$fieldID]->getParameter('searchedObjects') : array();
                $objectsNames = CMS_poly_object_catalog::getListOfNamesForObject($this->_objectValues[$fieldID]->getObjectID(), false, $searchedObjects);
                if (is_array($objectsNames) && $objectsNames) {
                    //append field id to html field parameters (if not already exists)
                    $htmlParameters .= !isset($inputParams['id']) ? ' id="' . $prefixName . $this->_objectFieldsDefinition[$fieldID]->getID() . '_0"' : '';
                    if (isset($inputParams['hidden']) && ($inputParams['hidden'] == 'true' || $inputParams['hidden'] == 1)) {
                        //create field value
                        $value = isset($inputParams['value']) ? $inputParams['value'] : $this->_polyObjectValues[$fieldID]->getValue();
                        $html .= '<input type="hidden"' . $htmlParameters . ' name="' . $prefixName . $this->_objectFieldsDefinition[$fieldID]->getID() . '_0" value="' . $value . '" />' . "\n";
                    } else {
                        $html .= '<select name="' . $prefixName . $this->_objectFieldsDefinition[$fieldID]->getID() . '_0"' . $htmlParameters . '>
									<option value="0">' . $language->getMessage(self::MESSAGE_POLYMOD_CHOOSE_OBJECT) . '</option>';
                        foreach ($objectsNames as $objectID => $objectName) {
                            $selected = is_object($this->_polyObjectValues[$fieldID]) && $this->_polyObjectValues[$fieldID]->getValue() == $objectID || $inputParams['defaultvalue'] == $objectID && (!is_object($this->_polyObjectValues[$fieldID]) || !$this->_polyObjectValues[$fieldID]->getValue()) ? ' selected="selected"' : '';
                            $html .= '<option value="' . $objectID . '"' . $selected . '>' . io::htmlspecialchars(io::decodeEntities($objectName)) . '</option>' . "\n";
                        }
                        $html .= '</select>';
                    }
                    if (POLYMOD_DEBUG) {
                        $html .= '<span class="admin_text_alert"> (Field : ' . $fieldID . ' - Value : ' . $this->_polyObjectValues[$fieldID]->getValue() . ' - objectID : ' . $this->_objectValues[$fieldID]->getObjectID() . ')</span>';
                    }
                } else {
                    $html .= $language->getMessage(self::MESSAGE_POLYMOD_EMPTY_OBJECTS_SET);
                }
                //append html hidden field which store field name
                if ($html) {
                    $html .= '<input type="hidden" name="polymodFields[' . $this->_objectFieldsDefinition[$fieldID]->getID() . ']" value="' . $this->_objectFieldsDefinition[$fieldID]->getID() . '" />';
                }
                return $html;
            } elseif (is_object($this->_objectValues[$fieldID])) {
                //return html for other type of objects fields
                return $this->_objectValues[$fieldID]->getInput($fieldID, $language, $inputParams);
            }
        }
        return '';
    }
예제 #11
0
    foreach ($modulesValidations as $codename => $moduleValidations) {
        //if module is not standard, echo its name, the number of validations to do and a link to its admin frontend
        if ($codename == MOD_STANDARD_CODENAME) {
            $modLabel = $cms_language->getMessage(MESSAGE_PAGE_STANDARD_MODULE_LABEL);
        } else {
            $mod = CMS_modulesCatalog::getByCodename($codename);
            $modLabel = $mod->getLabel($cms_language);
        }
        //sort the validations by type label
        $validationsSorted = array();
        foreach ($moduleValidations as $validation) {
            $validationsSorted[$validation->getValidationTypeLabel()][] = $validation;
        }
        ksort($validationsSorted);
        foreach ($validationsSorted as $label => $validations) {
            $label = io::decodeEntities($label);
            $validation = $validations[0];
            $validationsType['validationsType'][] = array('id' => $count, 'module' => $codename, 'editions' => $validation->getEditions(), 'label' => $modLabel . ' : ' . $label . ' : ' . sizeof($validations) . ' ' . $cms_language->getMessage(MESSAGE_PAGE_VALIDATIONS_PENDING_COUNT));
            if ($codename == $module && $validation->getEditions() & $editions) {
                $selectedValidations = $count;
            }
            $count++;
        }
    }
}
//json encode validations types
$validationsType = sensitiveIO::jsonEncode($validationsType);
//get records / pages
$recordsPerPage = CMS_session::getRecordsPerPage();
$jscontent = <<<END
\tvar validationsWindow = Ext.getCmp('{$winId}');
예제 #12
0
 /**
  * Treat given content tag by this module for the specified treatment mode, visualization mode and object.
  *
  * @param string $tag The CMS_XMLTag.
  * @param string $tagContent previous tag content.
  * @param integer $treatmentMode The current treatment mode (see constants on top of CMS_modulesTags class 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 tag content treated.
  * @access public
  */
 function treatWantedTag(&$tag, $tagContent, $treatmentMode, $visualizationMode, &$treatedObject, $treatmentParameters)
 {
     switch ($treatmentMode) {
         case MODULE_TREATMENT_BLOCK_TAGS:
             return parent::treatWantedTag($tag, $tagContent, $treatmentMode, $visualizationMode, $treatedObject, $treatmentParameters);
             break;
         case MODULE_TREATMENT_CLIENTSPACE_TAGS:
             return parent::treatWantedTag($tag, $tagContent, $treatmentMode, $visualizationMode, $treatedObject, $treatmentParameters);
             break;
         case MODULE_TREATMENT_PAGECONTENT_TAGS:
             if (!$treatedObject instanceof CMS_page) {
                 $this->raiseError('$treatedObject must be a CMS_page object');
                 return false;
             }
             switch ($tag->getName()) {
                 case "span":
                     $ids = explode('-', $tag->getAttribute('id'));
                     $selectedPluginID = (int) $ids[1];
                     $selectedItem = (int) $ids[2];
                     //then create the code to paste for the current selected object if any
                     if (sensitiveIO::isPositiveInteger($selectedItem) && sensitiveIO::isPositiveInteger($selectedPluginID)) {
                         //get plugin
                         $selectedPlugin = new CMS_poly_plugin_definitions($selectedPluginID);
                         //get plugin definition
                         $definition = $selectedPlugin->getValue('compiledDefinition');
                         //set parsing parameters
                         $parameters = array();
                         $parameters['itemID'] = $selectedItem;
                         $parameters['pageID'] = $treatedObject->getID();
                         $parameters['public'] = $visualizationMode == PAGE_VISUALMODE_HTML_PUBLIC || $visualizationMode == PAGE_VISUALMODE_PRINT || $visualizationMode == PAGE_VISUALMODE_HTML_PUBLIC_INDEXABLE ? true : false;
                         //get originaly selected text
                         if (!$selectedPlugin->needSelection()) {
                             $parameters['selection'] = '';
                         } else {
                             $hasSelection = preg_match('#<!--(.*)-->#s', $tag->getInnerContent(), $matches);
                             $parameters['selection'] = io::decodeEntities($hasSelection ? $matches[1] : $tag->getInnerContent());
                             //$parameters['selection'] = io::decodeEntities($tag->getInnerContent());
                         }
                         $tagContent = '<?php $parameters = ' . var_export($parameters, true) . ';' . "\n" . io::substr($definition, 5);
                         //save in global var the page ID who need this module so we can add the header code later.
                         CMS_module::moduleUsage($treatedObject->getID(), $this->_codename, array('block' => true));
                         //Cache management
                         if ($parameters['public']) {
                             //create definition hash
                             $cacheHash = md5(serialize(array('definition' => $tagContent, 'parameters' => $parameters)));
                             $tagContent = CMS_cache::wrapCode($cacheHash, $tagContent);
                         }
                     }
                     return $tagContent;
                     break;
             }
             break;
         case MODULE_TREATMENT_PAGEHEADER_TAGS:
             $content = parent::treatWantedTag($tag, $tagContent, $treatmentMode, $visualizationMode, $treatedObject, $treatmentParameters);
             if ($treatedObject instanceof CMS_page && $tag->getName() === "atm-meta-tags") {
                 $oembed = CMS_polymod_oembed_definition_catalog::getByCodename($treatedObject->getCodename());
                 if ($oembed && CMS_poly_object_catalog::getModuleCodenameForObjectType($oembed->getObjectdefinition()) === $this->_codename) {
                     $content .= '<?php ' . "\n" . 'echo CMS_polymod_oembed_definition::getDiscoveryEndpoint(); ?>';
                 }
             }
             return $content;
             break;
         case MODULE_TREATMENT_WYSIWYG_INNER_TAGS:
             switch ($tag->getName()) {
                 case "span":
                     global $cms_language;
                     $ids = explode('-', $tag->getAttribute('id'));
                     $selectedPluginID = (int) $ids[1];
                     $selectedItem = (int) $ids[2];
                     //then create the code to paste for the current selected object if any
                     if (sensitiveIO::isPositiveInteger($selectedItem) && sensitiveIO::isPositiveInteger($selectedPluginID)) {
                         //get plugin
                         $selectedPlugin = new CMS_poly_plugin_definitions($selectedPluginID);
                         //get selected item
                         $item = CMS_poly_object_catalog::getObjectByID($selectedItem, false, $visualizationMode == PAGE_VISUALMODE_HTML_PUBLIC || $visualizationMode == PAGE_VISUALMODE_PRINT || $visualizationMode == PAGE_VISUALMODE_HTML_PUBLIC_INDEXABLE ? true : false);
                         if ($item && !$item->hasError()) {
                             //get originaly selected text if any
                             $selectedText = '';
                             if ($selectedPlugin->needSelection()) {
                                 $hasSelection = preg_match('#<!--(.*)-->#s', $tag->getInnerContent(), $matches);
                                 $selectedText = $hasSelection ? $matches[1] : $tag->getInnerContent();
                                 $tagContent = '<span id="polymod-' . $selectedPluginID . '-' . $selectedItem . '" class="polymod" title="' . io::htmlspecialchars($selectedPlugin->getLabel($cms_language) . ' : ' . trim($item->getLabel($cms_language))) . '">' . $selectedText . '</span>';
                             } else {
                                 $tagContent = '<span id="polymod-' . $selectedPluginID . '-' . $selectedItem . '" class="polymod" title="' . io::htmlspecialchars($selectedPlugin->getLabel($cms_language) . ' : ' . trim($item->getLabel($cms_language))) . '">' . CMS_poly_definition_functions::pluginCode($selectedPluginID, $selectedItem, '', $visualizationMode == PAGE_VISUALMODE_HTML_PUBLIC || $visualizationMode == PAGE_VISUALMODE_PRINT || $visualizationMode == PAGE_VISUALMODE_HTML_PUBLIC_INDEXABLE ? true : false, true) . '</span>';
                             }
                         } else {
                             $tagContent = '';
                         }
                     }
                     //strip cache comment
                     $tagContent = preg_replace('#<!--{cache:(.*)}-->#Us', '', $tagContent);
                     //encode all ampersand without reencode already encoded ampersand
                     $tagContent = sensitiveIO::reencodeAmpersand($tagContent);
                     return $tagContent;
                     break;
             }
             return $tagContent;
             break;
         case MODULE_TREATMENT_WYSIWYG_OUTER_TAGS:
             switch ($tag->getName()) {
                 case "span":
                     $ids = explode('-', $tag->getAttribute('id'));
                     $selectedPluginID = (int) $ids[1];
                     $selectedItem = (int) $ids[2];
                     //then create the code to paste for the current selected object if any
                     if (sensitiveIO::isPositiveInteger($selectedItem) && sensitiveIO::isPositiveInteger($selectedPluginID)) {
                         //get plugin
                         $selectedPlugin = new CMS_poly_plugin_definitions($selectedPluginID);
                         //get originaly selected text if any
                         $selectedText = $commentSelectedText = '';
                         if ($selectedPlugin->needSelection()) {
                             $hasSelection = preg_match('#<!--(.*)-->#s', $tag->getInnerContent(), $matches);
                             $selectedText = $hasSelection ? $matches[1] : $tag->getInnerContent();
                             $commentSelectedText = '<!--' . ($hasSelection ? $matches[1] : $tag->getInnerContent()) . '-->';
                         }
                         $tagContent = '<span id="polymod-' . $selectedPluginID . '-' . $selectedItem . '" class="polymod">' . "\n" . '<?php echo CMS_poly_definition_functions::pluginCode(\'' . $selectedPluginID . '\', \'' . $selectedItem . '\', ' . var_export($selectedText, true) . ', true); ?>' . "\n" . $commentSelectedText . '</span>';
                     }
                     return $tagContent;
                     break;
             }
             return $tagContent;
             break;
     }
     return $tag->getContent();
 }
예제 #13
0
 /**
  * Sets Email footer
  *
  * @param String $footer 
  * @return void
  * @access public
  * 
  */
 function setFooter($footer)
 {
     $this->_footer = io::decodeEntities($footer);
 }
 /**
  * Return a wysiwyg plugin output for given parameters
  *
  * @param integer $pluginID : the plugin id to use
  * @param integer $itemID : the item id to use
  * @param string $selection : the selected wysiwyg text if any
  * @param boolean $public : the data status
  * @param boolean $pluginView : is this plugin is intended to be shown in wysiwyg view ? (default false)
  * @return string : the plugin output
  * @access public
  * @static
  */
 static function pluginCode($pluginID, $itemID, $selection, $public = false, $pluginView = false)
 {
     global $cms_user;
     //then create the code to paste for the current selected object if any
     if (sensitiveIO::isPositiveInteger($itemID) && sensitiveIO::isPositiveInteger($pluginID)) {
         //get plugin
         $plugin = new CMS_poly_plugin_definitions($pluginID);
         //set execution parameters
         $parameters = array();
         $parameters['itemID'] = $itemID;
         $parameters['public'] = $public;
         if ($pluginView) {
             $parameters['plugin-view'] = true;
         }
         //get originaly selected text
         if (!$plugin->needSelection()) {
             $parameters['selection'] = '';
         } else {
             $parameters['selection'] = io::decodeEntities($selection);
         }
         //this line is used to optimise text fields (see CMS_object_text) which use a lot of plugin codes.
         //in this case, items are searched before then put in this global var so it is not necessary to do one search for each of them
         if (isset($GLOBALS['polymod']['preparedItems'][$plugin->getValue('objectID')][$itemID])) {
             $parameters['item'] = $GLOBALS['polymod']['preparedItems'][$plugin->getValue('objectID')][$itemID];
         }
         //eval item content
         ob_start();
         eval(sensitiveIO::sanitizeExecCommand(sensitiveIO::stripPHPTags($plugin->getValue('compiledDefinition'))));
         $data = ob_get_contents();
         ob_end_clean();
         return $data;
     }
 }