MediaWiki REL1_28
ForeignAPIRepo Class Reference

A foreign repository with a remote MediaWiki with an API thingy. More...

Inheritance diagram for ForeignAPIRepo:
Collaboration diagram for ForeignAPIRepo:

Public Member Functions

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

Static Public Member Functions

static getUserAgent ()
 The user agent the ForeignAPIRepo will use.
 
static httpGet ( $url, $timeout='default', $options=[], &$mtime=false)
 Like a Http:get request, but with custom User-Agent.
 
- Static Public Member Functions inherited from FileRepo
static isVirtualUrl ( $url)
 Determine if a string is an mwrepo:// URL.
 

Public Attributes

const VERSION = "2.1"
 
- Public Attributes inherited from FileRepo
int $descriptionCacheExpiry
 
bool $fetchDescription
 Whether to fetch commons image description pages and display them on the local wiki.
 
const DELETE_SOURCE = 1
 
const NAME_AND_TIME_ONLY = 1
 
const OVERWRITE = 2
 
const OVERWRITE_SAME = 4
 
const SKIP_LOCKING = 8
 

Protected Member Functions

 assertWritableRepo ()
 
- Protected Member Functions inherited from FileRepo
 enumFilesInStorage ( $callback)
 Call a callback function for every public file in the repository.
 
 getZoneLocation ( $zone)
 The the storage container and base path of a zone.
 
 initDirectory ( $dir)
 Creates a directory with the appropriate zone permissions.
 
 initZones ( $doZones=[])
 Check if a single zone or list of zones is defined for usage.
 
 resolveToStoragePath ( $path)
 If a path is a virtual URL, resolve it to a storage path.
 

Static Protected Member Functions

static getIIProps ()
 
- Static Protected Member Functions inherited from FileRepo
static getHashPathForLevel ( $name, $levels)
 

Protected Attributes

int $apiThumbCacheExpiry = 86400
 Check back with Commons after this expiry.
 
int $fileCacheExpiry = 2592000
 Redownload thumbnail files after this expiry.
 
 $fileFactory = [ 'ForeignAPIFile', 'newFromTitle' ]
 
array $mFileExists = []
 
- Protected Attributes inherited from FileRepo
int $abbrvThreshold
 File names over this size will use the short form of thumbnail names.
 
string $articleUrl
 Equivalent to $wgArticlePath, e.g.
 
FileBackend $backend
 
int $deletedHashLevels
 The number of directory levels for hash-based division of deleted files.
 
string $descBaseUrl
 URL of image description pages, e.g.
 
string $favicon
 The URL of the repo's favicon, if any.
 
array $fileFactory = [ 'UnregisteredLocalFile', 'newFromTitle' ]
 callable Override these in the base class
 
array $fileFactoryKey = false
 callable|bool Override these in the base class
 
int $hashLevels
 The number of directory levels for hash-based division of files.
 
bool $hasSha1Storage = false
 
bool $initialCapital
 Equivalent to $wgCapitalLinks (or $wgCapitalLinkOverrides[NS_FILE], determines whether filenames implicitly start with a capital letter.
 
bool $isPrivate
 Whether all zones should be private (e.g.
 
array $oldFileFactory = false
 callable|bool Override these in the base class
 
array $oldFileFactoryKey = false
 callable|bool Override these in the base class
 
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.
 
string $scriptDirUrl
 URL of the MediaWiki installation, equivalent to $wgScriptPath, e.g.
 
string $scriptExtension
 Script extension of the MediaWiki installation, equivalent to the old $wgScriptExtension, e.g.
 
bool $supportsSha1URLs = false
 
string $thumbScriptUrl
 URL of thumb.php.
 
string $thumbUrl
 The base thumbnail URL.
 
bool $transformVia404
 Whether to skip media file transformation on parse and rely on a 404 handler instead.
 
bool $url
 Public zone URL.
 
array $zones = []
 Map of zones to config.
 

Static Protected Attributes

static $imageInfoProps
 List of iiprop values for the thumbnail fetch queries.
 

Private Attributes

string $mApiBase
 

Detailed Description

A foreign repository with a remote MediaWiki with an API thingy.

Example config:

$wgForeignFileRepos[] = [ 'class' => 'ForeignAPIRepo', 'name' => 'shared', 'apibase' => 'https://en.wikipedia.org/w/api.php', 'fetchDescription' => true, // Optional 'descriptionCacheExpiry' => 3600, ];

Definition at line 41 of file ForeignAPIRepo.php.

Constructor & Destructor Documentation

◆ __construct()

ForeignAPIRepo::__construct (   $info)
Parameters
array | null$info

Definition at line 72 of file ForeignAPIRepo.php.

References $wgLocalFileRepo, canCacheThumbs(), and global.

Member Function Documentation

◆ assertWritableRepo()

ForeignAPIRepo::assertWritableRepo ( )
protected
Exceptions
MWException

Reimplemented from FileRepo.

Definition at line 602 of file ForeignAPIRepo.php.

◆ canCacheThumbs()

ForeignAPIRepo::canCacheThumbs ( )

Are we locally caching the thumbnails?

Returns
bool

Definition at line 462 of file ForeignAPIRepo.php.

Referenced by __construct(), and getThumbUrlFromCache().

◆ enumFiles()

ForeignAPIRepo::enumFiles (   $callback)
Parameters
callable$callback
Exceptions
MWException

Reimplemented from FileRepo.

Definition at line 595 of file ForeignAPIRepo.php.

◆ fetchImageQuery()

ForeignAPIRepo::fetchImageQuery (   $query)
Parameters
array$query
Returns
string

Definition at line 189 of file ForeignAPIRepo.php.

References $query, $wgLanguageCode, global, and httpGetCached().

Referenced by fileExistsBatch(), findBySha1(), getThumbError(), and getThumbUrl().

◆ fileExistsBatch()

ForeignAPIRepo::fileExistsBatch ( array  $files)
Parameters
array$files
Returns
array

Reimplemented from FileRepo.

Definition at line 126 of file ForeignAPIRepo.php.

References $files, as, fetchImageQuery(), FileBackend\isStoragePath(), and wfWarn().

◆ findBySha1()

ForeignAPIRepo::findBySha1 (   $hash)
Parameters
string$hash
Returns
array

Reimplemented from FileRepo.

Definition at line 236 of file ForeignAPIRepo.php.

References $ret, as, fetchImageQuery(), ForeignAPIFile\getProps(), and NS_FILE.

◆ getApiUrl()

ForeignAPIRepo::getApiUrl ( )
Returns
string
Since
1.22

Definition at line 102 of file ForeignAPIRepo.php.

References $mApiBase.

Referenced by getInfo().

◆ getFileProps()

ForeignAPIRepo::getFileProps (   $virtualUrl)
Parameters
string$virtualUrl
Returns
bool

Reimplemented from FileRepo.

Definition at line 181 of file ForeignAPIRepo.php.

◆ getIIProps()

static ForeignAPIRepo::getIIProps ( )
staticprotected
Returns
string
Since
1.23

Definition at line 554 of file ForeignAPIRepo.php.

◆ getImageInfo()

ForeignAPIRepo::getImageInfo (   $data)
Parameters
array$data
Returns
bool|array

Definition at line 216 of file ForeignAPIRepo.php.

References as.

Referenced by getThumbError(), and getThumbUrl().

◆ getInfo()

ForeignAPIRepo::getInfo ( )

Get information about the repo - overrides/extends the parent class's information.

Returns
array
Since
1.22

Reimplemented from FileRepo.

Definition at line 480 of file ForeignAPIRepo.php.

References $query, getApiUrl(), and httpGetCached().

◆ getThumbError()

ForeignAPIRepo::getThumbError (   $name,
  $width = -1,
  $height = -1,
  $otherParams = '',
  $lang = null 
)
Parameters
string$name
int$width
int$height
string$otherParams
string$langLanguage code for language of error
Returns
bool|MediaTransformError
Since
1.22

Definition at line 294 of file ForeignAPIRepo.php.

References $lang, $name, fetchImageQuery(), FileRepo\getDisplayName(), getImageInfo(), and wfDebug().

◆ getThumbUrl()

ForeignAPIRepo::getThumbUrl (   $name,
  $width = -1,
  $height = -1,
$result = null,
  $otherParams = '' 
)
Parameters
string$name
int$width
int$height
array$resultOut parameter that will be changed by the function.
string$otherParams
Returns
bool

Definition at line 265 of file ForeignAPIRepo.php.

References $name, fetchImageQuery(), getImageInfo(), and wfDebug().

Referenced by getThumbUrlFromCache().

◆ getThumbUrlFromCache()

ForeignAPIRepo::getThumbUrlFromCache (   $name,
  $width,
  $height,
  $params = "" 
)

Return the imageurl from cache if possible.

If the url has been requested today, get it from cache Otherwise retrieve remote thumb url, check for local file.

Parameters
string$nameIs a dbkey form of a title
int$width
int$height
string$paramsOther rendering parameters (page number, etc) from handler's makeParamString.
Returns
bool|string

Definition at line 334 of file ForeignAPIRepo.php.

References $apiThumbCacheExpiry, FileRepo\$backend, $cache, $name, $params, canCacheThumbs(), FileBackend\fileExists(), FileRepo\getBackend(), FileBackend\getFileTimestamp(), FileRepo\getHashPath(), FileRepo\getLocalCacheKey(), getThumbUrl(), getZonePath(), getZoneUrl(), httpGet(), FileBackend\prepare(), FileBackend\quickCreate(), FileRepo\validateFilename(), and wfDebug().

◆ getUserAgent()

static ForeignAPIRepo::getUserAgent ( )
static

The user agent the ForeignAPIRepo will use.

Returns
string

Definition at line 470 of file ForeignAPIRepo.php.

References VERSION.

Referenced by httpGet().

◆ getZonePath()

ForeignAPIRepo::getZonePath (   $zone)

Get the local directory corresponding to one of the basic zones.

Parameters
string$zone
Returns
bool|null|string

Reimplemented from FileRepo.

Definition at line 449 of file ForeignAPIRepo.php.

Referenced by getThumbUrlFromCache().

◆ getZoneUrl()

ForeignAPIRepo::getZoneUrl (   $zone,
  $ext = null 
)
See also
FileRepo::getZoneUrl()
Parameters
string$zone
string | null$extOptional file extension
Returns
string

Reimplemented from FileRepo.

Definition at line 433 of file ForeignAPIRepo.php.

References $ext, FileRepo\$thumbUrl, and FileRepo\$url.

Referenced by getThumbUrlFromCache().

◆ httpGet()

static ForeignAPIRepo::httpGet (   $url,
  $timeout = 'default',
  $options = [],
$mtime = false 
)
static

Like a Http:get request, but with custom User-Agent.

See also
Http::get
Parameters
string$url
string$timeout
array$options
integer | bool&$mtimeResulting Last-Modified UNIX timestamp if received
Returns
bool|string

Definition at line 517 of file ForeignAPIRepo.php.

References $options, $req, $status, FileRepo\$url, getUserAgent(), PROTO_HTTP, TS_UNIX, wfDebug(), wfExpandUrl(), and wfTimestamp().

Referenced by getThumbUrlFromCache(), and httpGetCached().

◆ httpGetCached()

ForeignAPIRepo::httpGetCached (   $target,
  $query,
  $cacheTTL = 3600 
)

HTTP GET request to a mediawiki API (with caching)

Parameters
string$targetUsed in cache key creation, mostly
array$queryThe query parameters for the API request
int$cacheTTLTime to live for the memcached caching
Returns
string|null

Definition at line 565 of file ForeignAPIRepo.php.

References $cache, $html, $query, FileRepo\$url, FileRepo\getLocalCacheKey(), httpGet(), FileRepo\makeUrl(), use, and wfAppendQuery().

Referenced by fetchImageQuery(), and getInfo().

◆ newFile()

ForeignAPIRepo::newFile (   $title,
  $time = false 
)

Per docs in FileRepo, this needs to return false if we don't support versioned files.

Well, we don't.

Parameters
Title$title
string | bool$time
Returns
File

Reimplemented from FileRepo.

Definition at line 114 of file ForeignAPIRepo.php.

References $time, and $title.

Member Data Documentation

◆ $apiThumbCacheExpiry

int ForeignAPIRepo::$apiThumbCacheExpiry = 86400
protected

Check back with Commons after this expiry.

Definition at line 58 of file ForeignAPIRepo.php.

Referenced by getThumbUrlFromCache().

◆ $fileCacheExpiry

int ForeignAPIRepo::$fileCacheExpiry = 2592000
protected

Redownload thumbnail files after this expiry.

Definition at line 61 of file ForeignAPIRepo.php.

◆ $fileFactory

ForeignAPIRepo::$fileFactory = [ 'ForeignAPIFile', 'newFromTitle' ]
protected

Definition at line 56 of file ForeignAPIRepo.php.

◆ $imageInfoProps

ForeignAPIRepo::$imageInfoProps
staticprotected
Initial value:
= [
'url',
'timestamp',
]

List of iiprop values for the thumbnail fetch queries.

Since
1.23

Definition at line 51 of file ForeignAPIRepo.php.

◆ $mApiBase

string ForeignAPIRepo::$mApiBase
private

Definition at line 67 of file ForeignAPIRepo.php.

Referenced by getApiUrl().

◆ $mFileExists

array ForeignAPIRepo::$mFileExists = []
protected

Definition at line 64 of file ForeignAPIRepo.php.

◆ VERSION

const ForeignAPIRepo::VERSION = "2.1"

Definition at line 45 of file ForeignAPIRepo.php.

Referenced by getUserAgent().


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