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

ApprovedRevsHandler::doChangeRevision()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3.0416

Importance

Changes 0
Metric Value
dl 0
loc 12
rs 9.8666
c 0
b 0
f 0
ccs 5
cts 6
cp 0.8333
cc 3
nc 3
nop 2
crap 3.0416
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