Add various, more specific type hints

* Add @var comments to untyped getService() calls so IDEs and tools
  are able to understand where the callers are.
* Use the more specific IReadableDatabase where possible.
* Fix missing import.

Change-Id: I9c1153cb9fe872227753628a947f40bd5ee447fa
This commit is contained in:
thiemowmde 2023-05-19 09:44:23 +02:00
parent e45cd4ff8c
commit 0cf68818a8
6 changed files with 16 additions and 3 deletions

View file

@ -13,6 +13,7 @@ use ExtensionRegistry;
use IContextSource;
use IDBAccessObject;
use LqtDispatch;
use MediaWiki\Extension\DiscussionTools\CommentParser;
use MediaWiki\Extension\DiscussionTools\CommentUtils;
use MediaWiki\Extension\DiscussionTools\ContentThreadItemSet;
use MediaWiki\Extension\Gadgets\GadgetRepo;
@ -161,6 +162,7 @@ class HookUtils {
// comments in the sections to be treated as transcluded from another page.
CommentUtils::unwrapParsoidSections( $container );
/** @var CommentParser $parser */
$parser = $services->getService( 'DiscussionTools.CommentParser' );
$title = TitleValue::newFromPage( $revRecord->getPage() );
return $parser->parse( $container, $title );

View file

@ -16,6 +16,7 @@ use DeferredUpdates;
use ExtensionRegistry;
use IDBAccessObject;
use Iterator;
use MediaWiki\Extension\DiscussionTools\CommentParser;
use MediaWiki\Extension\DiscussionTools\CommentUtils;
use MediaWiki\Extension\DiscussionTools\ContentThreadItemSet;
use MediaWiki\Extension\DiscussionTools\Hooks\HookUtils;
@ -72,6 +73,7 @@ class EventDispatcher {
$doc = DOMUtils::parseHTML( $html );
$container = DOMCompat::getBody( $doc );
/** @var CommentParser $parser */
$parser = $services->getService( 'DiscussionTools.CommentParser' );
return $parser->parse( $container, $title );
}
@ -396,6 +398,7 @@ class EventDispatcher {
$dtConfig->get( 'DiscussionToolsAutoTopicSubEditor' ) === 'any' &&
HookUtils::shouldAddAutoSubscription( $user, $title )
) {
/** @var SubscriptionStore $parser */
$subscriptionStore = MediaWikiServices::getInstance()->getService( 'DiscussionTools.SubscriptionStore' );
$subscriptionStore->addAutoSubscriptionForUser( $user, $title, $itemName );
}
@ -411,6 +414,7 @@ class EventDispatcher {
public static function locateSubscribedUsers( Event $event, $batchSize = 500 ) {
$commentName = $event->getExtraParam( 'subscribed-comment-name' );
/** @var SubscriptionStore $subscriptionStore */
$subscriptionStore = MediaWikiServices::getInstance()->getService( 'DiscussionTools.SubscriptionStore' );
$subscriptionItems = $subscriptionStore->getSubscriptionItemsForTopic(
$commentName,

View file

@ -11,6 +11,7 @@ namespace MediaWiki\Extension\DiscussionTools\Notifications;
use EchoEventPresentationModel;
use Language;
use MediaWiki\Extension\DiscussionTools\SubscriptionStore;
use MediaWiki\Extension\Notifications\Model\Event;
use MediaWiki\Language\RawMessage;
use MediaWiki\MediaWikiServices;
@ -142,6 +143,7 @@ class SubscribedNewCommentPresentationModel extends EchoEventPresentationModel {
$viewChangesLink,
];
/** @var SubscriptionStore $parser */
$subscriptionStore = MediaWikiServices::getInstance()->getService( 'DiscussionTools.SubscriptionStore' );
$items = $subscriptionStore->getSubscriptionItemsForUser(
$this->getUser(),

View file

@ -2,7 +2,6 @@
namespace MediaWiki\Extension\DiscussionTools\Maintenance;
use IDatabase;
use Language;
use Maintenance;
use MediaWiki\Extension\DiscussionTools\Hooks\HookUtils;
@ -14,6 +13,7 @@ use MWExceptionRenderer;
use stdClass;
use Throwable;
use Title;
use Wikimedia\Rdbms\IReadableDatabase;
use Wikimedia\Rdbms\SelectQueryBuilder;
$IP = getenv( 'MW_INSTALL_PATH' );
@ -24,7 +24,7 @@ require_once "$IP/maintenance/Maintenance.php";
class PersistRevisionThreadItems extends Maintenance {
private IDatabase $dbr;
private IReadableDatabase $dbr;
private ThreadItemStore $itemStore;
private RevisionStore $revStore;
private Language $lang;
@ -94,7 +94,7 @@ class PersistRevisionThreadItems extends Maintenance {
[ $nsInfo, 'wantSignatures' ]
) ),
'pp_propname IS NOT NULL',
], IDatabase::LIST_OR ) );
], IReadableDatabase::LIST_OR ) );
if ( $this->getOption( 'current' ) ) {
$qb->where( 'rev_id = page_latest' );

View file

@ -3,6 +3,7 @@
namespace MediaWiki\Extension\DiscussionTools\Tests;
use DateTimeImmutable;
use MediaWiki\Extension\DiscussionTools\CommentParser;
use MediaWiki\Extension\DiscussionTools\CommentUtils;
use MediaWiki\Extension\DiscussionTools\ImmutableRange;
use MediaWiki\Extension\DiscussionTools\ThreadItem\ContentCommentItem;
@ -116,6 +117,7 @@ class CommentParserTest extends IntegrationTestCase {
public function testGetTimestampRegexp(
string $format, string $expected, string $message
): void {
/** @var CommentParser $parser */
$parser = TestingAccessWrapper::newFromObject(
MediaWikiServices::getInstance()->getService( 'DiscussionTools.CommentParser' )
);
@ -140,6 +142,7 @@ class CommentParserTest extends IntegrationTestCase {
public function testGetTimestampParser(
string $format, array $data, string $expected, string $message
): void {
/** @var CommentParser $parser */
$parser = TestingAccessWrapper::newFromObject(
MediaWikiServices::getInstance()->getService( 'DiscussionTools.CommentParser' )
);
@ -161,6 +164,7 @@ class CommentParserTest extends IntegrationTestCase {
string $sample, string $expected, string $expectedUtc, string $format,
string $timezone, array $timezoneAbbrs, string $message
): void {
/** @var CommentParser $parser */
$parser = TestingAccessWrapper::newFromObject(
MediaWikiServices::getInstance()->getService( 'DiscussionTools.CommentParser' )
);

View file

@ -2,6 +2,7 @@
namespace MediaWiki\Extension\DiscussionTools\Tests;
use MediaWiki\Extension\DiscussionTools\SubscriptionItem;
use MediaWiki\Extension\DiscussionTools\SubscriptionStore;
use MediaWiki\User\UserIdentity;