/** * Update a module */ public function updateAction() { $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.'); } else { $installer = new ModuleInstaller(); $result = $installer->update($row); $details = $installer->getResult(); } } if ($result) { $message = sprintf(_a('Module "%s" is updated successfully.'), $row->title); Pi::service('event')->trigger('module_update', $row->name); } elseif ($row) { $message = sprintf(_a('Module "%s" is not updated.'), $row->title); } elseif ($id || $name) { $message = sprintf(_a('Module "%s" is not updated.'), $name ?: $id); } else { $message = _a('Module is not updated.'); } $data = array('title' => _a('Module update'), 'result' => $result, 'error' => $error, 'message' => $message, 'details' => $details, 'url' => $this->url('', array('action' => 'index'))); $this->view()->assign($data); $this->view()->setTemplate('module-operation'); }
$module = 'system'; if (!empty($_SERVER['QUERY_STRING'])) { $module = $_SERVER['QUERY_STRING']; } if (empty($module) || !Pi::service('module')->isActive($module)) { if (substr(PHP_SAPI, 0, 3) == 'cgi') { header('Status: 404 Not Found'); } else { header('HTTP/1.1 404 Not Found'); } echo 'Request not found!'; return; } $row = Pi::model('module')->find($module, 'name'); $installer = new ModuleInstaller(); $result = $installer->update($row); //$details = $installer->getResult(); if ($result) { // Refresh caches Pi::service('cache')->flush(); // Refresh assets $modules = Pi::registry('module')->read(); $themes = Pi::registry('theme')->read(); foreach (array_keys($modules) as $name) { $status = Pi::service('asset')->remove('module/' . $name); $status = Pi::service('asset')->publishModule($name); } foreach (array_keys($themes) as $name) { $status = Pi::service('asset')->remove('theme/' . $name); $status = Pi::service('asset')->publishTheme($name); }