/**
  * Unfreeze a package
  *
  * Unfreezes a previously frozen package. On the next request, this package will
  * be considered again by the file monitoring and related services – if they are
  * enabled in the current context.
  *
  * By specifying <b>all</b> as a package key, all currently frozen packages are
  * unfrozen (the default).
  *
  * @param string $packageKey Key of the package to unfreeze, or 'all'
  * @return void
  * @see typo3.flow:package:freeze
  * @see typo3.flow:cache:flush
  */
 public function unfreezeCommand($packageKey = 'all')
 {
     if (!$this->bootstrap->getContext()->isDevelopment()) {
         $this->outputLine('Package freezing is only supported in Development context.');
         $this->quit(3);
     }
     $packagesToUnfreeze = [];
     if ($packageKey === 'all') {
         foreach (array_keys($this->packageManager->getAvailablePackages()) as $packageKey) {
             if ($this->packageManager->isPackageFrozen($packageKey)) {
                 $packagesToUnfreeze[] = $packageKey;
             }
         }
         if ($packagesToUnfreeze === []) {
             $this->outputLine('Nothing to do, no packages were frozen.');
             $this->quit(0);
         }
     } else {
         if ($packageKey === null) {
             $this->outputLine('You must specify a package to unfreeze.');
             $this->quit(1);
         }
         if (!$this->packageManager->isPackageAvailable($packageKey)) {
             $this->outputLine('Package "%s" is not available.', [$packageKey]);
             $this->quit(2);
         }
         if (!$this->packageManager->isPackageFrozen($packageKey)) {
             $this->outputLine('Package "%s" was not frozen.', [$packageKey]);
             $this->quit(0);
         }
         $packagesToUnfreeze = [$packageKey];
     }
     foreach ($packagesToUnfreeze as $packageKey) {
         $this->packageManager->unfreezePackage($packageKey);
         $this->outputLine('Unfroze package "%s".', [$packageKey]);
     }
 }
コード例 #2
0
 /**
  * @param array $packageKeys
  * @param string $action
  * @return void
  * @throws \RuntimeException
  */
 public function batchAction(array $packageKeys, $action)
 {
     switch ($action) {
         case 'freeze':
             $frozenPackages = array();
             foreach ($packageKeys as $packageKey) {
                 $message = $this->freezePackage($packageKey);
                 if ($message instanceof Error || $message instanceof Warning) {
                     $this->flashMessageContainer->addMessage($message);
                 } else {
                     array_push($frozenPackages, $packageKey);
                 }
             }
             if (count($frozenPackages) > 0) {
                 $message = new Message('Following packages have been frozen: %s', 1412547087, array(implode(', ', $frozenPackages)));
             } else {
                 $message = new Warning('Unable to freeze the selected packages', 1412547216);
             }
             break;
         case 'unfreeze':
             foreach ($packageKeys as $packageKey) {
                 $this->packageManager->unfreezePackage($packageKey);
             }
             $message = new Message('Following packages have been unfrozen: %s', 1412547219, array(implode(', ', $packageKeys)));
             break;
         case 'activate':
             $activatedPackages = array();
             foreach ($packageKeys as $packageKey) {
                 $message = $this->activatePackage($packageKey);
                 if ($message instanceof Error || $message instanceof Warning) {
                     $this->flashMessageContainer->addMessage($message);
                 } else {
                     array_push($activatedPackages, $packageKey);
                 }
             }
             if (count($activatedPackages) > 0) {
                 $message = new Message('Following packages have been activated: %s', 1412547283, array(implode(', ', $activatedPackages)));
             } else {
                 $message = new Warning('Unable to activate the selected packages', 1412547324);
             }
             break;
         case 'deactivate':
             $deactivatedPackages = array();
             foreach ($packageKeys as $packageKey) {
                 $message = $this->deactivatePackage($packageKey);
                 if ($message instanceof Error || $message instanceof Warning) {
                     $this->flashMessageContainer->addMessage($message);
                 } else {
                     array_push($deactivatedPackages, $packageKey);
                 }
             }
             if (count($deactivatedPackages) > 0) {
                 $message = new Message('Following packages have been deactivated: %s', 1412545904, array(implode(', ', $deactivatedPackages)));
             } else {
                 $message = new Warning('Unable to deactivate the selected packages', 1412545976);
             }
             break;
         case 'delete':
             $deletedPackages = array();
             foreach ($packageKeys as $packageKey) {
                 $message = $this->deletePackage($packageKey);
                 if ($message instanceof Error || $message instanceof Warning) {
                     $this->flashMessageContainer->addMessage($message);
                 } else {
                     array_push($deletedPackages, $packageKey);
                 }
             }
             if (count($deletedPackages) > 0) {
                 $message = new Message('Following packages have been deleted: %s', 1412547479, array(implode(', ', $deletedPackages)));
             } else {
                 $message = new Warning('Unable to delete the selected packages', 1412546138);
             }
             break;
         default:
             throw new \RuntimeException('Invalid action "' . $action . '" given.', 1347463918);
     }
     $this->flashMessageContainer->addMessage($message);
     $this->redirect('index');
 }