Exemple #1
0
 /**
  * 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');
 }
Exemple #2
0
$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);
    }