addresses MDL-19154. May not fix every thing here... more tests in progress.

This commit is contained in:
diml
2009-05-11 19:52:13 +00:00
parent a9e79cb1d7
commit 67b98646eb
+35 -29
View File
@@ -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;
}
}