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/>./*** Configure provider instance action settings.** @package core_ai* @copyright 2024 Matt Porritt <matt.porritt@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/require_once('../config.php');require_login();$context = context_system::instance();require_capability('moodle/site:config', $context);$provider = required_param('provider', PARAM_PLUGIN);$action = required_param('action', PARAM_TEXT);$id = required_param('providerid', PARAM_INT);$returnurl = optional_param('returnurl', null, PARAM_LOCALURL);$customdata = ['providerid' => $id];// Handle return URL.if (empty($returnurl)) {$returnurl = new moodle_url(url: '/ai/configure.php',params: ['id' => $id]);} else {$returnurl = new moodle_url($returnurl);}$customdata['returnurl'] = $returnurl;$manager = \core\di::get(\core_ai\manager::class);$providerrecord = $manager->get_provider_record(['id' => $id], MUST_EXIST);$actionconfig = json_decode($providerrecord->actionconfig, true, 512, JSON_THROW_ON_ERROR);$actionconfig = $actionconfig[$action];$customdata['actionconfig'] = $actionconfig;$customdata['providername'] = $provider;$urlparams = ['provider' => $provider,'action' => $action,'id' => $id,];// Page setup.$title = get_string('actionsettingprovider', 'core_ai', $action::get_name());$PAGE->set_context($context);$PAGE->set_url('/ai/configure.php_actions', $urlparams);$PAGE->set_pagelayout('admin');$PAGE->set_title($title);$PAGE->set_heading($title);$providerclass = "\\$provider\\provider";$mform = $providerclass::get_action_settings($action, $customdata);if ($mform->is_cancelled()) {$data = $mform->get_data();if (isset($data->returnurl)) {redirect($data->returnurl);} else {redirect($returnurl);}}if ($data = $mform->get_data()) {$manager = \core\di::get(\core_ai\manager::class);$aiprovider = $data->provider;unset($data->provider, $data->id, $data->action, $data->returnurl, $data->submitbutton);$providerinstance = $manager->get_provider_instances(['id' => $id]);$providerinstance = reset($providerinstance);$actionconfig = $providerinstance->actionconfig;$actionconfig[$action]['settings'] = (array)$data;$actionconfig[$action]['enabled'] = $providerinstance->actionconfig[$action]['enabled'];$manager->update_provider_instance(provider: $providerinstance,actionconfig: $actionconfig,);\core\notification::add(get_string('providerinstanceactionupdated', 'core_ai', $action::get_name()),\core\notification::SUCCESS);redirect($returnurl);}echo $OUTPUT->header();$mform->display();echo $OUTPUT->footer();