. /** * Admin presets callbacks * * @package tool_admin_presets * @copyright 2024 David Carrillo * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ declare(strict_types=1); use core\output\inplace_editable; /** * Inplace editable functionality * * @param string $itemtype * @param int $itemid * @param string $newvalue * @return inplace_editable */ function tool_admin_presets_inplace_editable(string $itemtype, int $itemid, string $newvalue): inplace_editable { global $DB; $context = \context_system::instance(); \core_external\external_api::validate_context($context); require_capability('moodle/site:config', $context); switch ($itemtype) { case 'presetname': $newvalue = clean_param($newvalue, PARAM_TEXT); $edithint = get_string('editadminpresetname', 'tool_admin_presets'); $displayvalue = format_string($newvalue, true, ['context' => \context_system::instance(), 'escape' => false]); $editlabel = get_string('newvaluefor', 'form', $displayvalue); // Update value in database. $DB->set_field('adminpresets', 'name', $newvalue, [ 'id' => $itemid, 'iscore' => \core_adminpresets\manager::NONCORE_PRESET, ]); break; default: throw new \coding_exception('Unexpected admin preset inplace editable item type'); } return new inplace_editable('tool_admin_presets', $itemtype, $itemid, true, $displayvalue, $newvalue, $edithint, $editlabel); }