|
MediaWiki
master
|
Storage layer class for WatchedItems. More...


Public Member Functions | |
| __construct (LoadBalancer $loadBalancer, HashBagOStuff $cache) | |
| addWatch (User $user, LinkTarget $target) | |
| Must be called separately for Subject & Talk namespaces. More... | |
| addWatchBatchForUser (User $user, array $targets) | |
| countUnreadNotifications (User $user, $unreadLimit=null) | |
| countVisitingWatchers (LinkTarget $target, $threshold) | |
| Number of page watchers who also visited a "recent" edit. More... | |
| countVisitingWatchersMultiple (array $targetsWithVisitThresholds, $minimumWatchers=null) | |
| Number of watchers of each page who have visited recent edits to that page. More... | |
| countWatchedItems (User $user) | |
| Count the number of individual items that are watched by the user. More... | |
| countWatchers (LinkTarget $target) | |
| countWatchersMultiple (array $targets, array $options=[]) | |
| duplicateAllAssociatedEntries (LinkTarget $oldTarget, LinkTarget $newTarget) | |
| Check if the given title already is watched by the user, and if so add a watch for the new title. More... | |
| duplicateEntry (LinkTarget $oldTarget, LinkTarget $newTarget) | |
| Check if the given title already is watched by the user, and if so add a watch for the new title. More... | |
| getNotificationTimestampsBatch (User $user, array $targets) | |
| getWatchedItem (User $user, LinkTarget $target) | |
| Get an item (may be cached) More... | |
| getWatchedItemsForUser (User $user, array $options=[]) | |
| isWatched (User $user, LinkTarget $target) | |
| Must be called separately for Subject & Talk namespaces. More... | |
| loadWatchedItem (User $user, LinkTarget $target) | |
| Loads an item from the db. More... | |
| overrideDeferredUpdatesAddCallableUpdateCallback (callable $callback) | |
| Overrides the DeferredUpdates::addCallableUpdate callback This is intended for use while testing and will fail if MW_PHPUNIT_TEST is not defined. More... | |
| overrideRevisionGetTimestampFromIdCallback (callable $callback) | |
| Overrides the Revision::getTimestampFromId callback This is intended for use while testing and will fail if MW_PHPUNIT_TEST is not defined. More... | |
| removeWatch (User $user, LinkTarget $target) | |
| Removes the an entry for the User watching the LinkTarget Must be called separately for Subject & Talk namespaces. More... | |
| resetNotificationTimestamp (User $user, Title $title, $force= '', $oldid=0) | |
| Reset the notification timestamp of this entry. More... | |
| setNotificationTimestampsForUser (User $user, $timestamp, array $targets=[]) | |
| setStatsdDataFactory (StatsdDataFactoryInterface $stats) | |
| Sets a StatsdDataFactory instance on the object. More... | |
| updateNotificationTimestamp (User $editor, LinkTarget $target, $timestamp) | |
Public Attributes | |
| const | SORT_ASC = 'ASC' |
| const | SORT_DESC = 'DESC' |
Private Member Functions | |
| cache (WatchedItem $item) | |
| dbCond (User $user, LinkTarget $target) | |
| Return an array of conditions to select or update the appropriate database row. More... | |
| getCached (User $user, LinkTarget $target) | |
| getCacheKey (User $user, LinkTarget $target) | |
| getConnection ($slaveOrMaster) | |
| getNotificationTimestamp (User $user, Title $title, $item, $force, $oldid) | |
| getVisitingWatchersCondition (IDatabase $db, array $targetsWithVisitThresholds) | |
| Generates condition for the query used in a batch count visiting watchers. More... | |
| reuseConnection ($connection) | |
| uncache (User $user, LinkTarget $target) | |
| uncacheLinkTarget (LinkTarget $target) | |
| uncacheUser (User $user) | |
Private Attributes | |
| HashBagOStuff | $cache |
| array[] | $cacheIndex = [] |
| Looks like $cacheIndex[Namespace ID][Target DB Key][User Id] => 'key' The index is needed so that on mass changes all relevant items can be un-cached. More... | |
| callable null | $deferredUpdatesAddCallableUpdateCallback |
| LoadBalancer | $loadBalancer |
| callable null | $revisionGetTimestampFromIdCallback |
| StatsdDataFactoryInterface | $stats |
Storage layer class for WatchedItems.
Database interaction.
Definition at line 15 of file WatchedItemStore.php.
| WatchedItemStore::__construct | ( | LoadBalancer | $loadBalancer, |
| HashBagOStuff | $cache | ||
| ) |
| LoadBalancer | $loadBalancer | |
| HashBagOStuff | $cache |
Definition at line 57 of file WatchedItemStore.php.
References $cache, $loadBalancer, and cache().
| WatchedItemStore::addWatch | ( | User | $user, |
| LinkTarget | $target | ||
| ) |
Must be called separately for Subject & Talk namespaces.
| User | $user | |
| LinkTarget | $target |
Definition at line 599 of file WatchedItemStore.php.
References addWatchBatchForUser().
| User | $user | |
| LinkTarget[] | $targets |
Definition at line 609 of file WatchedItemStore.php.
References as, DB_MASTER, false, getConnection(), User\getId(), User\isAnon(), reuseConnection(), and uncache().
Referenced by addWatch().
|
private |
Definition at line 127 of file WatchedItemStore.php.
References $user, getCacheKey(), WatchedItem\getLinkTarget(), and WatchedItem\getUser().
Referenced by __construct(), getCached(), getCacheKey(), loadWatchedItem(), uncache(), uncacheLinkTarget(), and uncacheUser().
| WatchedItemStore::countUnreadNotifications | ( | User | $user, |
$unreadLimit = null |
|||
| ) |
| User | $user | |
| int | $unreadLimit |
Definition at line 876 of file WatchedItemStore.php.
References $dbr, DB_SLAVE, getConnection(), User\getId(), and reuseConnection().
| WatchedItemStore::countVisitingWatchers | ( | LinkTarget | $target, |
| $threshold | |||
| ) |
Number of page watchers who also visited a "recent" edit.
| LinkTarget | $target | |
| mixed | $threshold | timestamp accepted by wfTimestamp |
| DBUnexpectedError | |
| MWException |
Definition at line 265 of file WatchedItemStore.php.
References $dbr, DB_SLAVE, getConnection(), MediaWiki\Linker\LinkTarget\getDBkey(), MediaWiki\Linker\LinkTarget\getNamespace(), and reuseConnection().
| WatchedItemStore::countVisitingWatchersMultiple | ( | array | $targetsWithVisitThresholds, |
$minimumWatchers = null |
|||
| ) |
Number of watchers of each page who have visited recent edits to that page.
| array | $targetsWithVisitThresholds | array of pairs (LinkTarget $target, mixed $threshold), $threshold is:
|
| int | null | $minimumWatchers |
Definition at line 340 of file WatchedItemStore.php.
References $dbr, $res, as, DB_SLAVE, getConnection(), getVisitingWatchersCondition(), list, and reuseConnection().
| WatchedItemStore::countWatchedItems | ( | User | $user | ) |
Count the number of individual items that are watched by the user.
If a subject and corresponding talk page are watched this will return 2.
| User | $user |
Definition at line 219 of file WatchedItemStore.php.
References $dbr, DB_SLAVE, getConnection(), User\getId(), and reuseConnection().
| WatchedItemStore::countWatchers | ( | LinkTarget | $target | ) |
| LinkTarget | $target |
Definition at line 239 of file WatchedItemStore.php.
References $dbr, DB_SLAVE, getConnection(), MediaWiki\Linker\LinkTarget\getDBkey(), MediaWiki\Linker\LinkTarget\getNamespace(), and reuseConnection().
| LinkTarget[] | $targets | |
| array | $options | Allowed keys: 'minimumWatchers' => int |
Definition at line 293 of file WatchedItemStore.php.
References $dbr, $options, $res, as, DB_SLAVE, getConnection(), and reuseConnection().
|
private |
Return an array of conditions to select or update the appropriate database row.
| User | $user | |
| LinkTarget | $target |
Definition at line 184 of file WatchedItemStore.php.
References MediaWiki\Linker\LinkTarget\getDBkey(), User\getId(), and MediaWiki\Linker\LinkTarget\getNamespace().
Referenced by loadWatchedItem().
| WatchedItemStore::duplicateAllAssociatedEntries | ( | LinkTarget | $oldTarget, |
| LinkTarget | $newTarget | ||
| ) |
Check if the given title already is watched by the user, and if so add a watch for the new title.
To be used for page renames and such.
| LinkTarget | $oldTarget | |
| LinkTarget | $newTarget |
Definition at line 916 of file WatchedItemStore.php.
References duplicateEntry(), and Title\newFromLinkTarget().
| WatchedItemStore::duplicateEntry | ( | LinkTarget | $oldTarget, |
| LinkTarget | $newTarget | ||
| ) |
Check if the given title already is watched by the user, and if so add a watch for the new title.
To be used for page renames and such. This must be called separately for Subject and Talk pages
| LinkTarget | $oldTarget | |
| LinkTarget | $newTarget |
Definition at line 934 of file WatchedItemStore.php.
References as, DB_MASTER, getConnection(), MediaWiki\Linker\LinkTarget\getDBkey(), MediaWiki\Linker\LinkTarget\getNamespace(), and reuseConnection().
Referenced by duplicateAllAssociatedEntries().
|
private |
| User | $user | |
| LinkTarget | $target |
Definition at line 171 of file WatchedItemStore.php.
References cache(), and getCacheKey().
Referenced by getNotificationTimestampsBatch(), and getWatchedItem().
|
private |
Definition at line 119 of file WatchedItemStore.php.
References cache(), MediaWiki\Linker\LinkTarget\getDBkey(), User\getId(), MediaWiki\Linker\LinkTarget\getNamespace(), and string.
Referenced by cache(), getCached(), and uncache().
|
private |
| int | $slaveOrMaster | DB_MASTER or DB_SLAVE |
| MWException |
Definition at line 198 of file WatchedItemStore.php.
Referenced by addWatchBatchForUser(), countUnreadNotifications(), countVisitingWatchers(), countVisitingWatchersMultiple(), countWatchedItems(), countWatchers(), countWatchersMultiple(), duplicateEntry(), getNotificationTimestampsBatch(), getWatchedItemsForUser(), loadWatchedItem(), removeWatch(), setNotificationTimestampsForUser(), and updateNotificationTimestamp().
|
private |
Definition at line 822 of file WatchedItemStore.php.
References Title\getNextRevisionID(), loadWatchedItem(), and TS_MW.
Referenced by resetNotificationTimestamp().
| User | $user | |
| LinkTarget[] | $targets |
Definition at line 547 of file WatchedItemStore.php.
References $dbr, $res, as, DB_SLAVE, getCached(), getConnection(), User\getId(), User\isAnon(), and reuseConnection().
|
private |
Generates condition for the query used in a batch count visiting watchers.
| IDatabase | $db | |
| array | $targetsWithVisitThresholds | array of pairs (LinkTarget, last visit threshold) |
Definition at line 382 of file WatchedItemStore.php.
References IDatabase\addQuotes(), as, list, LIST_AND, LIST_OR, IDatabase\makeList(), and IDatabase\timestamp().
Referenced by countVisitingWatchersMultiple().
| WatchedItemStore::getWatchedItem | ( | User | $user, |
| LinkTarget | $target | ||
| ) |
Get an item (may be cached)
| User | $user | |
| LinkTarget | $target |
Definition at line 427 of file WatchedItemStore.php.
References getCached(), User\isAnon(), and loadWatchedItem().
Referenced by isWatched().
| User | $user | |
| array | $options | Allowed keys: 'forWrite' => bool defaults to false 'sort' => string optional sorting by namespace ID and title one of the self::SORT_* constants |
Definition at line 487 of file WatchedItemStore.php.
References $options, $res, as, DB_MASTER, DB_SLAVE, false, getConnection(), User\getId(), and reuseConnection().
| WatchedItemStore::isWatched | ( | User | $user, |
| LinkTarget | $target | ||
| ) |
Must be called separately for Subject & Talk namespaces.
| User | $user | |
| LinkTarget | $target |
Definition at line 534 of file WatchedItemStore.php.
References getWatchedItem().
| WatchedItemStore::loadWatchedItem | ( | User | $user, |
| LinkTarget | $target | ||
| ) |
Loads an item from the db.
| User | $user | |
| LinkTarget | $target |
Definition at line 449 of file WatchedItemStore.php.
References $dbr, cache(), DB_SLAVE, dbCond(), getConnection(), User\isAnon(), and reuseConnection().
Referenced by getNotificationTimestamp(), getWatchedItem(), and resetNotificationTimestamp().
| WatchedItemStore::overrideDeferredUpdatesAddCallableUpdateCallback | ( | callable | $callback | ) |
Overrides the DeferredUpdates::addCallableUpdate callback This is intended for use while testing and will fail if MW_PHPUNIT_TEST is not defined.
| callable | $callback |
| MWException |
Definition at line 83 of file WatchedItemStore.php.
References $deferredUpdatesAddCallableUpdateCallback, and use.
| WatchedItemStore::overrideRevisionGetTimestampFromIdCallback | ( | callable | $callback | ) |
Overrides the Revision::getTimestampFromId callback This is intended for use while testing and will fail if MW_PHPUNIT_TEST is not defined.
| callable | $callback |
| MWException |
Definition at line 106 of file WatchedItemStore.php.
References $revisionGetTimestampFromIdCallback, and use.
| WatchedItemStore::removeWatch | ( | User | $user, |
| LinkTarget | $target | ||
| ) |
Removes the an entry for the User watching the LinkTarget Must be called separately for Subject & Talk namespaces.
| User | $user | |
| LinkTarget | $target |
| DBUnexpectedError | |
| MWException |
Definition at line 655 of file WatchedItemStore.php.
References $success, DB_MASTER, getConnection(), MediaWiki\Linker\LinkTarget\getDBkey(), User\getId(), MediaWiki\Linker\LinkTarget\getNamespace(), User\isAnon(), reuseConnection(), and uncache().
Reset the notification timestamp of this entry.
| User | $user | |
| Title | $title | |
| string | $force | Whether to force the write query to be executed even if the page is not watched or the notification timestamp is already NULL. 'force' in order to force |
| int | $oldid | The revision id being viewed. If not given or 0, latest revision is assumed. |
Definition at line 783 of file WatchedItemStore.php.
References $job, User\getId(), getNotificationTimestamp(), User\isAnon(), loadWatchedItem(), uncache(), and use.
|
private |
| DatabaseBase | $connection |
| MWException |
Definition at line 207 of file WatchedItemStore.php.
Referenced by addWatchBatchForUser(), countUnreadNotifications(), countVisitingWatchers(), countVisitingWatchersMultiple(), countWatchedItems(), countWatchers(), countWatchersMultiple(), duplicateEntry(), getNotificationTimestampsBatch(), getWatchedItemsForUser(), loadWatchedItem(), removeWatch(), setNotificationTimestampsForUser(), and updateNotificationTimestamp().
| User | $user | The user to set the timestamp for |
| string | $timestamp | Set the update timestamp to this value |
| LinkTarget[] | $targets List of targets to update. Default to all targets |
Definition at line 684 of file WatchedItemStore.php.
References $batch, $success, $timestamp, DB_MASTER, getConnection(), User\getId(), User\isAnon(), reuseConnection(), and uncacheUser().
| WatchedItemStore::setStatsdDataFactory | ( | StatsdDataFactoryInterface | $statsFactory | ) |
Sets a StatsdDataFactory instance on the object.
| StatsdDataFactoryInterface | $statsFactory |
Implements StatsdAwareInterface.
Definition at line 68 of file WatchedItemStore.php.
References $stats.
|
private |
Definition at line 136 of file WatchedItemStore.php.
References cache(), getCacheKey(), MediaWiki\Linker\LinkTarget\getDBkey(), User\getId(), and MediaWiki\Linker\LinkTarget\getNamespace().
Referenced by addWatchBatchForUser(), removeWatch(), and resetNotificationTimestamp().
|
private |
Definition at line 142 of file WatchedItemStore.php.
References as, cache(), MediaWiki\Linker\LinkTarget\getDBkey(), and MediaWiki\Linker\LinkTarget\getNamespace().
Referenced by updateNotificationTimestamp().
|
private |
Definition at line 153 of file WatchedItemStore.php.
References as, cache(), and User\getId().
Referenced by setNotificationTimestampsForUser().
| WatchedItemStore::updateNotificationTimestamp | ( | User | $editor, |
| LinkTarget | $target, | ||
| $timestamp | |||
| ) |
| User | $editor | The editor that triggered the update. Their notification timestamp will not be updated(they have already seen it) |
| LinkTarget | $target | The target to update timestamps for |
| string | $timestamp | Set the update timestamp to this value |
Definition at line 720 of file WatchedItemStore.php.
References $fname, $timestamp, $wgUpdateRowsPerQuery, DeferredUpdates\addCallableUpdate(), as, DB_MASTER, getConnection(), MediaWiki\Linker\LinkTarget\getDBkey(), User\getId(), MediaWiki\Linker\LinkTarget\getNamespace(), global, reuseConnection(), uncacheLinkTarget(), use, and wfGetLBFactory().
|
private |
Definition at line 28 of file WatchedItemStore.php.
Referenced by __construct().
|
private |
Looks like $cacheIndex[Namespace ID][Target DB Key][User Id] => 'key' The index is needed so that on mass changes all relevant items can be un-cached.
For example: Clearing a users watchlist of all items or updating notification timestamps for all users watching a single target.
Definition at line 36 of file WatchedItemStore.php.
|
private |
Definition at line 41 of file WatchedItemStore.php.
Referenced by overrideDeferredUpdatesAddCallableUpdateCallback().
|
private |
Definition at line 23 of file WatchedItemStore.php.
Referenced by __construct().
|
private |
Definition at line 46 of file WatchedItemStore.php.
Referenced by overrideRevisionGetTimestampFromIdCallback().
|
private |
Definition at line 51 of file WatchedItemStore.php.
Referenced by setStatsdDataFactory().
| const WatchedItemStore::SORT_ASC = 'ASC' |
Definition at line 18 of file WatchedItemStore.php.
Referenced by SpecialEditWatchlist\getWatchlistInfo(), ApiQueryWatchlistRaw\run(), and WatchedItemStoreUnitTest\testGetWatchedItemsForUser_optionsAndEmptyResult().
| const WatchedItemStore::SORT_DESC = 'DESC' |
Definition at line 17 of file WatchedItemStore.php.
Referenced by ApiQueryWatchlistRaw\run().