protected function updatePackage($pkgHandle, OutputInterface $output, $force) { $output->write("Looking for package '{$pkgHandle}'... "); $pkg = null; foreach (Package::getInstalledList() as $installed) { if ($installed->getPackageHandle() === $pkgHandle) { $pkg = $installed; break; } } if ($pkg === null) { throw new Exception(sprintf("No package with handle '%s' is installed", $pkgHandle)); } $output->writeln(sprintf('<info>found (%s).</info>', $pkg->getPackageName())); $output->write('Checking preconditions... '); $upPkg = null; foreach (Package::getLocalUpgradeablePackages() as $updatable) { if ($updatable->getPackageHandle() === $pkgHandle) { $upPkg = $updatable; break; } } if ($upPkg === null && $force !== true) { $output->writeln(sprintf("<info>the package is already up-to-date (v%s)</info>", $pkg->getPackageVersion())); } else { $test = $pkg->testForInstall(false); if (is_object($test)) { /** * @var $test Error */ throw new Exception(implode("\n", $test->getList())); } $output->writeln('<info>good.</info>'); if ($upPkg === null) { $output->write(sprintf('Forcing upgrade at v%s... ', $pkg->getPackageVersion())); $upPkg = Package::getByHandle($pkgHandle); } else { $output->write(sprintf('Updating from v%s to v%s... ', $upPkg->getPackageEntity()->getPackageVersion(), $upPkg->getPackageVersion())); } $upPkg->upgradeCoreData(); $upPkg->upgrade(); $output->writeln('<info>done.</info>'); } }
public function view() { $this->set('latest_version', Update::getLatestAvailableVersionNumber()); $local = []; $remote = []; $p = new Permissions(); if ($p->canInstallPackages()) { $local = Package::getLocalUpgradeablePackages(); $remote = Package::getRemotelyUpgradeablePackages(); } // now we strip out any dupes for the total $updates = 0; $localHandles = []; foreach ($local as $_pkg) { ++$updates; $localHandles[] = $_pkg->getPackageHandle(); } foreach ($remote as $_pkg) { if (!in_array($_pkg->getPackageHandle(), $localHandles)) { ++$updates; } } $this->set('updates', $updates); }
/** * @deprecated */ public static function getLocalUpgradeablePackages() { // this should go through the facade instead return \Concrete\Core\Support\Facade\Package::getLocalUpgradeablePackages(); }