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/>./*** Bulk course upload step 2.** @package tool_uploadcourse* @copyright 2011 Piers Harding* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/defined('MOODLE_INTERNAL') || die();require_once($CFG->dirroot . '/course/lib.php');/*** Specify course upload details.** @package tool_uploadcourse* @copyright 2011 Piers Harding* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class tool_uploadcourse_step2_form extends tool_uploadcourse_base_form {/*** The standard form definiton.* @return void.*/public function definition() {global $CFG;$mform = $this->_form;$data = $this->_customdata['data'];$courseconfig = get_config('moodlecourse');// Import options.$this->add_import_options();// Course options.$mform->addElement('header', 'courseoptionshdr', get_string('courseprocess', 'tool_uploadcourse'));$mform->setExpanded('courseoptionshdr', true);$mform->addElement('text', 'options[shortnametemplate]', get_string('shortnametemplate', 'tool_uploadcourse'),'maxlength="100" size="20"');$mform->setType('options[shortnametemplate]', PARAM_RAW);$mform->addHelpButton('options[shortnametemplate]', 'shortnametemplate', 'tool_uploadcourse');$mform->hideIf('options[shortnametemplate]', 'options[mode]', 'eq', tool_uploadcourse_processor::MODE_CREATE_OR_UPDATE);$mform->hideIf('options[shortnametemplate]', 'options[mode]', 'eq', tool_uploadcourse_processor::MODE_UPDATE_ONLY);// Restore file is not in the array options on purpose, because formslib can't handle it!$contextid = $this->_customdata['contextid'];$mform->addElement('hidden', 'contextid', $contextid);$mform->setType('contextid', PARAM_INT);$mform->addElement('filepicker', 'restorefile', get_string('templatefile', 'tool_uploadcourse'));$mform->addHelpButton('restorefile', 'templatefile', 'tool_uploadcourse');$mform->addElement('text', 'options[templatecourse]', get_string('coursetemplatename', 'tool_uploadcourse'));$mform->setType('options[templatecourse]', PARAM_TEXT);$mform->addHelpButton('options[templatecourse]', 'coursetemplatename', 'tool_uploadcourse');$mform->addElement('selectyesno', 'options[reset]', get_string('reset', 'tool_uploadcourse'));$mform->setDefault('options[reset]', 0);$mform->hideIf('options[reset]', 'options[mode]', 'eq', tool_uploadcourse_processor::MODE_CREATE_NEW);$mform->hideIf('options[reset]', 'options[mode]', 'eq', tool_uploadcourse_processor::MODE_CREATE_ALL);$mform->disabledIf('options[reset]', 'options[allowresets]', 'eq', 0);$mform->addHelpButton('options[reset]', 'reset', 'tool_uploadcourse');// Default values.$mform->addElement('header', 'defaultheader', get_string('defaultvalues', 'tool_uploadcourse'));$mform->setExpanded('defaultheader', true);$displaylist = core_course_category::make_categories_list('tool/uploadcourse:use');$mform->addElement('autocomplete', 'defaults[category]', get_string('coursecategory'), $displaylist);$mform->addRule('defaults[category]', null, 'required', null, 'client');$mform->addHelpButton('defaults[category]', 'coursecategory');$choices = array();$choices['0'] = get_string('hide');$choices['1'] = get_string('show');$mform->addElement('select', 'defaults[visible]', get_string('coursevisibility'), $choices);$mform->addHelpButton('defaults[visible]', 'coursevisibility');$mform->setDefault('defaults[visible]', $courseconfig->visible);if ($CFG->downloadcoursecontentallowed &&has_capability('moodle/course:configuredownloadcontent', context::instance_by_id($contextid))) {$downloadchoices = [DOWNLOAD_COURSE_CONTENT_DISABLED => get_string('no'),DOWNLOAD_COURSE_CONTENT_ENABLED => get_string('yes'),];$sitedefaultstring = $downloadchoices[$courseconfig->downloadcontentsitedefault];$downloadchoices[DOWNLOAD_COURSE_CONTENT_SITE_DEFAULT] = get_string('sitedefaultspecified', '', $sitedefaultstring);$downloadselectdefault = $courseconfig->downloadcontent ?? DOWNLOAD_COURSE_CONTENT_SITE_DEFAULT;$mform->addElement('select', 'defaults[downloadcontent]', get_string('enabledownloadcoursecontent', 'course'),$downloadchoices);$mform->addHelpButton('defaults[downloadcontent]', 'downloadcoursecontent', 'course');$mform->setDefault('defaults[downloadcontent]', $downloadselectdefault);}$mform->addElement('date_time_selector', 'defaults[startdate]', get_string('startdate'));$mform->addHelpButton('defaults[startdate]', 'startdate');$mform->setDefault('defaults[startdate]', time() + 3600 * 24);$mform->addElement('date_time_selector', 'defaults[enddate]', get_string('enddate'), array('optional' => true));$mform->addHelpButton('defaults[enddate]', 'enddate');$courseformats = get_sorted_course_formats(true);$formcourseformats = new core\output\choicelist();$formcourseformats->set_allow_empty(false);foreach ($courseformats as $courseformat) {$definition = [];$component = "format_$courseformat";if (get_string_manager()->string_exists('plugin_description', $component)) {$definition['description'] = get_string('plugin_description', $component);}$formcourseformats->add_option($courseformat,get_string('pluginname', "format_$courseformat"),['description' => $definition,],);}$mform->addElement('choicedropdown','defaults[format]',get_string('format'),$formcourseformats,);$mform->setDefault('defaults[format]', $courseconfig->format);if (!empty($CFG->allowcoursethemes)) {$themeobjects = get_list_of_themes();$themes=array();$themes[''] = get_string('forceno');foreach ($themeobjects as $key => $theme) {if (empty($theme->hidefromselector)) {$themes[$key] = get_string('pluginname', 'theme_'.$theme->name);}}$mform->addElement('select', 'defaults[theme]', get_string('forcetheme'), $themes);}$languages = array();$languages[''] = get_string('forceno');$languages += get_string_manager()->get_list_of_translations();$mform->addElement('select', 'defaults[lang]', get_string('forcelanguage'), $languages);$mform->setDefault('defaults[lang]', $courseconfig->lang);$options = range(0, 10);$mform->addElement('select', 'defaults[newsitems]', get_string('newsitemsnumber'), $options);$mform->addHelpButton('defaults[newsitems]', 'newsitemsnumber');$mform->setDefault('defaults[newsitems]', $courseconfig->newsitems);$mform->addElement('selectyesno', 'defaults[showgrades]', get_string('showgrades'));$mform->addHelpButton('defaults[showgrades]', 'showgrades');$mform->setDefault('defaults[showgrades]', $courseconfig->showgrades);$mform->addElement('selectyesno', 'defaults[showreports]', get_string('showreports'));$mform->addHelpButton('defaults[showreports]', 'showreports');$mform->setDefault('defaults[showreports]', $courseconfig->showreports);if (!empty($CFG->legacyfilesinnewcourses)) {$mform->addElement('select', 'defaults[legacyfiles]', get_string('courselegacyfiles'), $choices);$mform->addHelpButton('defaults[legacyfiles]', 'courselegacyfiles');if (!isset($courseconfig->legacyfiles)) {$courseconfig->legacyfiles = 0;}$mform->setDefault('defaults[legacyfiles]', $courseconfig->legacyfiles);}$choices = get_max_upload_sizes($CFG->maxbytes);$mform->addElement('select', 'defaults[maxbytes]', get_string('maximumupload'), $choices);$mform->addHelpButton('defaults[maxbytes]', 'maximumupload');$mform->setDefault('defaults[maxbytes]', $courseconfig->maxbytes);$choices = array();$choices[NOGROUPS] = get_string('groupsnone', 'group');$choices[SEPARATEGROUPS] = get_string('groupsseparate', 'group');$choices[VISIBLEGROUPS] = get_string('groupsvisible', 'group');$mform->addElement('select', 'defaults[groupmode]', get_string('groupmode', 'group'), $choices);$mform->addHelpButton('defaults[groupmode]', 'groupmode', 'group');$mform->setDefault('defaults[groupmode]', $courseconfig->groupmode);$mform->addElement('selectyesno', 'defaults[groupmodeforce]', get_string('groupmodeforce', 'group'));$mform->addHelpButton('defaults[groupmodeforce]', 'groupmodeforce', 'group');$mform->setDefault('defaults[groupmodeforce]', $courseconfig->groupmodeforce);// Completion tracking.if (!empty($CFG->enablecompletion)) {$mform->addElement('selectyesno', 'defaults[enablecompletion]', get_string('enablecompletion', 'completion'));$mform->setDefault('defaults[enablecompletion]', $courseconfig->enablecompletion);$mform->addHelpButton('defaults[enablecompletion]', 'enablecompletion', 'completion');}$mform->addElement('selectyesno', 'defaults[showactivitydates]', get_string('showactivitydates'));$mform->addHelpButton('defaults[showactivitydates]', 'showactivitydates');$mform->setDefault('defaults[showactivitydates]', $courseconfig->showactivitydates);// Add custom fields to the form.$handler = \core_course\customfield\course_handler::create();$handler->instance_form_definition($mform, 0, 'defaultvaluescustomfieldcategory', 'tool_uploadcourse');// Hidden fields.$mform->addElement('hidden', 'importid');$mform->setType('importid', PARAM_INT);$mform->addElement('hidden', 'previewrows');$mform->setType('previewrows', PARAM_INT);$mform->addElement('hidden', 'categoryid');$mform->setType('categoryid', PARAM_INT);$this->add_action_buttons(true, get_string('uploadcourses', 'tool_uploadcourse'));// Prepare custom fields data.$data = (object) $data;$handler->instance_form_before_set_data($data);$this->set_data($data);}/*** Add actopm buttons.** @param bool $cancel whether to show cancel button, default true* @param string $submitlabel label for submit button, defaults to get_string('savechanges')* @return void*/public function add_action_buttons($cancel = true, $submitlabel = null) {$mform =& $this->_form;$buttonarray = array();$buttonarray[] = &$mform->createElement('submit', 'showpreview', get_string('preview', 'tool_uploadcourse'));$buttonarray[] = &$mform->createElement('submit', 'submitbutton', $submitlabel);$buttonarray[] = &$mform->createElement('cancel');$mform->addGroup($buttonarray, 'buttonar', '', array(' '), false);$mform->closeHeaderBefore('buttonar');}/*** Sets the enddate default after set_data is called.*/public function definition_after_data() {$mform = $this->_form;// The default end date depends on the course format.$format = course_get_format((object)array('format' => get_config('moodlecourse', 'format')));// Check if course end date form field should be enabled by default.// If a default date is provided to the form element, it is magically enabled by default in the// MoodleQuickForm_date_time_selector class, otherwise it's disabled by default.if (get_config('moodlecourse', 'courseenddateenabled')) {$enddate = $format->get_default_course_enddate($mform, array('startdate' => 'defaults[startdate]'));$mform->setDefault('defaults[enddate]', $enddate);}// Tweak the form with values provided by custom fields in use.\core_course\customfield\course_handler::create()->instance_form_definition_after_data($mform);}/*** Validation.** @param array $data* @param array $files* @return array the errors that were found*/public function validation($data, $files) {global $DB;$errors = parent::validation($data, $files);if ($errorcode = course_validate_dates($data['defaults'])) {$errors['defaults[enddate]'] = get_string($errorcode, 'error');}// Custom fields validation.array_merge($errors, \core_course\customfield\course_handler::create()->instance_form_validation($data, $files));return $errors;}}