MediaWiki
REL1_34
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
}
wfGetDB
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
Definition
GlobalFunctions.php:2555
getContext
getContext()
ContextSource\getRequest
getRequest()
Definition
ContextSource.php:71
ContextSource\getConfig
getConfig()
Definition
ContextSource.php:63
ContextSource\$context
IContextSource $context
Definition
ContextSource.php:33
ContextSource\getLanguage
getLanguage()
Definition
ContextSource.php:128
FormOptions
Helper class to keep track of options when mixing links and form elements.
Definition
FormOptions.php:35
FormOptions\getValue
getValue( $name)
Get the value for the given option name.
Definition
FormOptions.php:182
ImageGalleryBase
Image gallery.
Definition
ImageGalleryBase.php:32
ImageGalleryBase\factory
static factory( $mode=false, IContextSource $context=null)
Get a new image gallery.
Definition
ImageGalleryBase.php:112
IndexPager\getLinkRenderer
getLinkRenderer()
Definition
IndexPager.php:813
IndexPager\$linkRenderer
LinkRenderer $linkRenderer
Definition
IndexPager.php:162
IndexPager\setLimit
setLimit( $limit)
Set the limit from an other source than the request.
Definition
IndexPager.php:306
MediaWiki\Linker\LinkRenderer
Class that generates HTML links for pages.
Definition
LinkRenderer.php:41
MediaWiki\MediaWikiServices
MediaWikiServices is the service locator for the application scope of MediaWiki.
Definition
MediaWikiServices.php:117
NewFilesPager
Definition
NewFilesPager.php:28
NewFilesPager\getIndexField
getIndexField()
This function should be overridden to return the name of the index fi- eld.
Definition
NewFilesPager.php:149
NewFilesPager\getQueryInfo
getQueryInfo()
This function should be overridden to provide all parameters needed for the main paged query.
Definition
NewFilesPager.php:64
NewFilesPager\getEndBody
getEndBody()
Hook into getBody() for the end of the list.
Definition
NewFilesPager.php:168
NewFilesPager\__construct
__construct(IContextSource $context, FormOptions $opts, LinkRenderer $linkRenderer)
Definition
NewFilesPager.php:45
NewFilesPager\formatRow
formatRow( $row)
Abstract formatting function.
Definition
NewFilesPager.php:172
NewFilesPager\getStartBody
getStartBody()
Hook into getBody(), allows text to be inserted at the start.
Definition
NewFilesPager.php:153
NewFilesPager\$opts
FormOptions $opts
Definition
NewFilesPager.php:38
NewFilesPager\$gallery
ImageGalleryBase $gallery
Definition
NewFilesPager.php:33
RangeChronologicalPager
Pager for filtering by a range of dates.
Definition
RangeChronologicalPager.php:27
RangeChronologicalPager\getDateRangeCond
getDateRangeCond( $startStamp, $endStamp)
Set and return a date range condition using timestamps provided by the user.
Definition
RangeChronologicalPager.php:43
Title
Represents a title within MediaWiki.
Definition
Title.php:42
User\newFromName
static newFromName( $name, $validate='valid')
Static factory method for creation from username.
Definition
User.php:518
User\newFromId
static newFromId( $id)
Static factory method for creation from a given user ID.
Definition
User.php:542
NS_FILE
const NS_FILE
Definition
Defines.php:75
RC_LOG
const RC_LOG
Definition
Defines.php:133
IContextSource
Interface for objects which can provide a MediaWiki context on request.
Definition
IContextSource.php:53
DB_REPLICA
const DB_REPLICA
Definition
defines.php:25
$dbr
$dbr
Definition
testCompression.php:50
$title
$title
Definition
testCompression.php:34
$ul
$ul
Definition
upgradeLogging.php:218
includes
specials
pagers
NewFilesPager.php
Generated on Fri Apr 5 2024 23:10:35 for MediaWiki by
1.9.8