1
0
mirror of https://github.com/moodle/moodle.git synced 2025-05-02 14:28:30 +02:00

98 lines
2.9 KiB
PHP

<?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 core\plugininfo;
use core_plugin_manager;
use moodle_url;
/**
* SMS gateway subplugin info class.
*
* @package core
* @copyright 2024 Andrew Lyons <andrew@nicols.co.uk>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class smsgateway extends base {
#[\Override]
public function is_uninstall_allowed(): bool {
return true;
}
#[\Override]
public function get_settings_section_name(): string {
return "smsgateway{$this->name}";
}
#[\Override]
public function load_settings(
\part_of_admin_tree $adminroot,
$parentnodename,
$hassiteconfig,
): void {
global $CFG, $USER, $DB, $OUTPUT, $PAGE; // In case settings.php wants to refer to them.
/** @var \admin_root $ADMIN */
$ADMIN = $adminroot; // May be used in settings.php.
$plugininfo = $this; // Also can be used inside settings.php.
if (!$this->is_installed_and_upgraded()) {
return;
}
if (!$hassiteconfig) {
return;
}
$section = $this->get_settings_section_name();
$settings = null;
if (file_exists($this->full_path('settings.php'))) {
$settings = new \admin_settingpage($section, $this->displayname, 'moodle/site:config', $this->is_enabled() === false);
include($this->full_path('settings.php')); // This may also set $settings to null.
}
if ($settings) {
$ADMIN->add($parentnodename, $settings);
}
}
#[\Override]
public static function get_manage_url(): moodle_url {
return new moodle_url('/sms/sms_gateways.php');
}
#[\Override]
public static function get_enabled_plugins(): ?array {
$pluginmanager = core_plugin_manager::instance();
$plugins = $pluginmanager->get_installed_plugins('smsgateway');
if (!$plugins) {
return [];
}
$plugins = array_keys($plugins);
// Filter to return only enabled plugins.
$enabled = [];
foreach ($plugins as $plugin) {
$disabled = get_config('smsgateway_' . $plugin, 'disabled');
if (empty($disabled)) {
$enabled[$plugin] = $plugin;
}
}
return $enabled;
}
}