FindElasticaSearchPageExtension::getSearchPage()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 19
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12
Metric Value
dl 0
loc 19
ccs 0
cts 16
cp 0
rs 9.4286
cc 3
eloc 14
nc 4
nop 1
crap 12
1
<?php
2
3
class FindElasticaSearchPageExtension extends Extension {
4
5
	public static $fixture_file = 'elastica/tests/ElasticaTest.yml';
6
7
	private $_CachedLastEdited = null;
8
9
10
	public function SearchPageURI($identifier) {
11
		$result = '';
12
13
		$searchPage = $this->getSearchPage($identifier);
14
15
		if ($searchPage) {
16
			$result = $searchPage->AbsoluteLink();
17
		}
18
		return $result;
19
	}
20
21
22
	public function SearchPageForm($identifier, $buttonTextOverride = null) {
23
		$result = null;
24
25
		$searchPage = $this->getSearchPage($identifier);
26
27
		if ($searchPage) {
28
			$result = $searchPage->SearchForm($buttonTextOverride);
29
		}
30
		return $result;
31
	}
32
33
34
	public function getSearchPage($identifier) {
35
		if (!isset($this->_CachedLastEdited)) {
36
			$this->_CachedLastEdited = ElasticSearchPage::get()->max('LastEdited');
37
		}
38
		$ck = $this->_CachedLastEdited;
39
		$ck = str_replace(' ', '_', $ck);
40
		$ck = str_replace(':', '_', $ck);
41
		$ck = str_replace('-', '_', $ck);
42
43
		$cache = SS_Cache::factory('searchpagecache');
44
		$searchPage = null;
45
		$cachekeyname = 'searchpageuri'.$identifier.$this->owner->Locale.$ck;
46
47
		if(!($searchPage = unserialize($cache->load($cachekeyname)))) {
48
			$searchPage = ElasticSearchPage::get()->filter('Identifier',$identifier)->first();
49
			$cache->save(serialize($searchPage), $cachekeyname);
50
		}
51
		return $searchPage;
52
	}
53
}
54