From cf2df6199d9b940ee10ff361c6aa2e1bf444650c Mon Sep 17 00:00:00 2001 From: Simey Lameze Date: Mon, 16 Jul 2018 11:30:02 +0800 Subject: [PATCH] MDL-60826 calendar: update manage subscription page to use new function --- .../local/event/forms/managesubscriptions.php | 9 +++--- calendar/managesubscriptions.php | 32 ++++++++++++------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/calendar/classes/local/event/forms/managesubscriptions.php b/calendar/classes/local/event/forms/managesubscriptions.php index 0e5a0b6df83..102761f7116 100644 --- a/calendar/classes/local/event/forms/managesubscriptions.php +++ b/calendar/classes/local/event/forms/managesubscriptions.php @@ -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'); diff --git a/calendar/managesubscriptions.php b/calendar/managesubscriptions.php index 75ddc09f192..87289a6c9be 100644 --- a/calendar/managesubscriptions.php +++ b/calendar/managesubscriptions.php @@ -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; }