Esempio n. 1
0
 /**
  * Proceed to search and returns the array of results, null if none 
  * found. All search options had been set yet.
  * 
  * @access public
  * @param $return, the returned values in : 
  *	self::POLYMOD_SEARCH_RETURN_IDS for array of ids sorted
  *	self::POLYMOD_SEARCH_RETURN_DATAS for db datas
  *	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) /!\
  *	self::POLYMOD_SEARCH_RETURN_INDIVIDUALS_OBJECTS use this method to get individual results with method getNextResult
  * @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 mixed array(CMS_poly_object) or boolean (for POLYMOD_SEARCH_RETURN_INDIVIDUALS_OBJECTS)
  */
 function search($return = self::POLYMOD_SEARCH_RETURN_OBJECTS, $loadSubObjects = false)
 {
     global $cms_user;
     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;
     }
     $items = array();
     if ($return == self::POLYMOD_SEARCH_RETURN_INDIVIDUALS_OBJECTS) {
         //reset result stack if needed
         reset($this->_sortedResultsIds);
     }
     $this->_searchMode = $return;
     // Check module rights : to get any results, user should has at least CLEARANCE_MODULE_VIEW
     if ((!$this->_public || $this->_public && APPLICATION_ENFORCES_ACCESS_CONTROL) && (!is_object($cms_user) || !$cms_user->hasModuleClearance($this->_object->getValue('module'), CLEARANCE_MODULE_VIEW))) {
         if (!is_object($cms_user)) {
             $this->_raiseError(__CLASS__ . ' : ' . __FUNCTION__ . ' : cms_user not loaded when trying to get objects subject to rights ...');
         }
         return $return == self::POLYMOD_SEARCH_RETURN_INDIVIDUALS_OBJECTS ? false : $items;
     }
     //get all ids and numrows for search
     $this->_resultsIds = $this->_getIds();
     //if results
     if (is_array($this->_resultsIds) && $this->_resultsIds) {
         //sort and limit ids to order and limit clause and to existant objects
         $this->_sortedResultsIds = $this->_sortIds();
         //if return anything than ids
         if ($return != self::POLYMOD_SEARCH_RETURN_IDS && is_array($this->_sortedResultsIds) && $this->_sortedResultsIds) {
             //get subobjects ids
             if ($return != self::POLYMOD_SEARCH_RETURN_OBJECTSLIGHT) {
                 $this->_resultsSubObjectsIds = $this->_getSubObjectsIds();
             }
             //then load all values for objects and subobjects (if needed)
             $this->_values = $this->_getObjectValues();
         }
         //clean tmp table
         $this->_updateTmpList();
     } else {
         //clean tmp table
         $this->_updateTmpList();
         return $return == self::POLYMOD_SEARCH_RETURN_INDIVIDUALS_OBJECTS ? true : array();
     }
     //return datas
     if ($return == self::POLYMOD_SEARCH_RETURN_DATAS) {
         return $this->_values;
     }
     //return individuals objects with method getNextResult
     if ($return == self::POLYMOD_SEARCH_RETURN_INDIVIDUALS_OBJECTS) {
         return true;
     }
     //return ids
     if ($return == self::POLYMOD_SEARCH_RETURN_IDS) {
         return $this->_sortedResultsIds;
     }
     //return objects
     $count = 0;
     if ($this->_values && $this->_sortedResultsIds) {
         //1- create objects values : all subObjects found for searched objects
         $subObjectValues = array();
         foreach ($this->_resultsSubObjectsIds as $subObjectId) {
             $subObjectValues[$subObjectId] =& $this->_values[$subObjectId];
         }
         //load sub objects values
         $loadSubObjectsValues = $return != self::POLYMOD_SEARCH_RETURN_OBJECTSLIGHT;
         //create objects
         foreach ($this->_sortedResultsIds as $aResultID) {
             //2- add object values to objects values
             $objectValues = $subObjectValues;
             $objectValues[$aResultID] =& $this->_values[$aResultID];
             //instanciate object
             $obj = new CMS_poly_object($this->_object->getID(), $aResultID, $objectValues, $this->_public, $loadSubObjects, $loadSubObjectsValues);
             if (!$obj->hasError()) {
                 $items[$aResultID] = $obj;
                 $count++;
             }
         }
     }
     return $items;
 }
Esempio n. 2
0
                } else {
                    $item->lock($cms_user);
                }
            }
            //check user rights on item
            if (!$item->userHasClearance($cms_user, CLEARANCE_MODULE_EDIT)) {
                CMS_grandFather::raiseError('Error, user has no rights item ' . $itemId);
                $jscontent = "\n\t\t\t\tAutomne.message.popup({\n\t\t\t\t\tmsg: \t\t\t\t'{$cms_language->getJSMessage(MESSAGE_PAGE_ELEMENT_EDIT_RIGHTS_ERROR, array($itemLabel), MOD_POLYMOD_CODENAME)}',\n\t\t\t\t\tbuttons: \t\t\tExt.MessageBox.OK,\n\t\t\t\t\tclosable: \t\t\tfalse,\n\t\t\t\t\ticon: \t\t\t\tExt.MessageBox.ERROR\n\t\t\t\t});";
                $view->addJavascript($jscontent);
                $view->setContent($content);
                $view->show();
            }
        }
    } else {
        //instanciate clean object (creation)
        $item = new CMS_poly_object($object->getID(), '');
    }
}
$cms_message = '';
switch ($action) {
    case 'save':
    case 'save-validate':
        //checks and assignments
        $item->setDebug(false);
        $fieldsObjects = $item->getFieldsObjects();
        //first, check mandatory values
        $allOK = true;
        foreach ($fieldsObjects as $fieldID => $aFieldObject) {
            $return = $item->checkMandatory($fieldID, $fieldsValues, '', true);
            if ($return !== true) {
                $allOK = false;
Esempio n. 3
0
            $view->addJavascript($jscontent);
            $view->show();
        } else {
            $item->lock($cms_user);
        }
    }
    //check user rights on item
    if (!$item->userHasClearance($cms_user, CLEARANCE_MODULE_EDIT)) {
        CMS_grandFather::raiseError('Error, user has no rights item ' . $itemId);
        $jscontent = "\n\t\tvar window = Ext.getCmp('{$winId}');\n\t\tif (window) {\n\t\t\twindow.close();\n\t\t}\n\t\tAutomne.message.popup({\n\t\t\tmsg: \t\t\t\t'{$cms_language->getJSMessage(MESSAGE_PAGE_ELEMENT_EDIT_RIGHTS_ERROR, array($itemLabel), MOD_POLYMOD_CODENAME)}',\n\t\t\tbuttons: \t\t\tExt.MessageBox.OK,\n\t\t\tclosable: \t\t\tfalse,\n\t\t\ticon: \t\t\t\tExt.MessageBox.ERROR\n\t\t});";
        $view->addJavascript($jscontent);
        $view->show();
    }
} else {
    //instanciate clean object (creation)
    $item = new CMS_poly_object($object->getID(), '');
}
$winLabel = sensitiveIO::sanitizeJSString($cms_language->getMessage(MESSAGE_PAGE_TITLE_MODULE, array($cms_module->getLabel($cms_language))) . " :: " . $cms_language->getMessage(MESSAGE_PAGE_TITLE, array($object->getLabel($cms_language)), MOD_POLYMOD_CODENAME));
$fieldsObjects = $item->getFieldsObjects();
$itemFields = '';
foreach ($fieldsObjects as $fieldID => $aFieldObject) {
    $fieldAdmin = $item->getHTMLAdmin($fieldID, $cms_language, '');
    if (is_array($fieldAdmin)) {
        $itemFields .= sensitiveIO::jsonEncode($fieldAdmin) . ',';
    }
}
//do some search and replace to allow use of js functions in returned code
$itemFields = str_replace('"scope":"this"', '"scope":this', $itemFields);
function replaceCallBack($parts)
{
    return 'function(' . str_replace(array('\\"', '\\/'), array('"', '/'), $parts[1]) . '}';
Esempio n. 4
0
 /**
  * get an object instance of the field type
  *
  * @param boolean $returnDefinition, return object CMS_poly_object_definition or CMS_poly_object otherwise
  * @return mixed, the object instance
  * @access public
  */
 function getTypeObject($returnDefinition = false, $public = false)
 {
     if (!$this->_objectFieldValues['type']) {
         return false;
     }
     if (sensitiveIO::isPositiveInteger($this->_objectFieldValues['type'])) {
         if ($returnDefinition) {
             return CMS_poly_object_catalog::getObjectDefinition($this->_objectFieldValues['type']);
         } else {
             $item = new CMS_poly_object($this->_objectFieldValues['type'], 0, array(), $public);
             //object is used as field as another object so set it
             $item->setField($this);
             return $item;
         }
     } elseif (io::strpos($this->_objectFieldValues['type'], 'multi|') !== false) {
         return new CMS_multi_poly_object(io::substr($this->_objectFieldValues['type'], 6), array(), $this, $public);
     } elseif (class_exists($this->_objectFieldValues['type'])) {
         return new $this->_objectFieldValues['type'](array(), $this, $public);
     }
 }
Esempio n. 5
0
 /**
  * get labels for object structure and functions
  *
  * @return array : the labels of object structure and functions
  * @access public
  */
 function getLabelsStructure(&$language, $objectName)
 {
     $labels = array();
     $object = new CMS_poly_object($this->_objectID);
     $labels['structure']['label'] = $language->getMessage(self::MESSAGE_MULTI_OBJECT_LABEL_DESCRIPTION, false, MOD_POLYMOD_CODENAME);
     $labels['structure']['fieldname'] = $language->getMessage(self::MESSAGE_MULTI_OBJECT_FIELDNAME_DESCRIPTION, array($this->getFieldLabel($language)), MOD_POLYMOD_CODENAME);
     $labels['structure']['fieldID'] = $language->getMessage(self::MESSAGE_MULTI_OBJECT_FIELDID_DESCRIPTION, array($this->_field->getID()), MOD_POLYMOD_CODENAME);
     $labels['structure']['required'] = $language->getMessage(self::MESSAGE_MULTI_OBJECT_REQUIRED_DESCRIPTION, false, MOD_POLYMOD_CODENAME);
     $labels['structure']['objectname'] = $language->getMessage(self::MESSAGE_MULTI_OBJECT_OBJECTNAME_DESCRIPTION, array($object->getFieldLabel($language)), MOD_POLYMOD_CODENAME);
     $labels['structure']['objectdescription'] = $language->getMessage(self::MESSAGE_MULTI_OBJECT_OBJECTDESC_DESCRIPTION, array($object->getFieldDesc($language)), MOD_POLYMOD_CODENAME);
     $labels['structure']['objecttype'] = $language->getMessage(self::MESSAGE_MULTI_OBJECT_OBJECTTYPE_DESCRIPTION, array($this->_objectID), MOD_POLYMOD_CODENAME);
     $labels['structure']['ids'] = $language->getMessage(self::MESSAGE_MULTI_OBJECT_IDS_DESCRIPTION, array($object->getFieldLabel($language)), MOD_POLYMOD_CODENAME);
     $labels['structure']['fields'] = $language->getMessage(self::MESSAGE_MULTI_OBJECT_FIELDS_DESCRIPTION, array($object->getFieldLabel($language)), MOD_POLYMOD_CODENAME);
     $labels['structure']['count'] = $language->getMessage(self::MESSAGE_MULTI_OBJECT_COUNT_DESCRIPTION, array($object->getFieldLabel($language)), MOD_POLYMOD_CODENAME);
     $labels['structure']['description'] = $language->getMessage(self::MESSAGE_MULTI_OBJECT_FIELD_DESC_DESCRIPTION, array(io::htmlspecialchars($this->getFieldDescription($language))), MOD_POLYMOD_CODENAME);
     $labels['function']['selectOptions'] = $language->getMessage(self::MESSAGE_MULTI_OBJECT_FUNCTION_SELECTOPTIONS_DESCRIPTION, array('{' . $objectName . '}'), MOD_POLYMOD_CODENAME);
     return $labels;
 }
Esempio n. 6
0
 /**
  * Sets subObjectsDefinitions
  *
  * @return boolean true on success, false on failure
  * @access private
  */
 protected function _populateSubObjectsDefinitions()
 {
     if (!$this->_objectFieldsDefinition) {
         $this->raiseError("No fields for objectID : " . $this->_objectID . " in catalog");
         return false;
     }
     //get all subDefinitions for fields
     foreach (array_keys($this->_objectFieldsDefinition) as $fieldID) {
         if (is_object($this->_objectFieldsDefinition[$fieldID])) {
             $type = $this->_objectFieldsDefinition[$fieldID]->getValue('type');
             if (sensitiveIO::isPositiveInteger($type)) {
                 //poly object
                 $typeObject = new CMS_poly_object($type);
                 $this->_subObjectsDefinitions[$fieldID] = $typeObject->getSubFieldsDefinition($this->_ID);
             } elseif (io::strpos($type, "multi|") !== false) {
                 //multi objects
                 $this->_subObjectsDefinitions[$fieldID] = CMS_multi_poly_object::getSubFieldsDefinition(io::substr($type, 6), $this->_ID, $this->_objectFieldsDefinition[$fieldID]);
             } elseif (class_exists($type)) {
                 //object
                 $typeObject = new $type(array(), $this->_objectFieldsDefinition[$fieldID]);
                 $this->_subObjectsDefinitions[$fieldID] = $typeObject->getSubFieldsDefinition($this->_ID);
             } else {
                 $this->raiseError("Unknown field type : " . $type);
                 return false;
             }
         }
     }
     return true;
 }