Completed
Push — master ( 298114...9107ad )
by mw
02:42
created

ApprovedRevPropertyAnnotator::addAnnotation()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 17
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 4.3731

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 17
ccs 10
cts 14
cp 0.7143
rs 9.2
cc 4
eloc 10
nc 4
nop 2
crap 4.3731
1
<?php
2
3
namespace SESP\PropertyAnnotators;
4
5
use SMW\DIProperty;
6
use SMW\SemanticData;
7
use SMWDataItem as DataItem;
8
use SMWDINumber as DINumber;
9
use SESP\PropertyAnnotator;
10
use SESP\AppFactory;
11
use ApprovedRevs;
12
13
/**
14
 * @private
15
 * @ingroup SESP
16
 *
17
 * @license GNU GPL v2+
18
 */
19
class ApprovedRevPropertyAnnotator implements PropertyAnnotator {
20
21
	/**
22
	 * Predefined property ID
23
	 */
24
	const PROP_ID = '___APPROVED';
25
26
	/**
27
	 * @var AppFactory
28
	 */
29
	private $appFactory;
30
31
	/**
32
	 * @var Integer|null
33
	 */
34
	private $approvedRev;
35
36
	/**
37
	 * @param AppFactory $appFactory
38
	 */
39 4
	public function __construct( AppFactory $appFactory ) {
40 4
		$this->appFactory = $appFactory;
41 4
	}
42
43
	/**
44
	 * @since 2.0
45
	 *
46
	 * @param Integer $approvedRev
47
	 */
48 2
	public function setApprovedRev( $approvedRev ) {
49 2
		$this->approvedRev = $approvedRev;
50 2
	}
51
52
	/**
53
	 * {@inheritDoc}
54
	 */
55 1
	public function isAnnotatorFor( DIProperty $property ) {
56 1
		return $property->getKey() === self::PROP_ID;
57
	}
58
59
	/**
60
	 * {@inheritDoc}
61
	 */
62 2
	public function addAnnotation(
63
		DIProperty $property, SemanticData $semanticData
64 2
	) {
65
		if ( $this->approvedRev === null && class_exists( 'ApprovedRevs' ) ) {
66
			$this->approvedRev = ApprovedRevs::getApprovedRevID(
67
				$semanticData->getSubject()->getTitle()
68
			);
69
		}
70 2
71 1
		if ( is_numeric( $this->approvedRev ) ) {
72 1
			$semanticData->addPropertyObjectValue(
73 1
				$property, new DINumber( $this->approvedRev )
74 1
			);
75 1
		} else {
76 1
			$semanticData->removeProperty( $property );
77
		}
78 2
	}
79
}
80