ApprovedRevPropertyAnnotator   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Test Coverage

Coverage 90.48%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 16
c 1
b 0
f 0
dl 0
loc 63
ccs 19
cts 21
cp 0.9048
rs 10
wmc 7

5 Methods

Rating   Name   Duplication   Size   Complexity  
A addAnnotation() 0 15 3
A newDINumber() 0 2 1
A newDIProperty() 0 2 1
A setApprovedRev() 0 2 1
A __construct() 0 2 1
1
<?php
2
3
namespace SMW\ApprovedRevs\PropertyAnnotators;
4
5
use SMW\DIProperty;
6
use SMW\SemanticData;
7
use SMWDINumber as DINumber;
8
use SMW\ApprovedRevs\ApprovedRevsFacade;
9
use SMW\ApprovedRevs\PropertyRegistry;
10
11
/**
12
 * @private
13
 *
14
 * @license GNU GPL v2+
15
 */
16
class ApprovedRevPropertyAnnotator {
17
18
	/**
19
	 * @var ApprovedRevsFacade
20
	 */
21
	private $approvedRevsFacade;
22
23
	/**
24
	 * @var Integer|null
25
	 */
26
	private $approvedRev;
27
28
	/**
29
	 * @param ApprovedRevsFacade $approvedRevsFacade
30
	 */
31 3
	public function __construct( ApprovedRevsFacade $approvedRevsFacade ) {
32 3
		$this->approvedRevsFacade = $approvedRevsFacade;
33 3
	}
34
35
	/**
36
	 * @since 1.0
37
	 *
38
	 * @param integer $approvedRev
39
	 */
40 2
	public function setApprovedRev( $approvedRev ) {
41 2
		$this->approvedRev = $approvedRev;
42 2
	}
43
44
	/**
45
	 * @since 1.0
46
	 *
47
	 * @return DIProperty
48
	 */
49 2
	public function newDIProperty() {
50 2
		return new DIProperty( PropertyRegistry::SAR_PROP_APPROVED_REV );
51
	}
52
53
	/**
54
	 * @since 1.0
55
	 *
56
	 * @param SemanticData $semanticData
57
	 */
58 2
	public function addAnnotation( SemanticData $semanticData ) {
59
60 2
		if ( $this->approvedRev === null ) {
61
			$this->approvedRev = $this->approvedRevsFacade->getApprovedRevID(
62
				$semanticData->getSubject()->getTitle()
0 ignored issues
show
Bug introduced by
It seems like $semanticData->getSubject()->getTitle() can also be of type null; however, parameter $title of SMW\ApprovedRevs\Approve...ade::getApprovedRevID() does only seem to accept Title, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

62
				/** @scrutinizer ignore-type */ $semanticData->getSubject()->getTitle()
Loading history...
63
			);
64
		}
65
66 2
		$property = $this->newDIProperty();
67 2
		$semanticData->removeProperty( $property );
68
69 2
		if ( is_numeric( $this->approvedRev ) ) {
70 1
			$semanticData->addPropertyObjectValue(
71 1
				$property,
72 1
				$this->newDINumber()
73
			);
74
		}
75 2
	}
76
77 1
	private function newDINumber() {
78 1
		return new DINumber( $this->approvedRev );
79
	}
80
81
}
82