1: <?php defined('_JOOS_CORE') or exit();
2:
3: /**
4: * Библиотека работы со счетчиками хранимыми в базе данных
5: *
6: * @version 1.0
7: * @package Core\Libraries
8: * @subpackage Hit
9: * @category Libraries
10: * @author Joostina Team <info@joostina.ru>
11: * @copyright (C) 2007-2012 Joostina Team
12: * @license MIT License http://www.opensource.org/licenses/mit-license.php
13: * Информация об авторах и лицензиях стороннего кода в составе Joostina CMS: docs/copyrights
14: *
15: * */
16: class joosHit
17: {
18: /**
19: * Добавление / увеличение счетчика хитов
20: *
21: * @param string $option название компонента
22: * @param integer $id - идентификатор объекта
23: * @param string $task - подзадача
24: *
25: * @return boolean результат увеличения счетчика
26: */
27: public static function add($option, $id, $task = '')
28: {
29: $sql = sprintf("INSERT INTO `#__hits` (`id`, `obj_id`, `obj_option`, `obj_task`, `hit`) VALUES (NULL, %s, '%s', '%s', 1)
30: ON DUPLICATE KEY UPDATE hit=hit+1;", (int) $id, $option, $task);
31:
32: return joosDatabase::instance()->set_query($sql)->query();
33: }
34:
35: /**
36: * Добавление / увеличение счетчика хитов по объекту
37: *
38: * @param stdClass $obj объект который, обращения к которому необходимо подсчитать
39: * @param string $task название задачи выполняемой над объектов
40: *
41: * @return bool результат добавления / увеличения счетчика
42: */
43: public static function add_obj(stdClass $obj, $task = '')
44: {
45: $class_name = get_class($obj);
46: $id = crc32($class_name);
47: $option = $class_name;
48:
49: $sql = sprintf("INSERT INTO `#__hits` (`id`, `obj_id`, `obj_option`, `obj_task`, `hit`) VALUES (NULL, %u, '%s', '%s', 1)
50: ON DUPLICATE KEY UPDATE hit=hit+1;", (int) $id, $option, $task);
51:
52: return joosDatabase::instance()->set_query($sql)->query();
53: }
54:
55: }
56: