Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

MDL-33937 Paged course view: Allows view of sections that are not vis…

…ible
  • Loading branch information...
commit 60a72a03b25a87e1df8bfe8e8ce0f67cddbafe53 1 parent 741543e
@sammarshallou sammarshallou authored danpoltawski committed
Showing with 22 additions and 4 deletions.
  1. +12 −2 course/view.php
  2. +10 −2 lib/modinfolib.php
View
14 course/view.php
@@ -99,8 +99,18 @@
$infoid = $course->id;
if(!empty($section)) {
$loglabel = 'view section';
- $sectionparams = array('course' => $course->id, 'section' => $section);
- $coursesections = $DB->get_record('course_sections', $sectionparams, 'id', MUST_EXIST);
+
+ // Get section details and check it exists.
+ $modinfo = get_fast_modinfo($course);
+ $coursesections = $modinfo->get_section_info($section, MUST_EXIST);
+
+ // Check user is allowed to see it.
+ if (!$coursesections->uservisible) {
+ // Note: We actually already know they don't have this capability
+ // or uservisible would have been true; this is just to get the
+ // correct error message shown.
+ require_capability('moodle/course:viewhiddensections', $context);
+ }
$infoid = $coursesections->id;
$logparam .= '&sectionid='. $infoid;
}
View
12 lib/modinfolib.php
@@ -202,9 +202,17 @@ public function get_section_info_all() {
/**
* Gets data about specific numbered section.
* @param int $sectionnumber Number (not id) of section
- * @return section_info Information for numbered section
+ * @param int $strictness Use MUST_EXIST to throw exception if it doesn't
+ * @return section_info Information for numbered section or null if not found
*/
- public function get_section_info($sectionnumber) {
+ public function get_section_info($sectionnumber, $strictness = IGNORE_MISSING) {
+ if (!array_key_exists($sectionnumber, $this->sectioninfo)) {
+ if ($strictness === MUST_EXIST) {
+ throw new moodle_exception('sectionnotexist');
+ } else {
+ return null;
+ }
+ }
return $this->sectioninfo[$sectionnumber];
}
Please sign in to comment.
Something went wrong with that request. Please try again.