* @param object $cm Moodle course-module object. May have extra fields
* ->conditionsgrade, ->conditionscompletion which should come from
* get_fast_modinfo. Should have ->availablefrom, ->availableuntil,
- * and ->showavailability, ->course; but the only required thing is ->id.
+ * and ->showavailability, ->course, ->visible; but the only required
+ * thing is ->id.
* @param int $expectingmissing Used to control whether or not a developer
* debugging message (performance warning) will be displayed if some of
* the above data is missing and needs to be retrieved; a
* @return array Array of field names
*/
protected function get_main_table_fields() {
- return array('id', 'course', 'availablefrom', 'availableuntil', 'showavailability');
+ return array('id', 'course', 'visible',
+ 'availablefrom', 'availableuntil', 'showavailability');
}
/**
}
}
+ // If the item is marked as 'not visible' then we don't change the available
+ // flag (visible/available are treated distinctly), but we remove any
+ // availability info. If the item is hidden with the eye icon, it doesn't
+ // make sense to show 'Available from <date>' or similar, because even
+ // when that date arrives it will still not be available unless somebody
+ // toggles the eye icon.
+ if (!$this->item->visible) {
+ $information = '';
+ }
+
$information = trim($information);
return $available;
}
$this->assertEquals(
(object)array('id'=>$id,'showavailability'=>1,
'availablefrom'=>17,'availableuntil'=>398,'course'=>64,
- 'conditionsgrade'=>array(), 'conditionscompletion'=>array()),
+ 'conditionsgrade'=>array(), 'conditionscompletion'=>array(),
+ 'visible' => 1),
$test->get_full_course_module());
// just the course_modules stuff; check it doesn't request that from db
$cm->availablefrom=2;
$cm->availableuntil=74;
$cm->course=38;
+ $cm->visible = 1;
$test=new condition_info($cm,CONDITION_MISSING_EXTRATABLE);
$this->assertEquals(
(object)array('id'=>$id,'showavailability'=>0,
'availablefrom'=>2,'availableuntil'=>74,'course'=>38,
- 'conditionsgrade'=>array(), 'conditionscompletion'=>array()),
+ 'conditionsgrade' => array(), 'conditionscompletion' => array(),
+ 'visible' => 1),
$test->get_full_course_module());
// Now let's add some actual grade/completion conditions
$this->assertEquals(
(object)array('id' => $id, 'showavailability' => 1, 'groupingid' => 13,
'availablefrom' => 17, 'availableuntil' => 398, 'course' => 64,
- 'conditionsgrade' => array(), 'conditionscompletion' => array()),
+ 'conditionsgrade' => array(), 'conditionscompletion' => array(),
+ 'visible' => 1),
$test->get_full_section());
// Just the course_sections stuff; check it doesn't request that from db
$section->availableuntil = 74;
$section->course = 38;
$section->groupingid = 99;
+ $section->visible = 1;
$test = new condition_info_section($section, CONDITION_MISSING_EXTRATABLE);
$this->assertEquals(
(object)array('id' => $id, 'showavailability' => 0, 'groupingid' => 99,
'availablefrom' => 2, 'availableuntil' => 74, 'course' => 38,
- 'conditionsgrade' => array(), 'conditionscompletion' => array()),
+ 'conditionsgrade' => array(), 'conditionscompletion' => array(),
+ 'visible' => 1),
$test->get_full_section());
// Now let's add some actual grade/completion conditions