Completed
Push — dev2 ( 5ba5d5...dd5bec )
by Gordon
42:23 queued 39:29
created

FindElasticaSearchPageExtension::getSearchPage()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 19
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

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