Вход Регистрация
Файл: foruminstall.php
Строк: 178
<?php
define
('_IN_JOHNCMS'1);
set_time_limit(1200);

$mtime explode(' 'microtime());
$mtime $mtime[1] + $mtime[0];
$starttime $mtime;

$rootpath '';
require 
'incfiles/core.php';

$textl 'Форум by seg0ro';

require 
'incfiles/head.php';

if (
$rights 9){
  echo 
functions::display_error('У вас недостаточно прав для просмотра этой страницы!');
  require 
'incfiles/end.php';
  exit;
}

switch (
trim($_GET['step'])){
  
  case 
'tables':
    
    
mysql_query("CREATE TABLE IF NOT EXISTS `forum_favourites` (
    `topic` int(11) NOT NULL,
    `user_id` int(11) NOT NULL,
    KEY `topic` (`topic`),
    KEY `user_id` (`user_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"
);

     
mysql_query("CREATE TABLE IF NOT EXISTS `forum_files` (
    `file` int(11) NOT NULL AUTO_INCREMENT,
    `post` int(11) NOT NULL,
    `topic` int(11) NOT NULL,
    `time` int(11) NOT NULL,
    `user_id` int(11) NOT NULL,
    `filename` varchar(50) NOT NULL,
    `down` int(11) NOT NULL,
    `tempid` int(11) NOT NULL,
    PRIMARY KEY (`file`),
    KEY `post` (`post`),
    KEY `topic` (`topic`),
    KEY `user_id` (`user_id`),
    KEY `tempid` (`tempid`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;"
);

    
mysql_query("CREATE TABLE IF NOT EXISTS `forum_forums` (
    `forum` int(11) NOT NULL AUTO_INCREMENT,
    `sort` int(11) NOT NULL,
    `parent` int(11) NOT NULL,
    `type` int(1) NOT NULL DEFAULT '0',
    `forumname` varchar(100) NOT NULL,
    `desc` tinytext NOT NULL,
    `keyw` tinytext NOT NULL,
    `descw` text NOT NULL,
    `last_topic` varchar(250) NOT NULL,
    `count` int(11) NOT NULL,
    `close` TINYINT( 1 ) NOT NULL,
    `template` text NOT NULL,
    PRIMARY KEY (`forum`),
    KEY `sort` (`sort`),
    KEY `parent` (`parent`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;"
);
    
    
mysql_query("CREATE TABLE IF NOT EXISTS `forum_journal` (
    `time` int(11) NOT NULL,
    `user_id` int(10) NOT NULL,
    `text` text NOT NULL,
    `readed` int(1) NOT NULL,
    PRIMARY KEY (`time`),
    KEY `user_id` (`user_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"
);
    
    
mysql_query("
    CREATE TABLE IF NOT EXISTS `forum_logs` (
    `time` int( 11 ) NOT NULL ,
    `user_id` int( 11 ) NOT NULL ,
    `text` text NOT NULL ,
    `browser` varchar( 250 ) NOT NULL ,
    `ip` bigint( 11 ) NOT NULL ,
    `ip_via_proxy` bigint( 11 ) NOT NULL 
    ) ENGINE = MYISAM DEFAULT CHARSET = utf8;"
);
    
    
mysql_query("CREATE TABLE IF NOT EXISTS `forum_polled` (
    `topic` int(11) NOT NULL,
    `poll` int(11) NOT NULL,
    `user_id` int(11) NOT NULL,
    KEY `topic` (`topic`),
    KEY `user_id` (`user_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"
);
    
    
mysql_query("CREATE TABLE IF NOT EXISTS `forum_polls` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `topic` int(11) NOT NULL,
    `variantname` varchar(150) NOT NULL,
    `count` int(11) NOT NULL DEFAULT '0',
    PRIMARY KEY (`id`),
    KEY `topic` (`topic`),
    KEY `count` (`count`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;"
);
    
    
mysql_query("CREATE TABLE IF NOT EXISTS `forum_posts` (
    `post` int(11) NOT NULL AUTO_INCREMENT,
    `topic` int(11) NOT NULL,
    `time` int(11) NOT NULL,
    `user_id` int(11) NOT NULL,
    `user` varchar(40) NOT NULL,
    `text` text NOT NULL,
    `edit` varchar(250) NOT NULL DEFAULT '',
    `files` int(1) NOT NULL,
    `browser` varchar(250) NOT NULL,
    `ip` bigint(11) NOT NULL,
    `ip_via_proxy` bigint(11) NOT NULL,
    `rating` int(11) NOT NULL DEFAULT '0',
    PRIMARY KEY (`post`),
    KEY `topic` (`topic`),
    KEY `time` (`time`),
    KEY `user_id` (`user_id`),
    KEY `files` (`files`),
    FULLTEXT KEY `text` (`text`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;"
);
    
    
mysql_query("CREATE TABLE IF NOT EXISTS `forum_posts_rating` (
    `post` int(11) NOT NULL,
    `user_id` int(11) NOT NULL,
    KEY `post` (`post`),
    KEY `user_id` (`user_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"
);
    
    
mysql_query("CREATE TABLE IF NOT EXISTS `forum_readed` (
    `topic` int(11) NOT NULL,
    `user_id` int(11) NOT NULL,
    `time` int(11) NOT NULL,
    `lastpost` int(11) NOT NULL,
    PRIMARY KEY (`topic`,`user_id`),
    KEY `time` (`time`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"
);
    
    
mysql_query("CREATE TABLE IF NOT EXISTS `forum_topics` (
    `topic` int(11) NOT NULL AUTO_INCREMENT,
    `forum` int(11) NOT NULL,
    `time` int(11) NOT NULL,
    `topicname` varchar(100) NOT NULL,
    `forumname` varchar(150) NOT NULL,
    `user_id` int(11) NOT NULL,
    `user` varchar(40) NOT NULL,
    `lastpost` varchar(250) NOT NULL,
    `count` int(11) NOT NULL,
    `close` tinyint(1) NOT NULL,
    `sticky` tinyint(1) NOT NULL,
    `clip` tinyint(1) NOT NULL,
    `poll_name` varchar(250) NOT NULL,
    `poll_set` text NOT NULL,
    `curator` int(11) NOT NULL,
    PRIMARY KEY (`topic`),
    KEY `topic` (`topic`),
    KEY `time` (`time`),
    KEY `user_id` (`user_id`),
    KEY `stycky` (`sticky`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;"
);
  
    echo 
'<div class="phdr">Установка таблиц</div><div class="gmenu">Таблицы установлены</div>'.
   
'<div class="menu">Выберите ссылку для продолжения процесса переноса данных или перехода на форум:<br /><a href="foruminstall.php?step=transfer">Перенос данных старого форума</a> | <a href="forum/index.php">Форум</a></div>';
  break;
  
  case 
'transfer':
    echo 
'<div class="phdr">Перенос данных со старого форума на новый</div><div class="rmenu">Процедура переноса может занимать много времени (зависит от размера таблиц форума), так что запаситесь терпением!<br /><br />'.
   
'1) Новый форум не должен содержать данных (быть чистым)<br />'.
   
'2) Перед переходом к первому шагу, обязательно сделайте дамп следующих таблиц: <strong>cms_forum_files</strong>, <strong>cms_forum_vote</strong>, <strong>cms_forum_vote_users</strong>, <strong>forum</strong><br />'.
   
'2) Перед процедурой переноса, пожалуйста, пройдите по <a href="'.$set['admp'].'/index.php?act=forum">ссылке</a> и удалите все скрытые темы и скрытые сообщения старого форума, поскольку новый форум не поддерживает систему скрытия'.
   
'</div><div class="menu"><a href="foruminstall.php?step=structure">Перейти к первому шагу</a></div>';
  break;
  
  case 
'structure':
    echo 
'<div class="phdr">Шаг 1: Перенос структуры</div>';
    
    
mysql_query("TRUNCATE `forum_favourites`;");
    
mysql_query("TRUNCATE `forum_files`;");
    
mysql_query("TRUNCATE `forum_forums`;");
    
mysql_query("TRUNCATE `forum_journal`;");
    
mysql_query("TRUNCATE `forum_polled`;");
    
mysql_query("TRUNCATE `forum_polls`;");
    
mysql_query("TRUNCATE `forum_posts`;");
    
mysql_query("TRUNCATE `forum_posts_rating`;");
    
mysql_query("TRUNCATE `forum_readed`;");
    
mysql_query("TRUNCATE `forum_topics`;");
        
    
mysql_query("ALTER TABLE `forum_forums` ADD `oldid` INT( 11 ) NOT NULL , ADD KEY ( `oldid` )");
    
    
$forumReq mysql_query("SELECT * FROM `forum` WHERE `type` = 'f' OR `type` = 'r' ");
    if (
mysql_num_rows($forumReq)){
      
      while (
$forumRes mysql_fetch_assoc($forumReq)){
        
        
$count mysql_result(mysql_query("SELECT COUNT(*) FROM `forum` WHERE `refid` = '".$forumRes['id']."' AND `close` = '0' "), 0);  
                
        
$sql "INSERT INTO `forum_forums` SET
        `sort` = '"
.$forumRes['realid']."',
        `parent` = '"
.$forumRes['refid']."',
        `type` = '"
.($forumRes['type'] == 'r' 0)."',
        `forumname` = '"
.$forumRes['text']."',
        `count` = '
$count',
        `oldid` = '"
.$forumRes['id']."'
        "
;
        
        
mysql_query($sql);
      }
          
      echo 
'<div class="gmenu">Структура перенесена<br /><a href="foruminstall.php?step=topics">Перейти ко второму шагу</a></div>';
    }else{
      echo 
functions::display_error('Нет форумов для переноса!<br /><a href="forum/index.php">Форум</a>');
    }
  break;
  
  case 
'topics':
    echo 
'<div class="phdr">Шаг 2: Перенос тем и голосований</div>';
    
    
mysql_query("ALTER TABLE `forum_topics` ADD `oldid` INT( 11 ) NOT NULL , ADD KEY ( `oldid` )");
    
    
$topicReq mysql_query("SELECT * FROM `forum` WHERE `type` = 't' AND `close` = '0' ");
    
    if (
mysql_num_rows($topicReq)){
      
      while (
$topicRes mysql_fetch_assoc($topicReq)){
        
        
$forumRes mysql_fetch_assoc(mysql_query("SELECT `forum`, `forumname` FROM `forum_forums` WHERE `oldid` = '".$topicRes['refid']."' LIMIT 1 "));
        
$count mysql_result(mysql_query("SELECT COUNT(*) FROM `forum` WHERE `type` = 'm' AND `refid` = '".$topicRes['id']."' AND `close` = '0' "), 0);
        
        
$sql "INSERT INTO `forum_topics` SET
        `forum` = '"
.$forumRes['forum']."',
        `time` = '"
.$topicRes['time']."',
        `topicname` = '"
.$topicRes['text']."',
        `forumname` = '"
.$forumRes['forumname']."',
        `user_id` = '"
.$topicRes['user_id']."',
        `user` = '"
.$topicRes['from']."',
        `count` = '
$count',
        `close` = '"
.$topicRes['edit']."',
        `sticky` = '"
.$topicRes['vip']."',
        `curator` = '"
.$topicRes['curators']."',
        `oldid` = '"
.$topicRes['id']."'
        "
;
        
         
mysql_query($sql);
         
$topic mysql_insert_id();
         
         
$pollReq mysql_query("SELECT * FROM `cms_forum_vote` WHERE `topic` = '".$topicRes['id']."' ");
        if (
mysql_num_rows($pollReq)){
          while (
$pollRes mysql_fetch_assoc($pollReq)){
            if (
$pollRes['type'] == 1){
              
$pollName $pollRes['name'];
              
$pollSet serialize(array('poll_mod' => 0'total_polls' => $pollRes['count'], 'total_polled' => $pollRes['count'], 'poll_close' => 0));
            }else{
              
$sql "INSERT INTO `forum_polls` SET
              `topic` = '
$topic',
              `variantname` = '"
.$pollRes['name']."',
              `count` = '"
.$pollRes['count']."'
              "
;
              
mysql_query($sql);
            
            }
          }
          
          
$polledReq mysql_query("SELECT * FROM `cms_forum_vote_users` WHERE `topic` = '".$topicRes['id']."' ");
          if (
mysql_num_rows($polledReq)){
            while (
$polledRes mysql_fetch_assoc($polledReq)){
              
$sql "INSERT INTO `forum_polled` SET
              `topic` = '
$topic',
              `poll` = '"
.$polledRes['vote']."',
              `user_id` = '"
.$polledRes['user']."'
              "
;
              
mysql_query($sql);
            }
          }
        }else{
          
$pollName '';
          
$pollSet '';
        }
        
        
mysql_query("UPDATE `forum_topics` SET
        `poll_name` = '"
.$pollName."',
        `poll_set` = '"
.$pollSet."'
        WHERE `topic` = '
$topic' LIMIT 1
        "
);
         
      }
          
      echo 
'<div class="gmenu">Темы и голосования перенесены<br /><a href="foruminstall.php?step=posts">Перейти к третьему  шагу</a></div>';
    }else{
      echo 
functions::display_error('Нет тем для переноса!<br /><a href="forum/index.php">Форум</a>');
    }
  break;
  
  case 
'posts':
    echo 
'<div class="phdr">Шаг 3: Перенос сообщений и файлов</div>';
    
    
$postReq mysql_query("SELECT `forum`.*, `forum_topics`.`topic` FROM `forum` LEFT JOIN `forum_topics` ON `forum`.`refid` = `forum_topics`.`oldid` WHERE `forum`.`close` = '0' AND `forum`.`type` = 'm' ");
    if (
mysql_num_rows($postReq)){
      while (
$postRes mysql_fetch_assoc($postReq)){
        
        
$fileReq mysql_query("SELECT * FROM `cms_forum_files` WHERE `post` = '".$postRes['id']."' LIMIT 1 ");
        
$file mysql_num_rows($fileReq);
        
        
$sql "INSERT INTO `forum_posts` SET
        `topic` = '"
.$postRes['topic']."',
        `time` = '"
.$postRes['time']."',
        `user_id` = '"
.$postRes['user_id']."',
        `user` = '"
.$postRes['from']."',
        `text` = '"
.$postRes['text']."',
        `edit` = '"
.($postRes['edit'] ? $postRes['edit'].":|:".$postRes['tedit'] : "")."',
        `files` = '
$file',
        `browser` = '"
.$postRes['soft']."',
        `ip` = '"
.$postRes['ip']."',
        `ip_via_proxy` = '"
.$postRes['ip_via_proxy']."'
        "
;
        
         
mysql_query($sql);
        
$post mysql_insert_id();
        
        if (
$file){
          
$fileRes mysql_fetch_assoc($fileReq);
          
$sql "INSERT INTO `forum_files` SET
          `post` = '"
.$post."',
          `topic` = '"
.$postRes['topic']."',
          `time` = '"
.$fileRes['time']."',
          `user_id` = '"
.$postRes['user_id']."',
          `filename` = '"
.$fileRes['filename']."',
          `down` = '"
.$fileRes['dlcount']."'
          "
;
           
mysql_query($sql);
        }
      } 
           
      echo 
'<div class="gmenu">Темы и голосования перенесены<br /><a href="foruminstall.php?step=final">Перейти к последнему шагу</a></div>';
    }else{
      echo 
functions::display_error('Нет сообщений для переноса!<br /><a href="forum/index.php">Форум</a>');
    }
  break;
  
  case 
'final':
    
    if (isset(
$_POST['yes'])){
      
mysql_query("DROP TABLE `cms_forum_files` ");
      
mysql_query("DROP TABLE `cms_forum_rdm` ");
      
mysql_query("DROP TABLE `cms_forum_vote` ");
      
mysql_query("DROP TABLE `cms_forum_vote_users` ");
      
mysql_query("DROP TABLE `forum`;");
      
      echo 
'<div class="gmenu">Таблицы старого форума удалены.<br />Не забудьте перенести файлы форума из папки <strong>files/forum/attach</strong> в папку <strong>files/forum</strong> любым для вас удобным способом<br /><a href="forum/index.php">Форум</a></div>';
      require 
'incfiles/end.php';
      exit;
    }
    
    echo 
'<div class="phdr">Шаг 4: Завершающая стадия</div>';
    
    
mysql_query("ALTER TABLE `forum_forums` DROP `oldid` ");
    
mysql_query("ALTER TABLE `forum_topics` DROP `oldid` ");
    
    
mysql_query("UPDATE `users` SET `set_forum` = '' ");
    
    echo 
'<form action="foruminstall.php?step=final" method="post"><div class="gmenu">Дополнительные  поля в таблицах удалены, настройки форума пользователей сброшены, старый форум полностью перенессён, спасибо за терпение.<br />Желаете ли удалить таблицы старого форума?<br /><input type="submit" name="yes" value="Удалить" /> <a href="forum/index.php">Отмена</a></div></form>';
  break;
  
  default:
   echo 
'<div class="phdr">Форум by seg0ro</div><div class="gmenu">Добро пожаловать в мастер установки форума.</div>'.
   
'<div class="menu">Выберите ссылку для продолжения процесса установки/переноса данных:<br /><a href="foruminstall.php?step=tables">Установка таблиц</a> | <a href="foruminstall.php?step=transfer">Перенос данных старого форума</a></div>';
  
}

$mtime explode(' 'microtime());
$mtime $mtime[1] + $mtime[0];
$endtime $mtime;
$totaltime round(($endtime $starttime), 3);
echo 
'<div class="topmenu">Генерация: '.$totaltime.' сек.</div>';

require 
'incfiles/end.php';
Онлайн: 2
Реклама