From 8f1640172f829468ceb8f4d08e5d88babd658d62 Mon Sep 17 00:00:00 2001 From: Klaus-Uwe Mitterer Date: Fri, 3 Dec 2021 08:27:33 +0100 Subject: [PATCH] Check in --- classes/task/get_issues_task.php | 72 ++++++++++++++++++++++++++++++++ db/access.php | 17 ++++++++ db/install.xml | 23 ++++++++++ db/tasks.php | 38 +++++++++++++++++ lang/en/local_certlog.php | 8 ++++ version.php | 9 ++++ 6 files changed, 167 insertions(+) create mode 100644 classes/task/get_issues_task.php create mode 100644 db/access.php create mode 100644 db/install.xml create mode 100644 db/tasks.php create mode 100644 lang/en/local_certlog.php create mode 100644 version.php diff --git a/classes/task/get_issues_task.php b/classes/task/get_issues_task.php new file mode 100644 index 0000000..78984d9 --- /dev/null +++ b/classes/task/get_issues_task.php @@ -0,0 +1,72 @@ +. + +/** + * A scheduled task for storing issued certificates. + * + * @package local_certlog + * @copyright 2017 Mark Nelson , 2021 Klaus-Uwe Mitterer + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +namespace local_certlog\task; + +defined('MOODLE_INTERNAL') || die(); + +/** + * A scheduled task for storing issued certificates. + * + * @package local_certlog + * @copyright 2017 Mark Nelson , 2021 Klaus-Uwe Mitterer + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class get_issues_task extends \core\task\scheduled_task { + + /** + * Get a descriptive name for this task (shown to admins). + * + * @return string + */ + public function get_name() { + return get_string('taskgetissues', 'local_certlog'); + } + + /** + * Execute. + */ + public function execute() { + global $DB, $PAGE; + + foreach (array("customcert", "htmlcert") as $module) { + $issuetable = $module . '_issues'; + $certidfield = $module . 'id'; + $lb = "{"; + $rb = "}"; + $cur = $DB->get_field("certlog", "MAX(originid)", array("originname" => $module)) ?: 0; + + $sql = "SELECT i.id AS originid, i.timecreated AS timestamp, + m.course AS course, i.userid AS user, + \"$module\" AS originname + FROM $lb$issuetable$rb i + JOIN $lb$module$rb m + ON i.$certidfield = m.id + WHERE i.id > :id"; + + $newer = $DB->get_records_sql($sql, array('id' => $cur)); + + $DB->insert_records("certlog", $newer); + } + } +} diff --git a/db/access.php b/db/access.php new file mode 100644 index 0000000..cb567bd --- /dev/null +++ b/db/access.php @@ -0,0 +1,17 @@ + array( + 'riskbitmask' => RISK_PERSONAL, + 'captype' => 'read', + 'contextlevel' => CONTEXT_SYSTEM, + 'archetypes' => array( + 'editingteacher' => CAP_ALLOW, + 'manager' => CAP_ALLOW + ) + ) + +); diff --git a/db/install.xml b/db/install.xml new file mode 100644 index 0000000..22aa2dc --- /dev/null +++ b/db/install.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + +
+
+
diff --git a/db/tasks.php b/db/tasks.php new file mode 100644 index 0000000..d646982 --- /dev/null +++ b/db/tasks.php @@ -0,0 +1,38 @@ +. + +/** + * Definition of htmlcert scheduled tasks. + * + * @package mod_htmlcert + * @category task + * @copyright 2017 Mark Nelson , 2021 Klaus-Uwe Mitterer + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +$tasks = array( + array( + 'classname' => 'local_certlog\task\get_issues_task', + 'blocking' => 0, + 'minute' => '*/5', + 'hour' => '*', + 'day' => '*', + 'month' => '*', + 'dayofweek' => '*' + ) +); diff --git a/lang/en/local_certlog.php b/lang/en/local_certlog.php new file mode 100644 index 0000000..6a25951 --- /dev/null +++ b/lang/en/local_certlog.php @@ -0,0 +1,8 @@ +version = "2021120301"; +$plugin->component = 'local_certlog'; +$plugin->maturity = MATURITY_ALPHA; +$plugin->release = 'v0.0.1'; +$plugin->requires = '2019111800';