// getTextIdFromAddress() is free to insert something into the text table, so $textId
// may be a new value, not anything already contained in $blobAddress.
- $blobAddress = 'tt:' . $textId;
+ $blobAddress = SqlBlobStore::makeAddressFromTextId( $textId );
$comment = $this->failOnNull( $rev->getComment( RevisionRecord::RAW ), 'comment' );
$user = $this->failOnNull( $rev->getUser( RevisionRecord::RAW ), 'user' );
if ( $current ) {
$fields = [
- 'page' => $title->getArticleID(),
- 'user_text' => $user->getName(),
- 'user' => $user->getId(),
- 'actor' => $user->getActorId(),
- 'comment' => $comment,
- 'minor_edit' => $minor,
- 'text_id' => $current->rev_text_id,
- 'parent_id' => $current->page_latest,
- 'len' => $current->rev_len,
- 'sha1' => $current->rev_sha1
+ 'page' => $title->getArticleID(),
+ 'user_text' => $user->getName(),
+ 'user' => $user->getId(),
+ 'actor' => $user->getActorId(),
+ 'comment' => $comment,
+ 'minor_edit' => $minor,
+ 'text_id' => $current->rev_text_id,
+ 'parent_id' => $current->page_latest,
+ 'slot_origin' => $current->page_latest,
+ 'len' => $current->rev_len,
+ 'sha1' => $current->rev_sha1
];
if ( $this->contentHandlerUseDB ) {
*/
public function getRcIdIfUnpatrolled( RevisionRecord $rev ) {
$rc = $this->getRecentChange( $rev );
- if ( $rc && $rc->getAttribute( 'rc_patrolled' ) == 0 ) {
+ if ( $rc && $rc->getAttribute( 'rc_patrolled' ) == RecentChange::PRC_UNPATROLLED ) {
return $rc->getAttribute( 'rc_id' );
} else {
return 0;
'ar_content_model' => 'rev_content_model',
];
- if ( empty( $archiveRow->ar_text_id ) ) {
- $fieldMap['ar_text'] = 'old_text';
- $fieldMap['ar_flags'] = 'old_flags';
- }
-
$revRow = new stdClass();
foreach ( $fieldMap as $arKey => $revKey ) {
if ( property_exists( $archiveRow, $arKey ) ) {
if ( isset( $row->rev_text_id ) && $row->rev_text_id > 0 ) {
$mainSlotRow->slot_content_id = $row->rev_text_id;
- $mainSlotRow->content_address = 'tt:' . $row->rev_text_id;
+ $mainSlotRow->content_address = SqlBlobStore::makeAddressFromTextId(
+ $row->rev_text_id
+ );
}
+ // This is used by null-revisions
+ $mainSlotRow->slot_origin = isset( $row->slot_origin )
+ ? intval( $row->slot_origin )
+ : null;
+
if ( isset( $row->old_text ) ) {
// this happens when the text-table gets joined directly, in the pre-1.30 schema
$blobData = isset( $row->old_text ) ? strval( $row->old_text ) : null;
$mainSlotRow->slot_content_id = isset( $row['text_id'] )
? intval( $row['text_id'] )
: null;
+ $mainSlotRow->slot_origin = isset( $row['slot_origin'] )
+ ? intval( $row['slot_origin'] )
+ : null;
$mainSlotRow->content_address = isset( $row['text_id'] )
- ? 'tt:' . intval( $row['text_id'] )
+ ? SqlBlobStore::makeAddressFromTextId( intval( $row['text_id'] ) )
: null;
$mainSlotRow->content_size = isset( $row['len'] ) ? intval( $row['len'] ) : null;
$mainSlotRow->content_sha1 = isset( $row['sha1'] ) ? strval( $row['sha1'] ) : null;
throw new MWException( 'Revision constructor passed invalid row format.' );
}
- // With the old schema, the content changes with every revision.
- // ...except for null-revisions. Would be nice if we could detect them.
- $mainSlotRow->slot_inherited = 0;
+ // With the old schema, the content changes with every revision,
+ // except for null-revisions.
+ if ( !isset( $mainSlotRow->slot_origin ) ) {
+ $mainSlotRow->slot_origin = $mainSlotRow->slot_revision_id;
+ }
if ( $mainSlotRow->model_name === null ) {
$mainSlotRow->model_name = function ( SlotRecord $slot ) use ( $title ) {
'ar_namespace',
'ar_title',
'ar_rev_id',
- 'ar_text',
'ar_text_id',
'ar_timestamp',
'ar_minor_edit',