ApprovedRevPropertyAnnotator::newDINumber()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 2
ccs 2
cts 2
cp 1
crap 1
rs 10
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