[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