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

FindElasticaSearchPageExtension::SearchPageForm()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2
Metric Value
dl 0
loc 10
ccs 7
cts 7
cp 1
rs 9.4286
cc 2
eloc 6
nc 2
nop 2
crap 2
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