}
function checkSharedConflict() {
- global $wgOut, $wgUser, $wgUseSharedUploads;
- if( !$wgUseSharedUploads ) {
+ global $wgOut, $wgUser;
+ $repoGroup = RepoGroup::singleton();
+ if( !$repoGroup->hasForeignRepos() ) {
return;
}
- if( $this->repo->getName() != 'local' ) {
+ if( !$this->img->isLocal() ) {
return;
}
- $repo = RepoGroup::singleton()->getRepoByName( 'shared' );
- $dupfile = $repo->newFile( $this->img->getTitle() );
- if( !$dupfile->exists() ) {
+ $this->dupFile = null;
+ $repoGroup->forEachForeignRepo( array( $this, 'checkSharedConflictCallback' ) );
+
+ if( !$this->dupFile )
return;
- }
+ $dupfile = $this->dupFile;
$same = (
($this->img->getSha1() == $dupfile->getSha1()) &&
($this->img->getSize() == $dupfile->getSize())
}
}
+ function checkSharedConflictCallback( $repo ) {
+ $dupfile = $repo->newFile( $this->img->getTitle() );
+ if( $dupfile->exists() )
+ $this->dupFile = $dupfile;
+ return $dupfile->exists();
+ }
+
function getUploadUrl() {
$uploadTitle = SpecialPage::getTitleFor( 'Upload' );
return $uploadTitle->getFullUrl( 'wpDestFile=' . urlencode( $this->img->getName() ) );
return $this->getRepo( 'local' );
}
+ function forEachForeignRepo( $callback, $params = array() ) {
+ foreach( $this->foreignRepos as $repo ) {
+ $args = array_merge( array( $repo ), $params );
+ if( call_user_func_array( $callback, $args ) ) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ function hasForeignRepos() {
+ return !empty( $this->foreignRepos );
+ }
+
/**
* Initialise the $repos array
*/