Вход Регистрация
Файл: Arhmobi_esdcms/forum/inc/functions.php
Строк: 45
<?php

/**
 * Возвращает массив с количеством [новых, если указано время] сообщений в каждой теме
 * @param array $themes_ids Массив идентификаторов тем
 * @param int $time_from Время, с которого считать сообщения
 * @param int $group Группа пользователей
 * @return array
 * @throws Exception
 * @throws ExceptionPdoNotExists
 */
function forum_getMessagesCounters($themes_ids = array(), $time_from 0$group 0)
{
    
$counters = array();
    
$sql_prep db::me()->prepare('
SELECT COUNT(*) AS `count`, `id_theme` FROM forum_messages WHERE group_show < :g AND id_theme IN (' 
.
        
join(','array_map('intval'$themes_ids)) . ') AND `time` > :t GROUP BY id_theme');
    
$sql_prep->execute(array(':t' => $time_from':g' => $group));

    while (
$res $sql_prep->fetch()) {
        
$counters[$res['id_theme']] = $res['count'];
    }

    return 
$counters;
}

/**
 * Возвращает массив с количеством просмотров каждой теме
 * @param array $themes_ids массив идентификаторов тем
 * @return array
 * @throws Exception
 * @throws ExceptionPdoNotExists
 */
function forum_getViewsCounters($themes_ids = array())
{
    
$counters = array();

    
$sql_prep db::me()->prepare('
SELECT COUNT(*) AS `count`, `id_theme` FROM forum_views WHERE id_theme IN (' 
.
        
join(','array_map('intval'$themes_ids)) . ') GROUP BY id_theme');
    
$sql_prep->execute();

    while (
$res $sql_prep->fetch()) {
        
$counters[$res['id_theme']] = $res['count'];
    }

    foreach (
$themes_ids as $id) {
        if (!
array_key_exists($id$counters)) {
            
$counters[$id] = 0;
        }
    }

    return 
$counters;
}

/**
 * Возвращает массив последних просмотров тем для указанного пользователя
 * @param array $themes_ids
 * @param int $id_user идентификатор пользователя
 * @return array
 * @throws Exception
 * @throws ExceptionPdoNotExists
 */
function forum_getLastViewsTimes($themes_ids = array(), $id_user 0)
{
    
$counters = array();

    
$sql_prep db::me()->prepare('
SELECT MAX(`time`) AS `last_view_time`, `id_theme` FROM forum_views WHERE id_theme IN (' 
.
        
join(','array_map('intval'$themes_ids)) . ') AND `id_user` = :uid GROUP BY id_theme');
    
$sql_prep->execute(array(':uid' => $id_user));

    while (
$res $sql_prep->fetch()) {
        
$counters[$res['id_theme']] = $res['last_view_time'];
    }

    return 
$counters;
}
Онлайн: 2
Реклама