From 681108226335a666d69f850eac895112e9fb70c8 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Thu, 30 Nov 2017 10:40:25 +1300 Subject: [PATCH] NEW Support environment variables for Solr index prefix and suffix --- src/Solr/SolrIndex.php | 12 +++++++----- tests/SolrIndexTest.php | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/Solr/SolrIndex.php b/src/Solr/SolrIndex.php index 1748363..733d220 100644 --- a/src/Solr/SolrIndex.php +++ b/src/Solr/SolrIndex.php @@ -3,6 +3,7 @@ namespace SilverStripe\FullTextSearch\Solr; use SilverStripe\Control\Director; +use SilverStripe\Core\Environment; use SilverStripe\FulltextSearch\Search\Indexes\SearchIndex; use SilverStripe\FullTextSearch\Solr\Services\SolrService; use SilverStripe\FulltextSearch\Search\Queries\SearchQuery; @@ -108,16 +109,17 @@ abstract class SolrIndex extends SearchIndex public function getIndexName() { $name = get_class($this); + $indexParts = [$name]; - if (defined('SS_SOLR_INDEX_PREFIX')) { - $name = SS_SOLR_INDEX_PREFIX . ''. $name; + if ($indexPrefix = Environment::getEnv('SS_SOLR_INDEX_PREFIX')) { + array_unshift($indexParts, $indexPrefix); } - if (defined('SS_SOLR_INDEX_SUFFIX')) { - $name = $name . '' . SS_SOLR_INDEX_SUFFIX; + if ($indexSuffix = Environment::getEnv('SS_SOLR_INDEX_SUFFIX')) { + $indexParts[] = $indexSuffix; } - return $name; + return implode($indexParts); } public function getTypes() diff --git a/tests/SolrIndexTest.php b/tests/SolrIndexTest.php index a8a6159..7be2fc5 100644 --- a/tests/SolrIndexTest.php +++ b/tests/SolrIndexTest.php @@ -3,6 +3,7 @@ namespace SilverStripe\FullTextSearch\Tests; use SilverStripe\Core\Config\Config; +use SilverStripe\Core\Environment; use SilverStripe\Core\Injector\Injector; use SilverStripe\Core\Kernel; use SilverStripe\Dev\SapphireTest; @@ -337,6 +338,22 @@ class SolrIndexTest extends SapphireTest ); } + public function testGetIndexName() + { + $index = new SolrIndexTest_FakeIndex2; + $this->assertSame(SolrIndexTest_FakeIndex2::class, $index->getIndexName()); + } + + public function testGetIndexNameWithPrefixAndSuffixFromEnvironment() + { + $index = new SolrIndexTest_FakeIndex2; + + Environment::putEnv('SS_SOLR_INDEX_PREFIX="foo_"'); + Environment::putEnv('SS_SOLR_INDEX_SUFFIX="_bar"'); + + $this->assertSame('foo_' . SolrIndexTest_FakeIndex2::class . '_bar', $index->getIndexName()); + } + protected function getFakeRawSolrResponse() { return new \Apache_Solr_Response(