Просмотр исходного кода

Ticket #4971 - Build-in API support: Extended search.

AntonLV 3 месяцев назад
Родитель
Сommit
f1cb0c93b5
1 измененных файлов с 32 добавлено и 33 удалено
  1. 32 33
      template/scripts/BxBaseSearchExtended.php

+ 32 - 33
template/scripts/BxBaseSearchExtended.php

@@ -122,42 +122,41 @@ class BxBaseSearchExtended extends BxDolSearchExtended
             return $this->_bIsApi ? [$this->getResultsAPI([], $iStart, $iPerPage)] : '';
 
         $aParamsSearch = [];
-        if(empty($aParams['search_params'])) {
-            foreach($this->_aObject['fields'] as $aField) {
-                $mixedValue = $oForm->getCleanValue($aField['name']);
-                if(empty($mixedValue) || (is_array($mixedValue) && bx_is_empty_array($mixedValue)))
-                    continue;
-
-                $aParamsSearch[$aField['name']] = [
-                    'type' => $aField['search_type'],
-                    'value' => $mixedValue,
-                    'operator' => $aField['search_operator']
-                ];
-
-                if(!$bCondition) {
-                    if(!isset($aParams['cond']))
-                        $aParams['cond'] = array();
-
-                    switch($oForm->aInputs[$aField['name']]['type']) {
-                        case 'location':
-                        case 'location_radius':
-                            $aParams['cond'][$aField['name']] = $mixedValue['string'];
-
-                            $aLocationComponents = BxDolMetatags::locationsParseComponents($mixedValue['array'], $aField['name']);
-                            if($oForm->aInputs[$aField['name']]['type'] == 'location_radius' && count($mixedValue['array']) > count($aLocationComponents))
-                                $aLocationComponents[$aField['name'] . '_rad'] = array_pop($mixedValue['array']);
-
-                            $aParams['cond'] = array_merge($aParams['cond'], $aLocationComponents);
-                            break;
-
-                        default:
-                            $aParams['cond'][$aField['name']] = $mixedValue;
-                    }
+        if($this->_bIsApi && ($sK = 'search_params') && !empty($aParams[$sK]) && is_array($aParams[$sK]))
+            $aParamsSearch = $aParams[$sK];
+
+        foreach($this->_aObject['fields'] as $aField) {
+            $mixedValue = $oForm->getCleanValue($aField['name']);
+            if(empty($mixedValue) || (is_array($mixedValue) && bx_is_empty_array($mixedValue)))
+                continue;
+
+            $aParamsSearch[$aField['name']] = [
+                'type' => $aField['search_type'],
+                'value' => $mixedValue,
+                'operator' => $aField['search_operator']
+            ];
+
+            if(!$bCondition) {
+                if(!isset($aParams['cond']))
+                    $aParams['cond'] = array();
+
+                switch($oForm->aInputs[$aField['name']]['type']) {
+                    case 'location':
+                    case 'location_radius':
+                        $aParams['cond'][$aField['name']] = $mixedValue['string'];
+
+                        $aLocationComponents = BxDolMetatags::locationsParseComponents($mixedValue['array'], $aField['name']);
+                        if($oForm->aInputs[$aField['name']]['type'] == 'location_radius' && count($mixedValue['array']) > count($aLocationComponents))
+                            $aLocationComponents[$aField['name'] . '_rad'] = array_pop($mixedValue['array']);
+
+                        $aParams['cond'] = array_merge($aParams['cond'], $aLocationComponents);
+                        break;
+
+                    default:
+                        $aParams['cond'][$aField['name']] = $mixedValue;
                 }
             }
         }
-        else 
-            $aParamsSearch = $aParams['search_params'];
 
         if((empty($aParamsSearch) || !is_array($aParamsSearch)) && !$this->_bFilterMode)
             return $this->_bIsApi ? [$this->getResultsAPI([], $iStart, $iPerPage, $aParamsSearch)] : '';