1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-28 20:45:00 +03:00

Доработка инсталлятора - конвертация таблицы плагина Page

This commit is contained in:
Mzhelskiy Maxim 2014-12-09 23:14:10 +07:00
parent a75b33dbde
commit 8a87498cbd
3 changed files with 68 additions and 17 deletions

View file

@ -168,25 +168,47 @@ abstract class InstallStep
* Массив для сбора ошибок
*/
$aErrors = array();
/**
* Смотрим, какие таблицы существуют в базе данных
*/
$aDbTables = array();
$aResult = @mysqli_query($oDb, "SHOW TABLES");
if (!$aResult) {
return array(
'result' => false,
'errors' => array($this->addError(InstallCore::getLang('db.errors.db_query')))
);
}
while ($aRow = mysqli_fetch_array($aResult, MYSQLI_NUM)) {
$aDbTables[] = $aRow[0];
if (isset($aParams['check_table'])) {
/**
* Смотрим, какие таблицы существуют в базе данных
*/
$aDbTables = array();
$aResult = @mysqli_query($oDb, "SHOW TABLES");
if (!$aResult) {
return array(
'result' => false,
'errors' => array($this->addError(InstallCore::getLang('db.errors.db_query')))
);
}
while ($aRow = mysqli_fetch_array($aResult, MYSQLI_NUM)) {
$aDbTables[] = $aRow[0];
}
/**
* Если среди таблиц БД уже есть нужная таблица, то выполнять SQL-дамп не нужно
*/
if (in_array($aParams['prefix'] . $aParams['check_table'], $aDbTables)) {
return array('result' => true, 'errors' => array());
}
}
/**
* Если среди таблиц БД уже есть нужная таблица, то выполнять SQL-дамп не нужно
* Проверка на существование поля
*/
if (in_array($aParams['prefix'] . $aParams['check_table'], $aDbTables)) {
return array('result' => true, 'errors' => array());
if (isset($aParams['check_table_field'])) {
list($sCheckTable, $sCheckField) = $aParams['check_table_field'];
$sCheckTable = str_replace('prefix_', $aParams['prefix'], $sCheckTable);
$aResult = @mysqli_query($oDb, "SHOW FIELDS FROM `{$sCheckTable}`");
if (!$aResult) {
return array(
'result' => false,
'errors' => array($this->addError(InstallCore::getLang('db.errors.db_query')))
);
}
while ($aRow = mysqli_fetch_assoc($aResult)) {
if ($aRow['Field'] == $sCheckField) {
return array('result' => true, 'errors' => array());
}
}
}
/**
* Выполняем запросы по очереди

View file

@ -79,6 +79,21 @@ class InstallStepUpdateVersion extends InstallStep
'check_table' => 'cron_task'
)));
if ($bResult) {
/**
* Проверяем необходимость конвертировать таблицу плагина Page
*/
if ($this->dbCheckTable("prefix_page")) {
$sFile = 'sql' . DIRECTORY_SEPARATOR . 'patch_page_1.3_to_2.0.sql';
list($bResult, $aErrors) = array_values($this->importDumpDB($oDb, InstallCore::getDataFilePath($sFile),
array(
'engine' => InstallConfig::get('db.tables.engine'),
'prefix' => InstallConfig::get('db.table.prefix'),
'check_table_field' => array('prefix_page', 'id')
)));
if (!$bResult) {
return $this->addError(join('<br/>', $aErrors));
}
}
/**
* Конвертируем опросы
* Сначала проверяем необходимость конвертации опросов
@ -603,7 +618,7 @@ class InstallStepUpdateVersion extends InstallStep
*/
$aFields = array(
'user_id' => $aUser['user_id'],
'role_id' => 2,
'role_id' => 2,
'date_create' => date("Y-m-d H:i:s"),
);
$this->dbInsertQuery('prefix_rbac_role_user', $aFields);

View file

@ -0,0 +1,14 @@
ALTER TABLE `prefix_page` CHANGE `page_id` `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT ;
ALTER TABLE `prefix_page` CHANGE `page_pid` `pid` INT( 11 ) UNSIGNED NULL DEFAULT NULL ;
ALTER TABLE `prefix_page` CHANGE `page_url` `url` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;
ALTER TABLE `prefix_page` CHANGE `page_url_full` `url_full` VARCHAR( 254 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;
ALTER TABLE `prefix_page` CHANGE `page_title` `title` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;
ALTER TABLE `prefix_page` CHANGE `page_text` `text` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;
ALTER TABLE `prefix_page` CHANGE `page_date_add` `date_add` DATETIME NOT NULL ;
ALTER TABLE `prefix_page` CHANGE `page_date_edit` `date_edit` DATETIME NULL DEFAULT NULL ;
ALTER TABLE `prefix_page` CHANGE `page_seo_keywords` `seo_keywords` VARCHAR( 250 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;
ALTER TABLE `prefix_page` CHANGE `page_seo_description` `seo_description` VARCHAR( 250 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;
ALTER TABLE `prefix_page` CHANGE `page_active` `active` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '1';
ALTER TABLE `prefix_page` CHANGE `page_main` `main` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0';
ALTER TABLE `prefix_page` CHANGE `page_sort` `sort` INT( 11 ) NOT NULL ;
ALTER TABLE `prefix_page` CHANGE `page_auto_br` `auto_br` TINYINT( 1 ) NOT NULL DEFAULT '1';