/** * loadGenericFormStructure * @author Thomas Schedler <*****@*****.**> * @version 1.0 */ public function loadGenericFormStructure() { $this->core->logger->debug('massiveart->generic->GenericSetup->loadGenericFormStructure()'); try { /** * load the generic form model */ $this->getModelGenericForm(); $blnCacheGenForm = $this->core->sysConfig->cache->generic_form_structure == 'true' ? true : false; $arrFrontendOptions = array('caching' => $blnCacheGenForm, 'lifetime' => null, 'automatic_serialization' => true); $arrBackendOptions = array('cache_dir' => GLOBAL_ROOT_PATH . '/tmp/cache/gen_forms/'); // getting a Zend_Cache_Core object $objCache = Zend_Cache::factory('Core', 'File', $arrFrontendOptions, $arrBackendOptions); // see if a cache already exists: if (!($objFieldsAndRegionsData = $objCache->load('GenForm' . $this->intGenFormId))) { // cache miss; get generic form structure $objFieldsAndRegionsData = $this->objModelGenericForm->loadFieldsAndRegionsByFormId($this->intGenFormId); $objCache->save($objFieldsAndRegionsData, 'GenForm' . $this->intGenFormId); } $arrExcludedRegions = array(); if ($this->getTemplateId() > 0) { $objTemplateExcludedRegionData = $this->getModelTemplates()->loadTemplateExcludedRegions($this->getTemplateId()); if (count($objTemplateExcludedRegionData) > 0) { foreach ($objTemplateExcludedRegionData as $objTemplateExcludedRegion) { $arrExcludedRegions[] = $objTemplateExcludedRegion->idRegions; } } } $arrExcludedFields = array(); if ($this->getTemplateId() > 0) { $objTemplateExcludedFieldData = $this->getModelTemplates()->loadTemplateExcludedFields($this->getTemplateId()); if (count($objTemplateExcludedFieldData) > 0) { foreach ($objTemplateExcludedFieldData as $objTemplateExcludedField) { $arrExcludedFields[] = $objTemplateExcludedField->idFields; } } } $arrTemplateRegionProperties = array(); if ($this->getTemplateId() > 0) { $objTemplateRegionPropertiesData = $this->getModelTemplates()->loadTemplateRegionProperties($this->getTemplateId()); if (count($objTemplateRegionPropertiesData) > 0) { foreach ($objTemplateRegionPropertiesData as $objTemplateRegionProperty) { $arrTemplateRegionProperties[$objTemplateRegionProperty->idRegions] = array('order' => $objTemplateRegionProperty->order, 'collapsable' => $objTemplateRegionProperty->collapsable, 'isCollapsed' => $objTemplateRegionProperty->isCollapsed); } } } /** * go through the fields and regions to prepare the generic structure */ foreach ($objFieldsAndRegionsData as $objFieldRegionTagData) { if (!array_key_exists($objFieldRegionTagData->tabId, $this->arrTabs)) { $objGenTab = new GenericElementTab(); $objGenTab->setTabId($objFieldRegionTagData->tabId); $objGenTab->setTabTitle($objFieldRegionTagData->tabTitle); $objGenTab->setTabOrder($objFieldRegionTagData->tabOrder); $this->arrTabs[$objFieldRegionTagData->tabId] = $objGenTab; } if (!in_array($objFieldRegionTagData->regionId, $arrExcludedRegions)) { if (!in_array($objFieldRegionTagData->id, $arrExcludedFields)) { if (!array_key_exists($objFieldRegionTagData->regionId, $this->arrRegions)) { $objGenRegion = new GenericElementRegion(); $objGenRegion->setRegionId($objFieldRegionTagData->regionId); $objGenRegion->setRegionTitle($objFieldRegionTagData->regionTitle); $objGenRegion->setRegionCols($objFieldRegionTagData->regionColumns); if (array_key_exists($objFieldRegionTagData->regionId, $arrTemplateRegionProperties)) { if (!is_null($arrTemplateRegionProperties[$objFieldRegionTagData->regionId]['order']) || $arrTemplateRegionProperties[$objFieldRegionTagData->regionId]['order'] != '') { $objGenRegion->setRegionOrder($arrTemplateRegionProperties[$objFieldRegionTagData->regionId]['order']); } else { $objGenRegion->setRegionOrder($objFieldRegionTagData->regionOrder); } if (!is_null($arrTemplateRegionProperties[$objFieldRegionTagData->regionId]['collapsable']) || $arrTemplateRegionProperties[$objFieldRegionTagData->regionId]['collapsable'] != '') { $objGenRegion->setRegionCollapsable($arrTemplateRegionProperties[$objFieldRegionTagData->regionId]['collapsable']); } else { $objGenRegion->setRegionCollapsable($objFieldRegionTagData->collapsable); } if (!is_null($arrTemplateRegionProperties[$objFieldRegionTagData->regionId]['isCollapsed']) || $arrTemplateRegionProperties[$objFieldRegionTagData->regionId]['isCollapsed'] != '') { $objGenRegion->setRegionIsCollapsed($arrTemplateRegionProperties[$objFieldRegionTagData->regionId]['isCollapsed']); } else { $objGenRegion->setRegionIsCollapsed($objFieldRegionTagData->isCollapsed); } } else { $objGenRegion->setRegionOrder($objFieldRegionTagData->regionOrder); $objGenRegion->setRegionCollapsable($objFieldRegionTagData->collapsable); $objGenRegion->setRegionIsCollapsed($objFieldRegionTagData->isCollapsed); } $objGenRegion->setRegionTypeId($objFieldRegionTagData->idRegionTypes); $objGenRegion->setRegionPosition($objFieldRegionTagData->position); $objGenRegion->setRegionIsMultiply($objFieldRegionTagData->isMultiply); $objGenRegion->setRegionMultiplyRegion($objFieldRegionTagData->multiplyRegion); $this->arrRegions[$objFieldRegionTagData->regionId] = $objGenRegion; if ($objGenRegion->getRegionIsMultiply() == true) { $this->arrMultiplyRegionIds[] = $objFieldRegionTagData->regionId; } $this->getTab($objFieldRegionTagData->tabId)->addRegion($objGenRegion); } $objGenField = new GenericElementField(); $objGenField->id = $objFieldRegionTagData->id; $objGenField->title = $objFieldRegionTagData->title; $objGenField->name = $objFieldRegionTagData->name; $objGenField->typeId = $objFieldRegionTagData->idFieldTypes; $objGenField->type = $objFieldRegionTagData->type; $objGenField->defaultValue = $objFieldRegionTagData->defaultValue; $objGenField->sqlSelect = $objFieldRegionTagData->sqlSelect; $objGenField->columns = $objFieldRegionTagData->columns; $objGenField->order = $objFieldRegionTagData->order; $objGenField->isCoreField = $objFieldRegionTagData->isCoreField; $objGenField->isKeyField = $objFieldRegionTagData->isKeyField; $objGenField->isSaveField = $objFieldRegionTagData->isSaveField; $objGenField->isRegionTitle = $objFieldRegionTagData->isRegionTitle; $objGenField->isDependentOn = $objFieldRegionTagData->isDependentOn; $objGenField->copyValue = $objFieldRegionTagData->copyValue; $objGenField->decorator = $objFieldRegionTagData->decorator; $objGenField->isMultiply = $objFieldRegionTagData->isMultiply; $objGenField->idSearchFieldTypes = $objFieldRegionTagData->idSearchFieldTypes; $objGenField->idFieldTypeGroup = $objFieldRegionTagData->idFieldTypeGroup; $objGenField->isSqlKeyValuePair = $objFieldRegionTagData->isSqlKeyValuePair; /** * select field container */ if ($objGenField->isSaveField == 1) { if ($objGenField->isMultiply == 1) { if ($objGenField->idFieldTypeGroup == GenericSetup::FIELD_TYPE_SPECIALFIELD_ID) { $this->getRegion($objFieldRegionTagData->regionId)->addSpecialFieldName($objGenField->name); } else { if ($objGenField->idFieldTypeGroup == GenericSetup::FIELD_TYPE_FILE_ID) { $this->getRegion($objFieldRegionTagData->regionId)->addFileFieldName($objGenField->name); } else { if ($objGenField->idFieldTypeGroup == GenericSetup::FIELD_TYPE_MULTIFIELD_ID) { $this->getRegion($objFieldRegionTagData->regionId)->addMultiFieldName($objGenField->name); } else { $this->getRegion($objFieldRegionTagData->regionId)->addInstanceFieldName($objGenField->name); } } } } else { if ($objGenField->isCoreField == 1) { $this->arrCoreFields[$objGenField->name] = $objGenField; $this->arrFieldNames[$objGenField->name] = self::CORE_FIELD; } else { if ($objGenField->idFieldTypeGroup == GenericSetup::FIELD_TYPE_SPECIALFIELD_ID) { $this->arrSpecialFields[$objGenField->name] = $objGenField; $this->arrFieldNames[$objGenField->name] = self::SPECIAL_FIELD; } else { if ($objGenField->idFieldTypeGroup == GenericSetup::FIELD_TYPE_FILE_ID) { $this->arrFileFields[$objGenField->name] = $objGenField; $this->arrFieldNames[$objGenField->name] = self::FILE_FIELD; } else { if ($objGenField->idFieldTypeGroup == GenericSetup::FIELD_TYPE_MULTIFIELD_ID) { $this->arrMultiFields[$objGenField->name] = $objGenField; $this->arrFieldNames[$objGenField->name] = self::MULTI_FIELD; } else { $this->arrInstanceFields[$objGenField->name] = $objGenField; $this->arrFieldNames[$objGenField->name] = self::INSTANCE_FIELD; } } } } } } $this->getRegion($objFieldRegionTagData->regionId)->addField($objGenField); } } } } catch (Exception $exc) { $this->core->logger->err($exc); } }