Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

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

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

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

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

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

</if>

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

В Форумах есть статистика лидеров за 24 часа.

Посмотрите, там похожий код.

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

В Форумах есть статистика лидеров за 24 часа.

Точно, что то не догадался про это.

Судя по всему вот эта строка:

'where'    => "p.post_date > {$time_low} AND t.forum_id IN(" . implode( ',', $fiddyCent ) . ')',

У меня есть для топиков:

'where'		=> "post_date > " . (time() - 604800) . " AND author_id IN(" . implode( ',', $ids ) . ")",

Пробовал преобразовать часть кода, не работает.

7 минут назад, Haktar сказал:

AND t.forum_id

Говорит о том, что join'ится таблица тем.

 

7 минут назад, Haktar сказал:

implode( ',', $fiddyCent )

Смотрите выше, где формируется массив $fiddyCent, чтобы тоже добавить

  • Автор
1 час назад, newbie сказал:

Смотрите выше, где формируется массив $fiddyCent, чтобы тоже добавить

Верно, стоит выше:

		$fiddyCent	= $this->registry->getClass('class_forums')->fetchSearchableForumIds( $this->memberData['member_id'], $justSayNo );
		$fiddyCent	= ( count( $fiddyCent ) ) ? $fiddyCent : array( 0 => 0 );

stats.php

Что мне нужно поменять?

 

			$this->DB->build( array( 
									'select'	=> 'author_id, COUNT(*) as post_week',
									'from'		=> 'posts',
									'where'		=> "post_date > " . (time() - 604800) . " AND author_id IN(" . implode( ',', $ids ) . ")",
									'group'		=> "author_id",
							)		);
			
			$o = $this->DB->execute();
			
			while( $r = $this->DB->fetch($o) )
			{
				$weekStats[$r['author_id']] = $r['post_week'];
			}

заменить на

			$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 );
			$fiddyCent	= ( count( $fiddyCent ) ) ? $fiddyCent : array( 0 => 0 );
			
			$this->DB->build( array( 
									'select'	=> 'p.author_id, COUNT(*) as post_week',
									'from'		=> array( 'posts' => 'p' ),
									'where'		=> "p.post_date > " . (time() - 604800) . " AND p.author_id IN(" . implode( ',', $ids ) . ")" . " 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' ) )									
							)		);
			
			$o = $this->DB->execute();
			
			while( $r = $this->DB->fetch($o) )
			{
				$weekStats[$r['author_id']] = $r['post_week'];
			}

 

  • Автор
4 часа назад, newbie сказал:

заменить на

Большое спасибо, то что надо!

  • 3 недели спустя...
  • Автор
18.02.2020 в 08:27, newbie сказал:

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

Кстати, не поможете видоизменить этот код, что бы отображались сообщения только в тех разделах где счётчик сообщений включен?

Добавьте код, связанный с форумами, и измените $where

  • Автор
6 часов назад, newbie сказал:

Добавьте код, связанный с форумами, и измените $where

Посмотрел я код связанный с форумами, и не понял как его подогнать. Помогите 😞

<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( $member['member_id'], $justSayNo );
$fiddyCent	= ( count( $fiddyCent ) ) ? $fiddyCent : array( 0 => 0 );

$result = $this->DB->buildAndFetch( array( 
						'select'	=> 'COUNT(*) as post_week',
						'from'		=> array( 'posts' => 'p' ),
						'where'		=> "p.author_id={$member['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>

 

  • Автор
7 часов назад, newbie сказал:

<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 );
$fiddyCent	= ( count( $fiddyCent ) ) ? $fiddyCent : array( 0 => 0 );

$result = $this->DB->buildAndFetch( array( 
						'select'	=> 'COUNT(*) as post_week',
						'from'		=> array( 'posts' => 'p' ),
						'where'		=> "p.author_id={$member['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></php>, представленные в коде, используются в шаблонах.

  • Автор
11 часов назад, newbie сказал:

Теги <php></php>, представленные в коде, используются в шаблонах.

Да, что то я ступил. Просто увидел что код довольно большой, поэтому подумал что это в файл.

Кстати, код работает - большое спасибо!

  • Автор
1 час назад, Haktar сказал:

Кстати, код работает - большое спасибо!

Скажите, а этот код не очень тяжёлый для форума?

1 час назад, Haktar сказал:

Скажите, а этот код не очень тяжёлый для форума?

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

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

Аккаунт

Навигация

Поиск

Поиск

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

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