. */ namespace SP\Mgmt\CustomFields; defined('APP_ROOT') || die(); use SP\DataModel\CustomFieldDefinitionData; use SP\DataModel\ItemSearchData; use SP\Mgmt\ItemSearchInterface; use SP\Storage\DbWrapper; use SP\Storage\QueryData; use SP\Util\Util; /** * Class CustomFieldSearch * * @package SP\Mgmt\CustomFields */ class CustomFieldDefSearch extends CustomFieldBase implements ItemSearchInterface { /** * @param ItemSearchData $SearchData * @return array|\SP\DataModel\CustomFieldDefinitionData[] */ public function getMgmtSearch(ItemSearchData $SearchData) { $Data = new QueryData(); $Data->setMapClassName($this->getDataModel()); $Data->setSelect('customfielddef_id, customfielddef_module, customfielddef_field'); $Data->setFrom('customFieldsDef'); $Data->setOrder('customfielddef_module'); $Data->setLimit('?,?'); $Data->addParam($SearchData->getLimitStart()); $Data->addParam($SearchData->getLimitCount()); DbWrapper::setFullRowCount(); /** @var CustomFieldDefinitionData[] $queryRes */ $queryRes = DbWrapper::getResultsArray($Data); $customFields = []; foreach ($queryRes as $CustomField) { /** @var CustomFieldDefinitionData $fieldDef */ $fieldDef = Util::unserialize($this->getDataModel(), $CustomField->getCustomfielddefField()); if ($SearchData->getSeachString() === '' || stripos($fieldDef->getName(), $SearchData->getSeachString()) !== false || stripos(CustomFieldTypes::getFieldsTypes($fieldDef->getType(), true), $SearchData->getSeachString()) !== false || stripos(CustomFieldTypes::getFieldsModules($CustomField->getCustomfielddefModule()), $SearchData->getSeachString()) !== false ) { $fieldDef->setId($CustomField->getCustomfielddefId()); $customFields[] = $fieldDef; } } $customFields['count'] = $Data->getQueryNumRows(); return $customFields; } /** * Inicializar la clase * * @return void * @throws \SP\Core\Exceptions\InvalidClassException */ protected function init() { $this->setDataModel(CustomFieldDefinitionData::class); } }