<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* MaxSite CMS
* (c) https://max-3000.com/
*
*/
// Функции которые выполняют роль подсчета количества прочтения записи
// первая функция, проверяет из куки значение массива с текущим url
// если номера не совпадают, то функция устанавливает значение прочтений больше на 1
// если совпадают, значит запись уже была прочитана с этого компа
// если нужно убрать уникальность и учитывать все хиты, то $unique = false
// начения хранятся в виде url1|url2|url2|url3
// url - второй сегмент
// время жизни 30 дней: 60 секунд * 60 минут * 24 часа * 30 дней = 2592000
function mso_page_view_count_first($unique = false, $name_cookies = 'maxsite-cms', $expire = 2592000)
{
// global $_COOKIE, $_SESSION;
if (!mso_get_option('page_view_enable', 'templates', '1') and !$unique) return true; //если нет такой опции или не пришло в функцию, то выходим
if (!$unique) $unique = mso_get_option('page_view_enable', 'templates', '1');
$slug = mso_segment(2);
$all_slug = [];
if ($unique == 0) {
return false; // не вести подсчет
} elseif ($unique == 1) {
//с помощью куки
if (isset($_COOKIE[$name_cookies])) $all_slug = explode('|', $_COOKIE[$name_cookies]); // значения текущего кука
if (in_array($slug, $all_slug)) return false; // уже есть текущий урл - не увеличиваем счетчик
} elseif ($unique == 2) {
//с помощью сессии
session_start();
if (isset($_SESSION[$name_cookies]))
$all_slug = explode('|', $_SESSION[$name_cookies]); // значения текущей сессии
if (in_array($slug, $all_slug)) return false; // уже есть текущий урл - не увеличиваем счетчик
}
// нужно увеличить счетчик
$all_slug[] = $slug; // добавляем текущий slug
$all_slug = array_unique($all_slug); // удалим дубли на всякий пожарный
$all_slug = implode('|', $all_slug); // соединяем обратно в строку
$expire = time() + $expire;
if ($unique == 1) @setcookie($name_cookies, $all_slug, $expire); // записали в кук
elseif ($unique == 2) $_SESSION[$name_cookies] = $all_slug; // записали в сессию
// получим текущее значение page_view_count
// и увеличиваем значение на 1
$CI = &get_instance();
$CI->db->select('page_view_count');
if (is_numeric($slug)) // ссылка вида http://site.com/page/1
$CI->db->where('page_id', $slug);
else
$CI->db->where('page_slug', $slug);
$CI->db->limit(1);
$query = $CI->db->get('page');
if ($query->num_rows() > 0) {
$pages = $query->row_array();
$page_view_count = $pages['page_view_count'] + 1;
$CI->db->where('page_slug', $slug);
$CI->db->update('page', array('page_view_count' => $page_view_count));
$CI->db->cache_delete('page', $slug);
return true;
}
}
// вывод количества просмотров текущей записи
function mso_page_view_count($page_view_count = 0, $do = '<span>Прочтений:</span> ', $posle = '', $echo = true)
{
if (!$page_view_count) return '';
// если в опции включено не вести подсчет, то блок не выводим
if (mso_get_option('page_view_enable', 'templates', 0) == 0) return '';
if ($echo)
echo tf($do) . $page_view_count . $posle;
else
return tf($do) . $page_view_count . $posle;
}
# end of file