*
* @param $dir string Path to directory to search
* @param $exts Array of extensions to search for
+ * @param $recurse Bool Search subdirectories recursively
* @return mixed Array of filenames on success, or false on failure
*/
-function findFiles( $dir, $exts ) {
+function findFiles( $dir, $exts, $recurse = false ) {
if ( is_dir( $dir ) ) {
$dhl = opendir( $dir );
if ( $dhl ) {
while ( ( $file = readdir( $dhl ) ) !== false ) {
if ( is_file( $dir . '/' . $file ) ) {
list( /* $name */, $ext ) = splitFilename( $dir . '/' . $file );
- if ( array_search( strtolower( $ext ), $exts ) !== false )
+ if ( array_search( strtolower( $ext ), $exts ) !== false ) {
$files[] = $dir . '/' . $file;
+ }
+ } elseif ( $recurse && is_dir( $dir . '/' . $file ) && $file !== '..' && $file !== '.' ) {
+ $files = array_merge( $files, findFiles( $dir . '/' . $file, $exts, true ) );
}
}
return $files;
: $wgFileExtensions;
# Search the path provided for candidates for import
-$files = findFiles( $dir, $extensions );
+$files = findFiles( $dir, $extensions, isset( $options['search-recursively'] ) );
# Initialise the user for this operation
$user = isset( $options['user'] )
--from=<name> Ignore all files until the one with the given name. Useful for resuming
aborted imports. <name> should be the file's canonical database form.
--skip-dupes Skip images that were already uploaded under a different name (check SHA1)
+--search-recursively Search recursively for files in subdirectories
--sleep=<sec> Sleep between files. Useful mostly for debugging.
--user=<username> Set username of uploader, default 'Maintenance script'
--check-userblock Check if the user got blocked during import.