MediaWiki
1.34.0
NewFilesPager.php
Go to the documentation of this file.
1
<?php
25
use
MediaWiki\Linker\LinkRenderer
;
26
use
MediaWiki\MediaWikiServices
;
27
28
class
NewFilesPager
extends
RangeChronologicalPager
{
29
33
protected
$gallery
;
34
38
protected
$opts
;
39
45
public
function
__construct
(
IContextSource
$context
,
FormOptions
$opts
,
46
LinkRenderer
$linkRenderer
47
) {
48
parent::__construct(
$context
,
$linkRenderer
);
49
50
$this->opts =
$opts
;
51
$this->
setLimit
( $opts->
getValue
(
'limit'
) );
52
53
$startTimestamp =
''
;
54
$endTimestamp =
''
;
55
if
(
$opts
->
getValue
(
'start'
) ) {
56
$startTimestamp =
$opts
->
getValue
(
'start'
) .
' 00:00:00'
;
57
}
58
if
(
$opts
->
getValue
(
'end'
) ) {
59
$endTimestamp =
$opts
->
getValue
(
'end'
) .
' 23:59:59'
;
60
}
61
$this->
getDateRangeCond
( $startTimestamp, $endTimestamp );
62
}
63
64
function
getQueryInfo
() {
65
$opts
=
$this->opts
;
66
$conds = [];
67
$actorQuery =
ActorMigration::newMigration
()->getJoin(
'img_user'
);
68
$tables = [
'image'
] + $actorQuery[
'tables'
];
69
$fields = [
'img_name'
,
'img_timestamp'
] + $actorQuery[
'fields'
];
70
$options = [];
71
$jconds = $actorQuery[
'joins'
];
72
73
$user =
$opts
->
getValue
(
'user'
);
74
if
( $user !==
''
) {
75
$conds[] =
ActorMigration::newMigration
()
76
->getWhere(
wfGetDB
(
DB_REPLICA
),
'img_user'
,
User::newFromName
( $user,
false
) )[
'conds'
];
77
}
78
79
if
( !
$opts
->
getValue
(
'showbots'
) ) {
80
$groupsWithBotPermission = MediaWikiServices::getInstance()
81
->getPermissionManager()
82
->getGroupsWithPermission(
'bot'
);
83
84
if
( count( $groupsWithBotPermission ) ) {
85
$dbr
=
wfGetDB
(
DB_REPLICA
);
86
$tables[] =
'user_groups'
;
87
$conds[] =
'ug_group IS NULL'
;
88
$jconds[
'user_groups'
] = [
89
'LEFT JOIN'
,
90
[
91
'ug_group'
=> $groupsWithBotPermission,
92
'ug_user = '
. $actorQuery[
'fields'
][
'img_user'
],
93
'ug_expiry IS NULL OR ug_expiry >= '
.
$dbr
->addQuotes(
$dbr
->timestamp() )
94
]
95
];
96
}
97
}
98
99
if
(
$opts
->
getValue
(
'hidepatrolled'
) ) {
100
$tables[] =
'recentchanges'
;
101
$conds[
'rc_type'
] =
RC_LOG
;
102
$conds[
'rc_log_type'
] =
'upload'
;
103
$conds[
'rc_patrolled'
] =
RecentChange::PRC_UNPATROLLED
;
104
$conds[
'rc_namespace'
] =
NS_FILE
;
105
106
$jconds[
'recentchanges'
] = [
107
'JOIN'
,
108
[
109
'rc_title = img_name'
,
110
'rc_actor = '
. $actorQuery[
'fields'
][
'img_actor'
],
111
'rc_timestamp = img_timestamp'
112
]
113
];
114
// We're ordering by img_timestamp, so we have to make sure MariaDB queries `image` first.
115
// It sometimes decides to query `recentchanges` first and filesort the result set later
116
// to get the right ordering. T124205 / https://mariadb.atlassian.net/browse/MDEV-8880
117
$options[] =
'STRAIGHT_JOIN'
;
118
}
119
120
if
(
$opts
->
getValue
(
'mediatype'
) ) {
121
$conds[
'img_media_type'
] =
$opts
->
getValue
(
'mediatype'
);
122
}
123
124
$likeVal =
$opts
->
getValue
(
'like'
);
125
if
( !$this->
getConfig
()->
get
(
'MiserMode'
) && $likeVal !==
''
) {
126
$dbr
=
wfGetDB
(
DB_REPLICA
);
127
$likeObj =
Title::newFromText
( $likeVal );
128
if
( $likeObj instanceof
Title
) {
129
$like =
$dbr
->buildLike(
130
$dbr
->anyString(),
131
strtolower( $likeObj->getDBkey() ),
132
$dbr
->anyString()
133
);
134
$conds[] =
"LOWER(img_name) $like"
;
135
}
136
}
137
138
$query = [
139
'tables'
=> $tables,
140
'fields'
=> $fields,
141
'join_conds'
=> $jconds,
142
'conds'
=> $conds,
143
'options'
=> $options,
144
];
145
146
return
$query;
147
}
148
149
function
getIndexField
() {
150
return
'img_timestamp'
;
151
}
152
153
protected
function
getStartBody
() {
154
if
( !$this->gallery ) {
155
// Note that null for mode is taken to mean use default.
156
$mode = $this->
getRequest
()->getVal(
'gallerymode'
,
null
);
157
try
{
158
$this->gallery =
ImageGalleryBase::factory
( $mode, $this->
getContext
() );
159
}
catch
( Exception $e ) {
160
// User specified something invalid, fallback to default.
161
$this->gallery =
ImageGalleryBase::factory
(
false
, $this->
getContext
() );
162
}
163
}
164
165
return
''
;
166
}
167
168
protected
function
getEndBody
() {
169
return
$this->gallery->toHTML();
170
}
171
172
function
formatRow
( $row ) {
173
$name = $row->img_name;
174
$user =
User::newFromId
( $row->img_user );
175
176
$title
=
Title::makeTitle
(
NS_FILE
, $name );
177
$ul
= $this->
getLinkRenderer
()->makeLink(
178
$user->getUserPage(),
179
$user->getName()
180
);
181
$time = $this->
getLanguage
()->userTimeAndDate( $row->img_timestamp, $this->getUser() );
182
183
$this->gallery->add(
184
$title
,
185
"$ul<br />\n<i>"
186
. htmlspecialchars( $time )
187
.
"</i><br />\n"
188
);
189
return
''
;
190
}
191
}
ContextSource\$context
IContextSource $context
Definition:
ContextSource.php:33
ContextSource\getConfig
getConfig()
Definition:
ContextSource.php:63
User\newFromId
static newFromId( $id)
Static factory method for creation from a given user ID.
Definition:
User.php:539
Title\newFromText
static newFromText( $text, $defaultNamespace=NS_MAIN)
Create a new Title from text, such as what one would find in a link.
Definition:
Title.php:316
ContextSource\getContext
getContext()
Get the base IContextSource object.
Definition:
ContextSource.php:40
MediaWiki\MediaWikiServices
MediaWikiServices is the service locator for the application scope of MediaWiki.
Definition:
MediaWikiServices.php:117
FormOptions\getValue
getValue( $name)
Get the value for the given option name.
Definition:
FormOptions.php:182
ImageGalleryBase
Image gallery.
Definition:
ImageGalleryBase.php:32
MediaWiki\Linker\LinkRenderer
Class that generates HTML links for pages.
Definition:
LinkRenderer.php:41
RC_LOG
const RC_LOG
Definition:
Defines.php:124
NS_FILE
const NS_FILE
Definition:
Defines.php:66
User\newFromName
static newFromName( $name, $validate='valid')
Static factory method for creation from username.
Definition:
User.php:515
IndexPager\$linkRenderer
LinkRenderer $linkRenderer
Definition:
IndexPager.php:162
NewFilesPager\$gallery
ImageGalleryBase $gallery
Definition:
NewFilesPager.php:33
ContextSource\getRequest
getRequest()
Definition:
ContextSource.php:71
ActorMigration\newMigration
static newMigration()
Static constructor.
Definition:
ActorMigration.php:136
$dbr
$dbr
Definition:
testCompression.php:50
NewFilesPager\formatRow
formatRow( $row)
Abstract formatting function.
Definition:
NewFilesPager.php:172
ContextSource\getLanguage
getLanguage()
Definition:
ContextSource.php:128
IndexPager\setLimit
setLimit( $limit)
Set the limit from an other source than the request.
Definition:
IndexPager.php:306
wfGetDB
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
Definition:
GlobalFunctions.php:2575
RangeChronologicalPager\getDateRangeCond
getDateRangeCond( $startStamp, $endStamp)
Set and return a date range condition using timestamps provided by the user.
Definition:
RangeChronologicalPager.php:43
$title
$title
Definition:
testCompression.php:34
NewFilesPager\getStartBody
getStartBody()
Hook into getBody(), allows text to be inserted at the start.
Definition:
NewFilesPager.php:153
Title\makeTitle
static makeTitle( $ns, $title, $fragment='', $interwiki='')
Create a new Title from a namespace index and a DB key.
Definition:
Title.php:586
DB_REPLICA
const DB_REPLICA
Definition:
defines.php:25
RangeChronologicalPager
Pager for filtering by a range of dates.
Definition:
RangeChronologicalPager.php:27
$ul
$ul
Definition:
upgradeLogging.php:180
NewFilesPager\$opts
FormOptions $opts
Definition:
NewFilesPager.php:38
NewFilesPager\__construct
__construct(IContextSource $context, FormOptions $opts, LinkRenderer $linkRenderer)
Definition:
NewFilesPager.php:45
IndexPager\getLinkRenderer
getLinkRenderer()
Definition:
IndexPager.php:813
IContextSource
Interface for objects which can provide a MediaWiki context on request.
Definition:
IContextSource.php:53
NewFilesPager\getQueryInfo
getQueryInfo()
This function should be overridden to provide all parameters needed for the main paged query.
Definition:
NewFilesPager.php:64
Title
Represents a title within MediaWiki.
Definition:
Title.php:42
RecentChange\PRC_UNPATROLLED
const PRC_UNPATROLLED
Definition:
RecentChange.php:79
NewFilesPager\getEndBody
getEndBody()
Hook into getBody() for the end of the list.
Definition:
NewFilesPager.php:168
NewFilesPager\getIndexField
getIndexField()
This function should be overridden to return the name of the index fi- eld.
Definition:
NewFilesPager.php:149
ImageGalleryBase\factory
static factory( $mode=false, IContextSource $context=null)
Get a new image gallery.
Definition:
ImageGalleryBase.php:112
FormOptions
Helper class to keep track of options when mixing links and form elements.
Definition:
FormOptions.php:35
NewFilesPager
Definition:
NewFilesPager.php:28
includes
specials
pagers
NewFilesPager.php
Generated on Thu Dec 19 2019 14:54:55 for MediaWiki by
1.8.16