예제 #1
0
 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');
     }
 }
예제 #2
0
 public function copyAction()
 {
     if ($file = $this->getRequest()->getParam("file")) {
         $data = array();
         try {
             $filename = base64_decode($file);
             $file = Core_Model_Directory::getTmpDirectory(true) . "/{$filename}";
             if (!file_exists($file)) {
                 throw new Exception($this->_("The file %s does not exist", $filename));
             }
             $parser = new Installer_Model_Installer_Module_Parser();
             if ($parser->setFile($file)->copy()) {
                 $data = array("success" => 1);
             } else {
                 $messages = $parser->getErrors();
                 $message = implode("\n", $messages);
                 throw new Exception($this->_($message));
             }
         } catch (Exception $e) {
             $data = array("error" => 1, "message" => $e->getMessage());
         }
         $this->_sendHtml($data);
     }
 }