*/
protected $scriptDirUrl;
- /** @var string Script extension of the MediaWiki installation, equivalent
- * to the old $wgScriptExtension, e.g. .php5 defaults to .php */
- protected $scriptExtension;
-
/** @var string Equivalent to $wgArticlePath, e.g. https://en.wikipedia.org/wiki/$1 */
protected $articleUrl;
$optionalSettings = [
'descBaseUrl', 'scriptDirUrl', 'articleUrl', 'fetchDescription',
'thumbScriptUrl', 'pathDisclosureProtection', 'descriptionCacheExpiry',
- 'scriptExtension', 'favicon', 'thumbProxyUrl', 'thumbProxySecret'
+ 'favicon', 'thumbProxyUrl', 'thumbProxySecret',
];
foreach ( $optionalSettings as $var ) {
if ( isset( $info[$var] ) ) {
}
// Optional settings that have a default
- $this->initialCapital = isset( $info['initialCapital'] )
- ? $info['initialCapital']
- : MWNamespace::isCapitalized( NS_FILE );
- $this->url = isset( $info['url'] )
- ? $info['url']
- : false; // a subclass may set the URL (e.g. ForeignAPIRepo)
+ $this->initialCapital = $info['initialCapital'] ?? MWNamespace::isCapitalized( NS_FILE );
+ $this->url = $info['url'] ?? false; // a subclass may set the URL (e.g. ForeignAPIRepo)
if ( isset( $info['thumbUrl'] ) ) {
$this->thumbUrl = $info['thumbUrl'];
} else {
$this->thumbUrl = $this->url ? "{$this->url}/thumb" : false;
}
- $this->hashLevels = isset( $info['hashLevels'] )
- ? $info['hashLevels']
- : 2;
- $this->deletedHashLevels = isset( $info['deletedHashLevels'] )
- ? $info['deletedHashLevels']
- : $this->hashLevels;
+ $this->hashLevels = $info['hashLevels'] ?? 2;
+ $this->deletedHashLevels = $info['deletedHashLevels'] ?? $this->hashLevels;
$this->transformVia404 = !empty( $info['transformVia404'] );
- $this->abbrvThreshold = isset( $info['abbrvThreshold'] )
- ? $info['abbrvThreshold']
- : 255;
+ $this->abbrvThreshold = $info['abbrvThreshold'] ?? 255;
$this->isPrivate = !empty( $info['isPrivate'] );
// Give defaults for the basic zones...
- $this->zones = isset( $info['zones'] ) ? $info['zones'] : [];
+ $this->zones = $info['zones'] ?? [];
foreach ( [ 'public', 'thumb', 'transcoded', 'temp', 'deleted' ] as $zone ) {
if ( !isset( $this->zones[$zone]['container'] ) ) {
$this->zones[$zone]['container'] = "{$this->name}-{$zone}";
if ( isset( $options['bypassCache'] ) ) {
$options['latest'] = $options['bypassCache']; // b/c
}
- $time = isset( $options['time'] ) ? $options['time'] : false;
+ $time = $options['time'] ?? false;
$flags = !empty( $options['latest'] ) ? File::READ_LATEST : 0;
# First try the current version of the file to see if it precedes the timestamp
$img = $this->newFile( $title );
* @return File|bool False on failure
*/
public function findFileFromKey( $sha1, $options = [] ) {
- $time = isset( $options['time'] ) ? $options['time'] : false;
+ $time = $options['time'] ?? false;
# First try to find a matching current version of a file...
if ( !$this->fileFactoryKey ) {
return false; // find-by-sha1 not supported
* Get an array of arrays or iterators of file objects for files that
* have the given SHA-1 content hashes.
*
- * @param array $hashes An array of hashes
- * @return array An Array of arrays or iterators of file objects and the hash as key
+ * @param string[] $hashes An array of hashes
+ * @return array[] An Array of arrays or iterators of file objects and the hash as key
*/
public function findBySha1s( array $hashes ) {
$result = [];
* STUB
* @param string $prefix The prefix to search for
* @param int $limit The maximum amount of files to return
- * @return array
+ * @return LocalFile[]
*/
public function findFilesByPrefix( $prefix, $limit ) {
return [];
*/
public function getTempHashPath( $suffix ) {
$parts = explode( '!', $suffix, 2 ); // format is <timestamp>!<name> or just <name>
- $name = isset( $parts[1] ) ? $parts[1] : $suffix; // hash path is not based on timestamp
+ $name = $parts[1] ?? $suffix; // hash path is not based on timestamp
return self::getHashPathForLevel( $name, $this->hashLevels );
}
*/
public function makeUrl( $query = '', $entry = 'index' ) {
if ( isset( $this->scriptDirUrl ) ) {
- $ext = isset( $this->scriptExtension ) ? $this->scriptExtension : '.php';
-
- return wfAppendQuery( "{$this->scriptDirUrl}/{$entry}{$ext}", $query );
+ return wfAppendQuery( "{$this->scriptDirUrl}/{$entry}.php", $query );
}
return false;
* should use File::getDescriptionText().
*
* @param string $name Name of image to fetch
- * @param string $lang Language to fetch it in, if any.
+ * @param string|null $lang Language to fetch it in, if any.
* @return string|false
*/
public function getDescriptionRenderUrl( $name, $lang = null ) {
* Each file can be a (zone, rel) pair, virtual url, storage path.
* It will try to delete each file, but ignores any errors that may occur.
*
- * @param array $files List of files to delete
+ * @param string[] $files List of files to delete
* @param int $flags Bitwise combination of the following flags:
* self::SKIP_LOCKING Skip any file locking when doing the deletions
* @return Status
list( $src, $dstRel, $archiveRel ) = $ntuple;
$srcPath = ( $src instanceof FSFile ) ? $src->getPath() : $src;
- $options = isset( $ntuple[3] ) ? $ntuple[3] : [];
+ $options = $ntuple[3] ?? [];
// Resolve source to a storage path if virtual
$srcPath = $this->resolveToStoragePath( $srcPath );
if ( !$this->validateFilename( $dstRel ) ) {
}
// Set any desired headers to be use in GET/HEAD responses
- $headers = isset( $options['headers'] ) ? $options['headers'] : [];
+ $headers = $options['headers'] ?? [];
// Archive destination file if it exists.
// This will check if the archive file also exists and fail if does.
/**
* Checks existence of an array of files.
*
- * @param array $files Virtual URLs (or storage paths) of files to check
+ * @param string[] $files Virtual URLs (or storage paths) of files to check
* @return array Map of files and existence flags, or false
*/
public function fileExistsBatch( array $files ) {
* Delete files in the deleted directory if they are not referenced in the filearchive table
*
* STUB
- * @param array $storageKeys
+ * @param string[] $storageKeys
*/
public function cleanupDeletedBatch( array $storageKeys ) {
$this->assertWritableRepo();
$status = $this->newGood();
$status->merge( $this->backend->streamFile( $params ) );
- ob_end_flush();
+ // T186565: Close the buffer, unless it has already been closed
+ // in HTTPFileStreamer::resetOutputBuffers().
+ if ( ob_get_status() ) {
+ ob_end_flush();
+ }
return $status;
}
/**
* Get a callback function to use for cleaning error message parameters
*
- * @return array
+ * @return string[]
*/
function getErrorCleanupFunction() {
switch ( $this->pathDisclosureProtection ) {
/**
* Get an UploadStash associated with this repo.
*
- * @param User $user
+ * @param User|null $user
* @return UploadStash
*/
public function getUploadStash( User $user = null ) {
$optionalSettings = [
'url', 'thumbUrl', 'initialCapital', 'descBaseUrl', 'scriptDirUrl', 'articleUrl',
- 'fetchDescription', 'descriptionCacheExpiry', 'scriptExtension', 'favicon'
+ 'fetchDescription', 'descriptionCacheExpiry', 'favicon'
];
foreach ( $optionalSettings as $k ) {
if ( isset( $this->$k ) ) {