Как добавить фильтр (рейтинг больше 0)?
Хочу выводить юзеров у кого '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; }