*/
class LocalRepo extends FileRepo {
/** @var callable */
- protected $fileFactory = [ 'LocalFile', 'newFromTitle' ];
+ protected $fileFactory = [ LocalFile::class, 'newFromTitle' ];
/** @var callable */
- protected $fileFactoryKey = [ 'LocalFile', 'newFromKey' ];
+ protected $fileFactoryKey = [ LocalFile::class, 'newFromKey' ];
/** @var callable */
- protected $fileFromRowFactory = [ 'LocalFile', 'newFromRow' ];
+ protected $fileFromRowFactory = [ LocalFile::class, 'newFromRow' ];
/** @var callable */
- protected $oldFileFromRowFactory = [ 'OldLocalFile', 'newFromRow' ];
+ protected $oldFileFromRowFactory = [ OldLocalFile::class, 'newFromRow' ];
/** @var callable */
- protected $oldFileFactory = [ 'OldLocalFile', 'newFromTitle' ];
+ protected $oldFileFactory = [ OldLocalFile::class, 'newFromTitle' ];
/** @var callable */
- protected $oldFileFactoryKey = [ 'OldLocalFile', 'newFromKey' ];
+ protected $oldFileFactoryKey = [ OldLocalFile::class, 'newFromKey' ];
function __construct( array $info = null ) {
parent::__construct( $info );
* interleave database locks with file operations, which is potentially a
* remote operation.
*
- * @param array $storageKeys
+ * @param string[] $storageKeys
*
* @return Status
*/
}
if ( count( $imgNames ) ) {
- $res = $dbr->select( 'image',
- LocalFile::selectFields(), [ 'img_name' => $imgNames ], __METHOD__ );
+ $fileQuery = LocalFile::getQueryInfo();
+ $res = $dbr->select( $fileQuery['tables'], $fileQuery['fields'], [ 'img_name' => $imgNames ],
+ __METHOD__, [], $fileQuery['joins'] );
$applyMatchingFiles( $res, $searchSet, $finalFiles );
}
}
if ( count( $oiConds ) ) {
- $res = $dbr->select( 'oldimage',
- OldLocalFile::selectFields(), $dbr->makeList( $oiConds, LIST_OR ), __METHOD__ );
+ $fileQuery = OldLocalFile::getQueryInfo();
+ $res = $dbr->select( $fileQuery['tables'], $fileQuery['fields'],
+ $dbr->makeList( $oiConds, LIST_OR ),
+ __METHOD__, [], $fileQuery['joins'] );
$applyMatchingFiles( $res, $searchSet, $finalFiles );
}
* SHA-1 content hash.
*
* @param string $hash A sha1 hash to look for
- * @return File[]
+ * @return LocalFile[]
*/
function findBySha1( $hash ) {
$dbr = $this->getReplicaDB();
+ $fileQuery = LocalFile::getQueryInfo();
$res = $dbr->select(
- 'image',
- LocalFile::selectFields(),
+ $fileQuery['tables'],
+ $fileQuery['fields'],
[ 'img_sha1' => $hash ],
__METHOD__,
- [ 'ORDER BY' => 'img_name' ]
+ [ 'ORDER BY' => 'img_name' ],
+ $fileQuery['joins']
);
$result = [];
*
* Overrides generic implementation in FileRepo for performance reason
*
- * @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
*/
function findBySha1s( array $hashes ) {
if ( !count( $hashes ) ) {
}
$dbr = $this->getReplicaDB();
+ $fileQuery = LocalFile::getQueryInfo();
$res = $dbr->select(
- 'image',
- LocalFile::selectFields(),
+ $fileQuery['tables'],
+ $fileQuery['fields'],
[ 'img_sha1' => $hashes ],
__METHOD__,
- [ 'ORDER BY' => 'img_name' ]
+ [ 'ORDER BY' => 'img_name' ],
+ $fileQuery['joins']
);
$result = [];
*
* @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 ) {
$selectOptions = [ 'ORDER BY' => 'img_name', 'LIMIT' => intval( $limit ) ];
// Query database
$dbr = $this->getReplicaDB();
+ $fileQuery = LocalFile::getQueryInfo();
$res = $dbr->select(
- 'image',
- LocalFile::selectFields(),
+ $fileQuery['tables'],
+ $fileQuery['fields'],
'img_name ' . $dbr->buildLike( $prefix, $dbr->anyString() ),
__METHOD__,
- $selectOptions
+ $selectOptions,
+ $fileQuery['joins']
);
// Build file objects