Всем привет ) Ребят помогите пожалуйста в написании кода сортировки пользователей для DLE 10.3.
Сейчас код выполняет сортировку по:
{count} - Выбор количества отображаемых пользователей
{order} - 2 select не совсем понимаю, но там: Логин, Группа, Регистрация, Вход, Новостей, Комментариев.
{sort} - 3 select : по Возрастанию и по Убыванию
{usergroups}- 4 select : по Группам
Демо:
ТУТ
Нужна сортировка по:
- Выбор количества отображаемых пользователей на текущей странице (уже есть),
- Дополнительному полю профиля пользователя "spec",
- Городу пользователя,
- Дополнительному полю профиля пользователя "price",
- Выбору 2 групп: С ID 3 Журналисты или ID 4 Посетители.
Вот исполняемый PHP код:
<?php
if( ! defined( 'DATALIFEENGINE' ) ) {
die( "Hacking attempt!" );
}
include_once ENGINE_DIR . '/classes/parse.class.php';
$parse = new ParseFilter( );
$parse->safe_mode = true;
$tpl->load_template( 'users_search.tpl' );
$g = 0;
$_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']);
while ( $g++ <= 4 ){
$u = $g * 20;
if($_GET['count'] != $u)
$sel_num .= '<option value="'.$u.'">'.$u.'</option>';
else
$sel_num .= '<option value="'.$u.'" selected>'.$u.'</option>';
}
$tpl->set('{count}', $sel_num);
$orders = array('name' => 'Логин', 'user_group' => 'Группа', 'reg_date' => 'Регистрация', 'lastdate' => 'Вход', 'news_num' => 'Новостей', 'comm_num' => 'Комментариев');
foreach ( $orders as $key => $value){
if($_GET['order'] == $key)
$order .= '<option value="'.$key.'" selected>'.$value.'</option>';
else
$order .= '<option value="'.$key.'">'.$value.'</option>';
}
$tpl->set('{order}', $order);
$sorts = array('ASC' => 'По возрастанию', 'DESC' => 'По убыванию');
foreach ( $sorts as $key => $value){
if($_GET['sort'] == $key)
$sort .= '<option value="'.$key.'" selected>'.$value.'</option>';
else
$sort .= '<option value="'.$key.'">'.$value.'</option>';
}
$tpl->set('{sort}', $sort);
$usergroups = $db->query( "SELECT * FROM " . USERPREFIX . "_usergroups");
while ( $row = $db->get_row( $usergroups ) ) {
if($_GET['usergroups'] == $row['id'])
$group_s .= '<option value="'.$row['id'].'" selected>'.$row['group_name'].'</option>';
else
$group_s .= '<option value="'.$row['id'].'">'.$row['group_name'].'</option>';
}
$tpl->set('{usergroups}', $group_s);
if ($_GET['count'] != ""){
$searchcount = intval($_GET['count']);
$postfix .= "&count=$searchcount";
}else {
$searchcount = 10;
}
if($_GET['order'] != ""){
$order_by = $_GET['order'];
$postfix .= "&order=".$_GET['order'];
}else
$order_by = "user_group";
if ($_GET['sort'] != ""){
$sort_by = $_GET['sort'];
$postfix .= "&sort=".$_GET['sort'];
}else {
$sort_by = "ASC";
}
if ($_GET['usergroups'] != "" or $_GET['login'] != "") $where_w = "WHERE ";
if ($_GET['usergroups'] != ""){
$where_w .= "user_group=".$_GET['usergroups'];
$postfix .= "&usergroups=".$_GET['usergroups'];
}
if ($_GET['login'] != ""){
if ($_GET['usergroups'] != "") $where_w .= " AND ";
$where_w .= "name like '%".$_GET['login']."%'";
$postfix .= "&login=".$_GET['login'];
$login_val = $_GET['login'];
}
$tpl->set('{login}', $login_val);
$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_users $where_w";
$row = $db->super_query($sql_count);
$count_all = $row['count'];
function pluralForm($count_all, $numb1, $numb2, $numb3)
{
$count_all = abs($count_all) % 100;
$n1 = $count_all % 10;
if ($count_all > 10 && $count_all < 20) return $numb3;
if ($n1 > 1 && $n1 < 5) return $numb2;
if ($n1 == 1) return $numb1;
return $numb3;
}
$tpl->set('{numbers}', pluralForm($count_all, 'Найден', 'Найдено', 'Найдено').' '.$count_all.' '.pluralForm($count_all, 'пользователь', 'пользвателя', 'пользователей'));
$tpl->compile('content');
?>