Sfoglia il codice sorgente

#3149 - Sorting for adv search more - fix

RomanL 4 anni fa
parent
commit
ad73a4497b

+ 15 - 3
inc/classes/BxDolFormQuery.php

@@ -346,11 +346,23 @@ class BxDolFormQuery extends BxDolDb
         $oDb->query("DELETE FROM `sys_form_fields_ids` WHERE  `module` = :module", $aBindings);
     }
 
-    static public function getFormInputs($sObject)
+    static public function getFormInputs($sObject, $mDisplay = '')
     {
         $oDb = BxDolDb::getInstance();
-        $sQuery = $oDb->prepare("SELECT * FROM `sys_form_inputs` WHERE `object` = ?", $sObject);
-        return $oDb->getAll($sQuery);
+        if ($mDisplay == ''){
+            $sQuery = $oDb->prepare("SELECT * FROM `sys_form_inputs` WHERE `object` = ?", $sObject);
+            return $oDb->getAll($sQuery);
+        }
+        else{
+            if (!is_array($mDisplay))
+                $mDisplay = [$mDisplay];
+            $sQuery = $oDb->prepare("
+            SELECT DISTINCT `sys_form_inputs`.* FROM `sys_form_inputs`  
+            INNER JOIN `sys_form_display_inputs` ON `sys_form_display_inputs`.`input_name` =`sys_form_inputs`.`name`
+            WHERE `sys_form_display_inputs`.`display_name` IN (" . $oDb->implode_escape($mDisplay) . ")
+            AND `sys_form_inputs`.`object` = ? AND `sys_form_display_inputs`.`active` = 1", $sObject);
+            return $oDb->getAll($sQuery);
+        }
     }
 }
 

+ 16 - 3
modules/base/general/classes/BxBaseModGeneralModule.php

@@ -369,7 +369,20 @@ class BxBaseModGeneralModule extends BxDolModule
         
         $aSortableFields = [];
         
-        $aInputs = BxDolFormQuery::getFormInputs($CNF['OBJECT_FORM_ENTRY']);
+        $aDisplays = [];
+        if(!empty($CNF['OBJECT_FORM_ENTRY_DISPLAY_ADD'])) {
+            $aDisplays[] = $CNF['OBJECT_FORM_ENTRY_DISPLAY_ADD'];
+        }
+        if(!empty($CNF['OBJECT_FORM_ENTRY_DISPLAY_EDIT'])) {
+            $aDisplays[] = $CNF['OBJECT_FORM_ENTRY_DISPLAY_EDIT'];
+        }
+        
+        $aInputsAll = BxDolFormQuery::getFormInputs($CNF['OBJECT_FORM_ENTRY']);    
+        foreach($aInputsAll as $aInput){
+            $aInputsAll[$aInput['name']] = $aInput;
+        }
+        
+        $aInputs = BxDolFormQuery::getFormInputs($CNF['OBJECT_FORM_ENTRY'],  $aDisplays);
         foreach($aInputs as $aInput){
             $aInputs[$aInput['name']] = $aInput;
             if ($aInput['type'] == 'text'){
@@ -388,13 +401,13 @@ class BxBaseModGeneralModule extends BxDolModule
         foreach($aSortableFields as $sSortableField){
              $aResult[$sSortableField . '_asc'] = [
                 'name' => $sSortableField,
-                'caption' => $aInputs[$sSortableField]['caption'],
+                'caption' => $aInputsAll[$sSortableField]['caption'],
                 'direction' => 'asc'
             ];
             
             $aResult[$sSortableField . '_desc']  = [
                 'name' => $sSortableField,
-                'caption' => $aInputs[$sSortableField]['caption'],
+                'caption' => $aInputsAll[$sSortableField]['caption'],
                 'direction' => 'desc'
             ];
         }