From e569c736395279f67f2c140a9a55d65ee7d20429 Mon Sep 17 00:00:00 2001 From: edward Date: Thu, 31 Mar 2016 15:51:03 +0800 Subject: [PATCH] RooGetTrait.php --- RooGetTrait.php | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/RooGetTrait.php b/RooGetTrait.php index 8aa6536e..e47155c6 100644 --- a/RooGetTrait.php +++ b/RooGetTrait.php @@ -464,4 +464,39 @@ trait Pman_Core_RooGetTrait { } + + function multiSort($x) + { + $ms = json_decode($_REQUEST['_multisort']); + if (!isset($ms->order) || !is_array($ms->order)) { + return; + } + $sort_str = array(); + + $cols = $x->table(); + + foreach($ms->order as $col) { + if (!isset($ms->sort->{$col})) { + continue; // no direction.. + } + $ms->sort->{$col} = $ms->sort->{$col} == 'ASC' ? 'ASC' : 'DESC'; + + if (strlen($col) && isset($cols[$col]) ) { + $sort_str[] = $x->tableName() .'.'.$col . ' ' . $ms->sort->{$col}; + continue; + } + + if (in_array($col, array_keys($this->cols))) { + $sort_str[] = $col. ' ' . $ms->sort->{$col}; + continue; + } + if (isset($x->_extra_cols) && in_array($col, $x->_extra_cols)) { + $sort_str[] = $col. ' ' . $ms->sort->{$col}; + } + } + + if ($sort_str) { + $x->orderBy(implode(', ', $sort_str )); + } + } } -- 2.39.2