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/>.
/**
* Defines the main subcourse settings form
*
* @package mod_subcourse
* @category form
* @copyright 2008 David Mudrak <david@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot.'/mod/subcourse/locallib.php');
require_once($CFG->dirroot.'/course/moodleform_mod.php');
/**
* Subcourse settings form
*
* @copyright 2008 David Mudrak <david@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class mod_subcourse_mod_form extends moodleform_mod {
/**
* Form fields definition
*/
public function definition() {
global $CFG, $DB, $COURSE;
$mform = $this->_form;
$config = get_config('mod_subcourse');
$mform->addElement('header', 'general', get_string('general', 'form'));
$mform->addElement('text', 'name', get_string('subcoursename', 'subcourse'), ['size' => '64']);
if (!empty($CFG->formatstringstriptags)) {
$mform->setType('name', PARAM_TEXT);
} else {
$mform->setType('name', PARAM_CLEANHTML);
}
$mform->addRule('name', null, 'required', null, 'client');
$mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
$this->standard_intro_elements();
$mform->addElement('header', 'section-refcourse', get_string('refcourse', 'subcourse'));
$mform->setExpanded('section-refcourse');
$mform->addHelpButton('section-refcourse', 'refcourse', 'subcourse');
$mycourses = subcourse_available_courses();
$currentrefcourseid = isset($this->current->refcourse) ? $this->current->refcourse : null;
$currentrefcoursename = null;
$currentrefcourseavailable = false;
if (!empty($currentrefcourseid)) {
if ($currentrefcourseid == $COURSE->id) {
// Invalid self-reference.
$this->current->refcourse = 0;
$includenoref = true;
} else {
$currentrefcoursename = $DB->get_field('course', 'fullname', ['id' => $currentrefcourseid], IGNORE_MISSING);
}
if ($currentrefcoursename === false) {
// Reference to non-existing course.
$this->current->refcourse = 0;
$includenoref = true;
} else {
// Check if the currently set value is still available.
foreach ($mycourses as $mycourse) {
if ($mycourse->id == $currentrefcourseid) {
$currentrefcourseavailable = true;
break;
}
}
}
}
if (!empty($currentrefcourseid) && !$currentrefcourseavailable) {
// Currently referring to a course that is not available for us.
// E.g. the admin has set up this Subcourse for the teacher or the teacher lost his role in the referred course etc.
// Give them a chance to just keep such a reference.
$mform->addElement('checkbox', 'refcoursecurrent', get_string('refcoursecurrent', 'subcourse'),
format_string($currentrefcoursename));
$mform->setDefault('refcoursecurrent', 1);
$includekeepref = true;
}
$options = [get_string('none')];
if (empty($mycourses)) {
if (empty($includekeepref)) {
$options = [0 => get_string('nocoursesavailable', 'subcourse')];
$mform->addElement('select', 'refcourse', get_string('refcourselabel', 'subcourse'), $options);
} else {
$mform->addElement('hidden', 'refcourse', 0);
$mform->setType('refcourse', PARAM_INT);
}
} else {
$catlist = core_course_category::make_categories_list('', 0, ' / ');
foreach ($mycourses as $mycourse) {
$courselabel = $catlist[$mycourse->category] . ' / ' . $mycourse->fullname.' ('.$mycourse->shortname.')';
$options[$mycourse->id] = $courselabel;
if (empty($mycourse->visible)) {
$hiddenlabel = ' '.get_string('hiddencourse', 'subcourse');
$options[$mycourse->id] .= $hiddenlabel;
}
}
$mform->addElement('autocomplete', 'refcourse', get_string('refcourselabel', 'subcourse'), $options);
if (!empty($includekeepref)) {
$mform->disabledIf('refcourse', 'refcoursecurrent', 'checked');
}
}
$mform->addElement('header', 'section-gradesfetching', get_string('gradesfetching', 'subcourse'));
$mform->addElement('select', 'fetchpercentage', get_string('fetchgradesmode', 'subcourse'), [
0 => get_string('fetchgradesmode0', 'subcourse'),
1 => get_string('fetchgradesmode1', 'subcourse'),
]);
$mform->addHelpButton('fetchpercentage', 'fetchgradesmode', 'subcourse');
$mform->addElement('header', 'section-subcourselink', get_string('linkcontrol', 'subcourse'));
$mform->addElement('checkbox', 'instantredirect', get_string('instantredirect', 'subcourse'));
$mform->addHelpButton('instantredirect', 'instantredirect', 'subcourse');
$mform->addElement('checkbox', 'blankwindow', get_string('blankwindow', 'subcourse'));
$mform->addHelpButton('blankwindow', 'blankwindow', 'subcourse');
$mform->addElement('header', 'optionssection', get_string('appearance'));
$mform->addElement('checkbox', 'coursepageprintprogress', get_string('displayoption:coursepageprintprogress', 'subcourse'));
$mform->setDefault('coursepageprintprogress', $config->coursepageprintprogress);
$mform->addElement('checkbox', 'coursepageprintgrade', get_string('displayoption:coursepageprintgrade', 'subcourse'));
$mform->setDefault('coursepageprintgrade', $config->coursepageprintgrade);
$this->standard_coursemodule_elements();
$this->add_action_buttons();
}
/**
* Add elements for setting the custom completion rules.
*
* @category completion
* @return array List of added element names, or names of wrapping group elements.
*/
public function add_completion_rules() {
$mform = $this->_form;
$mform->addElement('advcheckbox', 'completioncourse', get_string('completioncourse', 'mod_subcourse'),
get_string('completioncourse_text', 'mod_subcourse'));
$mform->addHelpButton('completioncourse', 'completioncourse', 'mod_subcourse');
return ['completioncourse'];
}
/**
* Called during validation to see whether some module-specific completion rules are selected.
*
* @param array $data Input data not yet validated.
* @return bool True if one or more rules is enabled, false if none are.
*/
public function completion_rule_enabled($data) {
return (!empty($data['completioncourse']));
}
}