FindElasticaSearchPageExtension   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 0%
Metric Value
wmc 7
lcom 1
cbo 2
dl 0
loc 51
ccs 0
cts 30
cp 0
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A SearchPageURI() 0 10 2
A SearchPageForm() 0 10 2
A getSearchPage() 0 19 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
	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