See Release Notes
Long Term Support Release
<?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. namespace mod_bigbluebuttonbn\task;< < use core\message\message;use core\task\adhoc_task;< use mod_bigbluebuttonbn\instance; < use moodle_exception; < use stdClass;/**< * Class containing the abstract class for notification processes in BBB.> * Class containing the deprecated class for send_notification event in BBB.* * @package mod_bigbluebuttonbn * @copyright 2021 Andrew Lyons <andrew@nicols.co.uk> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */< abstract class send_notification extends adhoc_task { < < /** @var instance */ < protected $instance = null; < < /** @var object */ < protected $coursecontact = null; <> class send_notification extends adhoc_task {/** * Execute the task. */ public function execute() {< $this->send_all_notifications(); < } < < /** < * Append additional elements of custom data < * < * @param array $newdata < */ < protected function append_custom_data(array $newdata): void { < if ($currentdata = (array) $this->get_custom_data()) { < $newdata = array_merge($currentdata, $newdata); < } < < $this->set_custom_data($newdata); < } < < /** < * Set the instanceid in the custom data. < * < * @param int $instanceid < */ < public function set_instance_id(int $instanceid): void { < $this->append_custom_data(['instanceid' => $instanceid]); < } < < /** < * Get the bigbluebutton instance that this notification is for. < * < * @return instance < */ < protected function get_instance(): instance { < if ($this->instance === null) { < $this->instance = instance::get_from_instanceid($this->get_custom_data()->instanceid); < } < < return $this->instance; < } < < /** < * Get the preferred course contact for this notification. < * < * @return stdClass < */ < protected function get_course_contact(): stdClass { < global $DB; < < if ($this->coursecontact === null) { < // Get course managers so they can be highlighted in the list. < $coursecontext = $this->get_instance()->get_course_context(); < < if ($managerroles = get_config('', 'coursecontact')) { < $coursecontactroles = explode(',', $managerroles); < foreach ($coursecontactroles as $roleid) { < $contacts = get_role_users($roleid, $coursecontext, true, 'u.id', 'u.id ASC'); < foreach ($contacts as $contact) { < $this->coursecontact = $contact; < break; < } < } < } < < if ($this->coursecontact === null) { < $this->coursecontact = \core_user::get_noreply_user(); < } < } < < return $this->coursecontact;> // Log the debug message. > $message = $this->generate_message(); > debugging($message, DEBUG_DEVELOPER);} /**< * Get the list of recipients for the notification.> * Output the debug log message.*< * @return stdClass[]> * @return string The debug log message.*/< protected function get_recipients(): array { < // Potential users should be active users only. < return get_enrolled_users( < $this->get_instance()->get_course_context(), < 'mod/bigbluebuttonbn:view', < 0, < 'u.*', < null, < 0, < 0, < true < ); < } < < /** < * Get the HTML message content. < * < * @return string < */ < abstract protected function get_html_message(): string; < < /** < * Get the plain text message content. < * < * @return string < */ < protected function get_message(): string { < return html_to_text($this->get_html_message()); < } < < /** < * Get the short summary message. < * < * @return string < */ < abstract protected function get_small_message(): string; < < /** < * Get the preferred message format < * < * @return string < */ < protected function get_message_format(): string { < return FORMAT_HTML; < } < < /** < * Get the notification type. < * < * @return string < */ < abstract protected function get_notification_type(): string; < < /** < * Get the subject of the notification. < * < * @return string < */ < abstract protected function get_subject(): string; < < /** < * Send all of the notifications < */ < protected function send_all_notifications(): void { < $instance = $this->get_instance(); < foreach ($this->get_recipients() as $recipient) { < try { < \core_user::require_active_user($recipient, true, true); < cron_setup_user($recipient); < } catch (moodle_exception $e) { < // Skip sending. < continue; < } < < $this->send_notification_to_current_user(); < } < < cron_setup_user(); < } < < /** < * Send the notificiation to the current user. < */ < protected function send_notification_to_current_user(): void { < global $USER; < < $instance = $this->get_instance(); < < $eventdata = new message(); < $eventdata->courseid = $instance->get_course_id(); < $eventdata->component = 'mod_bigbluebuttonbn'; < $eventdata->name = $this->get_notification_type(); < $eventdata->userfrom = $this->get_course_contact(); < $eventdata->userto = $USER; < < $eventdata->subject = $this->get_subject(); < $eventdata->smallmessage = $this->get_small_message(); < $eventdata->fullmessage = $this->get_message(); < $eventdata->fullmessageformat = $this->get_message_format(); < $eventdata->fullmessagehtml = $this->get_html_message(); < $eventdata->notification = 1; < $eventdata->contexturl = $this->get_instance()->get_view_url(); < $eventdata->contexturlname = $this->get_instance()->get_meeting_name(); < < message_send($eventdata);> public function generate_message() { > return "Attempted to run deprecated implementation of send_notification task.";} }