MediaWiki  master
NoWriteWatchedItemStore.php
Go to the documentation of this file.
1 <?php
25 
31 
35  private $actualStore;
36 
37  const DB_READONLY_ERROR = 'The watchlist is currently readonly.';
38 
44  $this->actualStore = $actualStore;
45  }
46 
47  public function countWatchedItems( UserIdentity $user ) {
48  return $this->actualStore->countWatchedItems( $user );
49  }
50 
51  public function countWatchers( LinkTarget $target ) {
52  return $this->actualStore->countWatchers( $target );
53  }
54 
55  public function countVisitingWatchers( LinkTarget $target, $threshold ) {
56  return $this->actualStore->countVisitingWatchers( $target, $threshold );
57  }
58 
59  public function countWatchersMultiple( array $targets, array $options = [] ) {
60  return $this->actualStore->countVisitingWatchersMultiple(
61  $targets,
62  $options['minimumWatchers'] ?? null
63  );
64  }
65 
67  array $targetsWithVisitThresholds,
68  $minimumWatchers = null
69  ) {
70  return $this->actualStore->countVisitingWatchersMultiple(
71  $targetsWithVisitThresholds,
72  $minimumWatchers
73  );
74  }
75 
76  public function getWatchedItem( UserIdentity $user, LinkTarget $target ) {
77  return $this->actualStore->getWatchedItem( $user, $target );
78  }
79 
80  public function loadWatchedItem( UserIdentity $user, LinkTarget $target ) {
81  return $this->actualStore->loadWatchedItem( $user, $target );
82  }
83 
84  public function getWatchedItemsForUser( UserIdentity $user, array $options = [] ) {
85  return $this->actualStore->getWatchedItemsForUser( $user, $options );
86  }
87 
88  public function isWatched( UserIdentity $user, LinkTarget $target ) {
89  return $this->actualStore->isWatched( $user, $target );
90  }
91 
92  public function getNotificationTimestampsBatch( UserIdentity $user, array $targets ) {
93  return $this->actualStore->getNotificationTimestampsBatch( $user, $targets );
94  }
95 
96  public function countUnreadNotifications( UserIdentity $user, $unreadLimit = null ) {
97  return $this->actualStore->countUnreadNotifications( $user, $unreadLimit );
98  }
99 
100  public function duplicateAllAssociatedEntries( LinkTarget $oldTarget, LinkTarget $newTarget ) {
101  throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
102  }
103 
104  public function duplicateEntry( LinkTarget $oldTarget, LinkTarget $newTarget ) {
105  throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
106  }
107 
108  public function addWatch( UserIdentity $user, LinkTarget $target ) {
109  throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
110  }
111 
112  public function addWatchBatchForUser( UserIdentity $user, array $targets ) {
113  throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
114  }
115 
116  public function removeWatch( UserIdentity $user, LinkTarget $target ) {
117  throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
118  }
119 
121  UserIdentity $user,
122  $timestamp,
123  array $targets = []
124  ) {
125  throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
126  }
127 
129  UserIdentity $editor, LinkTarget $target, $timestamp
130  ) {
131  throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
132  }
133 
134  public function resetAllNotificationTimestampsForUser( UserIdentity $user, $timestamp = null ) {
135  throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
136  }
137 
138  public function resetNotificationTimestamp(
139  UserIdentity $user,
141  $force = '',
142  $oldid = 0
143  ) {
144  throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
145  }
146 
147  public function clearUserWatchedItems( UserIdentity $user ) {
148  throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
149  }
150 
152  throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
153  }
154 
155  public function removeWatchBatchForUser( UserIdentity $user, array $titles ) {
156  throw new DBReadOnlyError( null, self::DB_READONLY_ERROR );
157  }
158 
160  $timestamp, UserIdentity $user, LinkTarget $target
161  ) {
162  return wfTimestampOrNull( TS_MW, $timestamp );
163  }
164 }
addWatchBatchForUser(UserIdentity $user, array $targets)
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...
addWatch(UserIdentity $user, LinkTarget $target)
Must be called separately for Subject & Talk namespaces.
countVisitingWatchersMultiple(array $targetsWithVisitThresholds, $minimumWatchers=null)
Number of watchers of each page who have visited recent edits to that page.
getWatchedItem(UserIdentity $user, LinkTarget $target)
Get an item (may be cached)
countWatchersMultiple(array $targets, array $options=[])
wfTimestampOrNull( $outputtype=TS_UNIX, $ts=null)
Return a formatted timestamp, or null if input is null.
loadWatchedItem(UserIdentity $user, LinkTarget $target)
Loads an item from the db.
setNotificationTimestampsForUser(UserIdentity $user, $timestamp, array $targets=[])
resetNotificationTimestamp(UserIdentity $user, LinkTarget $title, $force='', $oldid=0)
Reset the notification timestamp of this entry.
countVisitingWatchers(LinkTarget $target, $threshold)
Number of page watchers who also visited a "recent" edit.
Interface for objects representing user identity.
countWatchedItems(UserIdentity $user)
Count the number of individual items that are watched by the user.
updateNotificationTimestamp(UserIdentity $editor, LinkTarget $target, $timestamp)
removeWatch(UserIdentity $user, LinkTarget $target)
Removes an entry for the UserIdentity watching the LinkTarget Must be called separately for Subject &...
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...
getNotificationTimestampsBatch(UserIdentity $user, array $targets)
countWatchers(LinkTarget $target)
__construct(WatchedItemStoreInterface $actualStore)
Initialy set WatchedItemStore that will be used in cases where writing is not needed.
WatchedItemStoreInterface $actualStore
clearUserWatchedItemsUsingJobQueue(UserIdentity $user)
Queues a job that will clear the users watchlist using the Job Queue.
countUnreadNotifications(UserIdentity $user, $unreadLimit=null)
getLatestNotificationTimestamp( $timestamp, UserIdentity $user, LinkTarget $target)
Convert $timestamp to TS_MW or return null if the page was visited since then by $user.
isWatched(UserIdentity $user, LinkTarget $target)
Must be called separately for Subject & Talk namespaces.
removeWatchBatchForUser(UserIdentity $user, array $titles)
getWatchedItemsForUser(UserIdentity $user, array $options=[])
clearUserWatchedItems(UserIdentity $user)
Queues a job that will clear the users watchlist using the Job Queue.
resetAllNotificationTimestampsForUser(UserIdentity $user, $timestamp=null)
Reset all watchlist notificaton timestamps for a user using the job queue.