<?php
+
+use MediaWiki\MediaWikiServices;
+use MediaWiki\Storage\RevisionRecord;
+
/**
* Helper class for category membership changes
*
* @since 1.27
*/
-use Wikimedia\Assert\Assert;
-
class CategoryMembershipChange {
const CATEGORY_ADDITION = 1;
/**
* @param Title $pageTitle Title instance of the categorized page
- * @param Revision $revision Latest Revision instance of the categorized page
+ * @param Revision|null $revision Latest Revision instance of the categorized page
*
* @throws MWException
*/
*
* @throws MWException
*/
- public function overrideNewForCategorizationCallback( $callback ) {
+ public function overrideNewForCategorizationCallback( callable $callback ) {
if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
throw new MWException( 'Cannot override newForCategorization callback in operation.' );
}
- Assert::parameterType( 'callable', $callback, '$callback' );
$this->newForCategorizationCallback = $callback;
}
/**
* @param string $timestamp Timestamp of the recent change to occur in TS_MW format
* @param Title $categoryTitle Title of the category a page is being added to or removed from
- * @param User $user User object of the user that made the change
+ * @param User|null $user User object of the user that made the change
* @param string $comment Change summary
* @param Title $pageTitle Title of the page that is being added or removed
* @param string $lastTimestamp Parent revision timestamp of this change in TS_MW format
$revision,
$added
) {
- $deleted = $revision ? $revision->getVisibility() & Revision::SUPPRESSED_USER : 0;
+ $deleted = $revision ? $revision->getVisibility() & RevisionRecord::SUPPRESSED_USER : 0;
$newRevId = $revision ? $revision->getId() : 0;
/**
*/
private function getUser() {
if ( $this->revision ) {
- $userId = $this->revision->getUser( Revision::RAW );
+ $userId = $this->revision->getUser( RevisionRecord::RAW );
if ( $userId === 0 ) {
- return User::newFromName( $this->revision->getUserText( Revision::RAW ), false );
+ return User::newFromName( $this->revision->getUserText( RevisionRecord::RAW ), false );
} else {
return User::newFromId( $userId );
}
* @return null|string
*/
private function getPreviousRevisionTimestamp() {
- $previousRev = Revision::newFromId(
- $this->pageTitle->getPreviousRevisionID( $this->pageTitle->getLatestRevID() )
- );
-
- return $previousRev ? $previousRev->getTimestamp() : null;
+ $rl = MediaWikiServices::getInstance()->getRevisionLookup();
+ $latestRev = $rl->getRevisionByTitle( $this->pageTitle );
+ if ( $latestRev ) {
+ $previousRev = $rl->getPreviousRevision( $latestRev );
+ if ( $previousRev ) {
+ return $previousRev->getTimestamp();
+ }
+ }
+ return null;
}
}