MediaWiki REL1_37
RevisionStoreCacheRecord.php
Go to the documentation of this file.
1<?php
23namespace MediaWiki\Revision;
24
29
38
42 private $mCallback;
43
58 public function __construct(
59 callable $callback,
60 PageIdentity $page,
61 UserIdentity $user,
62 CommentStoreComment $comment,
63 $row,
64 RevisionSlots $slots,
65 $wikiID = self::LOCAL
66 ) {
67 parent::__construct( $page, $user, $comment, $row, $slots, $wikiID );
68 $this->mCallback = $callback;
69 }
70
76 public function getVisibility() {
77 if ( $this->mCallback ) {
78 $this->loadFreshRow();
79 }
80 return parent::getVisibility();
81 }
82
91 public function getUser( $audience = self::FOR_PUBLIC, Authority $performer = null ) {
92 if ( $this->mCallback ) {
93 $this->loadFreshRow();
94 }
95 return parent::getUser( $audience, $performer );
96 }
97
103 private function loadFreshRow() {
104 list( $freshRevDeleted, $freshUser ) = call_user_func( $this->mCallback, $this->mId );
105
106 // Set to null to ensure we do not make unnecessary queries for subsequent getter calls,
107 // and to allow the closure to be freed.
108 $this->mCallback = null;
109
110 if ( $freshRevDeleted !== null && $freshUser !== null ) {
111 $this->mDeleted = intval( $freshRevDeleted );
112 $this->mUser = $freshUser;
113 } else {
114 throw new RevisionAccessException(
115 'Unable to load fresh row for rev_id: {rev_id}',
116 [ 'rev_id' => $this->mId ]
117 );
118 }
119 }
120
121}
Value object for a comment stored by CommentStore.
Exception representing a failure to look up a revision.
Value object representing the set of slots belonging to a revision.
__construct(callable $callback, PageIdentity $page, UserIdentity $user, CommentStoreComment $comment, $row, RevisionSlots $slots, $wikiID=self::LOCAL)
loadFreshRow()
Load a fresh row from the database to ensure we return updated information.
callable $mCallback
( int $revId ): [ int $rev_deleted, UserIdentity $user ]
getVisibility()
Overridden to ensure that we return a fresh value and not a cached one.
getUser( $audience=self::FOR_PUBLIC, Authority $performer=null)
Overridden to ensure that we return a fresh value and not a cached one.
A RevisionRecord representing an existing revision persisted in the revision table.
Interface for objects (potentially) representing an editable wiki page.
This interface represents the authority associated the current execution context, such as a web reque...
Definition Authority.php:37
Interface for objects representing user identity.