From 5bbdc42039b26469f221ca0ad4cbe08ec6b9c715 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Monlla=C3=B3?= Date: Mon, 25 Mar 2019 15:04:12 +0100 Subject: [PATCH] MDL-65177 analytics: New time-splitting methods for upcoming events --- lang/en/moodle.php | 4 ++ .../time_splitting/upcoming_3_days.php | 53 +++++++++++++++++++ .../time_splitting/upcoming_fortnight.php | 53 +++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 lib/classes/analytics/time_splitting/upcoming_3_days.php create mode 100644 lib/classes/analytics/time_splitting/upcoming_fortnight.php diff --git a/lang/en/moodle.php b/lang/en/moodle.php index f531b32d335..82ee9068fd5 100644 --- a/lang/en/moodle.php +++ b/lang/en/moodle.php @@ -2021,6 +2021,10 @@ $string['timesplitting:quartersaccum'] = 'Quarters accumulative'; $string['timesplitting:quartersaccum_help'] = 'This time-splitting method divides the course into quarters (4 equal parts), with each prediction being based on the data of all previous quarters.'; $string['timesplitting:singlerange'] = 'Single range'; $string['timesplitting:singlerange_help'] = 'This time-splitting method considers the entire course as a single span.'; +$string['timesplitting:upcoming3days'] = 'Upcoming 3 days'; +$string['timesplitting:upcoming3days_help'] = 'This time-splitting method generates predictions every 3 days. The indicators calculations will be based on the upcoming 3 days.'; +$string['timesplitting:upcomingfortnight'] = 'Upcoming fortnight'; +$string['timesplitting:upcomingfortnight_help'] = 'This time-splitting method generates predictions every fortnight. The indicators calculations will be based on the upcoming fortnight.'; $string['timesplitting:upcomingweek'] = 'Upcoming week'; $string['timesplitting:upcomingweek_help'] = 'This time-splitting method generates predictions every week. The indicators calculations will be based on the upcoming week.'; $string['thanks'] = 'Thanks'; diff --git a/lib/classes/analytics/time_splitting/upcoming_3_days.php b/lib/classes/analytics/time_splitting/upcoming_3_days.php new file mode 100644 index 00000000000..bb86d056649 --- /dev/null +++ b/lib/classes/analytics/time_splitting/upcoming_3_days.php @@ -0,0 +1,53 @@ +. + +/** + * Time splitting method that generates insights every three days and calculates indicators using upcoming dates. + * + * @package core_analytics + * @copyright 2019 David Monllao {@link http://www.davidmonllao.com} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace core\analytics\time_splitting; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Time splitting method that generates insights every three days and calculates indicators using upcoming dates. + * + * @package core_analytics + * @copyright 2019 David Monllao {@link http://www.davidmonllao.com} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class upcoming_3_days extends \core_analytics\local\time_splitting\upcoming_periodic { + + /** + * The time splitting method name. + * @return \lang_string + */ + public static function get_name() : \lang_string { + return new \lang_string('timesplitting:upcoming3days'); + } + + /** + * Once every three days. + * @return \DateInterval + */ + public function periodicity() { + return new \DateInterval('P3D'); + } +} \ No newline at end of file diff --git a/lib/classes/analytics/time_splitting/upcoming_fortnight.php b/lib/classes/analytics/time_splitting/upcoming_fortnight.php new file mode 100644 index 00000000000..0b6aeb7bf92 --- /dev/null +++ b/lib/classes/analytics/time_splitting/upcoming_fortnight.php @@ -0,0 +1,53 @@ +. + +/** + * Time splitting method that generates insights every fortnight and calculates indicators using upcoming dates. + * + * @package core_analytics + * @copyright 2019 David Monllao {@link http://www.davidmonllao.com} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace core\analytics\time_splitting; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Time splitting method that generates insights every fortnight and calculates indicators using upcoming dates. + * + * @package core_analytics + * @copyright 2019 David Monllao {@link http://www.davidmonllao.com} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class upcoming_fortnight extends \core_analytics\local\time_splitting\upcoming_periodic { + + /** + * The time splitting method name. + * @return \lang_string + */ + public static function get_name() : \lang_string { + return new \lang_string('timesplitting:upcomingfortnight'); + } + + /** + * Every two weeks. + * @return \DateInterval + */ + public function periodicity() { + return new \DateInterval('P2W'); + } +} \ No newline at end of file