Beispiel #1
0
 /**
  * Uninstall a module and remove its asset
  */
 public function uninstallAction()
 {
     $id = _get('id', 'int');
     $name = _get('name', 'regexp', array('regexp' => '/^[a-z0-9_]+$/i'));
     $result = false;
     $error = '';
     $details = array();
     $row = null;
     if (!$id && !$name) {
         $error = _a('Module is not specified.');
     }
     if (!$error) {
         if ($id) {
             $row = Pi::model('module')->find($id);
         } else {
             $row = Pi::model('module')->find($name, 'name');
         }
         if (!$row) {
             $error = _a('Module is not found.');
         } elseif ('system' == $row->name) {
             $error = _a('System module is protected.');
         } else {
             $installer = new ModuleInstaller();
             $result = $installer->uninstall($row);
             $details = $installer->getResult();
         }
     }
     if ($result) {
         $message = sprintf(_a('Module "%s" is uninstalled successfully.'), $row->title);
         Pi::service('event')->trigger('module_uninstall', $row->name);
     } elseif ($row) {
         $message = sprintf(_a('Module "%s" is not uninstalled.'), $row->title);
     } elseif ($id || $name) {
         $message = sprintf(_a('Module "%s" is not uninstalled.'), $name ?: $id);
     } else {
         $message = _a('Module is not uninstalled.');
     }
     $data = array('title' => _a('Module uninstallation'), 'result' => $result, 'error' => $error, 'message' => $message, 'details' => $details, 'url' => $this->url('', array('action' => 'index')));
     $this->view()->assign($data);
     $this->view()->setTemplate('module-operation');
 }