1
0
mirror of https://github.com/e107inc/e107.git synced 2025-01-17 20:58:30 +01:00

Disable tree format if model has filters

Parent-child relationship tables (trees) can only be constructed if
the entire table is loaded. When WHERE filters are applied to the
table, the tree cannot be made, which causes #3204.

When a filter is active, a tree representation is no longer
appropriate because the filter can filter out parents of a matched
row, which breaks the concept of a tree.

To resolve this and restore search functionality, this commit disables
the sort_parent of the tree model in order to activate the
e_tree_model::getRowsList() method and avoid the tree logic entirely.

Fixes: #3204
Supersedes: #3208
This commit is contained in:
Nick Liu 2018-06-21 23:09:41 -05:00
parent 0a3acb2f6d
commit 41f8e78489
No known key found for this signature in database
GPG Key ID: 1167C5F9C9897637

View File

@ -4314,6 +4314,11 @@ class e_admin_controller_ui extends e_admin_controller
// add more where details on the fly via $this->listQrySql['db_where'];
$qry .= (strripos($qry, 'where')==FALSE) ? " WHERE " : " AND "; // Allow 'where' in custom listqry
$qry .= implode(" AND ", $searchQry);
// Disable tree (use flat list instead) when filters are applied
// Implemented out of necessity under https://github.com/e107inc/e107/issues/3204
// Horrible hack, but only needs this one line of additional code
$this->getTreeModel()->setParam('sort_parent', null);
}
// GROUP BY if needed