-4.70
Рейтинг
8.68
Сила

Константин

Как добавить фильтр (рейтинг больше 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;
	}

Как работать с контактами по отдельности?

В профиле, соц сети отдаются
{assign var="aUserFieldContactValues" value=$oUser->getUserFieldValues(true,array('social'))}
{if $aUserFieldContactValues}
{foreach from=$aUserFieldContactValues item=oField}
{$oField->getValue(false,false)} 
{/foreach}
{/if}


В результате выводится массив.

Как можно отдельно получить (вывести), скажем facebook или вконтакте?

Помогите пронумеровать строки в таблице [решено]

Есть код, который выводит рейтинг пользователей.
<table width="95%">
    <tr>
        <th>Номер</th>
        <th>Ava/Имя</th>
        <th>Место работы</th>
        <th>Основные компетенции</th>
        <th>Доп. информация</th>
        <th>Возраст</th>
        <th>Контакты</th>
        <th>Рейтинг</th>
    </tr>
    {foreach from=$aUsertop item=oUser name="cmt"}
    <tr>
        <td></td>
        <td><img src="{$oUser->getProfileAvatarPath(100)}" alt="{$oUser->getLogin()}" style="width:80px" />
<a href="{$oUser->getUserWebPath()}" class="user">{$oUser->getLogin()}</a></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td><strong>{$oUser->getRating()}</strong></td>
    </tr>
    {/foreach}
</table>


Нужно автоматически проставить порядковые номера от 1 до x в первый столбец.
Через for умею делать, но его в smarty вроде как нет.

Всем спасибо!

Как добаить теги к топику через phpmyadmin ?

На сайте оч. давно убрал возможность добавить теги к топику.
В таблице _topic в поле topic_tags

Добавил необходимые теги

В таблице _topic_tag добавил каждый тег отдельно


Но этого как я понимаю мало. Плагин «Похожие топики» ничего не выводит. Так бывает когда теги к посту не указаны.

Может я что то упустил?