/** * 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'); }