1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-05-20 17:58:24 +03:00

Модуль Install: конвертация базы данных версии 0.3.1 до версии 0.4

This commit is contained in:
Alexey Kachayev 2009-11-17 01:42:20 +00:00
parent 97fd920c90
commit 6b9ff1350b
6 changed files with 392 additions and 20 deletions

135
install/convert.sql Normal file
View file

@ -0,0 +1,135 @@
--
-- Структура таблицы `prefix_session`
--
CREATE TABLE IF NOT EXISTS `prefix_session` (
`session_key` varchar(32) NOT NULL,
`user_id` int(11) unsigned NOT NULL,
`session_ip_create` varchar(15) NOT NULL,
`session_ip_last` varchar(15) NOT NULL,
`session_date_create` datetime NOT NULL default '0000-00-00 00:00:00',
`session_date_last` datetime NOT NULL,
PRIMARY KEY (`session_key`),
UNIQUE KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Ограничения внешнего ключа сохраненных таблиц
--
--
-- Ограничения внешнего ключа таблицы `prefix_session`
--
ALTER TABLE `prefix_session`
ADD CONSTRAINT `prefix_session_fk` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_user` DROP `user_key` ;
ALTER TABLE `prefix_user` DROP `user_date_last` ;
ALTER TABLE `prefix_user` DROP `user_ip_last` ;
ALTER TABLE `prefix_friend` DROP FOREIGN KEY `prefix_frend_fk1`;
ALTER TABLE `prefix_friend` CHANGE `user_frend_id` `user_friend_id` INT( 11 ) UNSIGNED;
ALTER TABLE `prefix_friend` ADD CONSTRAINT `prefix_friend_ibfk_1` FOREIGN KEY (`user_friend_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_topic_comment` ADD `comment_publish` TINYINT( 1 ) DEFAULT '1' NOT NULL ;
ALTER TABLE `prefix_topic_comment` DROP FOREIGN KEY `topic_comment_fk`;
ALTER TABLE `prefix_topic_comment` CHANGE `topic_id` `target_id` INT( 11 ) UNSIGNED;
ALTER TABLE `prefix_topic_comment` ADD `target_type` ENUM( "topic", "talk" ) DEFAULT 'topic' NOT NULL AFTER `target_id` ;
ALTER TABLE `prefix_topic_comment_online` DROP FOREIGN KEY `prefix_topic_comment_online_fk`;
ALTER TABLE `prefix_topic_comment_online` CHANGE `topic_id` `target_id` INT( 11 ) UNSIGNED DEFAULT NULL ;
ALTER TABLE `prefix_topic_comment_online` ADD `target_type` ENUM( "topic", "talk" ) DEFAULT 'topic' NOT NULL AFTER `target_id` ;
ALTER TABLE `prefix_topic_comment` RENAME `prefix_comment` ;
ALTER TABLE `prefix_topic_comment_online` RENAME `prefix_comment_online` ;
ALTER TABLE `prefix_topic_vote` RENAME `prefix_vote` ;
ALTER TABLE `prefix_vote` DROP FOREIGN KEY `prefix_topic_vote_fk`;
ALTER TABLE `prefix_vote` CHANGE `topic_id` `target_id` INT( 11 ) UNSIGNED;
ALTER TABLE `prefix_vote` ADD `target_type` ENUM( "topic", "blog", "user", "comment" ) DEFAULT 'topic' NOT NULL AFTER `target_id` ;
ALTER TABLE `prefix_vote` CHANGE `vote_delta` `vote_direction` TINYINT( 2 ) DEFAULT '0';
ALTER TABLE `prefix_vote` ADD `vote_value` FLOAT( 9, 3 ) DEFAULT '0' NOT NULL ;
ALTER TABLE `prefix_vote` ADD `vote_date` DATETIME NOT NULL ;
ALTER TABLE `prefix_vote` DROP INDEX `topic_id_user_voter_id_uniq` ;
ALTER TABLE `prefix_vote` DROP INDEX `topic_id` ;
ALTER TABLE `prefix_vote` ADD PRIMARY KEY ( `target_id` , `target_type` , `user_voter_id` ) ;
ALTER TABLE `prefix_talk` ADD `talk_count_comment` INT DEFAULT '0' NOT NULL ;
ALTER TABLE `prefix_talk_user` ADD `comment_id_last` INT DEFAULT '0' NOT NULL ;
ALTER TABLE `prefix_talk_user` ADD `comment_count_new` INT DEFAULT '0' NOT NULL ;
--
-- Переход на единую систему избранного
--
ALTER TABLE `prefix_favourite_topic` RENAME `prefix_favourite`;
ALTER TABLE `prefix_favourite` DROP FOREIGN KEY `prefix_favourite_topic_fk1`;
ALTER TABLE `prefix_favourite` DROP FOREIGN KEY `prefix_favourite_topic_fk`;
ALTER TABLE `prefix_favourite` DROP INDEX `topic_id`;
ALTER TABLE `prefix_favourite` DROP INDEX `topic_publish`;
ALTER TABLE `prefix_favourite` CHANGE `topic_id` `target_id` INT( 11 ) UNSIGNED;
ALTER TABLE `prefix_favourite` CHANGE `topic_publish` `target_publish` TINYINT( 1 ) DEFAULT '1';
ALTER TABLE `prefix_favourite` ADD `target_type` ENUM( 'topic', 'comment' ) DEFAULT 'topic' NOT NULL AFTER `target_id` ;
ALTER TABLE `prefix_favourite` DROP INDEX `user_id_topic_id`,
ADD UNIQUE `user_id_target_id_type` ( `user_id` , `target_id` , `target_type` );
ALTER TABLE `prefix_favourite` ADD INDEX `target_publish` ( `target_publish` );
ALTER TABLE `prefix_favourite` ADD CONSTRAINT `prefix_favourite_target_fk` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_favourite` CHANGE `target_type` `target_type` ENUM( 'topic', 'comment', 'talk' ) DEFAULT 'topic';
ALTER TABLE `prefix_talk_user` ADD `talk_user_active` TINYINT( 1 ) DEFAULT '1';
CREATE TABLE `prefix_talk_blacklist` (
`user_id` INT UNSIGNED NOT NULL ,
`user_target_id` INT UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `prefix_talk_blacklist` ADD PRIMARY KEY ( `user_id` , `user_target_id` );
ALTER TABLE `prefix_talk_blacklist` ADD CONSTRAINT `prefix_talk_blacklist_fk_user` FOREIGN KEY ( `user_id` ) REFERENCES `prefix_user` ( `user_id` ) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_talk_blacklist` ADD CONSTRAINT `prefix_talk_blacklist_fk_target` FOREIGN KEY ( `user_target_id` ) REFERENCES `prefix_user` ( `user_id` ) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_friend`
DROP FOREIGN KEY `prefix_frend_fk`,
DROP FOREIGN KEY `prefix_friend_ibfk_1`;
ALTER TABLE `prefix_friend` DROP INDEX `user_id`;
ALTER TABLE `prefix_friend` DROP INDEX `user_frend_id`;
ALTER TABLE `prefix_friend` DROP INDEX `user_id_fren_id`;
ALTER TABLE `prefix_friend` CHANGE `user_id` `user_from` INT( 11 ) UNSIGNED;
ALTER TABLE `prefix_friend` CHANGE `user_friend_id` `user_to` INT( 11 ) UNSIGNED DEFAULT NULL;
ALTER TABLE `prefix_friend` ADD `status_from` INT( 4 ) NOT NULL ;
ALTER TABLE `prefix_friend` ADD `status_to` INT( 4 ) NOT NULL ;
ALTER TABLE `prefix_friend` ADD PRIMARY KEY ( `user_from` , `user_to` );
ALTER TABLE `prefix_friend` ADD INDEX ( `user_from` );
ALTER TABLE `prefix_friend` ADD INDEX ( `user_to` );
ALTER TABLE `prefix_friend` ADD CONSTRAINT `prefix_friend_from_fk` FOREIGN KEY (`user_from`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_friend` ADD CONSTRAINT `prefix_friend_to_fk` FOREIGN KEY (`user_to`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Хранение заданий на отложенную отправку e-mail сообщений
--
CREATE TABLE `prefix_notify_task` (
`notify_task_id` INT UNSIGNED AUTO_INCREMENT ,
`user_login` VARCHAR( 30 ) ,
`user_mail` VARCHAR( 50 ) ,
`notify_subject` VARCHAR( 200 ) ,
`notify_text` TEXT,
`date_created` DATETIME,
`notify_task_status` TINYINT( 2 ) UNSIGNED,
PRIMARY KEY ( `notify_task_id` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
ALTER TABLE `prefix_blog_user`
DROP `is_moderator`,
DROP `is_administrator`;
ALTER TABLE `prefix_blog_user` ADD `user_role` INT( 3 ) NOT NULL ;
ALTER TABLE `prefix_blog_user` CHANGE `user_role` `user_role` INT( 3 ) DEFAULT '1';
ALTER TABLE `prefix_user` CHANGE `user_profile_avatar` `user_profile_avatar` VARCHAR( 250 );
ALTER TABLE `prefix_user` DROP `user_profile_avatar_type`;
ALTER TABLE `prefix_blog` CHANGE `blog_avatar` `blog_avatar` VARCHAR( 250 );
ALTER TABLE `prefix_blog` DROP `blog_avatar_type`;
ALTER TABLE `prefix_user` ADD `user_date_topic_last` DATETIME AFTER `user_date_comment_last` ;
ALTER TABLE `prefix_user` DROP `user_date_topic_last`

View file

@ -501,6 +501,7 @@ class Install {
$aParams['user'] = $this->GetRequest('install_db_user','');
$aParams['password'] = $this->GetRequest('install_db_password','');
$aParams['create'] = $this->GetRequest('install_db_create',0);
$aParams['convert'] = $this->GetRequest('install_db_convert',0);
$aParams['prefix'] = $this->GetRequest('install_db_prefix','prefix_');
$aParams['engine'] = $this->GetRequest('install_db_engine','InnoDB');
@ -510,6 +511,7 @@ class Install {
$this->Assign('install_db_user', $aParams['user'], self::SET_VAR_IN_SESSION);
$this->Assign('install_db_password', $aParams['password'], self::SET_VAR_IN_SESSION);
$this->Assign('install_db_create_check', (($aParams['create'])?'checked="checked"':''), self::SET_VAR_IN_SESSION);
$this->Assign('install_db_convert_check', (($aParams['convert'])?'checked="checked"':''), self::SET_VAR_IN_SESSION);
$this->Assign('install_db_prefix', $aParams['prefix'], self::SET_VAR_IN_SESSION);
$this->Assign('install_db_engine', $aParams['engine'], self::SET_VAR_IN_SESSION);
/**
@ -543,7 +545,6 @@ class Install {
$this->SaveConfig('db.params.port', $aParams['port'], $sLocalConfigFile);
$this->SaveConfig('db.params.user', $aParams['user'], $sLocalConfigFile);
$this->SaveConfig('db.params.pass', $aParams['password'], $sLocalConfigFile);
$this->SaveConfig('db.params.pass', $aParams['password'], $sLocalConfigFile);
$this->SaveConfig('db.table.prefix', $aParams['prefix'], $sLocalConfigFile);
$this->SaveConfig('db.tables.engine',$aParams['engine'], $sLocalConfigFile);
/**
@ -553,11 +554,23 @@ class Install {
/**
* Открываем .sql файл и добавляем в базу недостающие таблицы
*/
list($bResult,$aErrors) = array_values($this->CreateTables('sql.sql',$aParams));
if(!$bResult) {
foreach($aErrors as $sError) $this->aMessages[] = array('type'=>'error','text'=>$sError);
$this->Layout('steps/db.tpl');
return false;
if(!$aParams['convert']) {
list($bResult,$aErrors) = array_values($this->CreateTables('sql.sql',$aParams));
if(!$bResult) {
foreach($aErrors as $sError) $this->aMessages[] = array('type'=>'error','text'=>$sError);
$this->Layout('steps/db.tpl');
return false;
}
} else {
/**
* Если указана конвертация старой базы данных
*/
list($bResult,$aErrors) = array_values($this->ConvertDatabase('convert.sql',$aParams));
if(!$bResult) {
foreach($aErrors as $sError) $this->aMessages[] = array('type'=>'error','text'=>$sError);
$this->Layout('steps/db.tpl');
return false;
}
}
/**
* Передаем управление на следующий шаг
@ -978,6 +991,97 @@ class Install {
}
return array('result'=>false,'errors'=>$aErrors);
}
/**
* Конвертирует базу данных версии 0.3.1 в базу данных версии 0.4
*
* @return bool
*/
function ConvertDatabase($sFilePath,$aParams) {
$sFileQuery = @file_get_contents($sFilePath);
if(!$sFileQuery) return array('result'=>false,'errors'=>array($this->Lang("config_file_not_exists", array('path'=>$sFilePath))));
if(isset($aParams['prefix'])) $sFileQuery = str_replace('prefix_', $aParams['prefix'], $sFileQuery);
$aQuery=explode(';',$sFileQuery);
/**
* Массив для сбора ошибок
*/
$aErrors = array();
/**
* Выполняем запросы по очереди
*/
foreach($aQuery as $sQuery){
$sQuery = trim($sQuery);
/**
* Заменяем движек, если таковой указан в запросе
*/
if(isset($aParams['engine'])) $sQuery=str_ireplace('ENGINE=InnoDB', "ENGINE={$aParams['engine']}",$sQuery);
if($sQuery!='') {
$bResult=mysql_query($sQuery);
if(!$bResult) $aErrors[] = mysql_error();
}
}
/**
* Переводим в одну таблицу vote`ы
*/
$aVoteTables = array(
$aParams['prefix'].'blog_vote'=>'blog',
$aParams['prefix'].'user_vote'=>'user',
$aParams['prefix'].'topic_comment_vote'=>'comment'
);
foreach ($aVoteTables as $sTable=>$sTarget) {
$sVoteSelect = "SELECT * FROM {$sTable} WHERE 1";
if(!$aResults = mysql_query($sVoteSelect)){
$aErrors[] = $this->Lang('error_vote_table_select',array('table'=>$sTable));
continue;
}
/**
* Переносим в новую таблицу с указанием target`а
*/
while($aRow = mysql_fetch_array($aResults, MYSQL_ASSOC)) {
$sQuery = "INSERT INTO `{$aParams['prefix']}vote`
VALUES (
'{$aRow[$sTarget.'_id']}',
'{$sTarget}', '{$aRow['user_voter_id']}',
'".(($aRow['vote_delta']>=0)?1:-1)."',
'{$aRow['vote_delta']}',
'".date("Y-m-d H:i:s")."')";
if(!mysql_query($sQuery)) $aErrors[] = mysql_error();
}
}
/**
* Переводим в одну таблицу комментарии
*/
/**
$sTalkCommentSelect = "SELECT * FROM {$aParams['prefix']}talk_comment";
if(!$aResults = mysql_query($sTalkCommentSelect)){
$aErrors[] = $this->Lang('error_comment_table_select');
} else {
while($aRow = mysql_fetch_array($aResults, MYSQL_ASSOC)) {
$sQuery = "INSERT INTO `{$aParams['prefix']}comment`
VALUES (
'{$aRow['talk_comment_id']}',
'{$aRow['talk_comment_pid']}',
'{$aRow['talk_id']}',
'talk',
'{$aRow['user_id']}',
'{$aRow['talk_comment_text']}',
'".md5($aRow['talk_comment_text'])."',
'{$aRow['talk_comment_date']}',
'{$aRow['talk_comment_user_ip']}',
'0', '0', '0', '1'
)";
if(!mysql_query($sQuery)) $aErrors[] = mysql_error();
}
}
**/
if(count($aErrors)==0) {
return array('result'=>true,'errors'=>null);
}
return array('result'=>false,'errors'=>$aErrors);
}
/**
* Валидирует данные администратора
*

View file

@ -61,7 +61,7 @@ return array(
'php_params_utf8'=>'Подержка UTF8 в PCRE',
'php_params_mbstring'=>'Поддержка Mbstring',
'local_config'=>'Поддержка Mbstring',
'local_config'=>'Локальная конфигурация',
'local_config_file'=>'Файл config.local.php существует и доступен для записи',
'db_params'=>'Настройка базы данных',
@ -70,6 +70,7 @@ return array(
'db_params_port_notice'=>'Скорее всего правильным решение будет оставить 3306 :)',
'db_params_name'=>'Название базы данных',
'db_params_create'=>'Создать базу данных',
'db_params_convert'=>'Конвертировать базу 0.3.1 в 0.4',
'db_params_user'=>'Имя пользователя',
'db_params_password'=>'Пароль',
'db_params_prefix'=>'Префикс таблиц',
@ -77,6 +78,9 @@ return array(
'db_params_engine'=>'Tables engine',
'db_params_engine_notice'=>'Рекомендуется использовать InnoDB',
'error_vote_table_select'=>'Ошибка запроса на выборку данных из таблицы %%table%%',
'error_comment_table_select'=>'Ошибка запроса на выборку данных из таблицы talk_comment',
'admin_params'=>'Настройка данных администратора',
'admin_params_login'=>'Логин',
'admin_params_mail'=>'E-mail',

View file

@ -1,16 +1,6 @@
-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Май 10 2009 г., 11:18
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4
-- SQL-дамп базы данных ядра LiveStreet версии 0.4
--
-- БД: `ls_03`
--
-- --------------------------------------------------------
--
-- Структура таблицы `prefix_blog`
@ -827,4 +817,139 @@ ALTER TABLE `prefix_user_administrator`
ALTER TABLE `prefix_user_vote`
ADD CONSTRAINT `user_vote_fk` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `user_vote_fk1` FOREIGN KEY (`user_voter_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Структура таблицы `prefix_session`
--
CREATE TABLE IF NOT EXISTS `prefix_session` (
`session_key` varchar(32) NOT NULL,
`user_id` int(11) unsigned NOT NULL,
`session_ip_create` varchar(15) NOT NULL,
`session_ip_last` varchar(15) NOT NULL,
`session_date_create` datetime NOT NULL default '0000-00-00 00:00:00',
`session_date_last` datetime NOT NULL,
PRIMARY KEY (`session_key`),
UNIQUE KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Ограничения внешнего ключа сохраненных таблиц
--
--
-- Ограничения внешнего ключа таблицы `prefix_session`
--
ALTER TABLE `prefix_session`
ADD CONSTRAINT `prefix_session_fk` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_user` DROP `user_key` ;
ALTER TABLE `prefix_user` DROP `user_date_last` ;
ALTER TABLE `prefix_user` DROP `user_ip_last` ;
ALTER TABLE `prefix_friend` DROP FOREIGN KEY `prefix_frend_fk1`;
ALTER TABLE `prefix_friend` CHANGE `user_frend_id` `user_friend_id` INT( 11 ) UNSIGNED;
ALTER TABLE `prefix_friend` ADD CONSTRAINT `prefix_friend_ibfk_1` FOREIGN KEY (`user_friend_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_topic_comment` ADD `comment_publish` TINYINT( 1 ) DEFAULT '1' NOT NULL ;
ALTER TABLE `prefix_topic_comment` DROP FOREIGN KEY `topic_comment_fk`;
ALTER TABLE `prefix_topic_comment` CHANGE `topic_id` `target_id` INT( 11 ) UNSIGNED;
ALTER TABLE `prefix_topic_comment` ADD `target_type` ENUM( "topic", "talk" ) DEFAULT 'topic' NOT NULL AFTER `target_id` ;
ALTER TABLE `prefix_topic_comment_online` DROP FOREIGN KEY `prefix_topic_comment_online_fk`;
ALTER TABLE `prefix_topic_comment_online` CHANGE `topic_id` `target_id` INT( 11 ) UNSIGNED DEFAULT NULL ;
ALTER TABLE `prefix_topic_comment_online` ADD `target_type` ENUM( "topic", "talk" ) DEFAULT 'topic' NOT NULL AFTER `target_id` ;
ALTER TABLE `prefix_topic_comment` RENAME `prefix_comment` ;
ALTER TABLE `prefix_topic_comment_online` RENAME `prefix_comment_online` ;
ALTER TABLE `prefix_topic_vote` RENAME `prefix_vote` ;
ALTER TABLE `prefix_vote` DROP FOREIGN KEY `prefix_topic_vote_fk`;
ALTER TABLE `prefix_vote` CHANGE `topic_id` `target_id` INT( 11 ) UNSIGNED;
ALTER TABLE `prefix_vote` ADD `target_type` ENUM( "topic", "blog", "user", "comment" ) DEFAULT 'topic' NOT NULL AFTER `target_id` ;
ALTER TABLE `prefix_vote` CHANGE `vote_delta` `vote_direction` TINYINT( 2 ) DEFAULT '0';
ALTER TABLE `prefix_vote` ADD `vote_value` FLOAT( 9, 3 ) DEFAULT '0' NOT NULL ;
ALTER TABLE `prefix_vote` ADD `vote_date` DATETIME NOT NULL ;
ALTER TABLE `prefix_vote` DROP INDEX `topic_id_user_voter_id_uniq` ;
ALTER TABLE `prefix_vote` DROP INDEX `topic_id` ;
ALTER TABLE `prefix_vote` ADD PRIMARY KEY ( `target_id` , `target_type` , `user_voter_id` ) ;
ALTER TABLE `prefix_talk` ADD `talk_count_comment` INT DEFAULT '0' NOT NULL ;
ALTER TABLE `prefix_talk_user` ADD `comment_id_last` INT DEFAULT '0' NOT NULL ;
ALTER TABLE `prefix_talk_user` ADD `comment_count_new` INT DEFAULT '0' NOT NULL ;
--
-- Переход на единую систему избранного
--
ALTER TABLE `prefix_favourite_topic` RENAME `prefix_favourite`;
ALTER TABLE `prefix_favourite` DROP FOREIGN KEY `prefix_favourite_topic_fk1`;
ALTER TABLE `prefix_favourite` DROP FOREIGN KEY `prefix_favourite_topic_fk`;
ALTER TABLE `prefix_favourite` DROP INDEX `topic_id`;
ALTER TABLE `prefix_favourite` DROP INDEX `topic_publish`;
ALTER TABLE `prefix_favourite` CHANGE `topic_id` `target_id` INT( 11 ) UNSIGNED;
ALTER TABLE `prefix_favourite` CHANGE `topic_publish` `target_publish` TINYINT( 1 ) DEFAULT '1';
ALTER TABLE `prefix_favourite` ADD `target_type` ENUM( 'topic', 'comment' ) DEFAULT 'topic' NOT NULL AFTER `target_id` ;
ALTER TABLE `prefix_favourite` DROP INDEX `user_id_topic_id`,
ADD UNIQUE `user_id_target_id_type` ( `user_id` , `target_id` , `target_type` );
ALTER TABLE `prefix_favourite` ADD INDEX `target_publish` ( `target_publish` );
ALTER TABLE `prefix_favourite` ADD CONSTRAINT `prefix_favourite_target_fk` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_favourite` CHANGE `target_type` `target_type` ENUM( 'topic', 'comment', 'talk' ) DEFAULT 'topic';
ALTER TABLE `prefix_talk_user` ADD `talk_user_active` TINYINT( 1 ) DEFAULT '1';
CREATE TABLE `prefix_talk_blacklist` (
`user_id` INT UNSIGNED NOT NULL ,
`user_target_id` INT UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `prefix_talk_blacklist` ADD PRIMARY KEY ( `user_id` , `user_target_id` );
ALTER TABLE `prefix_talk_blacklist` ADD CONSTRAINT `prefix_talk_blacklist_fk_user` FOREIGN KEY ( `user_id` ) REFERENCES `prefix_user` ( `user_id` ) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_talk_blacklist` ADD CONSTRAINT `prefix_talk_blacklist_fk_target` FOREIGN KEY ( `user_target_id` ) REFERENCES `prefix_user` ( `user_id` ) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_friend`
DROP FOREIGN KEY `prefix_frend_fk`,
DROP FOREIGN KEY `prefix_friend_ibfk_1`;
ALTER TABLE `prefix_friend` DROP INDEX `user_id`;
ALTER TABLE `prefix_friend` DROP INDEX `user_frend_id`;
ALTER TABLE `prefix_friend` DROP INDEX `user_id_fren_id`;
ALTER TABLE `prefix_friend` CHANGE `user_id` `user_from` INT( 11 ) UNSIGNED;
ALTER TABLE `prefix_friend` CHANGE `user_friend_id` `user_to` INT( 11 ) UNSIGNED DEFAULT NULL;
ALTER TABLE `prefix_friend` ADD `status_from` INT( 4 ) NOT NULL ;
ALTER TABLE `prefix_friend` ADD `status_to` INT( 4 ) NOT NULL ;
ALTER TABLE `prefix_friend` ADD PRIMARY KEY ( `user_from` , `user_to` );
ALTER TABLE `prefix_friend` ADD INDEX ( `user_from` );
ALTER TABLE `prefix_friend` ADD INDEX ( `user_to` );
ALTER TABLE `prefix_friend` ADD CONSTRAINT `prefix_friend_from_fk` FOREIGN KEY (`user_from`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_friend` ADD CONSTRAINT `prefix_friend_to_fk` FOREIGN KEY (`user_to`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Хранение заданий на отложенную отправку e-mail сообщений
--
CREATE TABLE `prefix_notify_task` (
`notify_task_id` INT UNSIGNED AUTO_INCREMENT ,
`user_login` VARCHAR( 30 ) ,
`user_mail` VARCHAR( 50 ) ,
`notify_subject` VARCHAR( 200 ) ,
`notify_text` TEXT,
`date_created` DATETIME,
`notify_task_status` TINYINT( 2 ) UNSIGNED,
PRIMARY KEY ( `notify_task_id` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
ALTER TABLE `prefix_blog_user`
DROP `is_moderator`,
DROP `is_administrator`;
ALTER TABLE `prefix_blog_user` ADD `user_role` INT( 3 ) NOT NULL ;
ALTER TABLE `prefix_blog_user` CHANGE `user_role` `user_role` INT( 3 ) DEFAULT '1';
ALTER TABLE `prefix_user` CHANGE `user_profile_avatar` `user_profile_avatar` VARCHAR( 250 );
ALTER TABLE `prefix_user` DROP `user_profile_avatar_type`;
ALTER TABLE `prefix_blog` CHANGE `blog_avatar` `blog_avatar` VARCHAR( 250 );
ALTER TABLE `prefix_blog` DROP `blog_avatar_type`;
ALTER TABLE `prefix_user` ADD `user_date_topic_last` DATETIME AFTER `user_date_comment_last` ;
ALTER TABLE `prefix_user` DROP `user_date_topic_last`;

View file

@ -12,7 +12,8 @@
<label for="install_db_name">___LANG_DB_PARAMS_NAME___:</label><br />
<p><input type="text" class="input-text" name="install_db_name" value="___INSTALL_DB_NAME___" id="install_db_name" />
<input type="checkbox" class="checkbox" name="install_db_create" value="1" ___INSTALL_DB_CREATE_CHECK___ /> &mdash; ___LANG_DB_PARAMS_CREATE___
<input type="checkbox" class="checkbox" name="install_db_create" value="1" ___INSTALL_DB_CREATE_CHECK___ /> &mdash; ___LANG_DB_PARAMS_CREATE___<br />
<input type="checkbox" class="checkbox" name="install_db_convert" value="1" ___INSTALL_DB_CONVERT_CHECK___ /> &mdash; ___LANG_DB_PARAMS_CONVERT___
</p>
<label for="install_db_user">___LANG_DB_PARAMS_USER___:</label><br />

View file

@ -0,0 +1,3 @@
<p>
___LANG_FINISH_PARAGRAPH___
</p>