1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-05-21 02:08:17 +03:00

Возможность запускать обновление LS из консоли

This commit is contained in:
Mzhelskiy Maxim 2014-12-01 17:00:24 +07:00
parent df33fe774c
commit 3c24a671ea
2 changed files with 84 additions and 0 deletions

View file

@ -0,0 +1,73 @@
<?php
/**
* Консольный запуск шагов инсталляции
* Позволяет выполнить обновление на новую версию через консоль, это актуально при большой БД
* Запускать шаги желательно от имени пользователя под которым работает веб-сервер, это поможет избежать проблем с правами доступа.
*
* Пример запуска обновления с 1.0.3 версии LS до 2.0.0:
* php -f ./console.php run update_version 1.0.3
*/
error_reporting(E_ALL);
ini_set('display_errors', 1);
set_time_limit(0);
require_once('bootstrap.php');
function console_echo($sMsg, $bExit = false)
{
echo("{$sMsg} \n");
if ($bExit) {
exit();
}
}
/**
* Init core
*/
$oInstall = new InstallCore(array('fake' => array()));
/**
* Получаем параметры
*/
$aArgs = isset($_SERVER['argv']) ? $_SERVER['argv'] : array();
if (count($aArgs) == 1) {
console_echo(InstallCore::getLang('console.command_empty'), true);
}
/**
* Ищем команду
*/
$sCommand = strtolower($aArgs[1]);
if ($sCommand == 'run') {
if (!isset($aArgs[2])) {
console_echo(InstallCore::getLang('console.command.run.params_step_empty'), true);
}
$sStep = install_func_camelize($aArgs[2]);
$sClass = 'InstallStep' . ucfirst($sStep);
if (!class_exists($sClass)) {
console_echo(InstallCore::getLang('Not found step ' . $sStep), true);
}
/**
* Хардкодим параметр для шага обновления
* TODO: убрать и переделать на нормальную консольную утилиту
*/
$_REQUEST['from_version'] = isset($aArgs[3]) ? $aArgs[3] : '';
/**
* Создаем объект шага и запускаем его
*/
$oStep = new $sClass('fake', array());
if ($oStep->process()) {
console_echo(InstallCore::getLang('console.command_successful'));
} else {
$aErrors = $oStep->getErrors();
if ($aErrors) {
$sMsgError = join("\n", $aErrors);
} else {
$sMsgError = InstallCore::getLang('console.command_failed');
}
console_echo($sMsgError, true);
}
} else {
console_echo(InstallCore::getLang('console.command_empty'), true);
}

View file

@ -126,6 +126,17 @@ return array(
'db_query' => 'Неудалось выполнить запрос к БД',
),
),
'console' => array(
'command_empty' => 'Необходимо указать команду. Сейчас поддерживается только команда "run"',
'command_successful' => 'Команда успешно выполнена',
'command_failed' => 'Не удалось выполнить команду',
'command' => array(
'run' => array(
'params_step_empty' => 'Необходимо указать параметр: название шага',
'params_version_empty' => 'Необходимо указать параметр: номер текущей версии',
)
),
),
'install_reset' => 'Начать установку сначала',
'yes' => 'Да',
'no' => 'Нет',