Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 53
0.00% covered (danger)
0.00%
0 / 10
CRAP
0.00% covered (danger)
0.00%
0 / 1
RevDelArchiveItem
0.00% covered (danger)
0.00%
0 / 53
0.00% covered (danger)
0.00%
0 / 10
210
0.00% covered (danger)
0.00%
0 / 1
 initRevisionRecord
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
2
 getIdField
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getTimestampField
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getAuthorIdField
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getAuthorNameField
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getAuthorActorField
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getId
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setBits
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
2
 getRevisionLink
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
12
 getDiffLink
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2/**
3 * @license GPL-2.0-or-later
4 * @file
5 * @ingroup RevisionDelete
6 */
7
8use MediaWiki\MediaWikiServices;
9use MediaWiki\SpecialPage\SpecialPage;
10use Wikimedia\Rdbms\IDBAccessObject;
11
12/**
13 * Item class for a archive table row
14 */
15class RevDelArchiveItem extends RevDelRevisionItem {
16    /** @inheritDoc */
17    protected static function initRevisionRecord( $list, $row ) {
18        $revRecord = MediaWikiServices::getInstance()
19            ->getRevisionFactory()
20            ->newRevisionFromArchiveRow(
21                $row,
22                IDBAccessObject::READ_NORMAL,
23                null,
24                [ 'page_id' => $list->getPage()->getId() ]
25            );
26
27        return $revRecord;
28    }
29
30    /** @inheritDoc */
31    public function getIdField() {
32        return 'ar_timestamp';
33    }
34
35    /** @inheritDoc */
36    public function getTimestampField() {
37        return 'ar_timestamp';
38    }
39
40    /** @inheritDoc */
41    public function getAuthorIdField() {
42        return 'ar_user';
43    }
44
45    /** @inheritDoc */
46    public function getAuthorNameField() {
47        return 'ar_user_text';
48    }
49
50    /** @inheritDoc */
51    public function getAuthorActorField() {
52        return 'ar_actor';
53    }
54
55    /** @inheritDoc */
56    public function getId() {
57        # Convert DB timestamp to MW timestamp
58        return $this->revisionRecord->getTimestamp();
59    }
60
61    /** @inheritDoc */
62    public function setBits( $bits ) {
63        $dbw = MediaWikiServices::getInstance()->getConnectionProvider()->getPrimaryDatabase();
64        $dbw->newUpdateQueryBuilder()
65            ->update( 'archive' )
66            ->set( [ 'ar_deleted' => $bits ] )
67            ->where( [
68                'ar_namespace' => $this->list->getPage()->getNamespace(),
69                'ar_title' => $this->list->getPage()->getDBkey(),
70                // use timestamp for index
71                'ar_timestamp' => $this->row->ar_timestamp,
72                'ar_rev_id' => $this->row->ar_rev_id,
73                'ar_deleted' => $this->getBits()
74            ] )
75            ->caller( __METHOD__ )->execute();
76
77        return (bool)$dbw->affectedRows();
78    }
79
80    /** @inheritDoc */
81    protected function getRevisionLink() {
82        $date = $this->list->getLanguage()->userTimeAndDate(
83            $this->revisionRecord->getTimestamp(), $this->list->getUser() );
84
85        if ( $this->isDeleted() && !$this->canViewContent() ) {
86            return htmlspecialchars( $date );
87        }
88
89        return $this->getLinkRenderer()->makeLink(
90            SpecialPage::getTitleFor( 'Undelete' ),
91            $date,
92            [],
93            [
94                'target' => $this->list->getPageName(),
95                'timestamp' => $this->revisionRecord->getTimestamp()
96            ]
97        );
98    }
99
100    /** @inheritDoc */
101    protected function getDiffLink() {
102        if ( $this->isDeleted() && !$this->canViewContent() ) {
103            return $this->list->msg( 'diff' )->escaped();
104        }
105
106        return $this->getLinkRenderer()->makeLink(
107            SpecialPage::getTitleFor( 'Undelete' ),
108            $this->list->msg( 'diff' )->text(),
109            [],
110            [
111                'target' => $this->list->getPageName(),
112                'diff' => 'prev',
113                'timestamp' => $this->revisionRecord->getTimestamp()
114            ]
115        );
116    }
117}