Completed
Pull Request — master (#4)
by mw
01:12
created

ApprovedRevsHandler   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 89.47%

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 1
dl 0
loc 70
rs 10
c 0
b 0
f 0
ccs 17
cts 19
cp 0.8947

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A isApprovedUpdate() 0 12 3
A doChangeRevision() 0 12 3
A doChangeRevisionID() 0 6 2
1
<?php
2
3
namespace SMW\ApprovedRevs;
4
5
use Title;
6
use Revision;
7
8
/**
9
 * @license GNU GPL v2+
10
 * @since 1.0
11
 *
12
 * @author mwjames
13
 */
14
class ApprovedRevsHandler {
15
16
	/**
17
	 * @var ApprovedRevsFacade
18
	 */
19
	private $approvedRevsFacade;
20
21
	/**
22
	 * @since 1.0
23
	 *
24
	 * @param ApprovedRevsFacade $approvedRevsFacade
25
	 */
26 6
	public function __construct( ApprovedRevsFacade $approvedRevsFacade ) {
27 6
		$this->approvedRevsFacade = $approvedRevsFacade;
28 6
	}
29
30
	/**
31
	 * @since  1.0
32
	 *
33
	 * @param Title $title
34
	 * @param integer $latestRevID
35
	 *
36
	 * @return boolean
37
	 */
38 3
	public function isApprovedUpdate( Title $title, $latestRevID ) {
39
40 3
		if ( !$this->approvedRevsFacade->hasApprovedRevision( $title ) ) {
41 1
			return true;
42
		}
43
44 2
		if ( ( $approvedRevID = $this->approvedRevsFacade->getApprovedRevID( $title ) ) !== null ) {
45 2
			return $approvedRevID == $latestRevID;
46
		}
47
48
		return true;
49
	}
50
51
	/**
52
	 * @since  1.0
53
	 *
54
	 * @param Title $title
55
	 * @param Revision|null &$revision
56
	 */
57 1
	public function doChangeRevision( Title $title, &$revision ) {
58
59
		// Forcibly change the revision to match what ApprovedRevs sees as
60
		// approved
61 1
		if ( ( $approvedRevID = $this->approvedRevsFacade->getApprovedRevID( $title ) ) !== null ) {
62 1
			$approvedRev = Revision::newFromId( $approvedRevID );
63
64 1
			if ( $approvedRev instanceof Revision ) {
0 ignored issues
show
Bug introduced by
The class Revision does not exist. Is this class maybe located in a folder that is not analyzed, or in a newer version of your dependencies than listed in your composer.lock/composer.json?
Loading history...
65
				$revision = $approvedRev;
66
			}
67
		}
68 1
	}
69
70
	/**
71
	 * @since  1.0
72
	 *
73
	 * @param Title $title
74
	 * @param integer &$revisionID
75
	 */
76 1
	public function doChangeRevisionID( Title $title, &$revisionID ) {
77
78 1
		if ( ( $approvedRevID = $this->approvedRevsFacade->getApprovedRevID( $title ) ) !== null ) {
79 1
			$revisionID = $approvedRevID;
80
		}
81 1
	}
82
83
}
84