Stop using PackageArchive::getAllExistingRequirements()
authorTim Düsterhus <duesterhus@woltlab.com>
Tue, 15 Nov 2022 10:11:47 +0000 (11:11 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Tue, 15 Nov 2022 10:11:47 +0000 (11:11 +0100)
The method is overly complex and will be removed in a follow-up commit.

wcfsetup/install/files/lib/system/package/PackageInstallationDispatcher.class.php

index fbebb1abfb8e949c084965c191e8ade01f9721a4..2c5d343491eb7ab7b2df55a55d455a7752037431 100644 (file)
@@ -604,22 +604,22 @@ class PackageInstallationDispatcher
             }
         }
 
-        // insert requirements and dependencies
-        $requirements = $this->getArchive()->getAllExistingRequirements();
-        if (!empty($requirements)) {
-            $sql = "INSERT INTO wcf1_package_requirement
-                                (packageID, requirement)
-                    VALUES      (?, ?)";
-            $statement = WCF::getDB()->prepare($sql);
+        $requirements = $this->getArchive()->getExistingRequirements();
+        \assert(
+            \count($requirements) === \count($this->getArchive()->getRequirements()),
+            "The existence of all requirements has been checked at the start of the method."
+        );
 
-            foreach ($requirements as $possibleRequirements) {
-                $requirement = \array_shift($possibleRequirements);
+        $sql = "INSERT INTO wcf1_package_requirement
+                            (packageID, requirement)
+                VALUES      (?, ?)";
+        $statement = WCF::getDB()->prepare($sql);
 
-                $statement->execute([
-                    $this->queue->packageID,
-                    $requirement['packageID'],
-                ]);
-            }
+        foreach ($requirements as $requirement) {
+            $statement->execute([
+                $this->queue->packageID,
+                $requirement['packageID'],
+            ]);
         }
 
         if (