/** * Checks for conflicted exclusions. */ protected function checkExclusions() { $excludedPackages = $this->packageArchive->getConflictedExcludedPackages(); if (count($excludedPackages) > 0) { // this package exludes existing packages -> stop installation WCF::getTPL()->assign(array('excludedPackages' => $excludedPackages)); WCF::getTPL()->display('packageInstallationExcludedPackages'); exit; } $excludingPackages = $this->packageArchive->getConflictedExcludingPackages(); if (count($excludingPackages) > 0) { $stop = 1; // this package is excluded by existing packages $sql = "SELECT\t*\n\t\t\t\tFROM\twcf" . WCF_N . "_package_installation_queue\n\t\t\t\tWHERE\tprocessNo = " . $this->processNo . "\n\t\t\t\t\tAND packageID IN (" . implode(',', array_keys($excludingPackages)) . ")"; $result = WCF::getDB()->sendQuery($sql); while ($row = WCF::getDB()->fetchArray($result)) { $archive = new PackageArchive($row['archive']); $archive->openArchive(); $newExclusions = $archive->getExcludedPackages(); if (!count($newExclusions) || !isset($newExclusions[$this->packageArchive->getPackageInfo('name')]) || isset($newExclusions[$this->packageArchive->getPackageInfo('name')]['version']) && Package::compareVersion($this->packageArchive->getPackageInfo('version'), $newExclusions[$this->packageArchive->getPackageInfo('name')]['version'], '<')) { unset($excludingPackages[$row['packageID']]); $stop = 0; } } if (count($excludingPackages) > 0) { WCF::getTPL()->assign(array('excludingPackages' => $excludingPackages, 'stop' => $stop, 'nextStep' => 'package')); WCF::getTPL()->display('packageInstallationExcludingPackages'); exit; } } }