Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Haktar

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

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
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 ) . ")",

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

Share this post


Link to post
Share on other sites
7 минут назад, Haktar сказал:

AND t.forum_id

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

 

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

implode( ',', $fiddyCent )

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

  • Like 1

Share this post


Link to post
Share on other sites
1 час назад, newbie сказал:

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

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

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

stats.php

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

Share this post


Link to post
Share on other sites

 

			$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

Share this post


Link to post
Share on other sites
4 часа назад, newbie сказал:

заменить на

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

Share this post


Link to post
Share on other sites
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>

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
6 часов назад, newbie сказал:

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

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

Share this post


Link to post
Share on other sites
<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

Share this post


Link to post
Share on other sites
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>

 

Этот код как я понял для файла, не для шаблона? Он универсальный, его можно использовать для любого файла?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
11 часов назад, newbie сказал:

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

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

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

Share this post


Link to post
Share on other sites
1 час назад, Haktar сказал:

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...