MDL-42400 generator: module generators call add_moduleinfo instead of direct inserts

This commit is contained in:
Marina Glancy 2013-10-18 13:31:40 +11:00
parent b4b7587294
commit 7fbe33fcf1
18 changed files with 194 additions and 409 deletions

View file

@ -26,30 +26,10 @@ defined('MOODLE_INTERNAL') || die();
*/
class mod_assign_generator extends testing_module_generator {
/**
* Create new assign module instance
* @param array|stdClass $record
* @param array $options (mostly course_module properties)
* @return stdClass activity record with extra cmid field
*/
public function create_instance($record = null, array $options = null) {
global $CFG;
require_once("$CFG->dirroot/mod/assign/lib.php");
$this->instancecount++;
$i = $this->instancecount;
$record = (object)(array)$record;
$options = (array)$options;
if (empty($record->course)) {
throw new coding_exception('module generator requires $record->course');
}
$defaultsettings = array(
'name' => get_string('pluginname', 'assign').' '.$i,
'intro' => 'Test assign ' . $i,
'introformat' => FORMAT_MOODLE,
'alwaysshowdescription' => 1,
'submissiondrafts' => 1,
'requiresubmissionstatement' => 0,
@ -63,7 +43,6 @@ class mod_assign_generator extends testing_module_generator {
'requireallteammemberssubmit' => 0,
'teamsubmissiongroupingid' => 0,
'blindmarking' => 0,
'cmidnumber' => '',
'attemptreopenmethod' => 'none',
'maxattempts' => -1,
'markingworkflow' => 0,
@ -76,9 +55,6 @@ class mod_assign_generator extends testing_module_generator {
}
}
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = assign_add_instance($record, null);
rebuild_course_cache($record->course, true);
return $this->post_add_instance($id, $record->coursemodule);
return parent::create_instance($record, (array)$options);
}
}

View file

@ -36,34 +36,9 @@ defined('MOODLE_INTERNAL') || die();
*/
class mod_assignment_generator extends testing_module_generator {
/**
* Create new assignment module instance
* @param array|stdClass $record
* @param array $options (mostly course_module properties)
* @return stdClass activity record with extra cmid field
*/
public function create_instance($record = null, array $options = null) {
global $CFG;
require_once("$CFG->dirroot/mod/assignment/locallib.php");
$this->instancecount++;
$i = $this->instancecount;
$record = (object)(array)$record;
$options = (array)$options;
if (empty($record->course)) {
throw new coding_exception('module generator requires $record->course');
}
if (!isset($record->name)) {
$record->name = get_string('pluginname', 'assignment').' '.$i;
}
if (!isset($record->intro)) {
$record->intro = 'Test assignment '.$i;
}
if (!isset($record->introformat)) {
$record->introformat = FORMAT_MOODLE;
}
if (!isset($record->assignmenttype)) {
$record->assignmenttype = 'upload';
}
@ -73,14 +48,7 @@ class mod_assignment_generator extends testing_module_generator {
if (!isset($record->timedue)) {
$record->timedue = 0;
}
if (isset($options['idnumber'])) {
$record->cmidnumber = $options['idnumber'];
} else {
$record->cmidnumber = '';
}
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = assignment_add_instance($record, null);
return $this->post_add_instance($id, $record->coursemodule);
return parent::create_instance($record, (array)$options);
}
}

View file

@ -50,34 +50,12 @@ class mod_book_generator extends testing_module_generator {
parent::reset();
}
/**
* Create new book module instance
* @param array|stdClass $record
* @param array $options
* @return stdClass activity record with extra cmid field
*/
public function create_instance($record = null, array $options = null) {
global $CFG;
require_once("$CFG->dirroot/mod/book/locallib.php");
$this->instancecount++;
$i = $this->instancecount;
$record = (object)(array)$record;
$options = (array)$options;
if (empty($record->course)) {
throw new coding_exception('Module generator requires $record->course.');
}
if (!isset($record->name)) {
$record->name = get_string('pluginname', 'book') . ' ' . $i;
}
if (!isset($record->intro)) {
$record->intro = 'Test book ' . $i;
}
if (!isset($record->introformat)) {
$record->introformat = FORMAT_MOODLE;
}
if (!isset($record->numbering)) {
$record->numbering = BOOK_NUM_NUMBERS;
}
@ -85,9 +63,7 @@ class mod_book_generator extends testing_module_generator {
$record->customtitles = 0;
}
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = book_add_instance($record, null);
return $this->post_add_instance($id, $record->coursemodule);
return parent::create_instance($record, (array)$options);
}
public function create_chapter($record = null, array $options = null) {

View file

@ -50,34 +50,9 @@ class mod_chat_generator extends testing_module_generator {
parent::reset();
}
/**
* Create new chat module instance
* @param array|stdClass $record
* @param array $options
* @return stdClass activity record with extra cmid field
*/
public function create_instance($record = null, array $options = null) {
global $CFG;
require_once("$CFG->dirroot/mod/chat/lib.php");
$this->instancecount++;
$i = $this->instancecount;
$record = (object)(array)$record;
$options = (array)$options;
if (empty($record->course)) {
throw new coding_exception('Module generator requires $record->course.');
}
if (!isset($record->name)) {
$record->name = get_string('pluginname', 'chat') . ' ' . $i;
}
if (!isset($record->intro)) {
$record->intro = 'Test chat ' . $i;
}
if (!isset($record->introformat)) {
$record->introformat = FORMAT_MOODLE;
}
if (!isset($record->keepdays)) {
$record->keepdays = 0;
}
@ -94,9 +69,7 @@ class mod_chat_generator extends testing_module_generator {
$record->timemodified = time();
}
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = chat_add_instance($record);
return $this->post_add_instance($id, $record->coursemodule);
return parent::create_instance($record, (array)$options);
}
}

View file

@ -35,35 +35,9 @@ defined('MOODLE_INTERNAL') || die();
*/
class mod_choice_generator extends testing_module_generator {
/**
* Create new choice module instance
*
* @param array|stdClass $record
* @param array $options
* @return stdClass activity record with extra cmid field
*/
public function create_instance($record = null, array $options = null) {
global $CFG;
require_once("$CFG->dirroot/mod/choice/lib.php");
$this->instancecount++;
$i = $this->instancecount;
$record = (object)(array)$record;
$options = (array)$options;
if (empty($record->course)) {
throw new coding_exception('Module generator requires $record->course.');
}
if (!isset($record->name)) {
$record->name = get_string('pluginname', 'choice') . ' ' . $i;
}
if (!isset($record->intro)) {
$record->intro = 'Test choice ' . $i;
}
if (!isset($record->introformat)) {
$record->introformat = FORMAT_MOODLE;
}
if (!isset($record->timemodified)) {
$record->timemodified = time();
}
@ -74,8 +48,6 @@ class mod_choice_generator extends testing_module_generator {
$record->option[] = 'Wine';
$record->option[] = 'Spirits';
}
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = choice_add_instance($record);
return $this->post_add_instance($id, $record->coursemodule);
return parent::create_instance($record, (array)$options);
}
}

View file

@ -36,48 +36,16 @@ defined('MOODLE_INTERNAL') || die();
*/
class mod_data_generator extends testing_module_generator {
/**
* Create new data module instance
* @param array|stdClass $record
* @param array $options (mostly course_module properties)
* @return stdClass activity record with extra cmid field
*/
public function create_instance($record = null, array $options = null) {
global $CFG;
require_once("$CFG->dirroot/mod/data/locallib.php");
$this->instancecount++;
$i = $this->instancecount;
$record = (object)(array)$record;
$options = (array)$options;
if (empty($record->course)) {
throw new coding_exception('module generator requires $record->course');
}
if (!isset($record->name)) {
$record->name = get_string('pluginname', 'data').' '.$i;
}
if (!isset($record->intro)) {
$record->intro = 'Test database '.$i;
}
if (!isset($record->introformat)) {
$record->introformat = FORMAT_MOODLE;
}
if (!isset($record->assessed)) {
$record->assessed = 0;
}
if (!isset($record->scale)) {
$record->scale = 0;
}
if (isset($options['idnumber'])) {
$record->cmidnumber = $options['idnumber'];
} else {
$record->cmidnumber = '';
}
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = data_add_instance($record, null);
return $this->post_add_instance($id, $record->coursemodule);
return parent::create_instance($record, (array)$options);
}
}

View file

@ -35,36 +35,11 @@ defined('MOODLE_INTERNAL') || die();
*/
class mod_feedback_generator extends testing_module_generator {
/**
* Create new feedback module instance
*
* @param array|stdClass $record
* @param array $options
* @throws coding_exception
* @return stdClass activity record with extra cmid field
*/
public function create_instance($record = null, array $options = null) {
global $CFG;
require_once("$CFG->dirroot/mod/feedback/lib.php");
$this->instancecount++;
$i = $this->instancecount;
require_once($CFG->dirroot.'/mod/feedback/lib.php');
$record = (object)(array)$record;
$options = (array)$options;
if (empty($record->course)) {
throw new coding_exception('Module generator requires $record->course.');
}
if (!isset($record->name)) {
$record->name = get_string('pluginname', 'feedback') . ' ' . $i;
}
if (!isset($record->intro)) {
$record->intro = 'Test feedback ' . $i;
}
if (!isset($record->introformat)) {
$record->introformat = FORMAT_MOODLE;
}
if (!isset($record->anonymous)) {
$record->anonymous = FEEDBACK_ANONYMOUS_YES;
}
@ -105,9 +80,7 @@ class mod_feedback_generator extends testing_module_generator {
// Hack to bypass draft processing of feedback_add_instance.
$record->page_after_submit_editor['itemid'] = false;
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = feedback_add_instance($record);
return $this->post_add_instance($id, $record->coursemodule);
return parent::create_instance($record, (array)$options);
}
}

View file

@ -58,34 +58,11 @@ class mod_forum_generator extends testing_module_generator {
parent::reset();
}
/**
* Create new forum module instance
* @param array|stdClass $record
* @param array $options
* @return stdClass activity record with extra cmid field
*/
public function create_instance($record = null, array $options = null) {
global $CFG;
require_once("$CFG->dirroot/mod/forum/locallib.php");
$this->instancecount++;
$i = $this->instancecount;
require_once($CFG->dirroot.'/mod/forum/lib.php');
$record = (object)(array)$record;
$options = (array)$options;
if (empty($record->course)) {
throw new coding_exception('module generator requires $record->course');
}
if (!isset($record->name)) {
$record->name = get_string('pluginname', 'forum').' '.$i;
}
if (!isset($record->intro)) {
$record->intro = 'Test forum '.$i;
}
if (!isset($record->introformat)) {
$record->introformat = FORMAT_MOODLE;
}
if (!isset($record->type)) {
$record->type = 'general';
}
@ -98,15 +75,8 @@ class mod_forum_generator extends testing_module_generator {
if (!isset($record->forcesubscribe)) {
$record->forcesubscribe = FORUM_CHOOSESUBSCRIBE;
}
if (isset($options['idnumber'])) {
$record->cmidnumber = $options['idnumber'];
} else {
$record->cmidnumber = '';
}
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = forum_add_instance($record, null);
return $this->post_add_instance($id, $record->coursemodule);
return parent::create_instance($record, (array)$options);
}
/**

View file

@ -35,38 +35,5 @@ defined('MOODLE_INTERNAL') || die();
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class mod_label_generator extends testing_module_generator {
/**
* Create new label module instance
* @param array|stdClass $record
* @param array $options
* @return stdClass activity record with extra cmid field
*/
public function create_instance($record = null, array $options = null) {
global $CFG;
require_once("$CFG->dirroot/mod/label/lib.php");
$this->instancecount++;
$i = $this->instancecount;
$record = (object)(array)$record;
$options = (array)$options;
if (empty($record->course)) {
throw new coding_exception('module generator requires $record->course');
}
if (!isset($record->name)) {
$record->name = get_string('pluginname', 'label').' '.$i;
}
if (!isset($record->intro)) {
$record->intro = 'Test label '.$i;
}
if (!isset($record->introformat)) {
$record->introformat = FORMAT_MOODLE;
}
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = label_add_instance($record, null);
return $this->post_add_instance($id, $record->coursemodule);
}
// No additional fields in label module.
}

View file

@ -37,37 +37,9 @@ defined('MOODLE_INTERNAL') || die();
*/
class mod_lti_generator extends testing_module_generator {
/**
* Create new lti module instance
*
* @param array|stdClass $record
* @param array $options
* @throws coding_exception
* @return stdClass activity record with extra cmid field
*/
public function create_instance($record = null, array $options = null) {
global $CFG;
require_once("$CFG->dirroot/mod/lti/lib.php");
$this->instancecount++;
$i = $this->instancecount;
$record = (object) (array) $record;
$options = (array) $options;
if (empty($record->course)) {
throw new coding_exception('module generator requires $record->course');
}
if (!isset($record->name)) {
$record->name = get_string('pluginname', 'lti').' '.$i;
}
if (!isset($record->intro)) {
$record->intro = 'Test lti '.$i;
}
if (!isset($record->introformat)) {
$record->introformat = FORMAT_MOODLE;
}
if (!isset($record->toolurl)) {
$record->toolurl = 'http://www.imsglobal.org/developers/LTI/test/v1p1/tool.php';
}
@ -89,13 +61,6 @@ class mod_lti_generator extends testing_module_generator {
if (!isset($record->instructorchoiceacceptgrades)) {
$record->instructorchoiceacceptgrades = 1;
}
if (isset($options['idnumber'])) {
$record->cmidnumber = $options['idnumber'];
} else {
$record->cmidnumber = '';
}
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = lti_add_instance($record, null);
return $this->post_add_instance($id, $record->coursemodule);
return parent::create_instance($record, (array)$options);
}
}

View file

@ -36,34 +36,12 @@ defined('MOODLE_INTERNAL') || die();
*/
class mod_page_generator extends testing_module_generator {
/**
* Create new page module instance
* @param array|stdClass $record
* @param array $options
* @return stdClass activity record with extra cmid field
*/
public function create_instance($record = null, array $options = null) {
global $CFG;
require_once("$CFG->dirroot/mod/page/locallib.php");
$this->instancecount++;
$i = $this->instancecount;
require_once($CFG->dirroot . '/lib/resourcelib.php');
$record = (object)(array)$record;
$options = (array)$options;
if (empty($record->course)) {
throw new coding_exception('module generator requires $record->course');
}
if (!isset($record->name)) {
$record->name = get_string('pluginname', 'page').' '.$i;
}
if (!isset($record->intro)) {
$record->intro = 'Test page '.$i;
}
if (!isset($record->introformat)) {
$record->introformat = FORMAT_MOODLE;
}
if (!isset($record->content)) {
$record->content = 'Test page content';
}
@ -73,17 +51,10 @@ class mod_page_generator extends testing_module_generator {
if (!isset($record->display)) {
$record->display = RESOURCELIB_DISPLAY_AUTO;
}
if (isset($options['idnumber'])) {
$record->cmidnumber = $options['idnumber'];
} else {
$record->cmidnumber = '';
}
if (!isset($record->printintro)) {
$record->printintro = 0;
}
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = page_add_instance($record, null);
return $this->post_add_instance($id, $record->coursemodule);
return parent::create_instance($record, (array)$options);
}
}

View file

@ -25,38 +25,15 @@ defined('MOODLE_INTERNAL') || die();
*/
class mod_quiz_generator extends testing_module_generator {
/**
* Create new quiz module instance.
* @param array|stdClass $record
* @param array $options (mostly course_module properties)
* @return stdClass activity record with extra cmid field
*/
public function create_instance($record = null, array $options = null) {
global $CFG;
require_once("$CFG->dirroot/mod/quiz/locallib.php");
$this->instancecount++;
$i = $this->instancecount;
require_once($CFG->dirroot.'/mod/quiz/locallib.php');
$record = (object)(array)$record;
$options = (array)$options;
if (empty($record->course)) {
throw new coding_exception('module generator requires $record->course');
}
if (isset($options['idnumber'])) {
$record->cmidnumber = $options['idnumber'];
} else {
$record->cmidnumber = '';
}
$alwaysvisible = mod_quiz_display_options::DURING | mod_quiz_display_options::IMMEDIATELY_AFTER |
mod_quiz_display_options::LATER_WHILE_OPEN | mod_quiz_display_options::AFTER_CLOSE;
$defaultquizsettings = array(
'name' => get_string('pluginname', 'quiz').' '.$i,
'intro' => 'Test quiz ' . $i,
'introformat' => FORMAT_MOODLE,
'timeopen' => 0,
'timeclose' => 0,
'preferredbehaviour' => 'deferredfeedback',
@ -99,8 +76,6 @@ class mod_quiz_generator extends testing_module_generator {
}
}
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = quiz_add_instance($record);
return $this->post_add_instance($id, $record->coursemodule);
return parent::create_instance($record, (array)$options);
}
}

View file

@ -38,45 +38,23 @@ class mod_resource_generator extends testing_module_generator {
* Creates new resource module instance. By default it contains a short
* text file.
*
* @param array|stdClass $record Resource module record, as from form
* @param array $options Standard options about how to create it
* @return stdClass Activity record, with extra cmid field
* @param array|stdClass $record data for module being generated. Requires 'course' key
* (an id or the full object). Also can have any fields from add module form.
* @param null|array $options general options for course module. Since 2.6 it is
* possible to omit this argument by merging options into $record
* @return stdClass record from module-defined table with additional field
* cmid (corresponding id in course_modules table)
*/
public function create_instance($record = null, array $options = null) {
global $CFG, $USER;
require_once($CFG->dirroot . '/mod/resource/locallib.php');
// Count generated modules.
$this->instancecount++;
$i = $this->instancecount;
require_once($CFG->dirroot . '/lib/resourcelib.php');
// Ensure the record can be modified without affecting calling code.
$record = (object)(array)$record;
$options = (array)$options;
// Course is required.
if (empty($record->course)) {
throw new coding_exception('module generator requires $record->course');
}
// Fill in optional values if not specified.
if (!isset($record->name)) {
$record->name = get_string('pluginname', 'resource') . ' ' . $i;
}
if (!isset($record->intro)) {
$record->intro = 'Test resource ' . $i;
}
if (!isset($record->introformat)) {
$record->introformat = FORMAT_MOODLE;
}
if (!isset($record->display)) {
$record->display = RESOURCELIB_DISPLAY_AUTO;
}
if (isset($options['idnumber'])) {
$record->cmidnumber = $options['idnumber'];
} else {
$record->cmidnumber = '';
}
if (!isset($record->printintro)) {
$record->printintro = 0;
}
@ -101,14 +79,12 @@ class mod_resource_generator extends testing_module_generator {
// Add actual file there.
$filerecord = array('component' => 'user', 'filearea' => 'draft',
'contextid' => $usercontext->id, 'itemid' => $record->files,
'filename' => 'resource' . $i . '.txt', 'filepath' => '/');
'filename' => 'resource' . ($this->instancecount+1) . '.txt', 'filepath' => '/');
$fs = get_file_storage();
$fs->create_file_from_string($filerecord, 'Test resource ' . $i . ' file');
$fs->create_file_from_string($filerecord, 'Test resource ' . ($this->instancecount+1) . ' file');
}
// Do work to actually add the instance.
$record->coursemodule = $this->precreate_course_module($record->course, $options);
$id = resource_add_instance($record, null);
return $this->post_add_instance($id, $record->coursemodule);
return parent::create_instance($record, (array)$options);
}
}