/** * Returns the next result in the current search results stack, false if no results left * Search must be already done using search method and mode self::POLYMOD_SEARCH_RETURN_INDIVIDUALS_OBJECTS. * * @access public * @param $return, the returned values in : * self::POLYMOD_SEARCH_RETURN_OBJECTS for objetcs (default) * self::POLYMOD_SEARCH_RETURN_OBJECTSLIGHT for light objects (without subobjects datas) * self::POLYMOD_SEARCH_RETURN_OBJECTSLIGHT_EDITED for edited light objects. /!\ This method must not be used for objects which should be saved (used by getListOfNamesForObject only) /!\ * @param boolean $loadSubObjects : all the found objects can load theirs own sub objects (default false) * /!\ CAUTION : Pass this option to true can generate a lot of subqueries /!\ * @return array(CMS_poly_object) */ function getNextResult($return = self::POLYMOD_SEARCH_RETURN_OBJECTS, $loadSubObjects = false) { if ($return == self::POLYMOD_SEARCH_RETURN_OBJECTSLIGHT && !$this->_public) { $this->raiseError('Return type can\'t be self::POLYMOD_SEARCH_RETURN_OBJECTSLIGHT in a non-public search.'); $return = self::POLYMOD_SEARCH_RETURN_OBJECTS; } //this is a hack to allow light search in edited userspace. /!\ Objects must not be saved after /!\ if ($return == self::POLYMOD_SEARCH_RETURN_OBJECTSLIGHT_EDITED) { $return = self::POLYMOD_SEARCH_RETURN_OBJECTSLIGHT; } if ($this->_searchMode !== self::POLYMOD_SEARCH_RETURN_INDIVIDUALS_OBJECTS) { $this->raiseError('You cannot use this method if search was not launched with mode self::POLYMOD_SEARCH_RETURN_INDIVIDUALS_OBJECTS'); return false; } if ($return == self::POLYMOD_SEARCH_RETURN_IDS) { $currentResult = each($this->_sortedResultsIds); if ($currentResult !== false) { $this->_objectsCount++; return $currentResult['value']; } return false; } //return objects if ($this->_values && $this->_sortedResultsIds) { //1- create objects values : all subObjects found for searched objects if ($this->_objectsValues === false) { $this->_objectsValues = array(); foreach ($this->_resultsSubObjectsIds as $subObjectId) { $this->_objectsValues[$subObjectId] =& $this->_values[$subObjectId]; } } //load sub objects values $loadSubObjectsValues = $return != self::POLYMOD_SEARCH_RETURN_OBJECTSLIGHT; //create object $currentResult = each($this->_sortedResultsIds); if ($currentResult !== false) { //2- add object values to objects values if (!isset($this->_objectsValues[$currentResult['value']])) { $this->_objectsValues[$currentResult['value']] =& $this->_values[$currentResult['value']]; } //instanciate and return object $this->_objectsCount++; return new CMS_poly_object($this->_object->getID(), $currentResult['value'], $this->_objectsValues, $this->_public, $loadSubObjects, $loadSubObjectsValues); } } return false; }
$cms_message .= "\n" . $cms_language->getMessage(MESSAGE_FORM_ERROR_MALFORMED_FIELD, array($cms_language->getMessage(MESSAGE_PAGE_FIELD_FRONTEND))); } if (!$field->setValue("searchlist", $_POST["searchlist"])) { $cms_message .= "\n" . $cms_language->getMessage(MESSAGE_FORM_ERROR_MALFORMED_FIELD, array($cms_language->getMessage(MESSAGE_PAGE_FIELD_SEARCHLIST))); } if (!$field->setValue("searchable", $_POST["searchable"])) { $cms_message .= "\n" . $cms_language->getMessage(MESSAGE_FORM_ERROR_MALFORMED_FIELD, array($cms_language->getMessage(MESSAGE_PAGE_FIELD_SEARCHABLE))); } if (is_object($typeObject) && $typeObject->hasParameters()) { if (is_object($typeObject) && $params == false) { $cms_message .= "\n" . $cms_language->getMessage(MESSAGE_FORM_ERROR_MALFORMED_FIELD, array($cms_language->getMessage(MESSAGE_PAGE_FIELD_PARAMS))); } else { $field->setValue("params", $params); } } $field->setValue("objectID", $object->getID()); if (!$cms_message && $_POST["cms_action"] == "validate") { //save the data $field->writeToPersistence(); header("Location: modules_admin.php?moduleCodename=" . $moduleCodename . "&object=" . $object->getID() . "&field=" . $field->getID() . "&cms_message_id=" . MESSAGE_ACTION_OPERATION_DONE . "&" . session_name() . "=" . session_id()); exit; } elseif ($_POST["cms_action"] != "validate") { $cms_message = ''; } break; } $dialog = new CMS_dialog(); $content = ''; $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) {
/** * Get object ID * * @return integer, the DB object ID * @access public */ function getObjectID() { return parent::getID(); }
/** * Import module objects from given array datas * * @param array $data The module datas to import * @param array $params The import parameters. * array( * module => false|true : the module to create categories (required) * create => false|true : create missing objects (default : true) * update => false|true : update existing objects (default : true) * files => false|true : use files from PATH_TMP_FS (default : true) * ) * @param CMS_language $cms_language The CMS_langage to use * @param array $idsRelation : Reference : The relations between import datas ids and real imported ids * @param string $infos : Reference : The import infos returned * @return boolean : true on success, false on failure * @access public */ static function fromArray($data, $params, $cms_language, &$idsRelation, &$infos) { if (!isset($params['module'])) { $infos .= 'Error : missing module codename for objects importation ...' . "\n"; return false; } $module = CMS_modulesCatalog::getByCodename($params['module']); if ($module->hasError()) { $infos .= 'Error : invalid module for objects importation : ' . $params['module'] . "\n"; return false; } $return = true; //first create missing objects to get relation ids foreach ($data as $objectDatas) { if (!isset($objectDatas['uuid']) || !CMS_poly_object_catalog::objectExists($params['module'], $objectDatas['uuid'])) { //create new object if we can if (!isset($params['create']) || $params['create'] == true) { //create object $object = new CMS_poly_object_definition(); //set module $object->setValue('module', $params['module']); //set uuid $object->setUuid($objectDatas['uuid']); //write object to persistence to get relations ids $object->writeToPersistence(); //set id translation if (isset($objectDatas['id']) && $objectDatas['id']) { // && $object->getID() != $objectDatas['id']) { // Fix for bug #3157 : in some cases the imported object will have the same id has the newly created, // we still need the relation table otherwise it will fail to link to the new object $idsRelation['objects'][$objectDatas['id']] = $object->getID(); } //set uuid translation if (isset($objectDatas['uuid']) && $objectDatas['uuid'] && $object->getValue('uuid') != $objectDatas['uuid']) { $idsRelation['objects-uuid'][$objectDatas['uuid']] = $object->getValue('uuid'); } } } elseif (isset($objectDatas['uuid']) && isset($objectDatas['id'])) { //get relation between imported object id and local id $id = CMS_poly_object_catalog::objectExists($params['module'], $objectDatas['uuid']); if (io::isPositiveInteger($id)) { $idsRelation['objects'][$objectDatas['id']] = $id; } } } //then import objects datas foreach ($data as $objectDatas) { $importType = ''; if (isset($objectDatas['uuid']) && ($id = CMS_poly_object_catalog::objectExists($params['module'], $objectDatas['uuid']))) { //object already exist : load it if we can update it if (!isset($params['update']) || $params['update'] == true) { $object = CMS_poly_object_catalog::getObjectDefinition($id); $importType = ' (Update)'; //set id translation $idsRelation['objects'][$objectDatas['id']] = $id; } } else { //check for translated id if (isset($objectDatas['id']) && isset($idsRelation['objects'][$objectDatas['id']])) { //object exists with a translated id $objectDatas['id'] = $idsRelation['objects'][$objectDatas['id']]; //load translated object $object = CMS_poly_object_catalog::getObjectDefinition($objectDatas['id']); $importType = ' (Creation)'; } //check for translated uuid if (isset($objectDatas['uuid']) && isset($idsRelation['objects-uuid'][$objectDatas['uuid']])) { //object exists with a translated uuid $objectDatas['uuid'] = $idsRelation['objects-uuid'][$objectDatas['uuid']]; //load translated object if ($id = CMS_poly_object_catalog::objectExists($params['module'], $objectDatas['uuid'])) { $object = CMS_poly_object_catalog::getObjectDefinition($id); $importType = ' (Creation)'; } } } if (isset($object)) { if ($object->fromArray($objectDatas, $params, $cms_language, $idsRelation, $infos)) { $return &= true; $infos .= 'Object "' . $object->getLabel($cms_language) . '" successfully imported' . $importType . "\n"; } else { $return = false; $infos .= 'Error during import of object ' . $objectDatas['id'] . $importType . "\n"; } } } return $return; }
$object->setValue("multilanguage", $_POST["multilanguage"]); //IndexURL $object->setValue("indexable", $_POST["indexable"]); if ($_POST["indexable"] && !$_POST["indexURL"]) { $cms_message .= $cms_language->getMessage(MESSAGE_FORM_ERROR_MANDATORY_FIELDS); } $indexURLValue = $polymod->convertDefinitionString($_POST["indexURL"], false); $URLErrors = $object->setValue("indexURL", $indexURLValue); if ($URLErrors !== true) { $cms_message .= "\n" . $cms_language->getMessage(MESSAGE_FORM_ERROR_MALFORMED_FIELD, array($cms_language->getMessage(MESSAGE_PAGE_OBJECT_INDEXATION_LINK_TO, false, MOD_POLYMOD_CODENAME) . ' : ' . $definitionErrors)); } $object->setValue("module", $moduleCodename); if (!$cms_message && $_POST["cms_action"] == "validate") { //save the data $object->writeToPersistence(); header("Location: modules_admin.php?moduleCodename=" . $moduleCodename . "&object=" . $object->getID() . "&cms_message_id=" . MESSAGE_ACTION_OPERATION_DONE . "&" . session_name() . "=" . session_id()); exit; } break; } $dialog = new CMS_dialog(); $content = ''; $dialog->setTitle($cms_language->getMessage(MESSAGE_PAGE_TITLE_APPLICATIONS) . " :: " . $cms_language->getMessage(MESSAGE_PAGE_TITLE), 'picto_modules.gif'); $dialog->setBacklink("modules_admin.php?moduleCodename=" . $moduleCodename . "&object=" . $object->getID()); if ($cms_message) { $dialog->setActionMessage($cms_message); } if (method_exists($dialog, 'addStopTab')) { $dialog->addStopTab(); $stopTab = ' onkeydown="return catchTab(this,event)"'; }
//checks if (!$cms_user->hasAdminClearance(CLEARANCE_ADMINISTRATION_EDITVALIDATEALL)) { header("Location: " . PATH_ADMIN_SPECIAL_ENTRY_WR . "?cms_message_id=" . MESSAGE_PAGE_CLEARANCE_ERROR . "&" . session_name() . "=" . session_id()); exit; } $moduleCodename = $_POST["moduleCodename"] ? $_POST["moduleCodename"] : $_GET["moduleCodename"]; $object = new CMS_poly_object_definition($_POST["object"]); $availableLanguagesCodes = CMS_object_i18nm::getAvailableLanguages(); $objectsStructure = CMS_poly_module_structure::getModuleStructure($moduleCodename, true); if ($moduleCodename) { $polymod = CMS_modulesCatalog::getByCodename($moduleCodename); } $dialog = new CMS_dialog(); $content = ''; $dialog->setTitle($cms_language->getMessage(MESSAGE_PAGE_TITLE_APPLICATIONS) . " :: " . $polymod->getLabel($cms_language) . " :: " . $cms_language->getMessage(MESSAGE_PAGE_TITLE, array($object->getLabel($cms_language))), 'picto_modules.gif'); $dialog->setBacklink("modules_admin.php?moduleCodename=" . $moduleCodename . "&object=" . $object->getID()); if ($cms_message) { $dialog->setActionMessage($cms_message); } $resourceStatus = array(0 => MESSAGE_PAGE_FIELD_RESOURCE_NONE, 1 => MESSAGE_PAGE_FIELD_RESOURCE_PRIMARY, 2 => MESSAGE_PAGE_FIELD_RESOURCE_SECONDARY); $adminEditableStatus = array(0 => MESSAGE_PAGE_FIELD_YES, 1 => MESSAGE_PAGE_FIELD_NO, 2 => MESSAGE_PAGE_FIELD_ONLY_FOR_ADMIN); $objectUseage = CMS_poly_object_catalog::getObjectUsage($object->getID(), true); if (!sizeof($objectUseage)) { $objectUseageLabel = $cms_language->getMessage(MESSAGE_PAGE_FIELD_NO) . '<br />'; } else { $objectUseageLabel = $cms_language->getMessage(MESSAGE_PAGE_FIELD_OBJECT_USED) . ' : <ul>'; foreach ($objectUseage as $anObjectWhichUse) { $objectUseageLabel .= '<li>' . $anObjectWhichUse->getLabel() . '</li>'; } $objectUseageLabel .= '</ul>'; }
$description = new CMS_object_i18nm($pluginDefinition->getValue("descriptionID")); $availableLanguagesCodes = CMS_object_i18nm::getAvailableLanguages(); if ($moduleCodename) { $polymod = CMS_modulesCatalog::getByCodename($moduleCodename); } $cms_message = ""; // **************************************************************** // ** ACTIONS MANAGEMENT ** // **************************************************************** switch ($_POST["cms_action"]) { case "validate": case "switchexplanation": //checks and assignments $pluginDefinition->setDebug(false); //set objectID $pluginDefinition->setValue("objectID", $object->getID()); if (!$_POST["label" . $availableLanguagesCodes[0]] || !$_POST["description" . $availableLanguagesCodes[0]] || !$_POST["definition"]) { $cms_message .= $cms_language->getMessage(MESSAGE_FORM_ERROR_MANDATORY_FIELDS); } if ($_POST["label" . $availableLanguagesCodes[0]]) { foreach ($availableLanguagesCodes as $aLanguageCode) { $label->setValue($aLanguageCode, $_POST["label" . $aLanguageCode]); } if ($_POST["cms_action"] == 'validate') { $label->writeToPersistence(); } } if (!$pluginDefinition->setValue("labelID", $label->getID())) { $cms_message .= "\n" . $cms_language->getMessage(MESSAGE_FORM_ERROR_MALFORMED_FIELD, array($cms_language->getMessage(MESSAGE_PAGE_FIELD_TITLE))); } if ($_POST["description" . $availableLanguagesCodes[0]]) {