checkAccess(); } catch (RepoException $e) { msg($e->getMessage(), -1); } // Only continue if there is something to do if (!$INPUT->post->has('fn') && !$INPUT->post->str('installurl') && !isset($_FILES['installfile'])) { return; // nothing to do } if (!checkSecurityToken()) return; // Run actions on the installer $installer = new Installer($INPUT->post->bool('overwrite')); try { foreach ($INPUT->post->arr('fn') as $action => $extensions) { foreach ($extensions as $extension => $label) { $ext = Extension::createFromId($extension); switch ($action) { case 'install': case 'reinstall': case 'update': $installer->installExtension($ext); break; case 'uninstall': $installer->uninstall($ext); break; case 'enable': $ext->enable(); break; case 'disable': $ext->disable(); break; } } } if ($INPUT->post->str('installurl')) { $installer->installFromURL($INPUT->post->str('installurl')); } if (isset($_FILES['installfile'])) { $installer->installFromUpload('installfile'); } } catch (Exception $e) { msg(hsc($e->getMessage()), -1); } // Report results of the installer $processed = $installer->getProcessed(); foreach ($processed as $id => $status) { if ($status == Installer::STATUS_INSTALLED) { msg(sprintf($this->getLang('msg_install_success'), $id), 1); } elseif ($status == Installer::STATUS_UPDATED) { msg(sprintf($this->getLang('msg_update_success'), $id), 1); } elseif ($status == Installer::STATUS_SKIPPED) { msg(sprintf($this->getLang('msg_nooverwrite'), $id), 0); } elseif ($status == Installer::STATUS_REMOVED) { msg(sprintf($this->getLang('msg_delete_success'), $id), 1); } } // Redirect to clear the POST data $gui = new Gui(); send_redirect($gui->tabURL($gui->currentTab(), [], '&', true)); } /** * Render HTML output */ public function html() { echo '