MDL-44070 Conditional availability enhancements (6): core changes

Changes core code to use new API instead of the old one when
checking user access to activities and sections.

Includes changes to other libraries that are necessary after
adding the availability system and removing old conditional tables
etc.
This commit is contained in:
sam marshall 2014-03-26 12:01:52 +00:00
parent 6a601097a0
commit 8d1f33e122
14 changed files with 393 additions and 402 deletions

View file

@ -176,7 +176,7 @@ abstract class testing_module_generator extends component_generator_base {
$easymergefields = array('section', 'added', 'score', 'indent',
'visible', 'visibleold', 'groupmode', 'groupingid', 'groupmembersonly',
'completion', 'completiongradeitemnumber', 'completionview', 'completionexpected',
'availablefrom', 'availableuntil', 'showavailability', 'showdescription');
'availability', 'showdescription');
foreach ($easymergefields as $key) {
if (isset($options[$key])) {
$moduleinfo->$key = $options[$key];
@ -191,9 +191,7 @@ abstract class testing_module_generator extends component_generator_base {
'groupmode' => 0,
'groupingid' => 0,
'groupmembersonly' => 0,
'showavailability' => 0,
'availablefrom' => 0,
'availableuntil' => 0,
'availability' => null,
'completion' => 0,
'completionview' => 0,
'completionexpected' => 0,

View file

@ -213,57 +213,10 @@ class core_test_generator_testcase extends advanced_testcase {
// We need id of the grading item for the second module to create availability dependency in the 3rd module.
$gradingitem = grade_item::fetch(array('courseid'=>$course->id, 'itemtype'=>'mod', 'itemmodule' => 'assign', 'iteminstance' => $m3->id));
// Now prepare options to create the 4th module which availability depends on other modules.
// Following options available if $CFG->enableavailability is set:
// Now prepare option to create the 4th module with an availability condition.
$optionsavailability = array(
'showavailability' => 1,
'availablefrom' => time() - WEEKSECS,
'availableuntil' => time() + WEEKSECS,
'conditiongradegroup' => array(
array(
'conditiongradeitemid' => $gradingitem->id,
'conditiongrademin' => 20,
'conditiongrademax' => 80,
)
),
'conditionfieldgroup' => array(
array(
'conditionfield' => 'address',
'conditionfieldoperator' => 'contains',
'conditionfieldvalue' => 'street',
)
),
'conditioncompletiongroup' => array(
array(
'conditionsourcecmid' => $m2->cmid,
'conditionrequiredcompletion' => 1
),
array(
'conditionsourcecmid' => $m3->cmid,
'conditionrequiredcompletion' => 1
)
)
);
// The same data for assertion (different format).
$optionsavailabilityassertion = array(
'conditionsgrade' => array(
$gradingitem->id => (object)array(
'min' => 20,
'max' => 80,
'name' => $gradingitem->itemname
)
),
'conditionsfield' => array(
'address' => (object)array(
'fieldname' => 'address',
'operator' => 'contains',
'value' => 'street'
)
),
'conditionscompletion' => array(
$m2->cmid => 1,
$m3->cmid => 1
)
'availability' => '{"op":"&","showc":[true],"c":[' .
'{"type":"date","d":">=","t":' . (time() - WEEKSECS) . '}]}',
);
// Create module with conditional availability.
@ -304,12 +257,7 @@ class core_test_generator_testcase extends advanced_testcase {
$this->assertEquals($featuregrade['gradecat'], $gradingitem->categoryid);
$cm4 = $modinfo->cms[$m4->cmid];
$this->assertEquals($optionsavailability['showavailability'], $cm4->showavailability);
$this->assertEquals($optionsavailability['availablefrom'], $cm4->availablefrom);
$this->assertEquals($optionsavailability['availableuntil'], $cm4->availableuntil);
$this->assertEquals($optionsavailabilityassertion['conditionsgrade'], $cm4->conditionsgrade);
$this->assertEquals($optionsavailabilityassertion['conditionsfield'], $cm4->conditionsfield);
$this->assertEquals($optionsavailabilityassertion['conditionscompletion'], $cm4->conditionscompletion);
$this->assertEquals($optionsavailability['availability'], $cm4->availability);
}
public function test_create_block() {