. /** * List of deprecated mod_data functions. * * @package mod_data * @copyright 2021 Jun Pataleta * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ /** * @deprecated since Moodle 3.11 */ function data_get_completion_state() { $completionclass = \mod_data\completion\custom_completion::class; throw new coding_exception(__FUNCTION__ . "() has been removed, please use the '{$completionclass}' class instead"); } /** * @deprecated since Moodle 4.3. * @global object * @param array $export * @param string $dataname * @param int $count * @return string */ function data_export_xls($export, $dataname, $count) { global $CFG; debugging('Function data_export_xls() has been deprecated, because xls export has been dropped.', DEBUG_DEVELOPER); require_once("$CFG->libdir/excellib.class.php"); $filename = clean_filename("{$dataname}-{$count}_record"); if ($count > 1) { $filename .= 's'; } $filename .= clean_filename('-' . gmdate("Ymd_Hi")); $filename .= '.xls'; $filearg = '-'; $workbook = new MoodleExcelWorkbook($filearg); $workbook->send($filename); $worksheet = array(); $worksheet[0] = $workbook->add_worksheet(''); $rowno = 0; foreach ($export as $row) { $colno = 0; foreach($row as $col) { $worksheet[0]->write($rowno, $colno, $col); $colno++; } $rowno++; } $workbook->close(); return $filename; } /** * @deprecated since Moodle 4.3, exporting is now being done by \mod_data\local\exporter\csv_entries_exporter * @global object * @param array $export * @param string $delimiter_name * @param object $database * @param int $count * @param bool $return * @return string|void */ function data_export_csv($export, $delimiter_name, $database, $count, $return=false) { global $CFG; debugging('Function data_export_csv has been deprecated. Exporting is now being done by ' . '\mod_data\local\csv_exporter.', DEBUG_DEVELOPER); require_once($CFG->libdir . '/csvlib.class.php'); $filename = $database . '-' . $count . '-record'; if ($count > 1) { $filename .= 's'; } if ($return) { return csv_export_writer::print_array($export, $delimiter_name, '"', true); } else { csv_export_writer::download_array($filename, $export, $delimiter_name); } } /** * @deprecated since Moodle 4.3, exporting is now being done by \mod_data\local\exporter\ods_entries_exporter * @global object * @param array $export * @param string $dataname * @param int $count * @param string */ function data_export_ods($export, $dataname, $count) { global $CFG; debugging('Function data_export_ods has been deprecated. Exporting is now being done by ' . '\mod_data\local\ods_exporter.', DEBUG_DEVELOPER); require_once("$CFG->libdir/odslib.class.php"); $filename = clean_filename("{$dataname}-{$count}_record"); if ($count > 1) { $filename .= 's'; } $filename .= clean_filename('-' . gmdate("Ymd_Hi")); $filename .= '.ods'; $filearg = '-'; $workbook = new MoodleODSWorkbook($filearg); $workbook->send($filename); $worksheet = array(); $worksheet[0] = $workbook->add_worksheet(''); $rowno = 0; foreach ($export as $row) { $colno = 0; foreach($row as $col) { $worksheet[0]->write($rowno, $colno, $col); $colno++; } $rowno++; } $workbook->close(); return $filename; } /** * @deprecated since Moodle 4.3, use \mod_data\local\exporter\utils::data_exportdata with a \mod_data\local\exporter\entries_exporter object * @global object * @param int $dataid * @param array $fields * @param array $selectedfields * @param int $currentgroup group ID of the current group. This is used for * exporting data while maintaining group divisions. * @param object $context the context in which the operation is performed (for capability checks) * @param bool $userdetails whether to include the details of the record author * @param bool $time whether to include time created/modified * @param bool $approval whether to include approval status * @param bool $tags whether to include tags * @return array */ function data_get_exportdata($dataid, $fields, $selectedfields, $currentgroup=0, $context=null, $userdetails=false, $time=false, $approval=false, $tags = false) { global $DB; debugging('Function data_get_exportdata has been deprecated. Use ' . '\mod_data\local\exporter_utils::data_exportdata with a \mod_data\local\exporter object instead', DEBUG_DEVELOPER); if (is_null($context)) { $context = context_system::instance(); } // exporting user data needs special permission $userdetails = $userdetails && has_capability('mod/data:exportuserinfo', $context); $exportdata = array(); // populate the header in first row of export foreach($fields as $key => $field) { if (!in_array($field->field->id, $selectedfields)) { // ignore values we aren't exporting unset($fields[$key]); } else { $exportdata[0][] = $field->field->name; } } if ($tags) { $exportdata[0][] = get_string('tags', 'data'); } if ($userdetails) { $exportdata[0][] = get_string('user'); $exportdata[0][] = get_string('username'); $exportdata[0][] = get_string('email'); } if ($time) { $exportdata[0][] = get_string('timeadded', 'data'); $exportdata[0][] = get_string('timemodified', 'data'); } if ($approval) { $exportdata[0][] = get_string('approved', 'data'); } $datarecords = $DB->get_records('data_records', array('dataid'=>$dataid)); ksort($datarecords); $line = 1; foreach($datarecords as $record) { // get content indexed by fieldid if ($currentgroup) { $select = 'SELECT c.fieldid, c.content, c.content1, c.content2, c.content3, c.content4 FROM {data_content} c, {data_records} r WHERE c.recordid = ? AND r.id = c.recordid AND r.groupid = ?'; $where = array($record->id, $currentgroup); } else { $select = 'SELECT fieldid, content, content1, content2, content3, content4 FROM {data_content} WHERE recordid = ?'; $where = array($record->id); } if( $content = $DB->get_records_sql($select, $where) ) { foreach($fields as $field) { $contents = ''; if(isset($content[$field->field->id])) { $contents = $field->export_text_value($content[$field->field->id]); } $exportdata[$line][] = $contents; } if ($tags) { $itemtags = \core_tag_tag::get_item_tags_array('mod_data', 'data_records', $record->id); $exportdata[$line][] = implode(', ', $itemtags); } if ($userdetails) { // Add user details to the export data $userdata = get_complete_user_data('id', $record->userid); $exportdata[$line][] = fullname($userdata); $exportdata[$line][] = $userdata->username; $exportdata[$line][] = $userdata->email; } if ($time) { // Add time added / modified $exportdata[$line][] = userdate($record->timecreated); $exportdata[$line][] = userdate($record->timemodified); } if ($approval) { // Add approval status $exportdata[$line][] = (int) $record->approved; } } $line++; } $line--; return $exportdata; } /** * @deprecated since Moodle 4.3, importing is now being done by \mod_data\local\importer\csv_importer::import_csv * Import records for a data instance from csv data. * * @param object $cm Course module of the data instance. * @param object $data The data instance. * @param string $csvdata The csv data to be imported. * @param string $encoding The encoding of csv data. * @param string $fielddelimiter The delimiter of the csv data. * @return int Number of records added. */ function data_import_csv($cm, $data, &$csvdata, $encoding, $fielddelimiter) { debugging('Function data_import_csv has been deprecated. ' . 'Importing is now being done by \mod_data\local\csv_importer::import_csv.', DEBUG_DEVELOPER); // New function needs a file, not the file content, so we have to temporarily put the content into a file. $tmpdir = make_request_directory(); $tmpfilename = 'tmpfile.csv'; $tmpfilepath = $tmpdir . '/tmpfile.csv'; file_put_contents($tmpfilepath, $csvdata); $importer = new \mod_data\local\importer\csv_entries_importer($tmpfilepath, $tmpfilename); $importer->import_csv($cm, $data, $encoding, $fielddelimiter); return 0; }