Open Monograph Press  3.3.0
UploadPluginForm.inc.php
1 <?php
2 
16 // Import the base Form.
17 import('lib.pkp.classes.form.Form');
18 
19 import('lib.pkp.classes.plugins.PluginHelper');
20 import('lib.pkp.classes.file.FileManager');
21 
22 class UploadPluginForm extends Form {
23 
25  var $_function;
26 
27 
32  function __construct($function) {
33  parent::__construct('controllers/grid/plugins/form/uploadPluginForm.tpl');
34 
35  $this->_function = $function;
36 
37  $this->addCheck(new FormValidator($this, 'temporaryFileId', 'required', 'manager.plugins.uploadFailed'));
38  }
39 
40  //
41  // Implement template methods from Form.
42  //
46  function readInputData() {
47  $this->readUserVars(array('temporaryFileId'));
48  }
49 
53  function fetch($request, $template = null, $display = false) {
54  $templateMgr = TemplateManager::getManager($request);
55  $templateMgr->assign(array(
56  'function' => $this->_function,
57  'category' => $request->getUserVar('category'),
58  'plugin' => $request->getUserVar('plugin'),
59  ));
60 
61  return parent::fetch($request, $template, $display);
62  }
63 
67  function execute(...$functionArgs) {
68  parent::execute(...$functionArgs);
69 
70  $request = Application::get()->getRequest();
71  $user = $request->getUser();
72  $pluginHelper = new PluginHelper();
73  $notificationMgr = new NotificationManager();
74 
75  // Retrieve the temporary file.
76  import('lib.pkp.classes.file.TemporaryFileManager');
77  $temporaryFileManager = new TemporaryFileManager();
78  $temporaryFileDao = DAORegistry::getDAO('TemporaryFileDAO'); /* @var $temporaryFileDao TemporaryFileDAO */
79  $temporaryFile = $temporaryFileDao->getTemporaryFile($this->getData('temporaryFileId'), $user->getId());
80 
81  // Extract the temporary file into a temporary location.
82  try {
83  $pluginDir = $pluginHelper->extractPlugin($temporaryFile->getFilePath(), $temporaryFile->getOriginalFileName());
84  } catch (Exception $e) {
85  $notificationMgr->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_ERROR, array('contents' => $e->getMessage()));
86  return false;
87  } finally {
88  $temporaryFileManager->deleteById($temporaryFile->getId(), $user->getId());
89  }
90 
91  // Install or upgrade the extracted plugin.
92  try {
93  switch ($this->_function) {
94  case PLUGIN_ACTION_UPLOAD:
95  $pluginVersion = $pluginHelper->installPlugin($pluginDir);
96  $notificationMgr->createTrivialNotification(
97  $user->getId(),
98  NOTIFICATION_TYPE_SUCCESS,
99  array('contents' =>
100  __('manager.plugins.installSuccessful', array('versionNumber' => $pluginVersion->getVersionString(false))))
101  );
102  break;
103  case PLUGIN_ACTION_UPGRADE:
104  $plugin = PluginRegistry::getPlugin($request->getUserVar('category'), $request->getUserVar('plugin'));
105  $pluginVersion = $pluginHelper->upgradePlugin(
106  $request->getUserVar('category'),
107  basename($plugin->getPluginPath()),
108  $pluginDir
109  );
110  $notificationMgr->createTrivialNotification(
111  $user->getId(),
112  NOTIFICATION_TYPE_SUCCESS,
113  array('contents' => __('manager.plugins.upgradeSuccessful', array('versionString' => $pluginVersion->getVersionString(false))))
114  );
115  break;
116  default: assert(false); // Illegal PLUGIN_ACTION_...
117  }
118  } catch (Exception $e) {
119  $notificationMgr->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_ERROR, array('contents' => $e->getMessage()));
120  $temporaryFileManager->rmtree($pluginDir);
121  return false;
122  }
123  return true;
124  }
125 }
126 
127 
TemporaryFileManager
Definition: TemporaryFileManager.inc.php:19
UploadPluginForm\$_function
$_function
Definition: UploadPluginForm.inc.php:28
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
UploadPluginForm\execute
execute(... $functionArgs)
Definition: UploadPluginForm.inc.php:70
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
Form\getData
getData($key)
Definition: Form.inc.php:220
UploadPluginForm\fetch
fetch($request, $template=null, $display=false)
Definition: UploadPluginForm.inc.php:56
UploadPluginForm\__construct
__construct($function)
Definition: UploadPluginForm.inc.php:35
UploadPluginForm\readInputData
readInputData()
Definition: UploadPluginForm.inc.php:49
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
UploadPluginForm
Form to upload a plugin file.
Definition: UploadPluginForm.inc.php:22
FormValidator
Class to represent a form validation check.
Definition: FormValidator.inc.php:23
PluginRegistry\getPlugin
static getPlugin($category, $name)
Definition: PluginRegistry.inc.php:85
PluginHelper
Helper class implementing plugin administration functions.
Definition: PluginHelper.inc.php:29
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
NotificationManager
Definition: NotificationManager.inc.php:19
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235