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

ApprovedRevPropertyAnnotator   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 81.82%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
c 1
b 0
f 0
lcom 1
cbo 4
dl 0
loc 61
ccs 18
cts 22
cp 0.8182
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A isAnnotatorFor() 0 3 1
A setApprovedRev() 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
	/**
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