MDL-60826 calendar: update manage subscription page to use new function

This commit is contained in:
Simey Lameze
2018-07-24 07:58:34 +08:00
parent 375b15a346
commit cf2df6199d
2 changed files with 25 additions and 16 deletions
@@ -41,8 +41,8 @@ class managesubscriptions extends \moodleform {
*/
public function definition() {
$mform = $this->_form;
$eventtypes = calendar_get_all_allowed_types();
if (empty($eventtypes)) {
$eventtypes = calendar_get_allowed_event_types();
if (in_array(true, $eventtypes, true) === false) {
print_error('nopermissiontoupdatecalendar');
}
@@ -100,9 +100,10 @@ class managesubscriptions extends \moodleform {
$errors = parent::validation($data, $files);
$coursekey = isset($data['groupcourseid']) ? 'groupcourseid' : 'courseid';
$eventtypes = calendar_get_all_allowed_types();
$eventtype = isset($data['eventtype']) ? $data['eventtype'] : null;
$coursekey = ($eventtype == 'group') ? 'groupcourseid' : 'courseid';
$courseid = (!empty($data[$coursekey])) ? $data[$coursekey] : null;
$eventtypes = calendar_get_allowed_event_types($courseid);
if (empty($eventtype) || !isset($eventtypes[$eventtype])) {
$errors['eventtype'] = get_string('invalideventtype', 'calendar');
+20 -12
View File
@@ -61,7 +61,7 @@ if (!calendar_user_can_add_event($course)) {
print_error('errorcannotimport', 'calendar');
}
$form = new \core_calendar\local\event\forms\managesubscriptions();
$form = new \core_calendar\local\event\forms\managesubscriptions(null, ['courseid' => $course->id]);
$form->set_data(array(
'course' => $course->id
));
@@ -105,26 +105,26 @@ if (!empty($formdata)) {
}
}
$types = calendar_get_all_allowed_types();
$types = calendar_get_allowed_event_types($courseid);
$searches = [];
$params = [];
$usedefaultfilters = true;
if (!empty($courseid) && $courseid == SITEID && isset($types['site'])) {
if (!empty($courseid) && $courseid == SITEID && !empty($types['site'])) {
$searches[] = "(eventtype = 'site')";
$searches[] = "(eventtype = 'user' AND userid = :userid)";
$params['userid'] = $USER->id;
$usedefaultfilters = false;
}
if (!empty($courseid) && isset($types['course']) && array_key_exists($courseid, $types['course'])) {
if (!empty($courseid) && !empty($types['course'])) {
$searches[] = "((eventtype = 'course' OR eventtype = 'group') AND courseid = :courseid)";
$params += ['courseid' => $courseid];
$usedefaultfilters = false;
}
if (!empty($categoryid) && isset($types['category']) && array_key_exists($categoryid, $types['category'])) {
if (!empty($categoryid) && !empty($types['category'])) {
$searches[] = "(eventtype = 'category' AND categoryid = :categoryid)";
$params += ['categoryid' => $categoryid];
$usedefaultfilters = false;
@@ -134,19 +134,27 @@ if ($usedefaultfilters) {
$searches[] = "(eventtype = 'user' AND userid = :userid)";
$params['userid'] = $USER->id;
if (isset($types['site'])) {
if (!empty($types['site'])) {
$searches[] = "(eventtype = 'site' AND courseid = :siteid)";
$params += ['siteid' => SITEID];
}
if (isset($types['course'])) {
list($courseinsql, $courseparams) = $DB->get_in_or_equal(array_keys($types['course']), SQL_PARAMS_NAMED, 'course');
$searches[] = "((eventtype = 'course' OR eventtype = 'group') AND courseid {$courseinsql})";
$params += $courseparams;
if (!empty($types['course'])) {
$courses = calendar_get_default_courses(null, 'id', true);
if (!empty($courses)) {
$courseids = array_map(function ($c) {
return $c->id;
}, $courses);
list($courseinsql, $courseparams) = $DB->get_in_or_equal($courseids, SQL_PARAMS_NAMED, 'course');
$searches[] = "((eventtype = 'course' OR eventtype = 'group') AND courseid {$courseinsql})";
$params += $courseparams;
}
}
if (isset($types['category'])) {
list($categoryinsql, $categoryparams) = $DB->get_in_or_equal(array_keys($types['category']), SQL_PARAMS_NAMED, 'category');
if (!empty($types['category'])) {
list($categoryinsql, $categoryparams) = $DB->get_in_or_equal(
array_keys(\coursecat::make_categories_list('moodle/category:manage')), SQL_PARAMS_NAMED, 'category');
$searches[] = "(eventtype = 'category' AND categoryid {$categoryinsql})";
$params += $categoryparams;
}