addresses MDL-19154. May not fix every thing here... more tests in progress.
This commit is contained in:
@@ -85,7 +85,7 @@ class DataCommentSearchDocument extends SearchDocument {
|
||||
$data->database = $comment['dataid'];
|
||||
|
||||
// construct the parent class
|
||||
parent::__construct($doc, $data, $course_id, $comment['groupid'], $comment['userid'], PATH_FOR_SEARCH_TYPE_DATA);
|
||||
parent::__construct($doc, $data, $course_id, $comment['groupid'], $comment['userid'], 'mod/'.SEARCH_TYPE_DATA);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,19 +109,21 @@ function data_make_link($database_id, $record_id) {
|
||||
* @uses CFG
|
||||
* @return an array of objects representing the data records.
|
||||
*/
|
||||
function data_get_records($database_id, $typematch = '*') {
|
||||
function data_get_records($database_id, $typematch = '*', $recordid = 0) {
|
||||
global $CFG;
|
||||
|
||||
$fieldset = get_records('data_fields', 'dataid', $database_id);
|
||||
$uniquerecordclause = ($recordid > 0) ? " AND c.recordid = $recordid " : '' ;
|
||||
$query = "
|
||||
SELECT
|
||||
c.*
|
||||
FROM
|
||||
{$CFG->prefix}data_content c,
|
||||
{$CFG->prefix}data_records r
|
||||
{$CFG->prefix}data_content as c,
|
||||
{$CFG->prefix}data_records as r
|
||||
WHERE
|
||||
c.recordid = r.id AND
|
||||
r.dataid = {$database_id}
|
||||
$uniquerecordclause
|
||||
ORDER BY
|
||||
c.fieldid
|
||||
";
|
||||
@@ -161,8 +163,8 @@ function data_get_comments($database_id) {
|
||||
c.modified,
|
||||
r.dataid
|
||||
FROM
|
||||
{$CFG->prefix}data_comments c,
|
||||
{$CFG->prefix}data_records r
|
||||
{$CFG->prefix}data_comments as c,
|
||||
{$CFG->prefix}data_records as r
|
||||
WHERE
|
||||
c.recordid = r.id
|
||||
";
|
||||
@@ -207,14 +209,12 @@ function data_get_content_for_index(&$database) {
|
||||
foreach($records_content[$aRecordId] as $aField){
|
||||
$content = @$content.' '.$aField;
|
||||
}
|
||||
if (strlen($content) > 0) {
|
||||
unset($recordMetaData);
|
||||
$recordMetaData = get_record('data_records', 'id', $aRecordId);
|
||||
$recordMetaData->title = $first;
|
||||
$recordTitles[$aRecordId] = $first;
|
||||
$recordMetaData->content = $content;
|
||||
$documents[] = new DataSearchDocument(get_object_vars($recordMetaData), $database->course, $context->id);
|
||||
}
|
||||
unset($recordMetaData);
|
||||
$recordMetaData = get_record('data_records', 'id', $aRecordId);
|
||||
$recordMetaData->title = $first;
|
||||
$recordTitles[$aRecordId] = $first;
|
||||
$recordMetaData->content = $content;
|
||||
$documents[] = new DataSearchDocument(get_object_vars($recordMetaData), $database->course, $context->id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ function data_get_content_for_index(&$database) {
|
||||
$records_comments = data_get_comments($database->id);
|
||||
if ($records_comments){
|
||||
foreach($records_comments as $aComment){
|
||||
$aComment->title = $recordsTitle[$aComment->recordid];
|
||||
$aComment->title = $recordsTitles[$aComment->recordid];
|
||||
$documents[] = new DataCommentSearchDocument(get_object_vars($aComment), $database->course, $context->id);
|
||||
}
|
||||
}
|
||||
@@ -245,23 +245,28 @@ function data_single_document($id, $itemtype) {
|
||||
$coursemodule = get_field('modules', 'id', 'name', 'data');
|
||||
$cm = get_record('course_modules', 'course', $record_course, 'module', $coursemodule, 'instance', $recordMetaData->dataid);
|
||||
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
|
||||
// get text fields ids in this data (computable fields)
|
||||
// compute text
|
||||
$recordData = get_records_select('data_content', "recordid = $id AND type = 'text'", 'recordid');
|
||||
$accumulator = '';
|
||||
$recordData = data_get_records($recordMetaData->dataid, 'text', $id);
|
||||
if ($recordData){
|
||||
$first = $recordData[0];
|
||||
if (count($recordData) > 1){
|
||||
$others = array_splice($recordData, 0, 1);
|
||||
foreach($others as $aDatum){
|
||||
$accumulator .= $data->content.' '.$data->content1.' '.$data->content2.' '.$data->content3.' '.$data->content4.' ';
|
||||
}
|
||||
$dataArray = array_values($recordData);
|
||||
$record_content = $dataArray[0]; // We cannot have more than one record here
|
||||
|
||||
// extract title as first record in order
|
||||
$first = $record_content['_first'];
|
||||
unset($record_content['_first']);
|
||||
|
||||
// concatenates all other texts
|
||||
$content = '';
|
||||
foreach($record_content as $aField){
|
||||
$content = @$content.' '.$aField;
|
||||
}
|
||||
unset($recordMetaData);
|
||||
$recordMetaData = get_record('data_records', 'id', $aRecordId);
|
||||
$recordMetaData->title = $first;
|
||||
$recordMetaData->content = $content;
|
||||
return new DataSearchDocument(get_object_vars($recordMetaData), $record_course, $context->id);
|
||||
}
|
||||
// add extra fields
|
||||
$recordMetaData->title = $first;
|
||||
$recordMetaData->content = $accumulator;
|
||||
// make document
|
||||
$documents[] = new DataSearchDocument(get_object_vars($recordMetaData), $record_course, $context->id);
|
||||
} elseif($itemtype == 'comment') {
|
||||
// get main records
|
||||
$comment = get_record('data_comments', 'id', $id);
|
||||
@@ -276,9 +281,10 @@ function data_single_document($id, $itemtype) {
|
||||
$comment->dataid = $record->dataid;
|
||||
$comment->groupid = $record->groupid;
|
||||
// make document
|
||||
$documents[] = new DataCommentSearchDocument(get_object_vars($comment), $record_course, $context->id);
|
||||
return new DataCommentSearchDocument(get_object_vars($comment), $record_course, $context->id);
|
||||
} else {
|
||||
mtrace('Error : bad or missing item type');
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user