[TikiWiki-commits] [Git][tikiwiki/tiki][master] [FIX] Resolve Field _sort does not exist error in MySQL search engine

"Victor Emanouilov \(@kroky\) via TikiWiki-cvs" <[email protected]>
Newsgroups gmane.comp.cms.tiki.cvs
Message-ID <69b8347f593cf_3b18c130768@gitlab-sidekiq-low-urgency-cpu-bound-v2-69484575d6-hfxn9.mail>

Victor Emanouilov pushed to branch master at Tiki Wiki CMS Groupware / Tiki


Commits:
021a9780 by Moïse Nturubika at 2026-03-16T15:18:19+00:00
[FIX] Resolve Field _sort does not exist error in MySQL search engine
---
* [REF] ObjectSelector: Refactor parameter handling and refine search filter logic

* [FIX] Fix pipeline errors

* [FIX] Fix relation sort crash and implement robust filter validation

* [FIX] Resolve Field _sort does not exist error in MySQL search engine

See merge request tikiwiki/tiki!9639

- - - - -


3 changed files:

- lib/jquery_tiki/tiki-jquery.js
- lib/search/searchlib-unified.php
- lib/smarty_tiki/FunctionHandler/ObjectSelector.php


Changes:

=====================================
lib/jquery_tiki/tiki-jquery.js
=====================================
@@ -1813,19 +1813,9 @@ $(document).tiki('copy')(
     // sort result containing all galleries
     function sortResult(result) {
         result.sort(function(a, b) {
-            if (a.parent_title) {
-                var titleA = a.parent_title.toUpperCase(); // ignore upper and lowercase
-                var titleB = b.parent_title.toUpperCase(); // ignore upper and lowercase
-                if (titleA < titleB) {
-                    return -1;
-                }
-                if (titleA > titleB) {
-                    return 1;
-                }
-            }
-
-            // names must be equal
-            return 0;
+            var titleA = a.parent_title || '';
+            var titleB = b.parent_title || '';
+            return titleA.localeCompare(titleB);
         });
 
     }
@@ -1880,7 +1870,7 @@ $(document).tiki('copy')(
     $._object_selector_add_item = function (type, $select, $results, parent_title, item, title, status_icon, selected) {
         var checkname = $select.closest('.object-selector, .object-selector-multi')
             .find('.primary').attr('id') + '_sel';
-        var suffix = $results.find('.form-check').lenght || 0;
+        var suffix = $results.find('.form-check').length || 0;
 
         $('<option>')
             .val(item)


=====================================
lib/search/searchlib-unified.php
=====================================
@@ -1365,6 +1365,12 @@ class UnifiedSearchLib
             throw new Exception('Invalid filter type provided in query. It must be an array.');
         }
 
+        // Support expert sort configuration via meta-parameter
+        if (isset($filter['_sort']) && $filter['_sort']) {
+            $query->setOrder($filter['_sort']);
+            unset($filter['_sort']);
+        }
+
         if (isset($filter['type']) && $filter['type']) {
             $query->filterType($filter['type']);
         }
@@ -1480,11 +1486,13 @@ class UnifiedSearchLib
         unset($filter['autocomplete']);
         unset($filter['groups']);
 
+
         foreach ($filter as $key => $value) {
             if ($value) {
                 $query->filterContent($value, $key);
             }
         }
+
         return $query;
     }
 


=====================================
lib/smarty_tiki/FunctionHandler/ObjectSelector.php
=====================================
@@ -55,20 +55,27 @@ class ObjectSelector extends Base
             'wildcard' => $prefs['tiki_object_selector_wildcardsearch'] ?? "",
         ];
 
-        // Handle reserved parameters
-        foreach (array_keys($arguments) as $var) {
-            if (isset($params["_$var"])) {
-                $arguments[$var] = $params["_$var"];
+        $filters = [];
+        foreach ($params as $key => $value) {
+            $argName = str_starts_with($key, '_') ? substr($key, 1) : null;
+            if ($argName && array_key_exists($argName, $arguments)) {
+                if ($argName === 'filter' && is_array($value)) {
+                    $arguments['filter'] = array_merge($arguments['filter'], $value);
+                } else {
+                    $arguments[$argName] = $value;
+                }
+            } else {
+                $filters[$key] = $value;
             }
-            unset($params["_$var"]);
         }
 
         if ($prefs['feature_search'] !== 'y') {
             if ($arguments['simplename'] && isset($arguments['simplevalue'])) {
-                if ($params['type'] === 'trackerfield' && $arguments['separator'] === ',') {
+                if (isset($filters['type']) && $filters['type'] === 'trackerfield' && $arguments['separator'] === ',') {
                     $help = tra('Comma-separated list of field IDs');
                 } else {
-                    $help = tr('%0 list separated with "%1"', ucfirst($params['type']), $arguments['separator']);
+                    $type = $filters['type'] ?? tr('Object');
+                    $help = tr('%0 list separated with "%1"', ucfirst($type), $arguments['separator']);
                 }
                 return "<input type='text' name='{$arguments['simplename']}' value='{$arguments['simplevalue']}' size='50'>" .
                     "<div class='form-text'>" . $help . "</div>";
@@ -84,11 +91,7 @@ class ObjectSelector extends Base
             $arguments['simpleid'] = 'object_selector_' . ++$uniqid;
         }
 
-        if ($arguments['filter']) {
-            $arguments['filter'] = array_merge($arguments['filter'], $params);
-        } else {
-            $arguments['filter'] = $params;
-        }
+        $arguments['filter'] = array_merge($arguments['filter'], $filters);
 
         if ($arguments['simplevalue'] && ! $arguments['value'] && isset($arguments['filter']['type'])) {
             $arguments['value'] = "{$arguments['filter']['type']}:{$arguments['simplevalue']}";



View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/021a97802d0380211274f8f23bfb98f38f7db2bd

-- 
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/021a97802d0380211274f8f23bfb98f38f7db2bd
You're receiving this email because of your account on gitlab.com. Manage all notifications: https://gitlab.com/-/profile/notifications | Help: https://gitlab.com/help

_______________________________________________
TikiWiki-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.