. /** * Moodle site analysable. * * @package core_analytics * @copyright 2016 David Monllao {@link http://www.davidmonllao.com} * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace core_analytics; defined('MOODLE_INTERNAL') || die(); /** * Moodle site analysable. * * @package core_analytics * @copyright 2016 David Monllao {@link http://www.davidmonllao.com} * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class site implements \core_analytics\analysable { /** * @var int */ protected $start; /** * @var int */ protected $end; /** * Analysable id * * @return int */ public function get_id() { return SYSCONTEXTID; } /** * Analysable context. * * @return \context */ public function get_context() { return \context_system::instance(); } /** * Analysable start timestamp. * * @return int */ public function get_start() { if (!empty($this->start)) { return $this->start; } $logstore = \core_analytics\manager::get_analytics_logstore(); // Basically a SELECT MIN(timecreated) FROM ... $events = $logstore->get_events_select("", array(), "timecreated ASC", 0, 1); if ($events) { // There should be just 1 event. $event = reset($events); $this->start = $event->timecreated; } else { $this->start = 0; } return $this->start; } /** * Analysable end timestamp. * * @return int */ public function get_end() { if (!empty($this->end)) { return $this->end; } $logstore = \core_analytics\manager::get_analytics_logstore(); // Basically a SELECT MAX(timecreated) FROM ... $events = $logstore->get_events_select("", array(), "timecreated DESC", 0, 1); if ($events) { // There should be just 1 event. $event = reset($events); $this->end = $event->timecreated; } else { $this->end = time(); } return $this->end; } }