Перейти к содержимому
Русский язык для Invision Community 5

Условие от количества сообщений за неделю

Подскажите как создать универсальное условие, которое бы отображало контент, в зависимости от количества сообщений пользователя за неделю.

Вроде такого:

<if test="$member['post_week'] > 10">

Контент отображается, если у данного пользователя есть 10 сообщений на форуме за неделю.

</if>

Рекомендованные сообщения

  • Автор
47 минут назад, Атаман сказал:

Как мешок картошки.)))

Визуально и по времени выполнения скрипта я не заметил увеличения. Только 1 запрос лишний прибавился.

  • 11 месяцев спустя...
  • Автор

Ставлю этот код для приложения IP.Shoutbox, что то не идёт (

<php>$justSayNo   = array();
foreach( $this->registry->getClass('class_forums')->forum_by_id as $id => $data )
{
	if ( ! $data['inc_postcount'] )
	{
		$justSayNo[] = $id;
	}
}	
$fiddyCent	= $this->registry->getClass('class_forums')->fetchSearchableForumIds( $this->memberData['member_id'], $justSayNo );$result = $this->DB->buildAndFetch( array( 
						'select'	=> 'COUNT(*) as post_week',
						'from'		=> array( 'posts' => 'p' ),
						'where'		=> "p.author_id={$this->memberData['member_id']} AND p.post_date > " . (time() - 604800) . " AND t.forum_id IN(" . implode( ',', $fiddyCent ) . ')',
						'group'		=> "p.author_id",
						'add_join' => array(  array( 'from'	 => array( 'topics' => 't' ),
													 'where' => 't.tid=p.topic_id',
													 'type'	 => 'inner' ) )									
				)		);</php>

А этот идёт

<php>$result = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as post_week', 'from' => 'posts', 'where' => "author_id={$this->memberData['member_id']} AND post_date > " . (time() - 604800) ) );</php>

Однако этот код включает в себя все сообщения.

Изменено пользователем Trotor

На первый взгляд должен работать. 

Второй вариант все сообщения включать не может, так там стоит условие на даты создания.

  • Автор
09.03.2021 в 12:22, siv1987 сказал:

На первый взгляд должен работать. 

При вставке этого кода в шаблон, вёрстка рушится. 

Возможно потому что в шаблоне shoutbox есть такие переменные как {$data['shouts']} и {$data['editor']}?

К примеру в шаблоне profileModern переменных $data нет, поэтому код срабатывает корректно.

  • Автор

В самом коде переименовал $data на $data1 - и заработало...

Все верно, в коде переменная data перезаписывается в цикле foreach, нужно задать другое имя если в шаблоне эта переменная занята.

  • Автор
24 минуты назад, siv1987 сказал:

нужно задать другое имя если в шаблоне эта переменная занята.

Думал что что имя data это обязательно и нельзя изменять. Оказывается всё намного проще 🙂

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.