MediaWiki  1.28.1
LocalRepo Class Reference

A repository that stores files in the local filesystem and registers them in the wiki's own database. More...

Inheritance diagram for LocalRepo:
Collaboration diagram for LocalRepo:

Public Member Functions

 __construct (array $info=null)
 
 checkRedirect (Title $title)
 Checks if there is a redirect named as $title. More...
 
 cleanupBatch (array $files, $flags=0)
 
 cleanupDeletedBatch (array $storageKeys)
 Delete files in the deleted directory if they are not referenced in the filearchive table. More...
 
 delete ($srcRel, $archiveRel)
 
 deleteBatch (array $sourceDestPairs)
 
 findBySha1 ($hash)
 Get an array or iterator of file objects for files that have a given SHA-1 content hash. More...
 
 findBySha1s (array $hashes)
 Get an array of arrays or iterators of file objects for files that have the given SHA-1 content hashes. More...
 
 findFiles (array $items, $flags=0)
 
 findFilesByPrefix ($prefix, $limit)
 Return an array of files where the name starts with $prefix. More...
 
 getInfo ()
 Return information about the repository. More...
 
 getMasterDB ()
 Get a connection to the master DB. More...
 
 getSharedCacheKey ()
 Get a key on the primary cache for this repository. More...
 
 getSlaveDB ()
 Get a connection to the replica DB. More...
 
 invalidateImageRedirect (Title $title)
 Invalidates image redirect cache related to that image. More...
 
 newFileFromRow ($row)
 
 newFromArchiveName ($title, $archiveName)
 
 publish ($src, $dstRel, $archiveRel, $flags=0, array $options=[])
 
 publishBatch (array $ntuples, $flags=0)
 
 store ($srcPath, $dstZone, $dstRel, $flags=0)
 
 storeBatch (array $triplets, $flags=0)
 
- Public Member Functions inherited from FileRepo
 __construct (array $info=null)
 
 backendSupportsUnicodePaths ()
 
 canTransformVia404 ()
 Returns true if the repository can transform files via a 404 handler. More...
 
 checkRedirect (Title $title)
 Checks if there is a redirect named as $title. More...
 
 cleanDir ($dir)
 Deletes a directory if empty. More...
 
 cleanupBatch (array $files, $flags=0)
 Deletes a batch of files. More...
 
 cleanupDeletedBatch (array $storageKeys)
 Delete files in the deleted directory if they are not referenced in the filearchive table. More...
 
 concatenate (array $srcPaths, $dstPath, $flags=0)
 Concatenate a list of temporary files into a target file location. More...
 
 delete ($srcRel, $archiveRel)
 Move a file to the deletion archive. More...
 
 deleteBatch (array $sourceDestPairs)
 Move a group of files to the deletion archive. More...
 
 enumFiles ($callback)
 Call a callback function for every public regular file in the repository. More...
 
 fileExists ($file)
 Checks existence of a a file. More...
 
 fileExistsBatch (array $files)
 Checks existence of an array of files. More...
 
 findBySha1 ($hash)
 Get an array or iterator of file objects for files that have a given SHA-1 content hash. More...
 
 findBySha1s (array $hashes)
 Get an array of arrays or iterators of file objects for files that have the given SHA-1 content hashes. More...
 
 findFile ($title, $options=[])
 Find an instance of the named file created at the specified time Returns false if the file does not exist. More...
 
 findFileFromKey ($sha1, $options=[])
 Find an instance of the file with this key, created at the specified time Returns false if the file does not exist. More...
 
 findFiles (array $items, $flags=0)
 Find many files at once. More...
 
 findFilesByPrefix ($prefix, $limit)
 Return an array of files where the name starts with $prefix. More...
 
 freeTemp ($virtualUrl)
 Remove a temporary file or mark it for garbage collection. More...
 
 getBackend ()
 Get the file backend instance. More...
 
 getDeletedHashPath ($key)
 Get a relative path for a deletion archive key, e.g. More...
 
 getDescriptionRenderUrl ($name, $lang=null)
 Get the URL of the content-only fragment of the description page. More...
 
 getDescriptionStylesheetUrl ()
 Get the URL of the stylesheet to apply to description pages. More...
 
 getDescriptionUrl ($name)
 Get the URL of an image description page. More...
 
 getDisplayName ()
 Get the human-readable name of the repo. More...
 
 getErrorCleanupFunction ()
 Get a callback function to use for cleaning error message parameters. More...
 
 getFileProps ($virtualUrl)
 Get properties of a file with a given virtual URL/storage path. More...
 
 getFileSha1 ($virtualUrl)
 Get the sha1 (base 36) of a file with a given virtual URL/storage path. More...
 
 getFileSize ($virtualUrl)
 Get the size of a file with a given virtual URL/storage path. More...
 
 getFileTimestamp ($virtualUrl)
 Get the timestamp of a file with a given virtual URL/storage path. More...
 
 getHashLevels ()
 Get the number of hash directory levels. More...
 
 getHashPath ($name)
 Get a relative path including trailing slash, e.g. More...
 
 getInfo ()
 Return information about the repository. More...
 
 getLocalCacheKey ()
 Get a key for this repo in the local cache domain. More...
 
 getLocalCopy ($virtualUrl)
 Get a local FS copy of a file with a given virtual URL/storage path. More...
 
 getLocalReference ($virtualUrl)
 Get a local FS file with a given virtual URL/storage path. More...
 
 getName ()
 Get the name of this repository, as specified by $info['name]' to the constructor. More...
 
 getNameFromTitle (Title $title)
 Get the name of a file from its title object. More...
 
 getReadOnlyReason ()
 Get an explanatory message if this repo is read-only. More...
 
 getRootDirectory ()
 Get the public zone root storage directory of the repository. More...
 
 getSharedCacheKey ()
 Get a key on the primary cache for this repository. More...
 
 getTempHashPath ($suffix)
 Get a relative path including trailing slash, e.g. More...
 
 getTempRepo ()
 Get a temporary private FileRepo associated with this repo. More...
 
 getThumbScriptUrl ()
 Get the URL of thumb.php. More...
 
 getUploadStash (User $user=null)
 Get an UploadStash associated with this repo. More...
 
 getVirtualUrl ($suffix=false)
 Get a URL referring to this repository, with the private mwrepo protocol. More...
 
 getZonePath ($zone)
 Get the storage path corresponding to one of the zones. More...
 
 getZoneUrl ($zone, $ext=null)
 Get the URL corresponding to one of the four basic zones. More...
 
 hasSha1Storage ()
 Returns whether or not storage is SHA-1 based. More...
 
 invalidateImageRedirect (Title $title)
 Invalidates image redirect cache related to that image Doesn't do anything for repositories that don't support image redirects. More...
 
 isLocal ()
 Returns true if this the local file repository. More...
 
 makeUrl ($query= '', $entry= 'index')
 Make an url to this repo. More...
 
 nameForThumb ($name)
 Get the portion of the file that contains the origin file name. More...
 
 newFatal ($message)
 Create a new fatal error. More...
 
 newFile ($title, $time=false)
 Create a new File object from the local repository. More...
 
 newGood ($value=null)
 Create a new good result. More...
 
 paranoidClean ($param)
 Path disclosure protection function. More...
 
 passThrough ($param)
 Path disclosure protection function. More...
 
 publish ($src, $dstRel, $archiveRel, $flags=0, array $options=[])
 Copy or move a file either from a storage path, virtual URL, or file system path, into this repository at the specified destination location. More...
 
 publishBatch (array $ntuples, $flags=0)
 Publish a batch of files. More...
 
 quickCleanDir ($dir)
 Deletes a directory if empty. More...
 
 quickImport ($src, $dst, $options=null)
 Import a file from the local file system into the repo. More...
 
 quickImportBatch (array $triples)
 Import a batch of files from the local file system into the repo. More...
 
 quickPurge ($path)
 Purge a file from the repo. More...
 
 quickPurgeBatch (array $paths)
 Purge a batch of files from the repo. More...
 
 resolveVirtualUrl ($url)
 Get the backend storage path corresponding to a virtual URL. More...
 
 store ($srcPath, $dstZone, $dstRel, $flags=0)
 Store a file to a given destination. More...
 
 storeBatch (array $triplets, $flags=0)
 Store a batch of files. More...
 
 storeTemp ($originalName, $srcPath)
 Pick a random name in the temp zone and store a file to it. More...
 
 streamFile ($virtualUrl, $headers=[])
 Attempt to stream a file with the given virtual URL/storage path. More...
 
 streamFileWithStatus ($virtualUrl, $headers=[], $optHeaders=[])
 Attempt to stream a file with the given virtual URL/storage path. More...
 
 supportsSha1URLs ()
 Returns whether or not repo supports having originals SHA-1s in the thumb URLs. More...
 
 validateFilename ($filename)
 Determine if a relative path is valid, i.e. More...
 

Static Public Member Functions

static getHashFromKey ($key)
 Gets the SHA1 hash from a storage key. More...
 
- Static Public Member Functions inherited from FileRepo
static isVirtualUrl ($url)
 Determine if a string is an mwrepo:// URL. More...
 

Protected Member Functions

 deletedFileHasKey ($key, $lock=null)
 Check if a deleted (filearchive) file has this sha1 key. More...
 
 getDBFactory ()
 Get a callback to get a DB handle given an index (DB_REPLICA/DB_MASTER) More...
 
 hiddenFileHasKey ($key, $lock=null)
 Check if a hidden (revision delete) file has this sha1 key. More...
 
 skipWriteOperationIfSha1 ($function, array $args)
 Skips the write operation if storage is sha1-based, executes it normally otherwise. More...
 
- Protected Member Functions inherited from FileRepo
 assertWritableRepo ()
 Throw an exception if this repo is read-only by design. More...
 
 enumFilesInStorage ($callback)
 Call a callback function for every public file in the repository. More...
 
 getZoneLocation ($zone)
 The the storage container and base path of a zone. More...
 
 initDirectory ($dir)
 Creates a directory with the appropriate zone permissions. More...
 
 initZones ($doZones=[])
 Check if a single zone or list of zones is defined for usage. More...
 
 resolveToStoragePath ($path)
 If a path is a virtual URL, resolve it to a storage path. More...
 

Protected Attributes

callable $fileFactory = [ 'LocalFile', 'newFromTitle' ]
 
callable $fileFactoryKey = [ 'LocalFile', 'newFromKey' ]
 
callable $fileFromRowFactory = [ 'LocalFile', 'newFromRow' ]
 
callable $oldFileFactory = [ 'OldLocalFile', 'newFromTitle' ]
 
callable $oldFileFactoryKey = [ 'OldLocalFile', 'newFromKey' ]
 
callable $oldFileFromRowFactory = [ 'OldLocalFile', 'newFromRow' ]
 
- Protected Attributes inherited from FileRepo
int $abbrvThreshold
 File names over this size will use the short form of thumbnail names. More...
 
string $articleUrl
 Equivalent to $wgArticlePath, e.g. More...
 
FileBackend $backend
 
int $deletedHashLevels
 The number of directory levels for hash-based division of deleted files. More...
 
string $descBaseUrl
 URL of image description pages, e.g. More...
 
string $favicon
 The URL of the repo's favicon, if any. More...
 
array $fileFactory = [ 'UnregisteredLocalFile', 'newFromTitle' ]
 callable Override these in the base class More...
 
array $fileFactoryKey = false
 callable|bool Override these in the base class More...
 
int $hashLevels
 The number of directory levels for hash-based division of files. More...
 
bool $hasSha1Storage = false
 
bool $initialCapital
 Equivalent to $wgCapitalLinks (or $wgCapitalLinkOverrides[NS_FILE], determines whether filenames implicitly start with a capital letter. More...
 
bool $isPrivate
 Whether all zones should be private (e.g. More...
 
array $oldFileFactory = false
 callable|bool Override these in the base class More...
 
array $oldFileFactoryKey = false
 callable|bool Override these in the base class More...
 
string $pathDisclosureProtection = 'simple'
 May be 'paranoid' to remove all parameters from error messages, 'none' to leave the paths in unchanged, or 'simple' to replace paths with placeholders. More...
 
string $scriptDirUrl
 URL of the MediaWiki installation, equivalent to $wgScriptPath, e.g. More...
 
string $scriptExtension
 Script extension of the MediaWiki installation, equivalent to the old $wgScriptExtension, e.g. More...
 
bool $supportsSha1URLs = false
 
string $thumbScriptUrl
 URL of thumb.php. More...
 
string $thumbUrl
 The base thumbnail URL. More...
 
bool $transformVia404
 Whether to skip media file transformation on parse and rely on a 404 handler instead. More...
 
bool $url
 Public zone URL. More...
 
array $zones = []
 Map of zones to config. More...
 

Additional Inherited Members

- Public Attributes inherited from FileRepo
int $descriptionCacheExpiry
 
bool $fetchDescription
 Whether to fetch commons image description pages and display them on the local wiki. More...
 
const DELETE_SOURCE = 1
 
const NAME_AND_TIME_ONLY = 1
 
const OVERWRITE = 2
 
const OVERWRITE_SAME = 4
 
const SKIP_LOCKING = 8
 
- Static Protected Member Functions inherited from FileRepo
static getHashPathForLevel ($name, $levels)
 

Detailed Description

A repository that stores files in the local filesystem and registers them in the wiki's own database.

This is the most commonly used repository class.

Definition at line 31 of file LocalRepo.php.

Constructor & Destructor Documentation

LocalRepo::__construct ( array  $info = null)

Definition at line 45 of file LocalRepo.php.

References getDBFactory(), FileRepo\hasSha1Storage(), and name.

Member Function Documentation

LocalRepo::checkRedirect ( Title  $title)
LocalRepo::cleanupBatch ( array  $files,
  $flags = 0 
)

Definition at line 530 of file LocalRepo.php.

References skipWriteOperationIfSha1().

LocalRepo::cleanupDeletedBatch ( array  $storageKeys)

Delete files in the deleted directory if they are not referenced in the filearchive table.

This needs to be done in the repo because it needs to interleave database locks with file operations, which is potentially a remote operation.

Parameters
array$storageKeys
Returns
Status

Definition at line 94 of file LocalRepo.php.

References FileRepo\$backend, $path, $status, as, deletedFileHasKey(), FileBackend\doOperation(), FileRepo\getDeletedHashPath(), getMasterDB(), FileRepo\getZonePath(), FileRepo\hasSha1Storage(), hiddenFileHasKey(), StatusValue\newGood(), FileRepo\newGood(), and wfDebug().

LocalRepo::delete (   $srcRel,
  $archiveRel 
)

Definition at line 548 of file LocalRepo.php.

References skipWriteOperationIfSha1().

LocalRepo::deleteBatch ( array  $sourceDestPairs)

Definition at line 552 of file LocalRepo.php.

References skipWriteOperationIfSha1().

LocalRepo::deletedFileHasKey (   $key,
  $lock = null 
)
protected

Check if a deleted (filearchive) file has this sha1 key.

Parameters
string$keyFile storage key (base-36 sha1 key with file extension)
string | null$lockUse "lock" to lock the row via FOR UPDATE
Returns
bool File with this key is in use

Definition at line 137 of file LocalRepo.php.

References $options, and getMasterDB().

Referenced by cleanupDeletedBatch().

LocalRepo::findBySha1 (   $hash)

Get an array or iterator of file objects for files that have a given SHA-1 content hash.

Parameters
string$hashA sha1 hash to look for
Returns
File[]

Definition at line 370 of file LocalRepo.php.

References $dbr, $res, as, getSlaveDB(), newFileFromRow(), and LocalFile\selectFields().

LocalRepo::findBySha1s ( array  $hashes)

Get an array of arrays or iterators of file objects for files that have the given SHA-1 content hashes.

Overrides generic implementation in FileRepo for performance reason

Parameters
array$hashesAn array of hashes
Returns
array An Array of arrays or iterators of file objects and the hash as key

Definition at line 398 of file LocalRepo.php.

References $dbr, $res, as, getSlaveDB(), newFileFromRow(), and LocalFile\selectFields().

LocalRepo::findFilesByPrefix (   $prefix,
  $limit 
)

Return an array of files where the name starts with $prefix.

Parameters
string$prefixThe prefix to search for
int$limitThe maximum amount of files to return
Returns
array

Definition at line 429 of file LocalRepo.php.

References $dbr, $files, $limit, $res, as, getSlaveDB(), newFileFromRow(), and LocalFile\selectFields().

LocalRepo::getDBFactory ( )
protected

Get a callback to get a DB handle given an index (DB_REPLICA/DB_MASTER)

Returns
Closure

Definition at line 471 of file LocalRepo.php.

References wfGetDB().

Referenced by __construct().

static LocalRepo::getHashFromKey (   $key)
static

Gets the SHA1 hash from a storage key.

Parameters
string$key
Returns
string

Definition at line 177 of file LocalRepo.php.

Referenced by PopulateFilearchiveSha1\doDBUpdates(), DeleteArchivedFiles\execute(), LocalFileRestoreBatch\execute(), and ArchivedFile\loadFromRow().

LocalRepo::getInfo ( )

Return information about the repository.

Returns
array
Since
1.22

Definition at line 514 of file LocalRepo.php.

References $wgFavicon, global, and wfExpandUrl().

LocalRepo::getMasterDB ( )

Get a connection to the master DB.

Returns
IDatabase

Definition at line 463 of file LocalRepo.php.

References DB_MASTER, and wfGetDB().

Referenced by cleanupDeletedBatch(), deletedFileHasKey(), hiddenFileHasKey(), and invalidateImageRedirect().

LocalRepo::getSharedCacheKey ( )

Get a key on the primary cache for this repository.

Returns false if the repository's cache is not accessible at this site. The parameters are the parts of the key, as for wfMemcKey().

Returns
string

Definition at line 484 of file LocalRepo.php.

References $args.

Referenced by checkRedirect(), and invalidateImageRedirect().

LocalRepo::getSlaveDB ( )

Get a connection to the replica DB.

Returns
IDatabase

Definition at line 455 of file LocalRepo.php.

References DB_REPLICA, and wfGetDB().

Referenced by FindOrphanedFiles\checkFiles(), findBySha1(), findBySha1s(), findFiles(), findFilesByPrefix(), and PurgeChangedFiles\purgeFromArchiveTable().

LocalRepo::hiddenFileHasKey (   $key,
  $lock = null 
)
protected

Check if a hidden (revision delete) file has this sha1 key.

Parameters
string$keyFile storage key (base-36 sha1 key with file extension)
string | null$lockUse "lock" to lock the row via FOR UPDATE
Returns
bool File with this key is in use

Definition at line 155 of file LocalRepo.php.

References $ext, $options, File\DELETED_FILE, getMasterDB(), and File\normalizeExtension().

Referenced by cleanupDeletedBatch().

LocalRepo::invalidateImageRedirect ( Title  $title)

Invalidates image redirect cache related to that image.

Parameters
Title$titleTitle of page
Returns
void

Definition at line 496 of file LocalRepo.php.

References Title\getDBkey(), ObjectCache\getMainWANInstance(), getMasterDB(), getSharedCacheKey(), and use.

LocalRepo::newFileFromRow (   $row)
Exceptions
MWException
Parameters
stdClass$row
Returns
LocalFile

Definition at line 65 of file LocalRepo.php.

Referenced by findBySha1(), findBySha1s(), and findFilesByPrefix().

LocalRepo::newFromArchiveName (   $title,
  $archiveName 
)
Parameters
Title$title
string$archiveName
Returns
OldLocalFile

Definition at line 80 of file LocalRepo.php.

References $title, and OldLocalFile\newFromArchiveName().

Referenced by FindOrphanedFiles\checkFiles(), and PurgeChangedFiles\purgeFromArchiveTable().

LocalRepo::publish (   $src,
  $dstRel,
  $archiveRel,
  $flags = 0,
array  $options = [] 
)

Definition at line 534 of file LocalRepo.php.

References skipWriteOperationIfSha1().

LocalRepo::publishBatch ( array  $ntuples,
  $flags = 0 
)

Definition at line 544 of file LocalRepo.php.

References skipWriteOperationIfSha1().

LocalRepo::skipWriteOperationIfSha1 (   $function,
array  $args 
)
protected

Skips the write operation if storage is sha1-based, executes it normally otherwise.

Parameters
string$function
array$args
Returns
Status

Definition at line 563 of file LocalRepo.php.

References FileRepo\assertWritableRepo(), FileRepo\hasSha1Storage(), StatusValue\newGood(), and wfDebug().

Referenced by cleanupBatch(), delete(), deleteBatch(), publish(), publishBatch(), store(), and storeBatch().

LocalRepo::store (   $srcPath,
  $dstZone,
  $dstRel,
  $flags = 0 
)

Definition at line 522 of file LocalRepo.php.

References skipWriteOperationIfSha1().

LocalRepo::storeBatch ( array  $triplets,
  $flags = 0 
)

Definition at line 526 of file LocalRepo.php.

References skipWriteOperationIfSha1().

Member Data Documentation

callable LocalRepo::$fileFactory = [ 'LocalFile', 'newFromTitle' ]
protected

Definition at line 33 of file LocalRepo.php.

callable LocalRepo::$fileFactoryKey = [ 'LocalFile', 'newFromKey' ]
protected

Definition at line 35 of file LocalRepo.php.

callable LocalRepo::$fileFromRowFactory = [ 'LocalFile', 'newFromRow' ]
protected

Definition at line 37 of file LocalRepo.php.

callable LocalRepo::$oldFileFactory = [ 'OldLocalFile', 'newFromTitle' ]
protected

Definition at line 41 of file LocalRepo.php.

callable LocalRepo::$oldFileFactoryKey = [ 'OldLocalFile', 'newFromKey' ]
protected

Definition at line 43 of file LocalRepo.php.

callable LocalRepo::$oldFileFromRowFactory = [ 'OldLocalFile', 'newFromRow' ]
protected

Definition at line 39 of file LocalRepo.php.


The documentation for this class was generated from the following file: