public function deleteActiveAndUnsearchableComplexFields(&$aFields, $activeFieldsSIDs) { $activeComplexFields = SJB_FieldsHolder::getActiveComplexFields(); foreach ($aFields as $key => $aField) { if (in_array($aField['type'], $this->_unsearchableFieldTypes) || in_array($aField['id'], $this->_unsearchableFieldIDs)) { unset($aFields[$key]); } elseif (!empty($activeFieldsSIDs)) { if (in_array($aField['sid'], $activeFieldsSIDs)) { if ($aField['type'] == 'location') { $aFields[$key]['used'] = 1; } else { unset($aFields[$key]); } } } if ($aField['type'] == 'complex') { foreach ($aField['fields'] as $fieldKey => $complexFieldInfo) { if (in_array($complexFieldInfo['sid'], $activeComplexFields)) { unset($aFields[$key]['fields'][$fieldKey]); } } } elseif ($aField['type'] == 'location') { foreach ($aField['fields'] as $fieldKey => $locationFieldInfo) { if (in_array($locationFieldInfo['sid'], $activeFieldsSIDs) || $locationFieldInfo['hidden'] == 1 || $aField['id'] != 'Location' && $locationFieldInfo['id'] == 'ZipCode') { unset($aFields[$key]['fields'][$fieldKey]); } } } } }
/** * @param int $listingTypeSID */ public static function setListingTypeSID($listingTypeSID) { self::$listingTypeSID = $listingTypeSID; }
/** * @param SJB_FormBuilderData $builderData * @return bool * @throws Exception */ public static function save(SJB_FormBuilderData $builderData) { $listingTypeID = $builderData->getListingTypeID(); $listingTypeSID = SJB_ListingTypeManager::getListingTypeSIDByID($listingTypeID); if (!$listingTypeSID) { throw new Exception('Wrong listing type ID is specified'); } $fieldsHolders = $builderData->getFieldsHoldersData(); SJB_FieldsHolder::saveProcess($listingTypeSID, $fieldsHolders); if ($builderData->getType() == SJB_FormBuilderManager::FORM_BUILDER_TYPE_DISPLAY) { self::saveLayout($listingTypeID, $builderData); } return true; }