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);
 }
Esempio n. 2
0
 /**
  * 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());
 }
Esempio n. 3
0
                $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;