/** * insertMultiplyRegionInstanceData * @param GenericElementRegion $objRegion * @param integer $intRegionInstanceId * @param integer $intRegionPosition * @param string $strType, * @param string $strTypeId, * @param integer $intTypeVersion * @author Thomas Schedler <*****@*****.**> * @version 1.0 */ protected final function insertMultiplyRegionInstanceData(GenericElementRegion &$objRegion, $intRegionInstanceId, $intRegionPosition, $strType, $strTypeId, $intTypeVersion) { try { $arrInstanceData = array($strType . 'Id' => $strTypeId, 'version' => $intTypeVersion, 'idLanguages' => $this->setup->getLanguageId(), 'sortPosition' => $intRegionPosition); /** * for each instance field, add to instance data array */ foreach ($objRegion->InstanceFieldNames() as $strFieldName) { if (is_array($objRegion->getField($strFieldName)->getInstanceValue($intRegionInstanceId))) { $arrInstanceData[$strFieldName] = json_encode($objRegion->getField($strFieldName)->getInstanceValue($intRegionInstanceId)); } else { $arrInstanceData[$strFieldName] = $objRegion->getField($strFieldName)->getInstanceValue($intRegionInstanceId); } } $idRegionInstance = $this->getModelGenericData()->getGenericTable($strType . '-' . $this->setup->getFormId() . '-' . $this->setup->getFormVersion() . '-Region' . $objRegion->getRegionId() . '-Instances')->insert($arrInstanceData); if (count($objRegion->FileFieldNames()) > 0) { /** * insert into the file instances table */ foreach ($objRegion->FileFieldNames() as $strFieldName) { $objField = $objRegion->getField($strFieldName); $intFieldId = $objField->id; $strTmpFileIds = trim($objField->getInstanceValue($intRegionInstanceId), '[]'); $strDisplayOption = $objField->getInstanceProperty($intRegionInstanceId, 'display_option'); $arrFileIds = array(); $arrFileIds = explode('][', $strTmpFileIds); if (count($arrFileIds) > 0) { foreach ($arrFileIds as $intFileId) { if ($intFileId != '') { $arrFileData = array($strType . 'Id' => $strTypeId, 'version' => $intTypeVersion, 'idLanguages' => $this->setup->getLanguageId(), 'idRegionInstances' => $idRegionInstance, 'idFiles' => $intFileId, 'displayOption' => $strDisplayOption, 'idFields' => $intFieldId); $this->getModelGenericData()->getGenericTable($strType . '-' . $this->setup->getFormId() . '-' . $this->setup->getFormVersion() . '-Region' . $objRegion->getRegionId() . '-InstanceFiles')->insert($arrFileData); } } } } } if (count($objRegion->FileFilterFieldNames()) > 0) { /** * insert into the file filter instances table */ foreach ($objRegion->FileFilterFieldNames() as $strFieldName) { $objField = $objRegion->getField($strFieldName); $intFieldId = $objField->id; $objFilters = $objField->getInstanceValue($intRegionInstanceId); if (isset($objFilters->filters)) { foreach ($objFilters->filters as $objFilter) { if (!is_array($objFilter->referenceIds)) { $objFilter->referenceIds = array($objFilter->referenceIds); } foreach ($objFilter->referenceIds as $intReferenceId) { if (is_numeric($intReferenceId)) { $arrFileFilterData = array($strType . 'Id' => $strTypeId, 'version' => $intTypeVersion, 'idLanguages' => $this->setup->getLanguageId(), 'idRegionInstances' => $idRegionInstance, 'idFilterTypes' => $objFilter->typeId, 'referenceId' => $intReferenceId, 'idFields' => $intFieldId); $this->getModelGenericData()->getGenericTable($strType . '-' . $this->setup->getFormId() . '-' . $this->setup->getFormVersion() . '-Region' . $objRegion->getRegionId() . '-InstanceFileFilters')->insert($arrFileFilterData); } } } } } } if (count($objRegion->MultiFieldNames()) > 0) { /** * insert into the multi fields instances table */ foreach ($objRegion->MultiFieldNames() as $strFieldName) { $objField = $objRegion->getField($strFieldName); $intFieldId = $objField->id; if (is_array($objField->getInstanceValue($intRegionInstanceId)) && count($objField->getInstanceValue($intRegionInstanceId)) > 0) { foreach ($objField->getInstanceValue($intRegionInstanceId) as $intRelationId) { if ($intRelationId != '') { $arrFileData = array($strType . 'Id' => $strTypeId, 'version' => $intTypeVersion, 'idLanguages' => $this->setup->getLanguageId(), 'idRegionInstances' => $idRegionInstance, 'idRelation' => $intRelationId, 'idFields' => $intFieldId); $this->getModelGenericData()->getGenericTable($strType . '-' . $this->setup->getFormId() . '-' . $this->setup->getFormVersion() . '-Region' . $objRegion->getRegionId() . '-InstanceMultiFields')->insert($arrFileData); } } } } } } catch (Exception $exc) { $this->core->logger->err($exc); } }
/** * addRegion * @param GenericElementRegion $objRegion * @author Thomas Schedler <*****@*****.**> * @version 1.0 */ public function addRegion(GenericElementRegion &$objRegion) { $this->arrRegions[$objRegion->getRegionId()] = $objRegion; }