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