Przeglądaj źródła

Prevent CompositeRepository instances from being nested

Jordi Boggiano 12 lat temu
rodzic
commit
1760b1e093
1 zmienionych plików z 11 dodań i 2 usunięć
  1. 11 2
      src/Composer/Repository/CompositeRepository.php

+ 11 - 2
src/Composer/Repository/CompositeRepository.php

@@ -33,7 +33,10 @@ class CompositeRepository implements RepositoryInterface
      */
     public function __construct(array $repositories)
     {
-        $this->repositories = $repositories;
+        $this->repositories = array();
+        foreach ($repositories as $repo) {
+            $this->addRepository($repo);
+        }
     }
 
     /**
@@ -150,6 +153,12 @@ class CompositeRepository implements RepositoryInterface
      */
     public function addRepository(RepositoryInterface $repository)
     {
-        $this->repositories[] = $repository;
+        if ($repository instanceof self) {
+            foreach ($repository->getRepositories() as $repo) {
+                $this->addRepository($repo);
+            }
+        } else {
+            $this->repositories[] = $repository;
+        }
     }
 }