Completed
Push — master ( ad9ce2...b11c6d )
by mw
02:04
created

setSubpageDiscoverySupportState()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
ccs 3
cts 3
cp 1
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
3
namespace SBL;
4
5
use SMW\DIWikiPage;
6
use Title;
7
8
/**
9
 * @license GNU GPL v2+
10
 * @since 1.0
11
 *
12
 * @author mwjames
13
 */
14
class BySubpageLinksFinder {
15
16
	/**
17
	 * @var boolean
18
	 */
19
	private $isDiscoveryFallback = true;
20
21
	/**
22
	 * @var array
23
	 */
24
	private $antecedentHierarchyLinks = array();
25
26
	/**
27
	 * @since 1.0
28
	 *
29
	 * @param boolean $isDiscoveryFallback
30
	 */
31 10
	public function setSubpageDiscoveryFallback( $isDiscoveryFallback ) {
32 10
		$this->isDiscoveryFallback = $isDiscoveryFallback;
33 10
	}
34
35
	/**
36
	 * @since 1.0
37
	 *
38
	 * @return boolean
39
	 */
40 1
	public function isDiscoveryFallback() {
41 1
		return $this->isDiscoveryFallback;
42
	}
43
44
	/**
45
	 * @since  1.0
46
	 *
47
	 * @param DIWikiPage $subject
48
	 */
49 9
	public function findLinksBySubject( DIWikiPage $subject ) {
50
51 9
		$prefixedText = $subject->getTitle()->getPrefixedText();
52
53 9
		if ( !$this->canBuildLinksFromText( $prefixedText ) ) {
54 1
			return;
55
		}
56
57 8
		$this->buildHierarchicalLinksFromText( $prefixedText );
58 8
	}
59
60
	/**
61
	 * @since  1.0
62
	 *
63
	 * @return array
64
	 */
65 9
	public function getParents() {
66 9
		return $this->antecedentHierarchyLinks;
67
	}
68
69 9
	private function canBuildLinksFromText( $text ) {
70 9
		return preg_match( '/\//', $text );
71
	}
72
73 8
	private function buildHierarchicalLinksFromText( $text ) {
74
75 8
		$growinglink = '';
76 8
		$links = explode( '/', $text );
77
78
		// Remove the source
79 8
		array_pop( $links );
80
81 8
		foreach ( $links as $link ) {
82
83 8
			if ( $link !== '' && substr( $link, -1 ) !== ' ' ) {
84 5
				$growinglink .= $link;
85 5
				$this->antecedentHierarchyLinks[] = DIWikiPage::newFromTitle( Title::newFromText( $growinglink ) );
86 5
			}
87
88 8
			$growinglink .= '/';
89 8
		}
90 8
	}
91
92
}
93