Skip to content

Commit cb3a746

Browse files
TomoTsuyukidmitriim
authored andcommitted
Issue #66: Add template for search
1 parent 44ed42a commit cb3a746

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

classes/search/cmsfield.php

+21
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,14 @@ public function get_document($record, $options = []) {
131131
$value = $record->value;
132132
$valueformat = $record->valueformat;
133133
}
134+
// Add mustache template to value.
135+
if (!empty($defaultvalues[$record->typeid]->mustache)) {
136+
$value .= ' ' . $defaultvalues[$record->typeid]->mustache;
137+
if (empty($title)) {
138+
$title = $defaultvalues[$record->typeid]->name;
139+
}
140+
$valueformat = FORMAT_HTML;
141+
}
134142

135143
// Prepare associative array with data from DB.
136144
$doc = \core_search\document_factory::instance($record->id, $this->componentname, $this->areaname);
@@ -180,6 +188,19 @@ protected function get_default_values() {
180188
}
181189
$defaultvalues[$cmstype->typeid] = $data;
182190
}
191+
192+
// Add mustache template for default value.
193+
$sql = "SELECT mct.id, mct.name, mct.mustache
194+
FROM {cms_types} mct";
195+
$mustaches = $DB->get_records_sql($sql);
196+
foreach ($mustaches as $mustache) {
197+
if (empty($defaultvalues[$mustache->id])) {
198+
$defaultvalues[$mustache->id] = new \stdClass();
199+
}
200+
$defaultvalues[$mustache->id]->name = $mustache->name;
201+
$defaultvalues[$mustache->id]->mustache = $mustache->mustache;
202+
}
203+
183204
$this->defaultvalues = $defaultvalues;
184205
}
185206
return $this->defaultvalues;

tests/search/search_test.php

+5-3
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public function setUp(): void {
8282
$cmstype = new cms_types();
8383
$cmstype->set('name', 'Overview')
8484
->set('idnumber', 'overview')
85+
->set('mustache', 'Template doc')
8586
->set('title_mustache', 'Overview');
8687
$cmstype->save();
8788
$fieldcategory = self::getDataGenerator()->create_custom_field_category([
@@ -187,7 +188,8 @@ public function test_get_document_recordset(): void {
187188
$this->assertEquals($course->id, $doc->get('courseid'));
188189
$this->assertEquals($context->id, $doc->get('contextid'));
189190
$this->assertEquals($this->field->get('name'), $doc->get('title'));
190-
$this->assertEquals($data->value, $doc->get('content'));
191+
$this->assertStringContainsString($data->value, $doc->get('content'));
192+
$this->assertStringContainsString($this->cmstype->get('mustache'), $doc->get('content'));
191193

192194
// Static caches are working.
193195
$dbreads = $DB->perf_get_reads();
@@ -238,7 +240,7 @@ public function test_default_content(): void {
238240
$doc = $searcharea->get_document($record);
239241
$this->assertInstanceOf('\core_search\document', $doc);
240242
// Confirm the content is from defaultvalue from cms fieldtype.
241-
$this->assertEquals('Default Text Overview', $doc->get('content'));
243+
$this->assertStringContainsString('Default Text Overview', $doc->get('content'));
242244
$count++;
243245
}
244246
$this->assertEquals(1, $count);
@@ -253,7 +255,7 @@ public function test_default_content(): void {
253255
foreach ($recordset as $record) {
254256
$this->assertInstanceOf('stdClass', $record);
255257
$doc = $searcharea->get_document($record);
256-
$this->assertEquals('Update test 1', $doc->get('content'));
258+
$this->assertStringContainsString('Update test 1', $doc->get('content'));
257259
$count++;
258260
}
259261
$this->assertEquals(1, $count);

0 commit comments

Comments
 (0)