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');
}