Как бы это деликатно пояснить, чтобы не было лишних вопросов.
Я могу описать сортировку, параметры ее определяемые клиентом и выходные параметры от них зависящие, естественно в рамках поставленной задачи - от интерфейса клиента до параметров запроса.
Чего я больше и никогда делать не буду, и о чем говорил, так это думать в рамках чей-то CMS, просто для меня это, как работать из под палки. Вы ездили на своем автомобиле в черта города и вне ее, разницу чувствовали? Я больше не хочу ездить по чужим правилам, останавливаться на светофорах не мной расставленных, и которые в моем понимании лишние, решать проблемы пробок не от меня зависящих. Я хочу свободы в движении.
Давно существует булева алгебра и логические устройства ее использующие, например дешифратор. Он ведь работает не по условиям, а как простейший цифровой автомат выполняющий логические операции - выходные шины его будут иметь состояния зависящие от состояния на входных шинах.
В рамках РНР роль такого дешифратора можно возложить на массив - ключи, это входные шины, а значения ключей выходные. Такому "аналогу дешифратора" сигналы на входных шинах:
$_GET['count'] = intval($_GET['count']);
$_GET['order'] =
addslashes($_GET['order']);
$_GET['sort'] =
addslashes($_GET['sort']);
$_GET['usergroups'] = intval($_GET['usergroups']);
$_GET['login'] =
addslashes($_GET['login']);
совсем не нужны, да и вредно вываливать клиенту структуру таблиц. Поступая таким образом, это усложнять себе же задачу, потому как в данном случае достаточно чисел, что удобнее и безопаснее, а следовательно сигналы на входе автомата, это:
$_GET = array_map('intval', $_GET)
Входные параметры равные нулю после этой операции будут считаться параметрами по умолчанию. Каждый из этих параметров и будет определять ключ массива, который описывает набор правил (параметров sql-запроса) выбранных пользователем. Например, если сортировать по дате, то параметр $_GET['sort'] это ключ хранящий поле таблицы, а $_GET['order'] направление сортировки (хотя это можно и не передавать). Но если запрашивать сортировку по числу записей и это число указывается пользователем, то ключ хранящий поле таблицы должен учитывать и значение выбранное пользователем, потому как в этом случае значением для ORDER BY будет уже выражение.
Результат выборки по параметрам выданный этим автоматом будет и отсортирован, и иметь только запрошенное.
Не думаю, что это так сложно сделать.