From 1f2ce8fd96b06ffa7ac3bb8102c5836beb259e07 Mon Sep 17 00:00:00 2001 From: Matthias Schmidt Date: Sun, 16 Jun 2013 17:43:59 +0200 Subject: [PATCH] Fixes issue in PackageArchive::getConflictedExcludedPackages() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit … and improves return values of PackageArchive::getConflictedExcludedPackages() and PackageArchive::getConflictedExcludingPackages(). --- .../system/package/PackageArchive.class.php | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/wcfsetup/install/files/lib/system/package/PackageArchive.class.php b/wcfsetup/install/files/lib/system/package/PackageArchive.class.php index 1adfc81047..6eaaa930bf 100644 --- a/wcfsetup/install/files/lib/system/package/PackageArchive.class.php +++ b/wcfsetup/install/files/lib/system/package/PackageArchive.class.php @@ -749,16 +749,16 @@ class PackageArchive { } /** - * Returns a list of packages, which excluding this package. + * Returns a list of packages which exclude this package. * - * @return array + * @return array */ public function getConflictedExcludingPackages() { $conflictedPackages = array(); $sql = "SELECT package.*, package_exclusion.* FROM wcf".WCF_N."_package_exclusion package_exclusion LEFT JOIN wcf".WCF_N."_package package - ON (package.packageID = package_exclusion.packageID) + ON (package.packageID = package_exclusion.packageID) WHERE excludedPackage = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array($this->packageInfo['name'])); @@ -769,27 +769,27 @@ class PackageArchive { } } - $conflictedPackages[$row['packageID']] = $row; + $conflictedPackages[$row['packageID']] = new Package(null, $row); } return $conflictedPackages; } /** - * Returns a list of packages, which are excluded by this package. + * Returns a list of packages which are excluded by this package. * - * @return array + * @return array */ public function getConflictedExcludedPackages() { $conflictedPackages = array(); if (!empty($this->excludedPackages)) { $excludedPackages = array(); foreach ($this->excludedPackages as $excludedPackageData) { - $excludedPackages[] = $excludedPackageData['name']; + $excludedPackages[$excludedPackageData['name']] = $excludedPackageData['version']; } $conditions = new PreparedStatementConditionBuilder(); - $conditions->add("package IN (?)", array($excludedPackages)); + $conditions->add("package IN (?)", array(array_keys($excludedPackages))); $sql = "SELECT * FROM wcf".WCF_N."_package @@ -797,13 +797,14 @@ class PackageArchive { $statement = WCF::getDB()->prepareStatement($sql); $statement->execute($conditions->getParameters()); while ($row = $statement->fetchArray()) { - if (!empty($this->excludedPackages[$row['package']]['version'])) { - if (Package::compareVersion($row['packageVersion'], $this->excludedPackages[$row['package']]['version'], '<')) { + if (!empty($excludedPackages[$row['package']])) { + if (Package::compareVersion($row['packageVersion'], $excludedPackages[$row['package']], '<')) { continue; } + $row['excludedPackageVersion'] = $excludedPackages[$row['package']]; } - $conflictedPackages[$row['packageID']] = $row; + $conflictedPackages[$row['packageID']] = new Package(null, $row); } } -- 2.20.1