Merge "Fix how "Live updates" behave when user logs out"
[lhc/web/wiklou.git] / includes / utils / AutoloadGenerator.php
index 4f639c1..1415ea3 100644 (file)
@@ -42,6 +42,13 @@ class AutoloadGenerator {
         */
        protected $overrides = [];
 
+       /**
+        * Directories that should be excluded
+        *
+        * @var string[]
+        */
+       protected $excludePaths = [];
+
        /**
         * @param string $basepath Root path of the project being scanned for classes
         * @param array|string $flags
@@ -60,6 +67,34 @@ class AutoloadGenerator {
                }
        }
 
+       /**
+        * Directories that should be excluded
+        *
+        * @since 1.31
+        * @param string[] $paths
+        */
+       public function setExcludePaths( array $paths ) {
+               foreach ( $paths as $path ) {
+                       $this->excludePaths[] = self::normalizePathSeparator( $path );
+               }
+       }
+
+       /**
+        * Whether the file should be excluded
+        *
+        * @param string $path File path
+        * @return bool
+        */
+       private function shouldExclude( $path ) {
+               foreach ( $this->excludePaths as $dir ) {
+                       if ( strpos( $path, $dir ) === 0 ) {
+                               return true;
+                       }
+               }
+
+               return false;
+       }
+
        /**
         * Force a class to be autoloaded from a specific path, regardless of where
         * or if it was detected.
@@ -94,6 +129,9 @@ class AutoloadGenerator {
                if ( substr( $inputPath, 0, $len ) !== $this->basepath ) {
                        throw new \Exception( "Path is not within basepath: $inputPath" );
                }
+               if ( $this->shouldExclude( $inputPath ) ) {
+                       return;
+               }
                $result = $this->collector->getClasses(
                        file_get_contents( $inputPath )
                );
@@ -156,8 +194,8 @@ class AutoloadGenerator {
        /**
         * Generates a PHP file setting up autoload information.
         *
-        * @param {string} $commandName Command name to include in comment
-        * @param {string} $filename of PHP file to put autoload information in.
+        * @param string $commandName Command name to include in comment
+        * @param string $filename of PHP file to put autoload information in.
         * @return string
         */
        protected function generatePHPAutoload( $commandName, $filename ) {