. namespace core_communication\task; use core\task\scheduled_task; use core_communication\api; use core_communication\processor; /** * Class synchronise_providers to add a task to synchronise the providers and execute the task to action the synchronisation. * * @package core_communication * @copyright 2023 Safat Shahin * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class synchronise_providers_task extends scheduled_task { public function get_name() { return get_string('synchroniseproviders', 'core_communication'); } public function execute() { // Communication is not enabled? nothing to do. if (!api::is_available()) { return; } global $DB; $communicationinstances = $DB->get_records( table: 'communication', conditions: ['active' => processor::PROVIDER_ACTIVE], ); foreach ($communicationinstances as $communicationinstance) { $communication = \core_communication\api::load_by_instance( context: \context::instance_by_id($communicationinstance->contextid), component: $communicationinstance->component, instancetype: $communicationinstance->instancetype, instanceid: $communicationinstance->instanceid, ); $processor = $communication->get_processor(); if ($processor->supports_sync_provider_features()) { $communication->sync_provider(); } } } }