9use MediaWiki\Cache\LinkBatchFactory;
14use MediaWiki\Languages\LanguageConverterFactory;
44 LinkBatchFactory $linkBatchFactory,
45 LanguageConverterFactory $languageConverterFactory
47 parent::__construct(
'MIMEsearch' );
50 $this->languageConverter = $languageConverterFactory->getLanguageConverter( $this->
getContentLanguage() );
70 return [
'mime' =>
"{$this->major}/{$this->minor}" ];
76 if ( $this->minor !==
'*' ) {
80 $fileQuery = FileSelectQueryBuilder::newForFile( $this->
getDatabaseProvider()->getReplicaDatabase() )
83 'tables' => $fileQuery[
'tables'],
86 'title' =>
'img_name',
89 'value' =>
'img_name',
100 'img_media_type' => [
114 'join_conds' => $fileQuery[
'join_conds'],
117 if ( isset( $fileQuery[
'fields'][
'img_user_text'] ) ) {
118 $qi[
'fields'][
'img_user_text'] = $fileQuery[
'fields'][
'img_user_text'];
121 $qi[
'fields'][] =
'img_user_text';
147 'type' =>
'combobox',
150 'label-message' =>
'mimetype',
156 HTMLForm::factory(
'ooui', $formDescriptor, $this->
getContext() )
157 ->setSubmitTextMsg(
'ilsubmit' )
161 ->displayForm(
false );
166 $queryBuilder = $this->
getDatabaseProvider()->getReplicaDatabase()->newSelectQueryBuilder();
174 ->select( [
'img_media_type',
'img_major_mime',
'img_minor_mime' ] )
176 ->groupBy( [
'img_media_type',
'img_major_mime',
'img_minor_mime' ] );
178 $queryBuilder->select(
180 'img_media_type' =>
'ft_media_type',
181 'img_major_mime' =>
'ft_major_mime',
182 'img_minor_mime' =>
'ft_minor_mime',
185 ->from(
'filetypes' );
188 $result = $queryBuilder->caller( __METHOD__ )->fetchResultSet();
192 foreach ( $result as $row ) {
193 $major = $row->img_major_mime;
194 $minor = $row->img_minor_mime;
195 $suggestions[
"$major/$minor" ] =
"$major/$minor";
196 if ( $lastMajor ===
$major ) {
198 $suggestions[
"$major/*" ] =
"$major/*";
202 ksort( $suggestions );
208 $this->addHelpLink(
'Help:Managing_files' );
209 $this->mime = $par ?: $this->getRequest()->getText(
'mime' );
210 $this->mime = trim( $this->mime );
211 [ $this->major, $this->minor ] = File::splitMime( $this->mime );
214 if ( $this->major ==
'' || $this->minor ==
'' || $this->minor ==
'unknown' ||
215 !$mimeAnalyzer->isValidMajorMimeType( $this->major )
218 $this->outputHeader();
219 $this->getPageHeader();
223 parent::execute( $par );
232 $linkRenderer = $this->getLinkRenderer();
235 $text = $this->languageConverter->convertHtml( $nt->getText() );
236 $plink = $linkRenderer->makeLink(
237 Title::newFromText( $nt->getPrefixedText() ),
241 $download = Linker::makeMediaLinkObj( $nt, $this->msg(
'download' )->escaped() );
242 $download = $this->msg(
'parentheses' )->rawParams( $download )->escaped();
243 $lang = $this->getLanguage();
244 $bytes = htmlspecialchars( $lang->formatSize( $result->img_size ) );
245 $dimensions = $this->msg(
'widthheight' )->numParams( $result->img_width,
246 $result->img_height )->escaped();
247 $user = $linkRenderer->makeLink(
249 $result->img_user_text
252 $time = $lang->userTimeAndDate( $result->img_timestamp, $this->getUser() );
253 $time = htmlspecialchars( $time );
255 return "$download $plink . . $dimensions . . $bytes . . $user . . $time";
260 $this->executeLBFromResultWrapper( $res );
273class_alias( SpecialMIMESearch::class,
'SpecialMIMESearch' );
const SCHEMA_COMPAT_READ_OLD
const MEDIATYPE_MULTIMEDIA
const MEDIATYPE_EXECUTABLE
A class containing constants representing the names of configuration variables.
const FileSchemaMigrationStage
Name constant for the FileSchemaMigrationStage setting, for use with Config::get()
This is a class for doing query pages; since they're almost all the same, we factor out some of the f...
setDatabaseProvider(IConnectionProvider $databaseProvider)
setLinkBatchFactory(LinkBatchFactory $linkBatchFactory)
getPageTitle( $subpage=false)
Get a self-referential title object.
getContext()
Gets the context this SpecialPage is executed in.
getContentLanguage()
Shortcut to get content language.