Completed
Push — master ( 1fe2bc...e619ac )
by mw
02:21
created

ApprovedRevPropertyAnnotator   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 83.33%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 8
c 2
b 0
f 0
lcom 1
cbo 4
dl 0
loc 66
ccs 20
cts 24
cp 0.8333
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A isAnnotatorFor() 0 3 1
A setApprovedRev() 0 3 1
A getDataItem() 0 3 1
A addAnnotation() 0 17 4
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 1
	public function getDataItem() {
60 1
		return new DINumber( $this->approvedRev );
61
	}
62
63
	/**
64
	 * {@inheritDoc}
65
	 */
66 2
	public function addAnnotation( DIProperty $property, SemanticData $semanticData	) {
67
68 2
		if ( $this->approvedRev === null && class_exists( 'ApprovedRevs' ) ) {
69
			$this->approvedRev = ApprovedRevs::getApprovedRevID(
70
				$semanticData->getSubject()->getTitle()
71
			);
72
		}
73
74 2
		if ( is_numeric( $this->approvedRev ) ) {
75 1
			$semanticData->addPropertyObjectValue(
76 1
				$property,
77 1
				$this->getDataItem()
78 1
			);
79 1
		} else {
80 1
			$semanticData->removeProperty( $property );
81
		}
82 2
	}
83
84
}
85