Skip to content

Commit e30930e

Browse files
committed
Issue #66: Add template for search
1 parent cd334d5 commit e30930e

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
@@ -130,6 +130,14 @@ public function get_document($record, $options = []) {
130130
$value = $record->value;
131131
$valueformat = $record->valueformat;
132132
}
133+
// Add mustache template to value.
134+
if (!empty($defaultvalues[$record->typeid]->mustache)) {
135+
$value .= ' ' . $defaultvalues[$record->typeid]->mustache;
136+
if (empty($title)) {
137+
$title = $defaultvalues[$record->typeid]->name;
138+
}
139+
$valueformat = FORMAT_HTML;
140+
}
133141

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