Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Trotor

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

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

Такой ещё маленький вопросик - а как в коде указать что бы учитывались для подсчёта только сообщения где счётчик сообщений включён?

Поделиться сообщением


Ссылка на сообщение

В Форумах есть статистика лидеров за 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, чтобы тоже добавить

  • Like 1

Поделиться сообщением


Ссылка на сообщение
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'];
			}

 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
4 часа назад, newbie сказал:

заменить на

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

Поделиться сообщением


Ссылка на сообщение
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>

 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
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 сказал:

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

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

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...