Completed
Push — master ( fec93e...712a1b )
by mw
02:31
created

BySubpageLinksFinder::getParents()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 3
ccs 0
cts 0
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
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 = [];
25
26
	/**
27
	 * @since 1.0
28
	 *
29
	 * @param boolean $isDiscoveryFallback
30
	 */
31 11
	public function setSubpageDiscoveryFallback( $isDiscoveryFallback ) {
32 11
		$this->isDiscoveryFallback = $isDiscoveryFallback;
33 11
	}
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 10
	public function findLinksBySubject( DIWikiPage $subject ) {
50
51 10
		$prefixedText = $subject->getTitle()->getPrefixedText();
52
53
		if ( !$this->canBuildLinksFromText( $prefixedText ) ) {
54
			return;
55 10
		}
56
57 10
		$this->buildHierarchicalLinksFromText( $prefixedText );
58 1
	}
59
60
	/**
61 9
	 * @since  1.0
62 9
	 *
63
	 * @return array
64
	 */
65
	public function getParents() {
66
		return $this->antecedentHierarchyLinks;
67
	}
68
69 10
	private function canBuildLinksFromText( $text ) {
70 10
		return preg_match( '/\//', $text );
71
	}
72
73 10
	private function buildHierarchicalLinksFromText( $text ) {
74 10
75
		$growinglink = '';
76
		$links = explode( '/', $text );
77 9
78
		// Remove the source
79 9
		array_pop( $links );
80 9
81
		foreach ( $links as $link ) {
82
83 9
			if ( $link !== '' && substr( $link, -1 ) !== ' ' ) {
84
				$growinglink .= $link;
85 9
				$this->antecedentHierarchyLinks[] = DIWikiPage::newFromTitle( Title::newFromText( $growinglink ) );
86
			}
87 9
88 6
			$growinglink .= '/';
89 6
		}
90 6
	}
91
92
}
93