Example #1
0
 /**
  * Activate/deactivate a module
  */
 public function enableAction()
 {
     $id = _get('id', 'int');
     $name = _get('name', 'regexp', array('regexp' => '/^[a-z0-9_]+$/i'));
     $active = _get('active', 'int');
     $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();
             if ($active) {
                 $result = $installer->activate($row);
             } else {
                 $result = $installer->deactivate($row);
             }
             $details = $installer->getResult();
         }
     }
     if ($active) {
         if ($result) {
             $message = sprintf(_a('Module "%s" is enabled successfully.'), $row->title);
             Pi::service('event')->trigger('module_activate', $row['name']);
         } elseif ($row) {
             $message = sprintf(_a('Module "%s" is not enabled.'), $row->title);
         } elseif ($id || $name) {
             $message = sprintf(_a('Module "%s" is not enabled.'), $name ?: $id);
         } else {
             $message = _a('Module is not enabled.');
         }
     } else {
         if ($result) {
             $message = sprintf(_a('Module "%s" is disabled successfully.'), $row->title);
             Pi::service('event')->trigger('module_deactivate', $row['name']);
         } elseif ($row) {
             $message = sprintf(_a('Module "%s" is not disabled.'), $row->title);
         } elseif ($id || $name) {
             $message = sprintf(_a('Module "%s" is not disabled.'), $name ?: $id);
         } else {
             $message = _a('Module is not disabled.');
         }
     }
     $data = array('title' => _a('Module activation'), 'result' => $result, 'error' => $error, 'message' => $message, 'details' => $details, 'url' => $this->url('', array('action' => 'index')));
     $this->view()->assign($data);
     $this->view()->setTemplate('module-operation');
 }
Example #2
0
 public function submitAction()
 {
     $installer = new ModuleInstaller();
     $ret = $installer->install('system');
     if (!$ret) {
         $this->hasForm = true;
         $this->content = '<p class="alert alert-danger">' . _s('System module installation is failed. Please continue to try again.') . '</p>' . $installer->renderMessage() . '<input type="hidden" name="page" value="admin" />' . '<input type="hidden" name="retry" value="1" />' . '<input type="hidden" name="action" value="clear" />';
         return;
     }
     $vars = $this->vars;
     $vars['adminusername'] = $this->request->getPost('adminusername');
     $vars['adminmail'] = $this->request->getPost('adminmail');
     $vars['adminpass'] = $this->request->getPost('adminpass');
     $vars['adminpass2'] = $this->request->getPost('adminpass2');
     $vars['adminname'] = $this->request->getPost('adminname');
     $this->setPersist(static::PERSIST_SITE, $vars);
     $error = array();
     if (empty($vars['adminusername'])) {
         $error['name'][] = _s('Username is required.');
     }
     if (empty($vars['adminname'])) {
         $error['name'][] = _s('Name is required.');
     }
     if (empty($vars['adminmail'])) {
         $error['email'][] = _s('Email is required.');
     }
     if (empty($vars['adminpass'])) {
         $error['pass'][] = _s('Password is required.');
     }
     if (!filter_var($vars['adminmail'], FILTER_VALIDATE_EMAIL)) {
         $error['email'][] = _s('Invalid Email.');
     }
     if ($vars['adminpass'] != $vars['adminpass2']) {
         $error['pass'][] = _s('The two passwords do not match');
     }
     if (!$error) {
         // Update site generic settings
         $configModel = Pi::model('config');
         $configModel->update(array('value' => $vars['adminmail']), array('name' => 'adminmail'));
         $configModel->update(array('value' => $vars['adminname']), array('name' => 'adminname'));
         $config = $this->getPersist(static::PERSIST_ENGINE);
         if (!empty($config['sitename'])) {
             $configModel->update(array('value' => $config['sitename']), array('name' => 'sitename'));
         }
         if (!empty($config['slogan'])) {
             $configModel->update(array('value' => $config['slogan']), array('name' => 'slogan'));
         }
         if (!empty($config['environment'])) {
             $configModel->update(array('value' => $config['environment']), array('name' => 'environment'));
         }
         $locale = $this->wizard->getLocale();
         if ($locale) {
             $configModel->update(array('value' => $locale), array('name' => 'locale'));
         }
         $charset = $this->wizard->getCharset();
         if ($charset) {
             $configModel->update(array('value' => $charset), array('name' => 'charset'));
         }
         $location = Pi::service('geo_ip')->get($_SERVER['REMOTE_ADDR'], 'location');
         if ($location && !empty($location['timezone'])) {
             $configModel->update(array('value' => $location['timezone']), array('name' => 'timezone'));
         }
         // Create root admin user
         $adminData = array('identity' => $vars['adminusername'], 'credential' => $vars['adminpass'], 'email' => $vars['adminmail'], 'name' => $vars['adminname']);
         $uid = Pi::api('user', 'system')->addUser($adminData);
         $this->status = $uid ? true : false;
         Pi::api('user', 'system')->activateUser($uid);
         Pi::api('user', 'system')->setRole($uid, array('webmaster', 'admin'));
         // Create system accounts
         $accounts = array('manager' => array('name' => __('Manager'), 'role' => array()), 'moderator' => array('name' => __('Moderator'), 'role' => array()), 'editor' => array('name' => __('Editor'), 'role' => array()), 'staff' => array('name' => __('Staff'), 'role' => array('staff')), 'member' => array('name' => __('Member')));
         foreach ($accounts as $identity => $data) {
             $userData = array('identity' => $identity, 'email' => $identity . '@pialog.org', 'credential' => $adminData['credential'], 'name' => $data['name']);
             $uid = Pi::api('user', 'system')->addUser($userData);
             Pi::api('user', 'system')->activateUser($uid);
             if (!empty($data['role'])) {
                 Pi::api('user', 'system')->setRole($uid, $data['role']);
             }
         }
     }
     if ($this->status < 1) {
         $this->loadForm();
     }
 }
Example #3
0
// Get module and verify
$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);
Example #4
0
 /**
  * Install modules automatically
  *
  * @param Event $e
  * @return bool
  */
 public function installApplication(Event $e)
 {
     $apps = $this->preInstalledModules;
     //$installer = new ModuleInstaller;
     foreach ($apps as $app) {
         $installer = new ModuleInstaller();
         $ret = $installer->install($app);
     }
     $categories = array(array('title' => _a('Application'), 'order' => 1, 'modules' => array('user', 'uclient', 'article', 'document', 'solution', 'video', 'forum', 'page', 'demo')), array('title' => _a('Service'), 'order' => 2, 'modules' => array('uclient', 'message', 'tag', 'comment', 'search', 'widget', 'media', 'saml')));
     $model = Pi::model('category', 'system');
     foreach ($categories as $category) {
         $row = $model->createRow($category);
         $row->save();
     }
     return true;
 }