public function test_data_delete_record() { global $DB; $this->resetAfterTest(); // Create a record for deleting. $this->setAdminUser(); $course = $this->getDataGenerator()->create_course(); $record = new stdClass(); $record->course = $course->id; $record->name = "Mod data delete test"; $record->intro = "Some intro of some sort"; $module = $this->getDataGenerator()->create_module('data', $record); $field = data_get_field_new('text', $module); $fielddetail = new stdClass(); $fielddetail->d = $module->id; $fielddetail->mode = 'add'; $fielddetail->type = 'text'; $fielddetail->sesskey = sesskey(); $fielddetail->name = 'Name'; $fielddetail->description = 'Some name'; $field->define_field($fielddetail); $field->insert_field(); $recordid = data_add_record($module); $datacontent = array(); $datacontent['fieldid'] = $field->field->id; $datacontent['recordid'] = $recordid; $datacontent['content'] = 'Asterix'; $contentid = $DB->insert_record('data_content', $datacontent); $cm = get_coursemodule_from_instance('data', $module->id, $course->id); // Check to make sure that we have a database record. $data = $DB->get_records('data', array('id' => $module->id)); $this->assertEquals(1, count($data)); $datacontent = $DB->get_records('data_content', array('id' => $contentid)); $this->assertEquals(1, count($datacontent)); $datafields = $DB->get_records('data_fields', array('id' => $field->field->id)); $this->assertEquals(1, count($datafields)); $datarecords = $DB->get_records('data_records', array('id' => $recordid)); $this->assertEquals(1, count($datarecords)); // Test to see if a failed delete returns false. $result = data_delete_record(8798, $module, $course->id, $cm->id); $this->assertFalse($result); // Delete the record. $result = data_delete_record($recordid, $module, $course->id, $cm->id); // Check that all of the record is gone. $datacontent = $DB->get_records('data_content', array('id' => $contentid)); $this->assertEquals(0, count($datacontent)); $datarecords = $DB->get_records('data_records', array('id' => $recordid)); $this->assertEquals(0, count($datarecords)); // Make sure the function returns true on a successful deletion. $this->assertTrue($result); }
/** * Test the record deleted event. */ public function test_record_deleted() { global $DB; // Create a course we are going to add a data module to. $course = $this->getDataGenerator()->create_course(); // The generator used to create a data module. $generator = $this->getDataGenerator()->get_plugin_generator('mod_data'); // Create a data module. $data = $generator->create_instance(array('course' => $course->id)); // Now we want to create a field. $field = data_get_field_new('text', $data); $fielddata = new stdClass(); $fielddata->name = 'Test'; $fielddata->description = 'Test description'; $field->define_field($fielddata); $field->insert_field(); // Create data record. $datarecords = new stdClass(); $datarecords->userid = '2'; $datarecords->dataid = $data->id; $datarecords->id = $DB->insert_record('data_records', $datarecords); // Create data content. $datacontent = new stdClass(); $datacontent->fieldid = $field->field->id; $datacontent->recordid = $datarecords->id; $datacontent->id = $DB->insert_record('data_content', $datacontent); // Trigger and capture the event for deleting the data record. $sink = $this->redirectEvents(); data_delete_record($datarecords->id, $data, $course->id, $data->cmid); $events = $sink->get_events(); $event = reset($events); // Check that the event data is valid. $this->assertInstanceOf('\\mod_data\\event\\record_deleted', $event); $this->assertEquals(context_module::instance($data->cmid), $event->get_context()); $expected = array($course->id, 'data', 'record delete', 'view.php?id=' . $data->cmid, $data->id, $data->cmid); $this->assertEventLegacyLogData($expected, $event); $this->assertEventContextNotUsed($event); $url = new moodle_url('/mod/data/view.php', array('d' => $data->id)); $this->assertEquals($url, $event->get_url()); }
$records[] = $deleterecord; echo data_print_template('singletemplate', $records, $data, '', 0, true); echo $OUTPUT->footer(); exit; } } } } // Multi-delete. if ($serialdelete) { $multidelete = json_decode($serialdelete); } if ($multidelete && confirm_sesskey() && $canmanageentries) { if ($confirm = optional_param('confirm', 0, PARAM_INT)) { foreach ($multidelete as $value) { data_delete_record($value, $data, $course->id, $cm->id); } } else { $validrecords = array(); $recordids = array(); foreach ($multidelete as $value) { $allnamefields = user_picture::fields('u'); // Remove the id from the string. This already exists in the sql statement. $allnamefields = str_replace('u.id,', '', $allnamefields); $dbparams = array('id' => $value); if ($deleterecord = $DB->get_record_sql("SELECT dr.*, {$allnamefields}\n FROM {data_records} dr\n JOIN {user} u ON dr.userid = u.id\n WHERE dr.id = ?", $dbparams)) { // Need to check this is valid. if ($deleterecord->dataid == $data->id) { // Must be from this database. $validrecords[] = $deleterecord; $recordids[] = $deleterecord->id;