Dieser Commit ist enthalten in:
Ursprung
2b21070b1a
Commit
f7a7c71f86
1583 geänderte Dateien mit 454759 neuen und 0 gelöschten Zeilen
306
application/controllers/IndexController.php
Normale Datei
306
application/controllers/IndexController.php
Normale Datei
|
|
@ -0,0 +1,306 @@
|
|||
<?php
|
||||
/**
|
||||
* This file is part of MySQLDumper released under the GNU/GPL 2 license
|
||||
* http://www.mysqldumper.net
|
||||
*
|
||||
* @package MySQLDumper
|
||||
* @subpackage Controllers
|
||||
* @version SVN: $Rev$
|
||||
* @author $Author$
|
||||
*/
|
||||
/**
|
||||
* Index controller
|
||||
*
|
||||
* Controller to handle actions triggered on index screen
|
||||
*
|
||||
* @package MySQLDumper
|
||||
* @subpackage Controllers
|
||||
*/
|
||||
class IndexController extends Zend_Controller_Action
|
||||
{
|
||||
/**
|
||||
* Remember last controler
|
||||
* @var string
|
||||
*/
|
||||
private $_lastController;
|
||||
|
||||
/**
|
||||
* Remember last action
|
||||
* @var string
|
||||
*/
|
||||
private $_lastAction;
|
||||
|
||||
/**
|
||||
* Init
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
$request = $this->getRequest();
|
||||
$this->_lastController = $request->getParam('lastController', 'index');
|
||||
$this->_lastAction = $request->getParam('lastAction', 'index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Process index action
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function indexAction()
|
||||
{
|
||||
$version = new Msd_Version();
|
||||
if (!$version->checkPhpVersion()) {
|
||||
$this->_forward(
|
||||
'badversion',
|
||||
'install',
|
||||
'default',
|
||||
array(
|
||||
'message' => 'L_PHP_VERSION_TOO_OLD'
|
||||
)
|
||||
);
|
||||
}
|
||||
try {
|
||||
$dbo = Msd_Db::getAdapter();
|
||||
$data = Msd_File::getLatestBackupInfo();
|
||||
if (!empty($data)) {
|
||||
$statusline = Msd_File_Dump::getStatusline($data['filename']);
|
||||
$data['filename'] = $statusline['dbname'];
|
||||
} else {
|
||||
$data['filename'] = '';
|
||||
}
|
||||
$data['mysqlServerVersion'] = $dbo->getServerInfo();
|
||||
$data['mysqlClientVersion'] = $dbo->getClientInfo();
|
||||
$data['serverMaxExecutionTime'] =
|
||||
(int)@get_cfg_var('max_execution_time');
|
||||
$this->view->assign($data);
|
||||
if ($this->view->config->get('dynamic.dbActual') == '') {
|
||||
$dbNames = $dbo->getDatabaseNames();
|
||||
$this->view->config->set('dynamic.dbActual', $dbNames[0]);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
$configNames = Msd_File::getConfigNames();
|
||||
if (count($configNames) == 0) {
|
||||
// no configuration file found - we need to install MSD
|
||||
$this->_redirect('/install/index');
|
||||
} else {
|
||||
// config found and loaded but we couldn't access MySQL
|
||||
// MySQL data seems to be invalid (changed user or server)
|
||||
// TODO give feedback to user and let him correct MySQL data
|
||||
$this->_redirect('/index/login');
|
||||
}
|
||||
}
|
||||
if (!$version->checkMysqlVersion()) {
|
||||
$this->_forward(
|
||||
'badversion',
|
||||
'install',
|
||||
'default',
|
||||
array('message' => 'L_MYSQL_VERSION_TOO_OLD')
|
||||
);
|
||||
}
|
||||
$this->view->version = $version;
|
||||
$this->view->dbAdapter = get_class($dbo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Switch configuration file
|
||||
*
|
||||
* Load selected configuration and forward to last page
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function switchconfigAction()
|
||||
{
|
||||
$this->_helper->viewRenderer->setNoRender(true);
|
||||
$request = $this->getRequest();
|
||||
$file = base64_decode($request->getParam('selectedConfig'));
|
||||
$this->view->config = Msd_Configuration::getInstance();
|
||||
$this->view->config->loadConfiguration($file);
|
||||
if ($this->_lastAction != 'switchconfig') { //prevent endless loop
|
||||
$this->_forward($this->_lastAction, $this->_lastController);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Select another database as actual db
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function selectdbAction()
|
||||
{
|
||||
$this->_helper->viewRenderer->setNoRender(true);
|
||||
$request = $this->getRequest();
|
||||
$selectedDb = base64_decode($request->getParam('selectedDb'));
|
||||
$this->view->config->set('dynamic.dbActual', $selectedDb);
|
||||
if ($this->_lastAction != 'selectdb') { //prevent endless loop
|
||||
$redirectUrl = $this->view->url(
|
||||
array(
|
||||
'controller' => $this->_lastController,
|
||||
'action' => $this->_lastAction,
|
||||
),
|
||||
null,
|
||||
true
|
||||
);
|
||||
$this->_response->setRedirect($redirectUrl);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh database list
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function dbrefreshAction()
|
||||
{
|
||||
$this->_helper->viewRenderer->setNoRender(true);
|
||||
$dbo = Msd_Db::getAdapter();
|
||||
$databases = $dbo->getDatabaseNames();
|
||||
$this->view->config->set('dynamic.databases', $databases);
|
||||
$actualDb = $this->view->config->get('dynamic.dbActual');
|
||||
if ($dbo->selectDb($actualDb) !== true) {
|
||||
//actual db is no longer available -> switch to first one
|
||||
$this->view->config->set('dynamic.dbActual', $databases[0]);
|
||||
}
|
||||
if ($this->_lastAction != 'refreshdb') { //prevent endless loop
|
||||
$redirectUrl = $this->view->url(
|
||||
array(
|
||||
'controller' => $this->_lastController,
|
||||
'action' => $this->_lastAction,
|
||||
),
|
||||
null,
|
||||
true
|
||||
);
|
||||
$this->_response->setRedirect($redirectUrl);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process phpinfo action
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function phpinfoAction()
|
||||
{
|
||||
//nothing to process - just render view
|
||||
}
|
||||
|
||||
/**
|
||||
* Redirect to url
|
||||
*
|
||||
* @param array $url
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function _doRedirect(array $url = array())
|
||||
{
|
||||
$this->_response->setRedirect($this->view->url($url, null, true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Logout the user and redirect him to login page
|
||||
*/
|
||||
public function logoutAction()
|
||||
{
|
||||
//un-Auth user
|
||||
$user = new Msd_User();
|
||||
$user->logout();
|
||||
if (PHP_SAPI != 'cli') {
|
||||
setcookie('msd_autologin', null, null, '/');
|
||||
}
|
||||
$this->_doRedirect(
|
||||
array(
|
||||
'controller' => 'index',
|
||||
'action' => 'login'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* User login
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function loginAction()
|
||||
{
|
||||
$form = new Application_Form_Login();
|
||||
if ($this->_request->isPost()) {
|
||||
$user = new Msd_User();
|
||||
$postData = $this->_request->getParams();
|
||||
if ($form->isValid($postData)) {
|
||||
$autoLogin = ($postData['autologin'] == 1) ? true : false;
|
||||
$loginResult = $user->login(
|
||||
$postData['user'],
|
||||
$postData['pass'],
|
||||
$autoLogin
|
||||
);
|
||||
$this->view->messages = $user->getAuthMessages();
|
||||
switch ($loginResult) {
|
||||
case Msd_User::NO_USER_FILE:
|
||||
case Msd_User::NO_VALID_USER:
|
||||
// users.ini doesn't exist or doesn't have entries
|
||||
$this->_doRedirect(
|
||||
array(
|
||||
'controller' => 'install',
|
||||
'action' => 'index'
|
||||
)
|
||||
);
|
||||
break;
|
||||
case Msd_User::UNKNOWN_IDENTITY:
|
||||
// user is not listed in users.ini
|
||||
break;
|
||||
case Msd_User::SUCCESS:
|
||||
$defaultDb = $this->view->config->get(
|
||||
'config.dbuser.defaultDb'
|
||||
);
|
||||
|
||||
// set actualDb to defaultDb
|
||||
if ($defaultDb != '') {
|
||||
$this->view->config->set(
|
||||
'dynamic.dbActual',
|
||||
$defaultDb
|
||||
);
|
||||
}
|
||||
$this->_doRedirect(
|
||||
array(
|
||||
'controller' => 'index',
|
||||
'action' => 'index'
|
||||
)
|
||||
);
|
||||
return;
|
||||
break;
|
||||
}
|
||||
// if we get here wrong credentials are given
|
||||
$this->view->popUpMessage()
|
||||
->addMessage(
|
||||
'login-message',
|
||||
'L_LOGIN',
|
||||
$user->getAuthMessages(),
|
||||
array(
|
||||
'modal' => true,
|
||||
'dialogClass' => 'error'
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
$this->view->form = $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle menu state (shown or hidden) and save state to session.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxToggleMenuAction()
|
||||
{
|
||||
$menu = new Zend_Session_Namespace('menu');
|
||||
if (isset($menu->showMenu)) {
|
||||
$menu->showMenu = (int)$menu->showMenu;
|
||||
} else {
|
||||
$menu->showMenu = 0;
|
||||
}
|
||||
$menu->showMenu = $menu->showMenu == 1 ? 0 : 1;
|
||||
$this->_helper->layout()->disableLayout();
|
||||
$this->view->showMenu = $menu->showMenu;
|
||||
}
|
||||
|
||||
}
|
||||
Laden …
Tabelle hinzufügen
Einen Link hinzufügen
In neuem Issue referenzieren