17 import(
'lib.pkp.classes.form.Form');
19 import(
'lib.pkp.classes.plugins.PluginHelper');
20 import(
'lib.pkp.classes.file.FileManager');
33 parent::__construct(
'controllers/grid/plugins/form/uploadPluginForm.tpl');
35 $this->_function = $function;
37 $this->
addCheck(
new FormValidator($this,
'temporaryFileId',
'required',
'manager.plugins.uploadFailed'));
53 function fetch($request, $template =
null, $display =
false) {
55 $templateMgr->assign(array(
56 'function' => $this->_function,
57 'category' => $request->getUserVar(
'category'),
58 'plugin' => $request->getUserVar(
'plugin'),
61 return parent::fetch($request, $template, $display);
67 function execute(...$functionArgs) {
68 parent::execute(...$functionArgs);
71 $user = $request->getUser();
76 import(
'lib.pkp.classes.file.TemporaryFileManager');
79 $temporaryFile = $temporaryFileDao->getTemporaryFile($this->
getData(
'temporaryFileId'), $user->getId());
83 $pluginDir = $pluginHelper->extractPlugin($temporaryFile->getFilePath(), $temporaryFile->getOriginalFileName());
84 }
catch (Exception $e) {
85 $notificationMgr->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_ERROR, array(
'contents' => $e->getMessage()));
88 $temporaryFileManager->deleteById($temporaryFile->getId(), $user->getId());
93 switch ($this->_function) {
94 case PLUGIN_ACTION_UPLOAD:
95 $pluginVersion = $pluginHelper->installPlugin($pluginDir);
96 $notificationMgr->createTrivialNotification(
98 NOTIFICATION_TYPE_SUCCESS,
100 __(
'manager.plugins.installSuccessful', array(
'versionNumber' => $pluginVersion->getVersionString(
false))))
103 case PLUGIN_ACTION_UPGRADE:
105 $pluginVersion = $pluginHelper->upgradePlugin(
106 $request->getUserVar(
'category'),
107 basename($plugin->getPluginPath()),
110 $notificationMgr->createTrivialNotification(
112 NOTIFICATION_TYPE_SUCCESS,
113 array(
'contents' => __(
'manager.plugins.upgradeSuccessful', array(
'versionString' => $pluginVersion->getVersionString(
false))))
116 default: assert(
false);
118 }
catch (Exception $e) {
119 $notificationMgr->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_ERROR, array(
'contents' => $e->getMessage()));
120 $temporaryFileManager->rmtree($pluginDir);