Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/landing/lib/source/ |
Upload File : |
<?php namespace Bitrix\Landing\Source; abstract class Filter { /** @var array Filter field list */ protected $fields = []; protected $fieldTypeHandlers = []; /** * Filter constructor. * @return void */ public function __construct() { $this->initFieldTypeHandlers(); } /** * @param array $fields * @return void */ public function setFields(array $fields) { $this->fields = $fields; } /** * @param array $sourceFilter * @return array */ public function create(array $sourceFilter) { $result = []; if (empty($this->fields) || empty($sourceFilter)) { return $result; } $quickSearchField = $this->getQuickSearchField(); foreach ($sourceFilter as $row) { if (!BlockFilter::checkPreparedRow($row)) { continue; } $index = $row['key']; $value = $row['value']; if (!isset($this->fields[$index])) { continue; } if ( $index === $quickSearchField && isset($value['QUICK_SEARCH']) && $value['QUICK_SEARCH'] == 'Y' ) { $this->addQuickSearchValue($result, $index, $this->fields[$index], $value); } else { $handler = $this->getFieldHandler($this->fields[$index]); if ($handler !== '' && is_callable([$this, $handler])) { call_user_func_array( [$this, $handler], [&$result, $index, $this->fields[$index], $value] ); } } } unset($row); return $result; } /** * @return void */ protected function initFieldTypeHandlers() { $this->fieldTypeHandlers = []; } /** * @param array $field * @return string */ protected function getFieldHandler(array $field) { $result = ''; if (!isset($field['type'])) { $field['type'] = 'string'; } if (isset($this->fieldTypeHandlers[$field['type']])) { $result = $this->fieldTypeHandlers[$field['type']]; } return $result; } /** * @return string|null */ protected function getQuickSearchField() { $result = null; if (!empty($this->fields)) { foreach (array_keys($this->fields) as $index) { $row = $this->fields[$index]; if ( (!isset($row['quickSearch']) && !isset($row['quickSearchOnly'])) || (isset($row['entity']) && $row['entity'] != 'master') ) { continue; } $result = $row['id']; } unset($row, $index); } return $result; } /** * @param array &$result * @param string $fieldId * @param array $field * @param array $value * @return void */ protected function addQuickSearchValue(array &$result, $fieldId, array $field, array $value) {} }