Merge "Deprecate Language::getLangObj()"
[lhc/web/wiklou.git] / maintenance / importImages.inc
index ac5d144..b803e3d 100644 (file)
 /**
  * Search a directory for files with one of a set of extensions
  *
- * @param $dir string Path to directory to search
- * @param $exts Array of extensions to search for
- * @return mixed Array of filenames on success, or false on failure
+ * @param string $dir Path to directory to search
+ * @param array $exts Array of extensions to search for
+ * @param bool $recurse Search subdirectories recursively
+ * @return array|bool 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 ) {
@@ -38,10 +39,14 @@ function findFiles( $dir, $exts ) {
                        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;
                } else {
                        return array();
@@ -54,14 +59,15 @@ function findFiles( $dir, $exts ) {
 /**
  * Split a filename into filename and extension
  *
- * @param $filename string Filename
+ * @param string $filename Filename
  * @return array
  */
 function splitFilename( $filename ) {
        $parts = explode( '.', $filename );
-       $ext = $parts[ count( $parts ) - 1 ];
-       unset( $parts[ count( $parts ) - 1 ] );
+       $ext = $parts[count( $parts ) - 1];
+       unset( $parts[count( $parts ) - 1] );
        $fname = implode( '.', $parts );
+
        return array( $fname, $ext );
 }
 
@@ -74,10 +80,10 @@ function splitFilename( $filename ) {
  * files for acme.foo.bar and the extension ".txt". With $maxStrip = 2,
  * acme.txt would also be acceptable.
  *
- * @param $file string base path
- * @param $auxExtension string the extension to be appended to the base path
- * @param $maxStrip int the maximum number of extensions to strip from the base path (default: 1)
- * @return string or false
+ * @param string $file Base path
+ * @param string $auxExtension The extension to be appended to the base path
+ * @param int $maxStrip The maximum number of extensions to strip from the base path (default: 1)
+ * @return string|bool
  */
 function findAuxFile( $file, $auxExtension, $maxStrip = 1 ) {
        if ( strpos( $auxExtension, '.' ) !== 0 ) {
@@ -95,7 +101,9 @@ function findAuxFile( $file, $auxExtension, $maxStrip = 1 ) {
                }
 
                $idx = strrpos( $n, '.' );
-               if ( !$idx ) break;
+               if ( !$idx ) {
+                       break;
+               }
 
                $n = substr( $n, 0, $idx );
                $maxStrip -= 1;
@@ -104,9 +112,11 @@ function findAuxFile( $file, $auxExtension, $maxStrip = 1 ) {
        return false;
 }
 
-# FIXME: Access the api in a saner way and performing just one query (preferably batching files too).
+# @todo FIXME: Access the api in a saner way and performing just one query
+# (preferably batching files too).
 function getFileCommentFromSourceWiki( $wiki_host, $file ) {
-       $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:' . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=comment';
+       $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:'
+               . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=comment';
        $body = Http::get( $url );
        if ( preg_match( '#<ii comment="([^"]*)" />#', $body, $matches ) == 0 ) {
                return false;
@@ -116,7 +126,8 @@ function getFileCommentFromSourceWiki( $wiki_host, $file ) {
 }
 
 function getFileUserFromSourceWiki( $wiki_host, $file ) {
-       $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:' . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=user';
+       $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:'
+               . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=user';
        $body = Http::get( $url );
        if ( preg_match( '#<ii user="([^"]*)" />#', $body, $matches ) == 0 ) {
                return false;