AutorÃa | Ultima modificación | Ver Log |
<?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 tiny_premium\local;
use tiny_premium\manager;
/**
* Admin setting for managing Tiny Premium plugins.
*
* @package tiny_premium
* @copyright 2024 David Woloszyn <david.woloszyn@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class admin_setting_tiny_premium_plugins extends \admin_setting {
/**
* Calls parent::__construct with specific arguments.
*/
public function __construct() {
$this->nosave = true;
parent::__construct(
name: 'tiny_premium/premiumplugins',
visiblename: new \lang_string('premiumplugins', 'tiny_premium'),
description: new \lang_string('premiumplugins_desc', 'tiny_premium'),
defaultsetting: '',
);
}
/**
* Always returns true.
*
* @return bool
*/
public function get_setting(): bool {
return true;
}
/**
* Always returns '' and doesn't write anything.
*
* @param mixed $data
* @return string Always returns ''
*/
public function write_setting($data): string {
return '';
}
/**
* Builds the HTML to display the Tiny Premium plugins table.
*
* @param mixed $data Unused
* @param string $query
* @return string highlight
*/
public function output_html($data, $query=''): string {
global $OUTPUT;
$return = '';
// Warn users about an empty API key when displaying enabled plugins.
if (empty(get_config('tiny_premium', 'apikey')) && !empty(manager::get_enabled_plugins())) {
$return .= \core\notification::warning(get_string('emptyapikeywarning', 'tiny_premium'));
}
$return .= $OUTPUT->box_start('generalbox');
$return .= $OUTPUT->heading(get_string('premiumplugins', 'tiny_premium'), 3);
$return .= \html_writer::tag('p', get_string('premiumplugins_desc', 'tiny_premium'));
$return .= $this->define_manage_tiny_premium_plugins_table();
$return .= $OUTPUT->box_end();
return highlight($query, $return);
}
/**
* Defines table for managing Tiny Premium plugins.
*
* @return string HTML for table
*/
public function define_manage_tiny_premium_plugins_table(): string {
global $OUTPUT;
$sesskey = sesskey();
// Set up table.
$table = new \html_table();
$table->id = 'managetinypremiumpluginstable';
$table->attributes['class'] = 'admintable generaltable';
$table->head = [
get_string('name'),
get_string('enable'),
];
$table->colclasses = [
'leftalign',
'centeralign',
];
$table->data = [];
// Keep enabled plugins on top.
$plugins = manager::get_plugins();
$enabledplugins = manager::get_enabled_plugins();
$disabledplugins = array_diff($plugins, $enabledplugins);
$plugins = array_merge($enabledplugins, $disabledplugins);
foreach ($plugins as $plugin) {
$pluginname = get_string('premiumplugin:' . $plugin, 'tiny_premium');
// Determine plugin actions.
if (manager::is_plugin_enabled($plugin)) {
$action = 'disable';
$icon = $OUTPUT->pix_icon('t/hide', get_string('disableplugin', 'core_admin', $pluginname));
$class = '';
} else {
$action = 'enable';
$icon = $OUTPUT->pix_icon('t/show', get_string('enableplugin', 'core_admin', $pluginname));
$class = 'dimmed_text';
}
// Prepare a link to perform the action.
$hideshowurl = new \moodle_url('/lib/editor/tiny/plugins/premium/pluginsettings.php', [
'action' => $action,
'plugin' => $plugin,
'sesskey' => $sesskey,
]);
$hideshowlink = \html_writer::link($hideshowurl, $icon);
// Populate table row.
$row = new \html_table_row([
$pluginname,
$hideshowlink,
]);
$row->attributes['class'] = $class;
$table->data[] = $row;
}
return \html_writer::table($table);
}
}