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>');
     }
 }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
 /**
  * @deprecated
  */
 public static function getLocalUpgradeablePackages()
 {
     // this should go through the facade instead
     return \Concrete\Core\Support\Facade\Package::getLocalUpgradeablePackages();
 }