Перенос файлов движка в корень

This commit is contained in:
Exile 2014-10-28 21:35:42 +03:00
commit f94c0dd2ee
585 changed files with 14 additions and 14 deletions

View file

@ -0,0 +1,21 @@
TBDev Yuna Scatari Edition pre6 to TorrentPier 1.0.x converter.
Quick guide:
1. Install and configure TorrentPier 1.0.0 or higher.
2. Import your TBDevYSE database into TorrentPier database (concretely 'comments', 'categories', 'torrents' and 'users' tables).
3. Put the contents of folder 'root' into your TorrentPier root.
4. Configure 'converter/settings.php' for optimal settings.
5. Run convert.php.
6. See 'converter/passwords.php' for new password to login under admin account.
7. Resychronize statistics using admin panel.
8. Make your new tracker popular!
----
9. If you need to notify users for new passwords (which are needed to login in TorrentPier) via TBDevYSE PM system,
copy two files: automatically generated 'converter/passwords.php' and 'for_tbdev/pass.php' to your TBDevYSE root and run pass.php
(Don't forget to remove these files after completion).
You allow to change message text, see $msg in pass.php for this.
10. If you want to redirect peers from older announce to new announce everytime, replace original TBDev's announce.php with
'for_tbdev/announce.php'
Cheers, RoadTrain.
http://torrentpier.me/

View file

@ -0,0 +1,62 @@
<?php
// TorrentPier bridge
define ('TP_ROOT', './../ptv/'); // Absolete or related local path to your TorrentPier installation
define ('USER_ID_DIFF', 1); // User_id difference between TP and TBDev (tp_user_id - tb_user_id)
// TorrentPier Database
$dbhost = 'localhost';
$dbname = 'dbase';
$dbuser = 'user';
$dbpasswd = 'pass';
$dbcharset = 'utf8';
// Start announce
define ('IN_ANNOUNCE', true);
require_once('./include/core_announce.php');
$passkey = @$_GET['passkey'];
if (!$passkey)
{
err('Passkey required');
}
dbconn();
$res = mysql_query("SELECT id FROM users WHERE passkey = " . sqlesc($passkey)) or err(mysql_error());
if (mysql_affected_rows() == 0)
{
err('Invalid passkey! Re-download the .torrent from '.$DEFAULTBASEURL);
}
$user = mysql_fetch_array($res);
$user_id = $user['id'];
mysql_close();
// Init connection to TP database for get passkey
@mysql_connect($dbhost, $dbuser, $dbpasswd);
@mysql_select_db($dbname);
mysql_query("SET NAMES $dbcharset");
// Get passkey for TorrentPier
$user_id += USER_ID_DIFF;
$res = mysql_query("SELECT auth_key FROM bb_bt_users WHERE user_id = $user_id") or err(mysql_error());
if (mysql_affected_rows() == 0)
{
err('Passkey doesn\'t created on new tracker or user doesn\'t exist');
}
$user = mysql_fetch_array($res);
mysql_close();
$_GET['uk'] = $user['auth_key'];
unset($res, $user, $dbpasswd, $passkey, $user_id);
// Execute TP's announce
chdir(TP_ROOT .'bt/');
require('announce.php');

View file

@ -0,0 +1,44 @@
<?php
require_once("include/bittorrent.php");
dbconn();
loggedinorreturn();
$new_tr_url = "http://torrentpier.me/"; // with ending slash
$subject = "Переезд на новый движок";
$msg = '[b]Внимание![/b] Наш трекер переехал на новый движок! Адрес трекера - [url='.$new_tr_url.']'.$new_tr_url.'[/url]
Вся база перенесена на новый движок, регистрироваться заново не надо.
Войти на трекер можно [url='.$new_tr_url.'login.php]здесь[/url]. Ваши данные на новом трекере:
[b]Логин:[/b] %s
[b]Пароль:[/b] %s
Сменить пароль можно после входа на трекер в [url='.$new_tr_url.'profile.php?mode=editprofile]настройках[/url].';
if (empty($_POST['confirm']))
{
stdhead();
echo '
<br />
<center>
<form action="'. $_SERVER['PHP_SELF'] .'" method="post">
<input type="submit" name="confirm" value="Start mass PM" />
</form>
</center>
';
}
else
{
if (!file_exists('passwords.php')) stderr($tracker_lang['error'], 'passwords.php not exists');
include('passwords.php');
stdhead();
foreach ($passwords as $user)
{
$msg_sql = sprintf($msg, $user['username'], $user['new_passwd']);
sql_query("INSERT INTO messages (receiver, added, subject, msg) VALUES({$user['tb_user_id']}, NOW(), ".sqlesc($subject).", ".sqlesc($msg_sql).")");
}
stdmsg('OK', 'Mass PM succesful');
}
stdfoot();

View file

@ -0,0 +1,261 @@
<?php
define ('IN_FORUM', true);
define ('BB_ROOT', './');
require (BB_ROOT .'common.php');
require(BB_ROOT . 'converter/constants.php');
require(BB_ROOT . 'converter/settings.php');
require(BB_ROOT . 'converter/functions.php');
// Start session management
$user->session_start();
if (!IS_ADMIN) die("Restricted access");
while (@ob_end_flush());
ob_implicit_flush();
error_reporting(E_ALL);
@ini_set('display_errors', 1);
?>
<!DOCTYPE html>
<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
</head>
<body style="font: 12px Courier, monospace; white-space: nowrap;">
<?php
if (empty($_POST['confirm']))
{
echo '
<br />
<center>
<form action="'. $_SERVER['PHP_SELF'] .'" method="post">
<input type="submit" name="confirm" value="Start convert" />
</form>
</center>
</body>
';
exit;
}
else
{
@ini_set('memory_limit', '512M');
@ini_set('max_execution_time', @ini_get('max_execution_time') + 1200);
// Step 1: Converting Users
if (CONVERT_USERS)
{
if (CLEAN)
{
tp_users_cleanup();
print_ok ("Users cleared");
}
$max_uid = (int) get_max_val(BB_USERS, 'user_id');
$max_uid = ($max_uid > 1) ? $max_uid : 1;
$users_count = (int) get_count(TB_USERS_TABLE, 'id');
$loops = (int) ceil($users_count / C_USERS_PER_ONCE);
$pass = array();
switch(TR_TYPE)
{
case 'yse':
$_sql = 'avatar, ';
break;
default:
$_sql = '';
break;
}
for ($i = 0; $i < $loops; $i++)
{
$start = $i * C_USERS_PER_ONCE;
$offset = C_USERS_PER_ONCE;
$sql = "
SELECT
id, username, email, status, UNIX_TIMESTAMP(added) AS added, UNIX_TIMESTAMP(last_access) AS last_access,
class, icq, msn, aim, yahoo, website, $_sql
uploaded, downloaded, enabled, language
FROM ". TB_USERS_TABLE ."
ORDER BY id
LIMIT $start, $offset";
$users = DB()->fetch_rowset($sql);
DB()->sql_freeresult();
foreach ($users as $user)
{
$user['id'] += $max_uid;
$user['password'] = make_rand_str(15);
convert_user($user);
$pass[] = array(
'tb_user_id' => $user['id'] - $max_uid,
'username' => $user['username'],
'new_passwd' => $user['password'],
);
}
}
$passf = fopen('./converter/passwords.php', 'w');
$to_write = "<?php \n";
$to_write .= '$passwords = '. var_export($pass, true) .';';
fwrite($passf, $to_write);
fclose($passf);
set_auto_increment(BB_USERS, 'user_id');
print_ok ("Total $users_count users from TBDev converted");
unset($users, $pass, $to_write);
}
if (CONVERT_TORRENTS)
{
require_once(INC_DIR .'functions_post.php');
require_once(INC_DIR .'bbcode.php');
if (CLEAN)
{
tp_categories_cleanup();
tp_forums_cleanup();
tp_topics_cleanup();
print_ok ("Categories, forums and topics cleared");
}
$max_uid = !empty($max_uid) ? $max_uid : 1;
//Create a category for torrents
$max_cat_id = (int) get_max_val(BB_CATEGORIES, 'cat_id');
$tr_cat_id = $max_cat_id + 1;
$tp_cat_data = array(
"cat_id" => $tr_cat_id,
"cat_title" => 'Tracker',
);
tp_add_category($tp_cat_data);
set_auto_increment(BB_CATEGORIES, 'cat_id');
unset($tp_cat_data);
$cats = $db->fetch_rowset("SELECT id, sort, name FROM ". TB_CATEGORIES_TABLE);
DB()->sql_freeresult();
$max_forum_id = (int) get_max_val(BB_FORUMS, 'forum_id');
foreach ($cats as $cat)
{
$cat['id'] += $max_forum_id;
$cat['cat_id'] = $tr_cat_id;
convert_cat($cat);
}
set_auto_increment(BB_FORUMS, 'forum_id');
print_ok ("Categories from TBDev converted");
unset($cats);
// Start of torrents converting
switch(TR_TYPE)
{
case 'yse':
$_sql = 'image1, image2, ';
break;
case 'sky':
$_sql = 'poster, screenshot1, screenshot2, screenshot3, screenshot4, ';
break;
default:
$_sql = '';
break;
}
$max_topic_id = (int) get_max_val(BB_TOPICS, 'topic_id');
$max_post_id = (int) get_max_val(BB_POSTS, 'post_id');
$max_attach_id = (int) get_max_val(BB_ATTACHMENTS, 'attach_id');
$torrents_count = (int) get_count(TB_TORRENTS_TABLE, 'id');
$loops = (int) ceil($torrents_count / C_TORRENTS_PER_ONCE);
for ($i = 0; $i < $loops; $i++)
{
$start = $i * C_TORRENTS_PER_ONCE;
$offset = C_TORRENTS_PER_ONCE;
$sql = "
SELECT
id, info_hash, name, filename, search_text, descr, $_sql
category, UNIX_TIMESTAMP(added) AS added, size, views,
UNIX_TIMESTAMP(last_action) AS lastseed, times_completed, owner, sticky
FROM ". TB_TORRENTS_TABLE ."
ORDER BY id
LIMIT $start, $offset";
$torrents = DB()->fetch_rowset($sql);
DB()->sql_freeresult();
foreach ($torrents as $torrent)
{
$torrent['topic_id'] = $torrent['id'] + $max_topic_id;
$torrent['post_id'] = $torrent['id'] + $max_post_id;
$torrent['attach_id'] = $torrent['id'] + $max_attach_id;
$torrent['owner'] += $max_uid;
$torrent['descr'] = append_images($torrent);
convert_torrent($torrent);
//print_r($torrent);
}
}
set_auto_increment(BB_TOPICS, 'topic_id');
set_auto_increment(BB_POSTS, 'post_id');
print_ok ("Total $torrents_count torrents from TBDev converted");
unset($torrents);
if (CONVERT_COMMENTS)
{
$max_post_id = (int) get_max_val(BB_POSTS, 'post_id');
$max_topic_id = (int) get_max_val(BB_TOPICS, 'topic_id');
$max_attach_id = (int) get_max_val(BB_ATTACHMENTS, 'attach_id');
$comments_count = (int) get_count(TB_COMMENTS_TABLE, 'id');
$loops = (int) ceil($comments_count / C_COMMENTS_PER_ONCE);
for ($i = 0; $i < $loops; $i++)
{
$start = $i * C_COMMENTS_PER_ONCE;
$offset = C_COMMENTS_PER_ONCE;
$sql = "
SELECT
c.id, c.user, c.torrent, c.text, tor.category,
UNIX_TIMESTAMP(c.added) AS added, UNIX_TIMESTAMP(c.editedat) AS editedat, c.ip
FROM ". TB_COMMENTS_TABLE ." c
LEFT JOIN ". TB_TORRENTS_TABLE ." tor ON(tor.id = c.torrent)
WHERE c.torrent <> 0
ORDER BY c.id
LIMIT $start, $offset";
$comments = DB()->fetch_rowset($sql);
DB()->sql_freeresult();
foreach ($comments as $comment)
{
$comment['user'] += $max_uid;
$comment['id'] += $max_post_id;
convert_comment($comment);
}
}
unset($comments);
set_auto_increment(BB_POSTS, 'post_id');
print_ok ("Total $comments_count comments from TBDev converted");
}
}
?>
</div>
<br />
Converting completed.
</body>
</html>
<?php } ?>

View file

@ -0,0 +1,8 @@
<?php
if (!defined('EXCLUDED_USERS_CSV')) { define('EXCLUDED_USERS_CSV', join(',', array(GUEST_UID, BOT_UID,))); }
define('TB_USERS_TABLE', 'users');
define('TB_CATEGORIES_TABLE', 'categories');
define('TB_TORRENTS_TABLE', 'torrents');
define('TB_COMMENTS_TABLE', 'comments');
define('MYBB_FORUMS_TABLE', 'mybb_forums');

View file

@ -0,0 +1,424 @@
<?php
function print_ok ($sql)
{
global $err;
echo ($err) ? "\n<br />" : '';
$err = '';
echo '<div>';
echo "<font color=darkgreen><b>OK</b> - $sql</font>". str_repeat(' ', 256) ."\n<br />";
echo '</div>';
}
function hex2bin($h)
{
if (!is_string($h)) return null;
$r='';
for ($a=0; $a<strlen($h); $a+=2) { $r.=chr(hexdec($h{$a}.$h{($a+1)})); }
return $r;
}
function get_max_val($table_name, $column)
{
$row = DB()->fetch_row("SELECT MAX($column) AS $column FROM $table_name LIMIT 1");
return $row[$column];
}
function get_count($table_name, $column)
{
$row = DB()->fetch_row("SELECT COUNT($column) AS $column FROM $table_name LIMIT 1");
return $row[$column];
}
function set_auto_increment($table_name, $column, $val = null)
{
if (empty($val))
{
$row = DB()->fetch_row("SELECT MAX($column) AS val FROM $table_name LIMIT 1");
DB()->sql_freeresult();
$val = (int) $row['val'] + 1;
}
DB()->query("ALTER TABLE $table_name auto_increment = $val");
}
// Users functions
function tp_users_cleanup()
{
DB()->query('DELETE FROM '. BB_USERS .' WHERE user_id NOT IN('. EXCLUDED_USERS_CSV .')');
DB()->query('TRUNCATE '. BB_BT_USERS);
}
function tp_user_level($tb_class)
{
switch($tb_class)
{
case 0:
case 1:
case 2:
case 3:
$level = 0;
break;
case 4:
$level = 2;
break;
case 5:
case 6:
case 7:
$level = 1;
break;
default:
$level = 0;
break;
}
return $level;
}
function convert_user($user)
{
$user_data = array(
"user_id" => $user['id'],
"user_active" => ($user['enabled'] == 'yes') ? true : false,
"username" => $user['username'],
"user_password" => md5($user['password']),
"user_lastvisit" => $user['last_access'],
"user_regdate" => $user['added'],
"user_level" => tp_user_level($user['class']),
"user_lang" => $user['language'],
"user_dateformat" => "Y-m-d H:i",
"user_opt" => 0,
"user_avatar" => !empty($user['avatar']) ? $user['avatar'] : null,
"user_avatar_type" => !empty($user['avatar']) ? 2 : null,
"user_email" => $user['email'],
"user_website" => $user['website'],
);
$columns = $values = array();
foreach ($user_data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_columns = implode(',', $columns);
$sql_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO ". BB_USERS . " ($sql_columns) VALUES($sql_values);");
$bt_user_data = array(
"user_id" => $user['id'],
"auth_key" => make_rand_str(BT_AUTH_KEY_LENGTH),
"u_up_total" => $user['uploaded'],
"u_down_total" => $user['downloaded'],
);
$columns = $values = array();
foreach ($bt_user_data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_bt_columns = implode(',', $columns);
$sql_bt_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO ". BB_BT_USERS . " ($sql_bt_columns) VALUES($sql_bt_values);");
}
//Torrents and categories functions
function tp_categories_cleanup()
{
DB()->query('DELETE FROM '. BB_CATEGORIES);
}
function tp_add_category_old($id, $cat_title)
{
DB()->query("INSERT IGNORE INTO ". BB_CATEGORIES ." (cat_id, cat_title)
VALUES ($id, '". DB()->escape($cat_title) ."')");
return;
}
function tp_add_category($cat_data)
{
$columns = $values = array();
foreach ($cat_data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_bt_columns = implode(',', $columns);
$sql_bt_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO ". BB_CATEGORIES . " ($sql_bt_columns) VALUES($sql_bt_values);");
}
function tp_topics_cleanup()
{
DB()->query("TRUNCATE ". BB_ATTACHMENTS);
DB()->query("TRUNCATE ". BB_ATTACHMENTS_DESC);
DB()->query("TRUNCATE ". BB_BT_TORRENTS);
DB()->query("TRUNCATE ". BB_POSTS);
DB()->query("TRUNCATE ". BB_POSTS_HTML);
DB()->query("TRUNCATE ". BB_POSTS_SEARCH);
DB()->query("TRUNCATE ". BB_POSTS_TEXT);
DB()->query("TRUNCATE ". BB_TOPICS);
return;
}
function tp_add_topic($topic_data)
{
$columns = $values = array();
foreach ($topic_data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_columns = implode(',', $columns);
$sql_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO ". BB_TOPICS . " ($sql_columns) VALUES($sql_values);");
return;
}
function tp_add_post($post_data)
{
foreach ($post_data as $key => $data)
{
$columns = $values = array();
foreach ($data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_columns = implode(',', $columns);
$sql_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO bb_{$key} ($sql_columns) VALUES($sql_values);");
}
return;
}
function tp_add_attach($attach_data)
{
foreach ($attach_data as $key => $data)
{
$columns = $values = array();
foreach ($data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_columns = implode(',', $columns);
$sql_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO bb_{$key} ($sql_columns) VALUES($sql_values);");
}
return;
}
function make_img_path ($name)
{
global $bb_cfg;
return make_url("files/images/" . $name);
}
function append_images($tor)
{
$poster = $screens = '';
switch(TR_TYPE)
{
case 'yse':
if (!empty($tor['image1']))
{
$poster = "[img=right]".make_img_path($tor['image1'])."[/img]";
}
if (!empty($tor['image2']))
{
$screens = '[spoiler="Скриншоты"][img]'.make_img_path($tor['image2'])."[/img][/spoiler]";
}
break;
case 'sky':
if (!empty($tor['poster']))
{
$poster = "[img=right]".make_img_path($tor['poster'])."[/img]";
}
$has_screens = !empty($tor['screenshot1']) || !empty($tor['screenshot2']) || !empty($tor['screenshot3']) || !empty($tor['screenshot4']);
if ($has_screens)
{
$screens .= '[spoiler="Скриншоты"]';
for ($i = 1; $i <= 4; $i++)
{
if (!empty($tor['screenshot'.$i]))
{
$screens .= "[img]".make_img_path($tor['screenshot'.$i])."[/img] \n";
}
}
$screens .= "[/spoiler]";
}
break;
}
return ($poster . $tor['descr'] . $screens);
}
function convert_torrent($torrent)
{
$topic_data = array(
"topic_id" => $torrent['topic_id'],
"forum_id" => $torrent['category'],
"topic_title" => $torrent['name'],
"topic_poster" => $torrent['owner'],
"topic_time" => $torrent['added'],
"topic_views" => $torrent['views'],
"topic_type" => ($torrent['sticky'] == 'yes') ? 1 : 0,
"topic_first_post_id" => $torrent['id'],
"topic_last_post_id" => $torrent['id'],
"topic_attachment" => 1,
"topic_dl_type" => 1,
"topic_last_post_time" => $torrent['added'],
);
tp_add_topic($topic_data);
$post_text = stripslashes(prepare_message(addslashes(unprepare_message($torrent['descr'])), true, true));
$post_data = array(
"posts" => array(
"post_id" => $torrent['post_id'],
"topic_id" => $torrent['topic_id'],
"forum_id" => $torrent['category'],
"poster_id" => $torrent['owner'],
"post_time" => $torrent['added'],
"post_attachment" => 1,
),
"posts_text" => array(
"post_id" => $torrent['post_id'],
"post_text" => $post_text,
),
"posts_search" => array(
"post_id" => $torrent['post_id'],
"search_words" => $torrent['search_text'],
),
);
tp_add_post($post_data);
$attach_data = array(
"attachments" => array(
"attach_id" => $torrent['attach_id'],
"post_id" => $torrent['post_id'],
"user_id_1" => $torrent['owner'],
),
"attachments_desc" => array(
"attach_id" => $torrent['attach_id'],
"physical_filename" => $torrent['id'] . ".torrent",
"real_filename" => $torrent['filename'],
"extension" => "torrent",
"mimetype" => "application/x-bittorrent",
"filesize" => @filesize(get_attachments_dir() .'/'. $torrent['id'] .".torrent"),
"filetime" => $torrent['added'],
"tracker_status" => 1,
),
);
tp_add_attach($attach_data);
//Torrents
if (BDECODE)
{
$filename = get_attachments_dir() .'/'. $torrent['id'] .".torrent";
if (!file_exists($filename))
{
return;
}
if (!function_exists('bdecode_file')) include_once(INC_DIR .'functions_torrent.php');
$tor = bdecode_file($filename);
$info = ($tor['info']) ? $tor['info'] : array();
$info_hash = pack('H*', sha1(bencode($info)));
$info_hash_sql = rtrim(DB()->escape($info_hash), ' ');
}
else
{
$info_hash_sql = hex2bin($torrent['info_hash']);
}
$torrent_data = array(
"info_hash" => $info_hash_sql,
"post_id" => $torrent['post_id'],
"poster_id" => $torrent['owner'],
"topic_id" => $torrent['topic_id'],
"forum_id" => $torrent['category'],
"attach_id" => $torrent['attach_id'],
"size" => $torrent['size'],
"reg_time" => $torrent['added'],
"complete_count" => $torrent['times_completed'],
"seeder_last_seen" => $torrent['lastseed'],
);
$columns = $values = array();
foreach ($torrent_data as $column => $value)
{
$columns[] = $column;
$values[] = "'". $db->escape($value) ."'";
}
$sql_columns = implode(', ', $columns);
$sql_values = implode(', ', $values);
DB()->query("INSERT IGNORE INTO ". BB_BT_TORRENTS . " ($sql_columns) VALUES($sql_values);");
return;
}
// Comments functions
function convert_comment($comment)
{
$post_text = prepare_message($comment['text'], true, true);
$post_data = array(
"posts" => array(
"post_id" => $comment['id'],
"topic_id" => $comment['torrent'],
"forum_id" => $comment['category'],
"poster_id" => $comment['user'],
"post_time" => $comment['added'],
"poster_ip" => encode_ip($comment['ip']),
"post_edit_time" => $comment['editedat'],
"post_edit_count" => $comment['editedat'] ? 1 : 0,
),
"posts_text" => array(
"post_id" => $comment['id'],
"post_text" => $post_text,
),
);
tp_add_post($post_data);
return;
}
//Forums functions
function tp_forums_cleanup()
{
DB()->query('TRUNCATE '. BB_FORUMS);
}
function convert_cat($forum, $allow_torrents = true)
{
$forum_data = array(
"forum_id" => $forum['id'],
"cat_id" => $forum['cat_id'],
"forum_name" => $forum['name'],
"forum_order" => $forum['sort'],
"allow_reg_tracker" => $allow_torrents,
"allow_porno_topic" => $allow_torrents,
);
$columns = $values = array();
foreach ($forum_data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_columns = implode(',', $columns);
$sql_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO ". BB_FORUMS . " ($sql_columns) VALUES($sql_values);");
return;
}

View file

@ -0,0 +1,3 @@
<?php
$passwords = array();

View file

@ -0,0 +1,18 @@
<?php
// Tracker type
define('TR_TYPE', 'yse'); // 'sky' (SkyTracker) or 'yse' (TBDev YSE)
// Options
define('CLEAN', true); // Clean TorrentPier's database before converting?
//Users
define('CONVERT_USERS', true); // Converting users is enabled?
define('C_USERS_PER_ONCE', 250); // Number of users converting per once
//Torrents and categories
define('CONVERT_TORRENTS', true); // Converting torrents and categories is enabled?
define('C_TORRENTS_PER_ONCE', 400); // Number of torrents converting per once
define('BDECODE', false); // Recalculate info_hash using bdecode?
//Comments
define('CONVERT_COMMENTS', true); // Converting comments is enabled?
define('C_COMMENTS_PER_ONCE', 400); // Number of comments converting per once
//Mybb forums & topics
define('CONVERT_MYBB_FORUMS', false); // Converting forums is enabled?
define('C_FORUMS_PER_ONCE', 100); // Number of forums converting per once

View file

@ -0,0 +1,98 @@
<?php
define('IN_FORUM', true);
define('BB_ROOT', './');
require(BB_ROOT .'common.php');
require(INC_DIR .'functions_torrent.php');
require(BB_ROOT . 'converter/settings.php');
require(BB_ROOT . 'converter/functions.php');
// Init userdata
$user->session_start();
while (@ob_end_flush());
ob_implicit_flush();
?>
<!DOCTYPE html>
<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
</head>
<body style="font: 12px Courier, monospace; white-space: nowrap;">
<?php
if (empty($_POST['confirm']))
{
echo '
<br />
<center>
<form action="'. $_SERVER['PHP_SELF'] .'" method="post">
<input type="submit" name="confirm" value="Recover" />
</form>
</center>
</body>
';
exit;
}
else
{
@ini_set('memory_limit', '512M');
@ini_set('max_execution_time', @ini_get('max_execution_time') + 1200);
$torrents_count = (int) get_count(BB_BT_TORRENTS, 'attach_id');
$loops = (int) ceil($torrents_count / C_TORRENTS_PER_ONCE);
$not_exist = array();
$attach_dir = get_attachments_dir() .'/';
for ($i = 0; $i < $loops; $i++)
{
$start = $i * C_TORRENTS_PER_ONCE;
$offset = C_TORRENTS_PER_ONCE;
$sql = "SELECT
tor.attach_id, tor.topic_id, ad.physical_filename
FROM ". BB_BT_TORRENTS ." tor
LEFT JOIN ". BB_ATTACHMENTS_DESC ." ad ON(ad.attach_id = tor.attach_id)
ORDER BY tor.attach_id
LIMIT $start, $offset";
$torrents = DB()->fetch_rowset($sql);
DB()->sql_freeresult();
foreach ($torrents as $torrent)
{
$filename = $attach_dir . $torrent['physical_filename'];
if (!file_exists($filename))
{
$not_exist[] = '<a href="viewtopic.php?t='. $torrent['topic_id'] .'">'. $filename .'</a>';
}
else
{
$tor = bdecode_file($filename);
$info = (!empty($tor['info'])) ? $tor['info'] : array();
$info_hash = pack('H*', sha1(bencode($info)));
$info_hash_sql = rtrim(DB()->escape($info_hash), ' ');
DB()->query("UPDATE ". BB_BT_TORRENTS ."
SET info_hash = '$info_hash_sql'
WHERE attach_id = {$torrent['attach_id']}");
}
}
}
print_ok ("Completed");
if (!empty($not_exist))
{
print_ok ("These torrents doesn't exist in filesystem: ". implode(', ', array_unique($not_exist)));
}
}

View file

@ -0,0 +1,8 @@
<?php
if (!defined('EXCLUDED_USERS_CSV')) { define('EXCLUDED_USERS_CSV', join(',', array(GUEST_UID, BOT_UID,))); }
define('TB_USERS_TABLE', 'users');
define('TB_CATEGORIES_TABLE', 'categories');
define('TB_TORRENTS_TABLE', 'torrents');
define('TB_COMMENTS_TABLE', 'comments');
define('MYBB_FORUMS_TABLE', 'mybb_forums');

View file

@ -0,0 +1,430 @@
<?php
function print_ok ($sql)
{
global $err;
echo ($err) ? "\n<br />" : '';
$err = '';
echo '<div>';
echo "<font color=darkgreen><b>OK</b> - $sql</font>". str_repeat(' ', 256) ."\n<br />";
echo '</div>';
}
function hex2bin($h)
{
if (!is_string($h)) return null;
$r='';
for ($a=0; $a<strlen($h); $a+=2) { $r.=chr(hexdec($h{$a}.$h{($a+1)})); }
return $r;
}
function get_max_val($table_name, $column)
{
$row = DB()->fetch_row("SELECT MAX($column) AS $column FROM $table_name LIMIT 1");
return $row[$column];
}
function get_count($table_name, $column)
{
$row = DB()->fetch_row("SELECT COUNT($column) AS $column FROM $table_name LIMIT 1");
return $row[$column];
}
function set_auto_increment($table_name, $column, $val = null)
{
if (empty($val))
{
$row = DB()->fetch_row("SELECT MAX($column) AS val FROM $table_name LIMIT 1");
DB()->sql_freeresult();
$val = (int) $row['val'] + 1;
}
DB()->query("ALTER TABLE $table_name auto_increment = $val");
}
//Users functions
function tp_users_cleanup()
{
DB()->query('DELETE FROM '. BB_USERS .' WHERE user_id NOT IN('. EXCLUDED_USERS_CSV .')');
DB()->query('TRUNCATE '. BB_BT_USERS);
}
function tp_user_level($tb_class)
{
switch($tb_class)
{
case 0:
case 1:
case 2:
case 3:
$level = 0;
break;
case 4:
$level = 2;
break;
case 5:
case 6:
case 7:
$level = 1;
break;
default:
$level = 0;
break;
}
return $level;
}
function convert_user($user)
{
$user_data = array(
"user_id" => $user['id'],
"user_active" => ($user['enabled'] == 'yes') ? true : false,
"username" => $user['username'],
"user_password" => md5($user['password']),
"user_lastvisit" => $user['last_access'],
"user_regdate" => $user['added'],
"user_level" => tp_user_level($user['class']),
"user_lang" => $user['language'],
"user_dateformat" => "Y-m-d H:i",
"user_opt" => $user['opt'], // Added
"user_avatar" => !empty($user['avatar']) ? $user['avatar'] : null,
"user_avatar_type" => !empty($user['avatar']) ? 2 : null,
"user_email" => $user['email'],
"user_website" => $user['website'],
"user_icq" => $user['icq'],
"user_skype" => $user['skype'],
"user_twitter" => $user['twitter'],
"user_gender" => $user['gender'],
"user_birthday" => $user['user_birthday'],
);
$columns = $values = array();
foreach ($user_data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_columns = implode(',', $columns);
$sql_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO ". BB_USERS . " ($sql_columns) VALUES ($sql_values);");
$bt_user_data = array(
"user_id" => $user['id'],
"auth_key" => make_rand_str(BT_AUTH_KEY_LENGTH),
"u_up_total" => $user['uploaded'],
"u_down_total" => $user['downloaded'],
);
$columns = $values = array();
foreach ($bt_user_data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_bt_columns = implode(',', $columns);
$sql_bt_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO ". BB_BT_USERS . " ($sql_bt_columns) VALUES ($sql_bt_values);");
}
//Torrents and categories functions
function tp_categories_cleanup()
{
DB()->query('DELETE FROM '. BB_CATEGORIES);
}
function tp_add_category_old($id, $cat_title)
{
DB()->query("INSERT IGNORE INTO ". BB_CATEGORIES ." (cat_id, cat_title)
VALUES ($id, '". DB()->escape($cat_title) ."')");
return;
}
function tp_add_category($cat_data)
{
$columns = $values = array();
foreach ($cat_data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_bt_columns = implode(',', $columns);
$sql_bt_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO ". BB_CATEGORIES . " ($sql_bt_columns) VALUES ($sql_bt_values);");
}
function tp_topics_cleanup()
{
DB()->query("TRUNCATE ". BB_ATTACHMENTS);
DB()->query("TRUNCATE ". BB_ATTACHMENTS_DESC);
DB()->query("TRUNCATE ". BB_BT_TORRENTS);
DB()->query("TRUNCATE ". BB_POSTS);
DB()->query("TRUNCATE ". BB_POSTS_HTML);
DB()->query("TRUNCATE ". BB_POSTS_SEARCH);
DB()->query("TRUNCATE ". BB_POSTS_TEXT);
DB()->query("TRUNCATE ". BB_TOPICS);
return;
}
function tp_add_topic($topic_data)
{
$columns = $values = array();
foreach ($topic_data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_columns = implode(',', $columns);
$sql_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO ". BB_TOPICS . " ($sql_columns) VALUES ($sql_values);");
return;
}
function tp_add_post($post_data)
{
foreach ($post_data as $key => $data)
{
$columns = $values = array();
foreach ($data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_columns = implode(',', $columns);
$sql_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO bb_{$key} ($sql_columns) VALUES ($sql_values);");
}
return;
}
function tp_add_attach($attach_data)
{
foreach ($attach_data as $key => $data)
{
$columns = $values = array();
foreach ($data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_columns = implode(',', $columns);
$sql_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO bb_{$key} ($sql_columns) VALUES ($sql_values);");
}
return;
}
function make_img_path ($name)
{
global $bb_cfg;
return make_url("files/images/" . $name);
}
function append_images($tor)
{
$poster = $screens = '';
switch(TR_TYPE)
{
case 'yse':
if (!empty($tor['image1']))
{
$poster = "[img=right]".make_img_path($tor['image1'])."[/img]";
}
if (!empty($tor['image2']))
{
$screens = '[spoiler="Скриншоты"][img]'.make_img_path($tor['image2'])."[/img][/spoiler]";
}
break;
case 'sky':
if (!empty($tor['poster']))
{
$poster = "[img=right]".make_img_path($tor['poster'])."[/img]";
}
$has_screens = !empty($tor['screenshot1']) || !empty($tor['screenshot2']) || !empty($tor['screenshot3']) || !empty($tor['screenshot4']);
if ($has_screens)
{
$screens .= '[spoiler="Скриншоты"]';
for ($i = 1; $i <= 4; $i++)
{
if (!empty($tor['screenshot'.$i]))
{
$screens .= "[img]".make_img_path($tor['screenshot'.$i])."[/img] \n";
}
}
$screens .= "[/spoiler]";
}
break;
}
return ($poster . $tor['descr'] . $screens);
}
function convert_torrent($torrent)
{
$topic_data = array(
"topic_id" => $torrent['topic_id'],
"forum_id" => $torrent['category'],
"topic_title" => $torrent['name'],
"topic_poster" => $torrent['owner'],
"topic_time" => $torrent['added'],
"topic_views" => $torrent['views'],
"topic_type" => ($torrent['sticky'] == 'yes') ? 1 : 0,
"topic_first_post_id" => $torrent['id'],
"topic_last_post_id" => $torrent['id'],
"topic_attachment" => 1,
"topic_dl_type" => 1,
"topic_last_post_time" => $torrent['added'],
);
tp_add_topic($topic_data);
$post_text = stripslashes(prepare_message(addslashes(unprepare_message($torrent['descr'])), true, true));
$post_data = array(
"posts" => array(
"post_id" => $torrent['post_id'],
"topic_id" => $torrent['topic_id'],
"forum_id" => $torrent['category'],
"poster_id" => $torrent['owner'],
"post_time" => $torrent['added'],
"post_attachment" => 1,
),
"posts_text" => array(
"post_id" => $torrent['post_id'],
"post_text" => $post_text,
),
"posts_search" => array(
"post_id" => $torrent['post_id'],
"search_words" => $torrent['search_text'],
),
);
tp_add_post($post_data);
$attach_data = array(
"attachments" => array(
"attach_id" => $torrent['attach_id'],
"post_id" => $torrent['post_id'],
"user_id_1" => $torrent['owner'],
),
"attachments_desc" => array(
"attach_id" => $torrent['attach_id'],
"physical_filename" => $torrent['id'] . ".torrent",
"real_filename" => $torrent['filename'],
"extension" => "torrent",
"mimetype" => "application/x-bittorrent",
"filesize" => @filesize(get_attachments_dir() .'/'. $torrent['id'] .".torrent"),
"filetime" => $torrent['added'],
"tracker_status" => 1,
),
);
tp_add_attach($attach_data);
//Torrents
if (BDECODE)
{
$filename = get_attachments_dir() .'/'. $torrent['id'] .".torrent";
if (!file_exists($filename))
{
return;
}
if (!function_exists('bdecode_file')) include_once('./includes/functions_torrent.php');
$tor = bdecode_file($filename);
$info = ($tor['info']) ? $tor['info'] : array();
$info_hash = pack('H*', sha1(bencode($info)));
$info_hash_sql = rtrim(DB()->escape($info_hash), ' ');
}
else
{
$info_hash_sql = hex2bin($torrent['info_hash']);
}
$torrent_data = array(
"info_hash" => $info_hash_sql,
"post_id" => $torrent['post_id'],
"poster_id" => $torrent['owner'],
"topic_id" => $torrent['topic_id'],
"forum_id" => $torrent['category'],
"attach_id" => $torrent['attach_id'],
"size" => $torrent['size'],
"reg_time" => $torrent['added'],
"complete_count" => $torrent['times_completed'],
"seeder_last_seen" => $torrent['lastseed'],
);
$columns = $values = array();
foreach ($torrent_data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_columns = implode(', ', $columns);
$sql_values = implode(', ', $values);
DB()->query("INSERT IGNORE INTO ". BB_BT_TORRENTS . " ($sql_columns) VALUES($sql_values);");
return;
}
//Comments functions
function convert_comment($comment)
{
$post_text = prepare_message($comment['text'], true, true);
$post_data = array(
"posts" => array(
"post_id" => $comment['id'],
"topic_id" => $comment['torrent'],
"forum_id" => $comment['category'],
"poster_id" => $comment['user'],
"post_time" => $comment['added'],
"poster_ip" => encode_ip($comment['ip']),
"post_edit_time" => $comment['editedat'],
"post_edit_count" => $comment['editedat'] ? 1 : 0,
),
"posts_text" => array(
"post_id" => $comment['id'],
"post_text" => $post_text,
),
);
tp_add_post($post_data);
return;
}
//Forums functions
function tp_forums_cleanup()
{
DB()->query('TRUNCATE '. BB_FORUMS);
}
function convert_cat($forum, $allow_torrents = true)
{
$forum_data = array(
"forum_id" => $forum['id'],
"cat_id" => $forum['cat_id'],
"forum_name" => $forum['name'],
"forum_order" => $forum['sort'],
"allow_reg_tracker" => $allow_torrents,
"allow_dl_topic" => $allow_torrents,
);
$columns = $values = array();
foreach ($forum_data as $column => $value)
{
$columns[] = $column;
$values[] = "'". DB()->escape($value) ."'";
}
$sql_columns = implode(',', $columns);
$sql_values = implode(',', $values);
DB()->query("INSERT IGNORE INTO ". BB_FORUMS . " ($sql_columns) VALUES ($sql_values);");
return;
}

View file

@ -0,0 +1,3 @@
<?php
$passwords = array();

View file

@ -0,0 +1,18 @@
<?php
// Tracker type
define('TR_TYPE', 'yse'); // 'sky' (SkyTracker) or 'yse' (TBDev YSE)
// Options
define('CLEAN', true); // Clean TorrentPier's database before converting?
//Users
define('CONVERT_USERS', true); // Converting users is enabled?
define('C_USERS_PER_ONCE', 250); // Number of users converting per once
//Torrents and categories
define('CONVERT_TORRENTS', true); // Converting torrents and categories is enabled?
define('C_TORRENTS_PER_ONCE', 400); // Number of torrents converting per once
define('BDECODE', false); // Recalculate info_hash using bdecode?
//Comments
define('CONVERT_COMMENTS', true); // Converting comments is enabled?
define('C_COMMENTS_PER_ONCE', 400); // Number of comments converting per once
//Mybb forums & topics
define('CONVERT_MYBB_FORUMS', false); // Converting forums is enabled?
define('C_FORUMS_PER_ONCE', 100); // Number of forums converting per once

View file

@ -0,0 +1,97 @@
<?php
define('IN_FORUM', true);
define('BB_ROOT', './');
require(BB_ROOT .'common.php');
require(INC_DIR .'functions_torrent.php');
require(BB_ROOT . 'converter/settings.php');
require(BB_ROOT . 'converter/functions.php');
// Init userdata
$user->session_start();
while (@ob_end_flush());
ob_implicit_flush();
?><!DOCTYPE html>
<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
</head>
<body style="font: 12px Courier, monospace; white-space: nowrap;">
<?php
if (empty($_POST['confirm']))
{
echo '
<br />
<center>
<form action="'. $_SERVER['PHP_SELF'] .'" method="post">
<input type="submit" name="confirm" value="Recover" />
</form>
</center>
</body>
';
exit;
}
else
{
@ini_set('memory_limit', '512M');
@ini_set('max_execution_time', @ini_get('max_execution_time') + 1200);
$torrents_count = (int) get_count(BB_BT_TORRENTS, 'attach_id');
$loops = (int) ceil($torrents_count / C_TORRENTS_PER_ONCE);
$not_exist = array();
$attach_dir = get_attachments_dir() .'/';
for ($i = 0; $i < $loops; $i++)
{
$start = $i * C_TORRENTS_PER_ONCE;
$offset = C_TORRENTS_PER_ONCE;
$sql = "SELECT
tor.attach_id, tor.topic_id, ad.physical_filename
FROM ". BB_BT_TORRENTS ." tor
LEFT JOIN ". BB_ATTACHMENTS_DESC ." ad ON(ad.attach_id = tor.attach_id)
ORDER BY tor.attach_id
LIMIT $start, $offset";
$torrents = DB()->fetch_rowset($sql);
DB()->sql_freeresult();
foreach ($torrents as $torrent)
{
$filename = $attach_dir . $torrent['physical_filename'];
if (!file_exists($filename))
{
$not_exist[] = '<a href="viewtopic.php?t='. $torrent['topic_id'] .'">'. $filename .'</a>';
}
else
{
$tor = bdecode_file($filename);
$info = (!empty($tor['info'])) ? $tor['info'] : array();
$info_hash = pack('H*', sha1(bencode($info)));
$info_hash_sql = rtrim(DB()->escape($info_hash), ' ');
DB()->query("UPDATE ". BB_BT_TORRENTS ."
SET info_hash = '$info_hash_sql'
WHERE attach_id = {$torrent['attach_id']}");
}
}
}
print_ok ("Completed");
if (!empty($not_exist))
{
print_ok ("These torrents doesn't exist in filesystem: ". implode(', ', array_unique($not_exist)));
}
}

View file

@ -128,7 +128,7 @@ http {
#allow YOUR_IP;
}
# Deny folder (Sec. lvl1)
location ~ \/(internal_data|library)\/ {
location ~ \/(install|internal_data|library)\/ {
deny all;
}

View file

@ -0,0 +1,21 @@
Схема изменений начиная с версии 2.1 (R600):
Изменения в базе:
DROP TABLE IF EXISTS `bb_reports`;
DROP TABLE IF EXISTS `bb_reports_changes`;
DROP TABLE IF EXISTS `bb_reports_modules`;
DROP TABLE IF EXISTS `bb_reports_reasons`;
DELETE FROM `bb_config` WHERE `config_name` = 'report_subject_auth';
DELETE FROM `bb_config` WHERE `config_name` = 'report_modules_cache';
DELETE FROM `bb_config` WHERE `config_name` = 'report_hack_count';
DELETE FROM `bb_config` WHERE `config_name` = 'report_notify';
DELETE FROM `bb_config` WHERE `config_name` = 'report_list_admin';
DELETE FROM `bb_config` WHERE `config_name` = 'report_new_window';
DELETE FROM `bb_config` WHERE `config_name` = 'reports_enabled';
ALTER TABLE `bb_posts` DROP COLUMN `post_reported`;
ALTER TABLE `bb_privmsgs` DROP COLUMN `privmsgs_reported`;
ALTER TABLE `bb_topics` DROP COLUMN `topic_reported`;
DELETE FROM `bb_cron` WHERE `cron_script` = 'site_backup.php';
DELETE FROM `bb_cron` WHERE `cron_script` = 'db_backup.php';
UPDATE `bb_cron` SET `cron_script` = 'board_maintenance.php' WHERE `cron_script` = 'bb_maintenance.php';

View file

@ -0,0 +1,36 @@
<?php
define('IN_FORUM', true);
define('BB_ROOT', './');
require(BB_ROOT . 'common.php');
$user->session_start();
set_die_append_msg();
if (!IS_SUPER_ADMIN) bb_die($lang['ONLY_FOR_SUPER_ADMIN']);
$confirm = request_var('confirm', '');
if ($confirm) {
DB()->query("ALTER TABLE ". BB_USERS ." CHANGE COLUMN user_birthday user_birthday_old int(11) NOT NULL DEFAULT 0 AFTER user_gender");
DB()->query("ALTER TABLE ". BB_USERS ." ADD user_birthday date NOT NULL DEFAULT '0000-00-00' AFTER user_gender");
$sql = "SELECT user_id, user_birthday_old FROM ". BB_USERS ." WHERE user_birthday_old != 0 AND user_id NOT IN ('". EXCLUDED_USERS_CSV ."')";
foreach (DB()->fetch_rowset($sql) as $row)
{
$birthday = bb_date($row['user_birthday_old'] * 86400 + 1, 'Y-m-d', 0);
DB()->query("UPDATE ". BB_USERS ." SET user_birthday = '". $birthday ."' WHERE user_id = ". $row['user_id'] ."");
}
DB()->query("ALTER TABLE ". BB_USERS ." DROP user_birthday_old");
bb_die('<h1 style="color: green">База данных обновлена</h1>');
} else {
$msg = '<form method="POST">';
$msg .= '<h1 style="color: red">!!! Перед тем как нажать на кнопку, сделайте бекап базы данных !!!</h1><br />';
$msg .= '<input type="submit" name="confirm" value="Начать обновление Базы Данных (R496)" style="height: 30px; font:bold 14px Arial, Helvetica, sans-serif;" />';
$msg .= '</form>';
bb_die($msg);
}

View file

@ -0,0 +1,54 @@
<?php
define('IN_FORUM', true);
define('BB_ROOT', './');
require(BB_ROOT . 'common.php');
$user->session_start();
set_die_append_msg();
if (!IS_SUPER_ADMIN) bb_die($lang['ONLY_FOR_SUPER_ADMIN']);
$confirm = request_var('confirm', '');
if ($confirm) {
DB()->query("
CREATE TEMPORARY TABLE tmp_buf_dlstatus (
user_id mediumint(9) NOT NULL default '0',
topic_id mediumint(8) unsigned NOT NULL default '0',
user_status tinyint(1) NOT NULL default '0',
PRIMARY KEY (user_id, topic_id)
) ENGINE = MyISAM
");
DB()->query("
INSERT INTO tmp_buf_dlstatus
(user_id, topic_id, user_status)
SELECT
user_id, topic_id, user_status
FROM bb_bt_dlstatus_new
");
DB()->query("
REPLACE INTO bb_bt_dlstatus_main
(user_id, topic_id, user_status)
SELECT
user_id, topic_id, user_status
FROM tmp_buf_dlstatus
");
DB()->query("DROP TEMPORARY TABLE IF EXISTS tmp_buf_dlstatus");
DB()->query("RENAME TABLE bb_bt_dlstatus_main TO bb_bt_dlstatus");
DB()->query("DROP TABLE IF EXISTS bb_bt_dlstatus_mrg");
DB()->query("DROP TABLE IF EXISTS bb_bt_dlstatus_new");
bb_die('<h1 style="color: green">База данных обновлена</h1>');
} else {
$msg = '<form method="POST">';
$msg .= '<h1 style="color: red">!!! Перед тем как нажать на кнопку, сделайте бекап базы данных !!!</h1><br />';
$msg .= '<input type="submit" name="confirm" value="Начать обновление Базы Данных (R571)" style="height: 30px; font:bold 14px Arial, Helvetica, sans-serif;" />';
$msg .= '</form>';
bb_die($msg);
}

View file

@ -0,0 +1,76 @@
<?php
define('IN_FORUM', true);
define('BB_ROOT', './');
require(BB_ROOT . 'common.php');
$user->session_start();
set_die_append_msg();
if (!IS_SUPER_ADMIN) bb_die($lang['ONLY_FOR_SUPER_ADMIN']);
$confirm = request_var('confirm', '');
if ($confirm) {
DB()->query("
CREATE TABLE IF NOT EXISTS `bb_poll_users` (
`topic_id` int(10) unsigned NOT NULL,
`user_id` int(11) NOT NULL,
`vote_ip` varchar(32) NOT NULL,
`vote_dt` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`topic_id`,`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
");
DB()->query("
CREATE TABLE IF NOT EXISTS `bb_poll_votes` (
`topic_id` int(10) unsigned NOT NULL,
`vote_id` tinyint(4) unsigned NOT NULL,
`vote_text` varchar(255) NOT NULL,
`vote_result` mediumint(8) unsigned NOT NULL,
PRIMARY KEY (`topic_id`,`vote_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
");
DB()->query("
INSERT IGNORE INTO bb_poll_votes
(topic_id, vote_id, vote_text, vote_result)
SELECT
topic_id, 0, vote_text, 0
FROM bb_vote_desc;
");
DB()->query("
INSERT IGNORE INTO bb_poll_votes
(topic_id, vote_id, vote_text, vote_result)
SELECT
d.topic_id, r.vote_option_id, r.vote_option_text, r.vote_result
FROM bb_vote_desc d, bb_vote_results r
WHERE
d.vote_id = r.vote_id;
");
DB()->query("
INSERT IGNORE INTO bb_poll_users
(topic_id, user_id, vote_ip)
SELECT
d.topic_id, v.vote_user_id, v.vote_user_ip
FROM bb_vote_desc d, bb_vote_voters v
WHERE
d.vote_id = v.vote_id
AND v.vote_user_id > 0;
");
DB()->query("DROP TABLE IF EXISTS bb_vote_desc");
DB()->query("DROP TABLE IF EXISTS bb_vote_results");
DB()->query("DROP TABLE IF EXISTS bb_vote_voters");
bb_die('<h1 style="color: green">База данных обновлена</h1>');
} else {
$msg = '<form method="POST">';
$msg .= '<h1 style="color: red">!!! Перед тем как нажать на кнопку, сделайте бекап базы данных !!!</h1><br />';
$msg .= '<input type="submit" name="confirm" value="Начать обновление Базы Данных (R575)" style="height: 30px; font:bold 14px Arial, Helvetica, sans-serif;" />';
$msg .= '</form>';
bb_die($msg);
}

View file

@ -0,0 +1,84 @@
<?php
define('IN_FORUM', true);
define('BB_ROOT', './');
require(BB_ROOT . 'common.php');
require(INC_DIR . 'functions_upload.php');
while (@ob_end_flush()) ;
ob_implicit_flush();
error_reporting(E_ALL);
ini_set('display_errors', 1);
$user->session_start();
set_die_append_msg();
if (!IS_SUPER_ADMIN) bb_die($lang['ONLY_FOR_SUPER_ADMIN']);
$confirm = request_var('confirm', '');
if ($confirm) {
DB()->query("ALTER TABLE " . BB_USERS . " ADD `avatar_ext_id` TINYINT( 4 ) NOT NULL AFTER `user_rank`");
$rows_per_cycle = 10000;
$row = DB()->fetch_row("SELECT MAX(user_id) AS end_id FROM " . BB_USERS);
$end_id = (int)$row['end_id'];
$start = $avatars_ok = $avatars_err = 0;
echo "<pre>\n";
while (true) {
set_time_limit(600);
echo "$start [ $avatars_ok / $avatars_err ]\n";
$end = $start + $rows_per_cycle - 1;
$sql = "
SELECT user_id, avatar_ext_id, user_avatar
FROM " . BB_USERS . "
WHERE user_avatar != ''
AND avatar_ext_id = 0
AND user_id BETWEEN $start AND $end
ORDER BY NULL
";
foreach (DB()->fetch_rowset($sql) as $row) {
$FILE = array(
'name' => '',
'type' => '',
'size' => 0,
'tmp_name' => BB_ROOT . $bb_cfg['avatar_path'] . '/' . basename($row['user_avatar']),
'error' => 0,
);
$upload = new upload_common();
if ($upload->init($bb_cfg['avatars'], $FILE, false) AND $upload->store('avatar', $row)) {
DB()->query("UPDATE " . BB_USERS . " SET avatar_ext_id = {$upload->file_ext_id} WHERE user_id = {$row['user_id']} LIMIT 1");
$avatars_ok++;
} else {
echo "{$row['user_id']}: ", join("\n{$row['user_id']}: ", $upload->errors), "\n";
$avatars_err++;
}
}
if ($end > $end_id) {
break;
}
$start += $rows_per_cycle;
sleep(1);
}
echo "---------- База данных успешно обновлена. Аватары указанных выше пользователей перенесены не были. ----------\n";
DB()->query("ALTER TABLE " . BB_USERS . " DROP `user_avatar`");
DB()->query("ALTER TABLE " . BB_USERS . " DROP `user_avatar_type`");
} else {
$msg = '<form method="POST">';
$msg .= '<h1 style="color: red">Перед тем как нажать на кнопку, сделайте бекап базы данных! В ходе обновления базы данных, произойдет автоматическая конвертация имеющихся аватаров пользователей
по новому алгоритму. Для конвертации аватарка пользователя должна соответствовать текущим значениям из конфига: ширина не более ' . $bb_cfg['avatars']['max_width'] . ' пикселов, высота не более ' . $bb_cfg['avatars']['max_height'] . ' пикселов
и объем не более ' . $bb_cfg['avatars']['max_size'] . ' байт. Если эти условия не соблюдены - аватарка пользователя не будет конвертирована и пользователю придется залить ее заново! Если вы хотите поправить указанные
значения - ПЕРЕД обновлением базы данных сделайте это в config.php!</h1><br />';
$msg .= '<input type="submit" name="confirm" value="Начать обновление Базы Данных (R583)" style="height: 30px; font:bold 14px Arial, Helvetica, sans-serif;" />';
$msg .= '</form>';
bb_die($msg);
}

View file

@ -0,0 +1,52 @@
<?php
define('IN_FORUM', true);
define('BB_ROOT', './');
require(BB_ROOT . 'common.php');
while (@ob_end_flush()) ;
ob_implicit_flush();
error_reporting(E_ALL);
ini_set('display_errors', 1);
$user->session_start();
set_die_append_msg();
if (!IS_SUPER_ADMIN) bb_die($lang['ONLY_FOR_SUPER_ADMIN']);
$confirm = request_var('confirm', '');
if ($confirm) {
DB()->query("UPDATE " . BB_CONFIG . " SET `config_value` = 'ru' WHERE `config_name` = 'default_lang'");
DB()->query("ALTER TABLE " . BB_USERS . " ADD `user_twitter` varchar (15) NOT NULL DEFAULT '' AFTER `user_skype`");
$rows_per_cycle = 10000;
$row = DB()->fetch_row("SELECT MAX(user_id) AS end_id FROM " . BB_USERS);
$end_id = (int)$row['end_id'];
$start = 0;
while (true) {
set_time_limit(600);
$end = $start + $rows_per_cycle - 1;
DB()->query("UPDATE " . BB_USERS . " SET user_lang = 'ru' WHERE user_lang = 'russian'");
DB()->query("UPDATE " . BB_USERS . " SET user_lang = 'en' WHERE user_lang = 'english'");
if ($end > $end_id) {
break;
}
$start += $rows_per_cycle;
sleep(1);
}
bb_die("База данных успешно обновлена. Можно приступать к обновлению файлов. Не забудьте удалить этот файл.");
} else {
$msg = '<form method="POST">';
$msg .= '<h1 style="color: red">Перед тем как нажать на кнопку, сделайте бекап базы данных! В ходе обновления базы данных, произойдет автоматическая конвертация текущих языков интерфейса пользователей
на новое именование, а также будет добавлено поле в базу данных пользователей, для их Twitter-аккаунтов. После этого, вам можно будет приступать к обновлению файлов.</h1><br />';
$msg .= '<input type="submit" name="confirm" value="Начать обновление Базы Данных (R588)" style="height: 30px; font:bold 14px Arial, Helvetica, sans-serif;" />';
$msg .= '</form>';
bb_die($msg);
}

View file

@ -0,0 +1,222 @@
<?php
define('IN_FORUM', true);
define('BB_ROOT', './');
require(BB_ROOT . 'common.php');
while (@ob_end_flush()) ;
ob_implicit_flush();
error_reporting(E_ALL);
ini_set('display_errors', 1);
$user->session_start();
set_die_append_msg();
if (!IS_SUPER_ADMIN) bb_die($lang['ONLY_FOR_SUPER_ADMIN']);
bb_die('
<h1 style="color: red">Для обновления до стабильной ревизии R600, вам необходимо воспользоваться <a
href="http://torrentpier.me/threads/26147/">инструкцией, опубликованной в данной теме</a> на нашем форуме.
Вы также можете заглянуть в исходный код этого скрипта, в нем опубликована схема изменений от ревизии 400,
до ревизии 600. Не забывайте про бекап базы данных перед обновлением!</h1>
');
/*
Схема изенений r400->r600 для написания конвертера.
Изменения в базе:
INSERT INTO `bb_config` VALUES ('tor_comment', '1'); // добавлено 407
ALTER TABLE `bb_posts` ADD `post_mod_comment` TEXT NOT NULL DEFAULT ''; // добавлено 458
ALTER TABLE `bb_posts` ADD `post_mod_comment_type` TINYINT( 1 ) NOT NULL DEFAULT '0'; // добавлено 458
ALTER TABLE `bb_posts` ADD `post_mc_mod_id` mediumint(8) NOT NULL; // добавлено 458
ALTER TABLE `bb_posts` ADD `post_mc_mod_name` varchar(25) NOT NULL DEFAULT ''; // добавлено 458
// 496 - отдельный конвертер
ALTER TABLE `bb_users` ADD `tpl_name` varchar(255) NOT NULL DEFAULT 'default'; // добавлено 507
UPDATE `bb_config` SET `config_value` = '1' WHERE `config_name` = 'bt_unset_dltype_on_tor_unreg';
// изменено 508 ↑
ALTER TABLE `bb_users` DROP `ignore_srv_load`; // удалено 537
UPDATE `bb_users` SET `username` = 'Guest' WHERE `user_id` = -1; // изменено 540
DROP TABLE IF EXISTS `bb_bt_torrents_del`; // удалено 551
DROP TABLE IF EXISTS `xbt_announce_log`; // удалено 551
DROP TABLE IF EXISTS `xbt_config`; // удалено 551
DROP TABLE IF EXISTS `xbt_deny_from_hosts`; // удалено 551
DROP TABLE IF EXISTS `xbt_files_users`; // удалено 551
DROP TABLE IF EXISTS `xbt_scrape_log`; // удалено 551
ALTER TABLE `bb_bt_tracker` DROP `xbt_error`; // удалено 551
DELETE FROM `bb_config` WHERE `config_name` = 'torrent_pass_private_key'; // удалено 551
DELETE FROM `bb_config` WHERE `config_name` = 'board_email'; // удалено 552
DELETE FROM `bb_config` WHERE `config_name` = 'board_email_form'; // удалено 552
DELETE FROM `bb_config` WHERE `config_name` = 'board_email_sig'; // удалено 552
DELETE FROM `bb_config` WHERE `config_name` = 'smtp_delivery'; // удалено 552
DELETE FROM `bb_config` WHERE `config_name` = 'smtp_host'; // удалено 552
DELETE FROM `bb_config` WHERE `config_name` = 'smtp_password'; // удалено 552
DELETE FROM `bb_config` WHERE `config_name` = 'smtp_username'; // удалено 552
DELETE FROM `bb_config` WHERE `config_name` = 'gallery_enabled'; // удалено 554
DELETE FROM `bb_config` WHERE `config_name` = 'pic_dir'; // удалено 554
DELETE FROM `bb_config` WHERE `config_name` = 'pic_max_size'; // удалено 554
DELETE FROM `bb_config` WHERE `config_name` = 'auto_delete_posted_pics'; // удалено 554
DELETE FROM `bb_config` WHERE `config_name` = 'allow_avatar_remote'; // удалено 555
ALTER TABLE `bb_topics` DROP COLUMN `is_draft`; // удалено 558
DELETE FROM `bb_config` WHERE `config_name` = 'bt_add_comment'; // удалено 565
DELETE FROM `bb_config` WHERE `config_name` = 'bt_add_publisher'; // удалено 565
DELETE FROM `bb_config` WHERE `config_name` = 'bt_gen_passkey_on_reg'; // удалено 565
DROP TABLE IF EXISTS `sph_counter`; // удалено 571
// 571 - отдельный конвертер
DELETE FROM `bb_config` WHERE `config_name` = 'max_inbox_privmsgs'; // удалено 573
DELETE FROM `bb_config` WHERE `config_name` = 'max_savebox_privmsgs'; // удалено 573
DELETE FROM `bb_config` WHERE `config_name` = 'max_sentbox_privmsgs'; // удалено 573
DELETE FROM `bb_config` WHERE `config_name` = 'privmsg_disable'; // удалено 573
// 575 - отдельный конвертер
DELETE FROM `bb_config` WHERE `config_name` = 'config_id'; // удалено 579
DELETE FROM `bb_config` WHERE `config_name` = 'sendmail_fix'; // удалено 579
DELETE FROM `bb_config` WHERE `config_name` = 'version'; // удалено 579
DELETE FROM `bb_config` WHERE `config_name` = 'xs_add_comments'; // удалено 579
DELETE FROM `bb_config` WHERE `config_name` = 'xs_auto_compile'; // удалено 579
DELETE FROM `bb_config` WHERE `config_name` = 'xs_auto_recompile'; // удалено 579
DELETE FROM `bb_config` WHERE `config_name` = 'xs_php'; // удалено 579
DELETE FROM `bb_config` WHERE `config_name` = 'xs_shownav'; // удалено 579
DELETE FROM `bb_config` WHERE `config_name` = 'xs_template_time'; // удалено 579
DELETE FROM `bb_config` WHERE `config_name` = 'xs_version'; // удалено 579
INSERT INTO `bb_cron` VALUES (22, 1, 'Attach maintenance', 'attach_maintenance.php', 'daily', NULL, '05:00:00', 40, '', '', NULL, 1, '', 0, 1, 0);
// добавлено 582 ↑
DELETE FROM `bb_config` WHERE `config_name` = 'allow_avatar_local'; // удалено 583
DELETE FROM `bb_config` WHERE `config_name` = 'allow_avatar_upload'; // удалено 583
DELETE FROM `bb_config` WHERE `config_name` = 'avatar_filesize'; // удалено 583
DELETE FROM `bb_config` WHERE `config_name` = 'avatar_gallery_path'; // удалено 583
DELETE FROM `bb_config` WHERE `config_name` = 'avatar_max_height'; // удалено 583
DELETE FROM `bb_config` WHERE `config_name` = 'avatar_max_width'; // удалено 583
DELETE FROM `bb_config` WHERE `config_name` = 'avatar_path'; // удалено 583
DELETE FROM `bb_config` WHERE `config_name` = 'require_activation'; // удалено 583
DELETE FROM `bb_config` WHERE `config_name` = 'no_avatar'; // удалено 583
UPDATE `bb_config` SET `config_value` = '0' WHERE `config_name` = 'show_mod_index'; // изменено 583
DELETE FROM `bb_cron` WHERE `cron_script` = 'avatars_cleanup.php'; // удалено 583
UPDATE `bb_cron` SET `cron_id` = '3' WHERE `cron_script` = 'attach_maintenance.php'; // изменено 583
// 583 - отдельный конвертер
DROP TABLE IF EXISTS `bb_topic_templates`; // удалено 584
ALTER TABLE `bb_forums` DROP `topic_tpl_id`; // удалено 584
UPDATE `bb_config` SET `config_value` = 'http://ip-whois.net/ip_geos.php?ip=' WHERE `config_name` = 'whois_info';
// обновлено 586 ↑
UPDATE `bb_config` SET `config_value` = 'ru' WHERE `config_name` = 'default_lang'; // обновлено 588
// 588 - отдельный конвертер
ALTER TABLE `bb_users` DROP `user_next_birthday_greeting`; // удалено 589
ALTER TABLE `bb_posts` CHANGE `post_mod_comment` `mc_comment` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '';
// изменено 590 ↑
ALTER TABLE `bb_posts` CHANGE `post_mod_comment_type` `mc_type` TINYINT(1) NOT NULL DEFAULT '0';
// изменено 590 ↑
ALTER TABLE `bb_posts` CHANGE `post_mc_mod_id` `mc_user_id` MEDIUMINT(8) NOT NULL DEFAULT '0';
// изменено 590 ↑
ALTER TABLE `bb_posts` DROP `post_mc_mod_name`; // удалено 590
DELETE FROM `bb_attachments_config` WHERE `config_name` = 'allow_ftp_upload'; // удалено 592
DELETE FROM `bb_attachments_config` WHERE `config_name` = 'ftp_server'; // удалено 592
DELETE FROM `bb_attachments_config` WHERE `config_name` = 'ftp_path'; // удалено 592
DELETE FROM `bb_attachments_config` WHERE `config_name` = 'download_path'; // удалено 592
DELETE FROM `bb_attachments_config` WHERE `config_name` = 'ftp_user'; // удалено 592
DELETE FROM `bb_attachments_config` WHERE `config_name` = 'ftp_pass'; // удалено 592
DELETE FROM `bb_attachments_config` WHERE `config_name` = 'ftp_pasv_mode'; // удалено 592
DELETE FROM `bb_extensions` WHERE `extension` = 'wma'; // удалено 592
DELETE FROM `bb_extensions` WHERE `extension` = 'swf'; // удалено 592
UPDATE `bb_extensions` SET `group_id` = '6' WHERE `extension` = 'torrent'; // изменено 592
DELETE FROM `bb_extension_groups` WHERE `group_name` = 'Streams'; // удалено 592
DELETE FROM `bb_extension_groups` WHERE `group_name` = 'Flash Files'; // удалено 592
UPDATE `bb_extension_groups` SET `group_id` = '6' WHERE `group_id` = 8; // изменено 592
INSERT INTO `bb_config` VALUES ('sitemap_time', ''); // добавлено 593
INSERT INTO `bb_config` VALUES ('static_sitemap', ''); // добавлено 593
INSERT INTO `bb_cron` VALUES (22, 1, 'Sitemap update', 'sitemap.php', 'daily', NULL, '06:00:00', 30, '', '', NULL, 0, '', 0, 0, 0);
// добавлено 593 ↑
INSERT INTO `bb_cron` VALUES (23, 1, 'Update forums atom', 'update_forums_atom.php', 'interval', NULL, NULL, 255, '', '', '00:15:00', 0, '', 0, 0, 0);
// добавлено 595 ↑
UPDATE `bb_attachments_config` SET `config_value` = 'old_files' WHERE `config_name` = 'upload_dir';
// изменено 595 ↑
DELETE FROM `bb_smilies` WHERE `code` = ':cd:'; // удалено 596
ALTER TABLE `bb_groups` CHANGE `group_description` `group_description` text NOT NULL DEFAULT '';
// изменено 598 ↑
ALTER TABLE `bb_groups` ADD `avatar_ext_id` int(15) NOT NULL DEFAULT '0' AFTER `group_id`;
// добавлено 598 ↑
ALTER TABLE `bb_groups` ADD `mod_time` INT(11) NOT NULL DEFAULT '0' AFTER `group_time`;
// добавлено 598 ↑
ALTER TABLE `bb_groups` ADD `release_group` tinyint(4) NOT NULL DEFAULT '0' AFTER `group_type`;
// добавлено 598 ↑
ALTER TABLE `bb_groups` ADD `group_signature` text NOT NULL DEFAULT '' AFTER `group_description`;
// добавлено 598 ↑
ALTER TABLE `bb_posts` ADD `poster_rg_id` mediumint(8) NOT NULL DEFAULT '0' AFTER `poster_ip`;
// добавлено 598 ↑
ALTER TABLE `bb_posts` ADD `attach_rg_sig` tinyint(4) NOT NULL DEFAULT '0' AFTER `poster_rg_id`;
// добавлено 598 ↑
INSERT INTO `bb_config` VALUES ('terms', ''); // добавлено 599b
Удаленные файлы/папки:
admin/.htaccess
admin/admin_topic_templates.php
admin/admin_xs.php
admin/xs_cache.php
admin/xs_config.php
admin/xs_frameset.php
admin/xs_include.php
admin/xs_index.php
develop
images/avatars/bot.gif
images/logo/logo_big.png
images/smiles/cd.gif
images/smiles/smileys.pak
images/icon_disk.gif
images/icon_disk_gray.gif
includes/cron/jobs/avatars_cleanup.php
includes/topic_templates
includes/ucp/torrent_userprofile.php
includes/ucp/usercp_activate.php
includes/ucp/usercp_attachcp.php
includes/ucp/usercp_avatar.php
includes/ucp/usercp_bonus.php
includes/ucp/usercp_email.php
includes/ucp/usercp_register.php
includes/ucp/usercp_sendpasswd.php
includes/ucp/usercp_viewprofile.php
includes/sphinxapi.php
includes/topic_templates.php
language/lang_english
language/lang_russian
misc/html
misc/.htaccess
pictures
templates/admin/admin_topic_templates.tpl
templates/default/images/lang_english
templates/default/images/lang_russian
templates/default/images/index.html
templates/default/topic_templates
templates/default/agreement.tpl
templates/default/donate.tpl
templates/default/faq.tpl
templates/default/gallery.tpl
templates/default/posting_poll.tpl
templates/default/posting_tpl.tpl
templates/default/usercp_avatar_gallery.tpl
templates/default/viewonline.tpl
templates/xs_mod
templates/board_disabled_exit.php
templates/limit_load_exit.php
templates/topic_tpl_overall_header.html
templates/topic_tpl_rules_video.html
donate.php
download.php
faq.php
gallery.php
viewonline.php
Прочие изменения:
Все файлы перекодированы для использования окончаний строк LF.
*/