. namespace core_communication\task; use core\task\adhoc_task; use core_communication\processor; /** * Class update_room_task to add a task to update a room and execute the task to action the update. * * this task will be queued by the communication api and will use the communication handler api to action the updates. * * @package core_communication * @copyright 2023 Safat Shahin * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class update_room_task extends adhoc_task { public function execute() { $data = $this->get_custom_data(); // Call the communication api to action the operation. $communication = processor::load_by_id($data->id); if ($communication === null) { mtrace("Skipping room creation because the instance does not exist"); return; } $communication->get_room_provider()->update_chat_room(); } /** * Queue the task for the next run. * * @param processor $communication The communication processor to perform the action on */ public static function queue( processor $communication, ): void { // Add ad-hoc task to update the provider room. $task = new self(); $task->set_custom_data([ 'id' => $communication->get_id() ]); // Queue the task for the next run. \core\task\manager::queue_adhoc_task($task); } }