public function insertOn( $dbw ) {
global $wgDefaultExternalStore, $wgContentHandlerUseDB;
+ // Not allowed to have rev_page equal to 0, false, etc.
+ if ( !$this->mPage ) {
+ $title = $this->getTitle();
+ if ( $title instanceof Title ) {
+ $titleText = ' for page ' . $title->getPrefixedText();
+ } else {
+ $titleText = '';
+ }
+ throw new MWException( "Cannot insert revision$titleText: page ID must be nonzero" );
+ }
+
$this->checkContentModel();
$data = $this->mText;
}
$content = $this->getContent( Revision::RAW );
+ $prefixedDBkey = $title->getPrefixedDBkey();
+ $revId = $this->mId;
- if ( !$content || !$content->isValid() ) {
- $t = $title->getPrefixedDBkey();
-
- throw new MWException( "Content of $t is not valid! Content model is $model" );
+ if ( !$content ) {
+ throw new MWException(
+ "Content of revision $revId ($prefixedDBkey) could not be loaded for validation!"
+ );
+ }
+ if ( !$content->isValid() ) {
+ throw new MWException(
+ "Content of revision $revId ($prefixedDBkey) is not valid! Content model is $model"
+ );
}
}
* @return string
*/
public static function base36Sha1( $text ) {
- return wfBaseConvert( sha1( $text ), 16, 36, 31 );
+ return Wikimedia\base_convert( sha1( $text ), 16, 36, 31 );
}
/**
*/
protected function loadText() {
// Caching may be beneficial for massive use of external storage
- global $wgRevisionCacheExpiry, $wgMemc;
+ global $wgRevisionCacheExpiry;
+ $cache = ObjectCache::getMainWANInstance();
$textId = $this->getTextId();
$key = wfMemcKey( 'revisiontext', 'textid', $textId );
if ( $wgRevisionCacheExpiry ) {
- $text = $wgMemc->get( $key );
+ $text = $cache->get( $key );
if ( is_string( $text ) ) {
wfDebug( __METHOD__ . ": got id $textId from cache\n" );
return $text;
# No negative caching -- negative hits on text rows may be due to corrupted slave servers
if ( $wgRevisionCacheExpiry && $text !== false ) {
- $wgMemc->set( $key, $text, $wgRevisionCacheExpiry );
+ $cache->set( $key, $text, $wgRevisionCacheExpiry );
}
return $text;
array(
'page_id' => $pageId,
'page_latest=rev_id',
- ),
- __METHOD__ );
+ ),
+ __METHOD__,
+ array( 'FOR UPDATE' ) // T51581
+ );
if ( $current ) {
if ( !$user ) {