MDL-77791 data: Fix file attachment to search doc

This commit is contained in:
David Castro 2023-04-13 14:03:38 -05:00
parent b2d0712748
commit e5c89630af
2 changed files with 40 additions and 22 deletions

View File

@ -239,12 +239,30 @@ class entry extends \core_search\base_mod {
$cm = $this->get_cm('data', $entry->dataid, $doc->get('courseid'));
$context = \context_module::instance($cm->id);
// Get the files and attach them.
$fs = get_file_storage();
$files = $fs->get_area_files($context->id, 'mod_data', 'content', $entryid, 'filename', false);
foreach ($files as $file) {
$doc->add_stored_file($file);
// Get all content fields which have files in them.
$contentssql = "
SELECT con.*
FROM {data_content} con
JOIN {files} fil
ON fil.component = :component
AND fil.filearea = :filearea
AND fil.itemid = con.id
WHERE con.recordid = :recordid
";
$contents = $DB->get_recordset_sql($contentssql, [
'recordid' => $entryid,
'component' => 'mod_data',
'filearea' => 'content',
]);
foreach ($contents as $content) {
// Get the files and attach them.
$fs = get_file_storage();
$files = $fs->get_area_files($context->id, 'mod_data', 'content', $content->id, 'filename', false);
foreach ($files as $file) {
$doc->add_stored_file($file);
}
}
$contents->close();
}
/**

View File

@ -923,22 +923,22 @@ class search_test extends \advanced_testcase {
$data1record1id = $DB->insert_record('data_records', $record);
$filerecord = array(
'contextid' => \context_module::instance($data1->cmid)->id,
'component' => 'mod_data',
'filearea' => 'content',
'itemid' => $data1record1id,
'filepath' => '/',
'filename' => 'myfile1.txt'
);
$data1record1file = $fs->create_file_from_string($filerecord, 'Some contents 1');
$record = new \stdClass;
$record->fieldid = $data1filefieldid;
$record->recordid = $data1record1id;
$record->content = 'myfile1.txt';
$DB->insert_record('data_content', $record);
$data1contentfileid1 = $DB->insert_record('data_content', $record);
$filerecord = [
'contextid' => \context_module::instance($data1->cmid)->id,
'component' => 'mod_data',
'filearea' => 'content',
'itemid' => $data1contentfileid1,
'filepath' => '/',
'filename' => 'myfile1.txt'
];
$data1record1file = $fs->create_file_from_string($filerecord, 'Some contents 1');
$record = new \stdClass;
$record->fieldid = $data1textfieldid;
@ -960,15 +960,15 @@ class search_test extends \advanced_testcase {
$record->groupid = 0;
$data1record2id = $DB->insert_record('data_records', $record);
$filerecord['itemid'] = $data1record2id;
$filerecord['filename'] = 'myfile2.txt';
$data1record2file = $fs->create_file_from_string($filerecord, 'Some contents 2');
$record = new \stdClass;
$record->fieldid = $data1filefieldid;
$record->recordid = $data1record2id;
$record->content = 'myfile2.txt';
$DB->insert_record('data_content', $record);
$data1contentfileid2 = $DB->insert_record('data_content', $record);
$filerecord['itemid'] = $data1contentfileid2;
$filerecord['filename'] = 'myfile2.txt';
$data1record2file = $fs->create_file_from_string($filerecord, 'Some contents 2');
$record = new \stdClass;
$record->fieldid = $data1textfieldid;