mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/DiscussionTools
synced 2024-09-23 18:38:18 +00:00
Merge "Remove limit on the number of topic subscriptions per user"
This commit is contained in:
commit
019b22ed11
|
@ -574,10 +574,6 @@
|
|||
"value": "default",
|
||||
"description": "Override availability of DiscussionTools automatic topic subscription feature. 'default', 'available', or 'unavailable'."
|
||||
},
|
||||
"DiscussionToolsMaxSubscriptionsPerUser": {
|
||||
"value": 5000,
|
||||
"description": "Maximum number of subscriptions that can be stored for each user."
|
||||
},
|
||||
"DiscussionToolsAutoTopicSubEditor": {
|
||||
"value": "discussiontoolsapi",
|
||||
"description": "Editor which triggers automatic topic subscriptions. Either 'discussiontoolsapi' for edits made using DiscussionTools' API (e.g. reply and new topic tools), or 'any' for any editor."
|
||||
|
|
|
@ -4,7 +4,6 @@ namespace MediaWiki\Extension\DiscussionTools;
|
|||
|
||||
use ConfigFactory;
|
||||
use MediaWiki\Linker\LinkTarget;
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
use MediaWiki\User\UserFactory;
|
||||
use MediaWiki\User\UserIdentity;
|
||||
use ReadOnlyMode;
|
||||
|
@ -208,39 +207,6 @@ class SubscriptionStore {
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param UserIdentity $user
|
||||
* @return bool
|
||||
*/
|
||||
private function userExceedsSubscriptionLimit( UserIdentity $user ): bool {
|
||||
$logger = LoggerFactory::getInstance( 'DiscussionTools' );
|
||||
// This is always queried before updating
|
||||
$db = $this->getConnectionRef( DB_PRIMARY );
|
||||
|
||||
$dtConfig = $this->configFactory->makeConfig( 'discussiontools' );
|
||||
$limit = $dtConfig->get( 'DiscussionToolsMaxSubscriptionsPerUser' );
|
||||
|
||||
$rowCount = $db->selectRowCount(
|
||||
'discussiontools_subscription',
|
||||
'*',
|
||||
[ 'sub_user' => $user->getId() ],
|
||||
__METHOD__,
|
||||
[ 'LIMIT' => $limit ]
|
||||
);
|
||||
|
||||
if ( $rowCount >= $limit / 2 ) {
|
||||
$logger->warning(
|
||||
"User {user} has {rowCount} subscriptions, approaching the limit",
|
||||
[
|
||||
'user' => $user->getId(),
|
||||
'rowCount' => $rowCount,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
return $rowCount >= $limit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param UserIdentity $user
|
||||
* @param LinkTarget $target
|
||||
|
@ -261,9 +227,6 @@ class SubscriptionStore {
|
|||
if ( !$user->isRegistered() ) {
|
||||
return false;
|
||||
}
|
||||
if ( $this->userExceedsSubscriptionLimit( $user ) ) {
|
||||
return false;
|
||||
}
|
||||
$dbw = $this->getConnectionRef( DB_PRIMARY );
|
||||
$dbw->upsert(
|
||||
'discussiontools_subscription',
|
||||
|
|
Loading…
Reference in a new issue