· 8 years ago · Aug 04, 2018, 06:04 AM
1/*
2CREATE TABLE IF NOT EXISTS `bb_bt_users_bonus` (
3 `user_id` mediumint(9) NOT NULL,
4 `toptracker_bonus` bigint(20) unsigned NOT NULL DEFAULT '0',
5 `toptracker_votetime` datetime NOT NULL,
6 `bonus_type` smallint(1) unsigned NOT NULL DEFAULT '1',
7 UNIQUE KEY `user_id` (`user_id`)
8) ENGINE=InnoDB DEFAULT CHARSET=latin1;
9*/
10
11<?php
12//die('отключён');
13// Ðаш Ñкрипт Ð´Ð»Ñ TopTracker.ru (Ñ) YouTracker.net
14$rating = (int) $_POST['ratio']; // ratio - Ñоотношение отданного к Ñкачанному...
15$userid = (int) $_POST['userid'];
16// ПроверÑем реферер
17if (!preg_match('/^http:\/\/(www\.)?(toptracker\.ru)\/details.php\?id=4270&userid=([^\/]+)/i', $_SERVER['HTTP_REFERER'])) die('lol');
18// Проверки
19if (($rating !== 5) && ($_POST['key'] !== 'cMINqR20Q5RlJmaLZWUf91jTMRVNKp') && (!$userid || ($userid == -1))) die('lol 2');
20// Ð”Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ð‘Ð”
21define('BB_ROOT', './');
22require(BB_ROOT .'common.php');
23// Запрет на Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ одного раза в 24 чаÑа не нужен, Ñ‚.к. ранее была проверка по ключу, которого ни у кого из проÑтых пользователей нет.
24/*
25bonus_type: 1 - Ð´Ð»Ñ toptracker;
26 2 - Ð´Ð»Ñ ...
27*/
28// Выбираем данные, Ð´Ð»Ñ Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐ¸Ñ… манипулÑций
29
30define("BYTE_IN_MB", 1024*1024);
31define("BYTE_IN_GB", 1024*1024*1024);
32
33$bonumb = 666 * BYTE_IN_MB; // 666 МБ
34$bonusdeltamb = 333 * BYTE_IN_MB; // 333 МБ
35$bonus_limit = 3 * BYTE_IN_GB; //2 Гб
36$multiply = 1; // Ðе умножаем...
37
38/*
39Мои Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ - duffer007/01.05.2012
40*/
41$sql = "
42 SELECT count(toptracker_bonus) as cnt
43 FROM bb_bt_users_bonus
44 WHERE user_id = '".$userid."' and bonus_type = 1
45";
46if ( !($result = DB()->sql_query($sql)) )
47 {
48 message_die(GENERAL_ERROR, "Could not read information.", '', __LINE__, __FILE__, $sql);
49 }
50while ($row = DB()->sql_fetchrow($result))
51 {
52 $is_set_bounus = $row['cnt'];
53 }
54if ( !($is_set_bounus) )
55{ //не голоÑовал ни разу
56 $u_current_bonus = $bonumb;
57
58 $sql = "
59 INSERT INTO bb_bt_users_bonus(user_id,toptracker_bonus,toptracker_votetime,bonus_type)
60 VALUES ('".$userid."',".$u_current_bonus.",NOW(),1)
61 ";
62 DB()->sql_query($sql);
63
64}
65else
66{ //уже голоÑовал и имеет на Ñчету мегабайты
67 //проголоÑовал в течении 35 чаÑов
68 $sql = "
69 SELECT toptracker_bonus, toptracker_votetime, TIMESTAMPDIFF(HOUR,toptracker_votetime,NOW()) as time_diff
70 FROM bb_bt_users_bonus
71 WHERE user_id = '".$userid."' and bonus_type = 1
72 ";
73 if ( !($result = DB()->sql_query($sql)) )
74 {
75 message_die(GENERAL_ERROR, "Could not read information.", '', __LINE__, __FILE__, $sql);
76 }
77 while ($row = DB()->sql_fetchrow($result))
78 {
79 $u_current_bonus = $row['toptracker_bonus'];
80 $u_last_votetime = $row['toptracker_votetime'];
81 $u_time_from_last_vote = $row['time_diff'];//in hours
82 }
83 if(u_time_from_last_vote < 35) {
84 $u_current_bonus = ($u_current_bonus + bonusdeltamb >= bonus_limit) ? bonus_limit : ($u_current_bonus + bonusdeltamb);
85 }
86 else {
87 $days_without_votes = (int)(u_time_from_last_vote / 35); //дней не голоÑовал
88 $u_current_bonus = ($u_current_bonus - $days_without_votes * $bonusdeltamb <= $bonusdeltamb) ? $bonusdeltamb : ($u_current_bonus - $days_without_votes * $bonusdeltamb);
89 }
90
91}
92// ÐŸÑ€Ð¾Ð¸Ð·Ð²ÐµÐ´Ñ Ð²Ñе манипулÑции, отправлÑем полученный данные в БД.
93//обновлÑем данные в таблице bb_bt_users_bonus
94 $sql = "
95 UPDATE bb_bt_users_bonus
96 SET
97 toptracker_bonus = ".$u_current_bonus.",
98 toptracker_votetime = NOW(),
99 WHERE user_id = '".$userid."' and bonus_type = 1
100 ";
101 DB()->sql_query($sql);
102
103 $sql = "
104 UPDATE bb_bt_users
105 SET
106 u_up_total = u_up_total + ".$u_current_bonus.",
107 u_up_toptracker = u_up_toptracker + ".$u_current_bonus.",
108 WHERE user_id = '".$userid."'
109 ";
110 DB()->sql_query($sql);
111
112/*
113При первоначальном голоÑовании вы получаете Ð±Ð¾Ð½ÑƒÑ Ð² размере 666Мб.
114ГолоÑÑƒÑ Ð½Ðµ позже чем через 35 чаÑов поÑле предыдущего голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ‹ увеличиваете Ñвой Ð±Ð¾Ð½ÑƒÑ Ð·Ð° голоÑование на 333Мб, и так,
115пока не доÑтигнете лимита в 3Гб.
116По правилам рейтингов торрент-трекеров, голоÑовать можно не раньше чем через 35 чаÑов поÑле предыдущего голоÑованиÑ.
117*/
118?>