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 core_courseformat\output\local;use core_courseformat\base as course_format;use core\output\renderer_base;use core\output\single_button;use core\url;use stdClass;/*** Support UIs for non-ajax course updates alternatives.** This class is used from course/format/update.php to provide confirmation* dialogs for specific actions that require user confirmation.** All protected methods has the same parameters as the core_courseformat\stateactions* even if they are not used for a specific action.** @package core_courseformat* @copyright 2024 Ferran Recio <ferran@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class courseupdate {use courseformat_named_templatable;/*** Constructor.** @param course_format $format the course format class.* @param url $actionurl the current action url.* @param url $returnurl the return url if the user cancel the action.*/public function __construct(/** @var course_format the course format class */protected course_format $format,/** @var url the current action url */protected url $actionurl,/** @var url the return url if the user cancel the action */protected url $returnurl,) {}/*** Check if a specific action requires confirmation.** Format plugins can override this method to provide confirmation* dialogs for specific actions.** @param string $action the action name* @return bool*/public function is_confirmation_required(string $action,): bool {$methodname = $action . '_confirmation_dialog';return method_exists($this, $methodname);}/*** Get the confirmation dialog for a specific action.** Format plugins can override this method to provide confirmation* dialogs for specific actions.** @param renderer_base $output the course renderer* @param stdClass $course* @param string $action the state action name to execute* @param array $ids the section or cm ids.* @param int|null $targetsectionid the optional target section id* @param int|null $targetcmid the optional target cm id* @return string the HTML output*/public function get_confirmation_dialog(renderer_base $output,stdClass $course,string $action,array $ids = [],?int $targetsectionid = null,?int $targetcmid = null,): string {$methodname = $action . '_confirmation_dialog';if (method_exists($this, $methodname)) {return $this->$methodname(output: $output,course: $course,ids: $ids,targetsectionid: $targetsectionid,targetcmid: $targetcmid,);}return '';}/*** Render the section delete confirmation dialog.** @param renderer_base $output the course renderer* @param stdClass $course* @param array $ids the action ids.* @param int|null $targetsectionid the target section id (not used)* @param int|null $targetcmid the target cm id (not used)* @return string the HTML output*/protected function section_delete_confirmation_dialog(renderer_base $output,stdClass $course,array $ids = [],?int $targetsectionid = null,?int $targetcmid = null,): string {if (count($ids) == 1) {$modinfo = $this->format->get_modinfo();$section = $modinfo->get_section_info_by_id($ids[0]);$title = get_string('sectiondelete_title', 'core_courseformat');$message = get_string('sectiondelete_info','core_courseformat',['name' => $this->format->get_section_name($section)]);} else {$title = get_string('sectionsdelete_title', 'core_courseformat');$message = get_string('sectionsdelete_info', 'core_courseformat', ['count' => count($ids)]);}return $output->confirm(message: $message,cancel: $this->returnurl,continue: new url($this->actionurl, ['confirm' => 1]),displayoptions: ['confirmtitle' => $title,'type' => single_button::BUTTON_DANGER,'continuestr' => get_string('delete'),]);}/*** Render the cm delete confirmation dialog.** @param renderer_base $output the course renderer* @param stdClass $course* @param array $ids the action ids.* @param int|null $targetsectionid the target section id (not used)* @param int|null $targetcmid the target cm id (not used)* @return string the HTML output*/protected function cm_delete_confirmation_dialog(renderer_base $output,stdClass $course,array $ids = [],?int $targetsectionid = null,?int $targetcmid = null,): string {if (count($ids) == 1) {$modinfo = $this->format->get_modinfo();$cm = $modinfo->get_cm($ids[0]);if ($cm->get_delegated_section_info()) {$title = get_string('cmdelete_subsectiontitle', 'core_courseformat');$meesagestr = 'sectiondelete_info';} else {$title = get_string('cmdelete_title', 'core_courseformat');$meesagestr = 'cmdelete_info';}$message = get_string($meesagestr,'core_courseformat',(object) ['type' => get_string('pluginname', 'mod_' . $cm->modname),'name' => $cm->name,],);} else {$title = get_string('cmsdelete_title', 'core_courseformat');$message = get_string('cmsdelete_info', 'core_courseformat', ['count' => count($ids)]);}return $output->confirm(message: $message,cancel: $this->returnurl,continue: new url($this->actionurl, ['confirm' => 1]),displayoptions: ['confirmtitle' => $title,'type' => single_button::BUTTON_DANGER,'continuestr' => get_string('delete'),]);}}