Хочу выводить юзеров у кого 'user_rating' > 0
Код вывода списка пользователей описан функцией:
class PluginUsertop_BlockUsertop extends Block {
public function Exec() {
/**
* По какому полю сортировать
*/
$sOrder='user_rating';
if (getRequest('order')) {
$sOrder=(string)getRequest('order');
}
/**
* В каком направлении сортировать
*/
$sOrderWay='desc';
if (getRequest('order_way')) {
$sOrderWay=(string)getRequest('order_way');
}
$aFilter=array(
'activate' => 1,
'user_rating' => 1 (Здесь нужно указать как-то условие: рейтинг больше 0)
);
/**
* Получаем список юзеров
*/
$aResult=$this->User_GetUsersByFilter($aFilter,array($sOrder=>$sOrderWay),1,Config::Get('plugin.usertop.user_count'));
$aUsertop=$aResult['collection'];
/**
* Загружаем переменные в шаблон
*/
$this->Viewer_Assign('aUsertop',$aUsertop);
}
}
В мапере добавил:
public function GetUsersByFilter($aFilter,$aOrder,&$iCount,$iCurrPage,$iPerPage) {
$aOrderAllow=array('user_id','user_login','user_date_register','user_rating','user_skill','user_profile_name, user_rating');
$sOrder='';
foreach ($aOrder as $key=>$value) {
if (!in_array($key,$aOrderAllow)) {
unset($aOrder[$key]);
} elseif (in_array($value,array('asc','desc'))) {
$sOrder.=" {$key} {$value},";
}
}
$sOrder=trim($sOrder,',');
if ($sOrder=='') {
$sOrder=' user_id desc ';
}
$sql = "SELECT
user_id
FROM
".Config::Get('db.table.user')."
WHERE
1 = 1
{ AND user_id = ?d }
{ AND user_mail = ? }
{ AND user_password = ? }
{ AND user_ip_register = ? }
{ AND user_activate = ?d }
{ AND user_activate_key = ? }
{ AND user_profile_sex = ? }
{ AND user_login ? }
{ AND user_profile_name ? }
{ AND user_rating = ?d }
ORDER by {$sOrder}
LIMIT ?d, ?d, ?d;
";
$aResult=array();
if ($aRows=$this->oDb->selectPage($iCount,$sql,
isset($aFilter['id']) ? $aFilter['id'] : DBSIMPLE_SKIP,
isset($aFilter['mail']) ? $aFilter['mail'] : DBSIMPLE_SKIP,
isset($aFilter['password']) ? $aFilter['password'] : DBSIMPLE_SKIP,
isset($aFilter['ip_register']) ? $aFilter['ip_register'] : DBSIMPLE_SKIP,
isset($aFilter['activate']) ? $aFilter['activate'] : DBSIMPLE_SKIP,
isset($aFilter['activate_key']) ? $aFilter['activate_key'] : DBSIMPLE_SKIP,
isset($aFilter['profile_sex']) ? $aFilter['profile_sex'] : DBSIMPLE_SKIP,
isset($aFilter['login']) ? $aFilter['login'] : DBSIMPLE_SKIP,
isset($aFilter['profile_name']) ? $aFilter['profile_name'] : DBSIMPLE_SKIP,
isset($aFilter['user_rating']) ? $aFilter['user_rating'] : DBSIMPLE_SKIP,
($iCurrPage-1)*$iPerPage, $iPerPage
)) {
foreach ($aRows as $aRow) {
$aResult[]=$aRow['user_id'];
}
}
return $aResult;
}