Опубликовано: 18 февраля 20205 г Подскажите как создать универсальное условие, которое бы отображало контент, в зависимости от количества сообщений пользователя за неделю. Вроде такого: <if test="$member['post_week'] > 10"> Контент отображается, если у данного пользователя есть 10 сообщений на форуме за неделю. </if>
Опубликовано: 2 марта 20205 г В Форумах есть статистика лидеров за 24 часа. Посмотрите, там похожий код.
Опубликовано: 2 марта 20205 г Автор 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 ) . ")", Пробовал преобразовать часть кода, не работает.
Опубликовано: 2 марта 20205 г 7 минут назад, Haktar сказал: AND t.forum_id Говорит о том, что join'ится таблица тем. 7 минут назад, Haktar сказал: implode( ',', $fiddyCent ) Смотрите выше, где формируется массив $fiddyCent, чтобы тоже добавить
Опубликовано: 2 марта 20205 г Автор 1 час назад, newbie сказал: Смотрите выше, где формируется массив $fiddyCent, чтобы тоже добавить Верно, стоит выше: $fiddyCent = $this->registry->getClass('class_forums')->fetchSearchableForumIds( $this->memberData['member_id'], $justSayNo ); $fiddyCent = ( count( $fiddyCent ) ) ? $fiddyCent : array( 0 => 0 ); stats.php Что мне нужно поменять?
Опубликовано: 3 марта 20205 г $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']; }
Опубликовано: 3 марта 20205 г Автор 4 часа назад, newbie сказал: заменить на Большое спасибо, то что надо!
Опубликовано: 24 марта 20205 г Автор 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> Кстати, не поможете видоизменить этот код, что бы отображались сообщения только в тех разделах где счётчик сообщений включен?
Опубликовано: 24 марта 20205 г Автор 6 часов назад, newbie сказал: Добавьте код, связанный с форумами, и измените $where Посмотрел я код связанный с форумами, и не понял как его подогнать. Помогите 😞
Опубликовано: 24 марта 20205 г <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>
Опубликовано: 24 марта 20205 г Автор 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> Этот код как я понял для файла, не для шаблона? Он универсальный, его можно использовать для любого файла?
Опубликовано: 25 марта 20205 г Автор 11 часов назад, newbie сказал: Теги <php></php>, представленные в коде, используются в шаблонах. Да, что то я ступил. Просто увидел что код довольно большой, поэтому подумал что это в файл. Кстати, код работает - большое спасибо!
Опубликовано: 25 марта 20205 г Автор 1 час назад, Haktar сказал: Кстати, код работает - большое спасибо! Скажите, а этот код не очень тяжёлый для форума?
Опубликовано: 25 марта 20205 г 1 час назад, Haktar сказал: Скажите, а этот код не очень тяжёлый для форума? Как мешок картошки.)))
Подскажите как создать универсальное условие, которое бы отображало контент, в зависимости от количества сообщений пользователя за неделю.
Вроде такого:
<if test="$member['post_week'] > 10">
Контент отображается, если у данного пользователя есть 10 сообщений на форуме за неделю.
</if>