6b7e0fc692b9e7729b876978bd16b7e0416da9ba
[moodle.git] / analytics / classes / local / time_splitting / quarters_accum.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * Range processor splitting the course in quarters and accumulating data.
19  *
20  * @package   core_analytics
21  * @copyright 2016 David Monllao {@link http://www.davidmonllao.com}
22  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 namespace core_analytics\local\time_splitting;
27 defined('MOODLE_INTERNAL') || die();
29 /**
30  * Range processor splitting the course in quarters and accumulating data.
31  *
32  * @package   core_analytics
33  * @copyright 2016 David Monllao {@link http://www.davidmonllao.com}
34  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
35  */
36 class quarters_accum extends base {
38     /**
39      * get_name
40      *
41      * @return string
42      */
43     public function get_name() {
44         return get_string('timesplitting:quartersaccum', 'analytics');
45     }
47     /**
48      * define_ranges
49      *
50      * @return array
51      */
52     protected function define_ranges() {
53         $duration = floor(($this->analysable->get_end() - $this->analysable->get_start()) / 4);
54         return [
55             [
56                 'start' => $this->analysable->get_start(),
57                 'end' => $this->analysable->get_start() + $duration,
58                 'time' => $this->analysable->get_start() + $duration
59             ], [
60                 'start' => $this->analysable->get_start(),
61                 'end' => $this->analysable->get_start() + ($duration * 2),
62                 'time' => $this->analysable->get_start() + ($duration * 2)
63             ], [
64                 'start' => $this->analysable->get_start(),
65                 'end' => $this->analysable->get_start() + ($duration * 3),
66                 'time' => $this->analysable->get_start() + ($duration * 3)
67             ], [
68                 'start' => $this->analysable->get_start(),
69                 'end' => $this->analysable->get_end(),
70                 'time' => $this->analysable->get_end()
71             ]
72         ];
73     }
74 }