Source of file SolrMetadataExtension.php
Size: 1,728 Bytes - Last Modified: 2021-12-23T10:25:41+00:00
/var/www/docs.ssmods.com/process/src/code/extensions/SolrMetadataExtension.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | <?php /** * @author <marcus@symbiote.com.au> * @license BSD License http://www.silverstripe.org/bsd-license */ class SolrMetadataExtension extends DataExtension { public function onBeforeWrite() { parent::onBeforeWrite(); } public function updateSolrSearchableFields(&$fields) { if ($this->owner->hasExtension('MetadataExtension')) { $all = $this->owner->getAllMetadata(); foreach ($all as $schema => $schemaFields) { foreach ($schemaFields as $key => $val) { if (strlen($val)) { $fields[$key] = true; } } } } } public function additionalSolrValues() { $fields = array(); if ($this->owner->hasExtension('MetadataExtension')) { foreach ($this->owner->getSchemas() as $schema) { foreach ($schema->Fields() as $field) { $value = $this->owner->Metadata($schema, $field); if (!$value || ($value instanceof DBField && !$value->hasValue())) { continue; } if (is_object($value)) { $value = $value instanceof DBField ? $value->Nice() : $value->getTitle(); } if ($field instanceof MetadataSelectField) { $value = explode(',', $value); } if (is_array($value) || strlen($value)) { $fields[$field->Name] = $value; } } } } return $fields; } } |