/**
* Trigger the package uninstall process.
*/
public function removePackage()
{
$expected = ['package', 'supplier', 'type'];
if (!\Airship\all_keys_exist($expected, $_POST)) {
\Airship\json_response(['status' => 'ERROR', 'message' => \__('Incomplete request.')]);
}
if ($this->skyport->isLocked()) {
$locked = true;
if ($this->skyport->isPasswordLocked() && !empty($_POST['password'])) {
$password = new HiddenString($_POST['password']);
if ($this->skyport->tryUnlockPassword($password)) {
$_SESSION['airship_install_lock_override'] = true;
$locked = false;
}
unset($password);
}
if ($locked) {
if ($this->skyport->isPasswordLocked()) {
\Airship\json_response(['status' => 'PROMPT', 'message' => \__('The skyport is locked. To unlock the skyport, please provide the password.')]);
}
\Airship\json_response(['status' => 'ERROR', 'message' => \__('The skyport is locked. You cannot install packages from the web interface.')]);
}
}
try {
$filter = new SkyportFilter();
$post = $filter($_POST);
} catch (\TypeError $ex) {
$this->log("Input violation", LogLevel::ALERT, \Airship\throwableToArray($ex));
\Airship\json_response(['status' => 'ERROR', 'message' => 'Type Error']);
return;
}
$output = $this->skyport->forceRemoval($post['type'], $post['supplier'], $post['package']);
\Airship\json_response(['status' => 'OK', 'message' => $output]);
}