/
ModuleController.php
94 lines (73 loc) · 2.97 KB
/
ModuleController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
class Installer_ModuleController extends Backoffice_Controller_Default {
public function indexAction() {
$this->loadPartials();
}
public function installAction() {
$module_names = Zend_Controller_Front::getInstance()->getDispatcher()->getSortedModuleDirectories();
$modules = array();
foreach($module_names as $module_name) {
$module = new Installer_Model_Installer_Module();
$module->prepare($module_name);
if($module->canUpdate()) {
$modules[] = $module->getName();
}
}
$this->loadPartials();
$this->getLayout()->getPartial('content')->setModules($modules);
}
public function installpostAction() {
try {
$html = array('success' => 1);
if($module = $this->getRequest()->getParam('name')) {
$installer = new Installer_Model_Installer();
$installer->setModuleName($module)
->install()
;
$html = array('success' => 1);
} else {
throw new Exception($this->_("No directory provided"));
}
} catch(Exception $e) {
$html = array(
'error' => 1,
'message' => $e->getMessage()
);
}
$this->_sendHtml($html);
}
public function uploadAction() {
try {
if(empty($_FILES) || empty($_FILES['module']['name'])) {
throw new Exception("No file has been sent");
}
$adapter = new Zend_File_Transfer_Adapter_Http();
$adapter->setDestination(Core_Model_Directory::getTmpDirectory(true));
// $adapter->addValidator('MimeType', false, 'application/zip');
if($adapter->receive()) {
$file = $adapter->getFileInfo();
$parser = new Installer_Model_Installer_Module_Parser();
if($parser->setFile($file['module']['tmp_name'])->check()) {
$infos = pathinfo($file['module']['tmp_name']);
$filename = $infos['filename'];
$this->_redirect('installer/module/install', array('module_name' => $filename));
} else {
$messages = $parser->getErrors();
$message = implode("\n", $messages);
throw new Exception($this->_($message));
}
} else {
$messages = $adapter->getMessages();
if(!empty($messages)) {
$message = implode("\n", $messages);
} else {
$message = $this->_("An error occurred during the process. Please try again later.");
}
throw new Exception($message);
}
} catch(Exception $e) {
$this->getSession()->addError($e->getMessage());
$this->_redirect('installer/module');
}
}
}