1. В базу добавить
ALTER TABLE `torrents` ADD `modded` ENUM('yes','no') NOT NULL DEFAULT 'no'; ALTER TABLE `torrents` ADD `modby` INTEGER(10) UNSIGNED DEFAULT '0'; ALTER TABLE `torrents` ADD `modname` TEXT COLLATE cp1251_general_ci NOT NULL; ALTER TABLE `torrents` ADD `modtime` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'; ALTER TABLE `users` ADD `moderated` INTEGER(10) NOT NULL DEFAULT '0';
2. details.php
Найти в запросе
torrents.seeders
После в ту же строку добавить
torrents.modded, torrents.modby, torrents.modname
Найти
$owned = $moderator = 0; if (get_user_class() >= UC_MODERATOR) $owned = $moderator = 1; elseif ($CURUSER["id"] == $row["owner"]) $owned = 1;
После добавить
if ($row["modded"] == "no" && $owned == "0") stderr("Ошибка", "Раздача ожидает проверки");
Найти
tr($tracker_lang['info_hash'], $row["info_hash"]);
После добавить
if (get_user_class() >= UC_MODERATOR) tr("Проверен?", "<div id=\"moderated\">".($row["modded"] == "no" ? "<a href=\"#\" onclick=\"javascript: check(".$row["id"].")\">Нет</a>" : "<a href=\"userdetails.php?id=".$row["modby"]." \">".$row["modname"]."</a>")."</div>", 1);
3. js/ajax.js
Найти
this.createAJAX(); }
После добавить
function check(torrent) { var ajax = new tbdev_ajax(); ajax.onShow (''); var varsString = ""; ajax.requestFile = "check.php"; ajax.setVar("torrent", torrent); ajax.method = 'POST'; ajax.element = 'moderated'; ajax.sendAJAX(varsString); }
4. Создать в корне сайта check.php
<? require_once("include/bittorrent.php"); dbconn(); loggedinorreturn(); header ("Content-Type: text/html; charset=windows-1251"); $torrent = (int) $_POST["torrent"]; if (empty($torrent)) die("Операция невозможна"); if(get_user_class() < UC_MODERATOR) die("Нет доступа"); $res = sql_query("SELECT modded, owner FROM torrents WHERE id = ".sqlesc($torrent)) or sqlerr(__FILE__,__LINE__); $row = mysql_fetch_assoc($res); if ($row["owner"] == $CURUSER["id"]) die("Это ваша раздача"); if ($row["modded"] == "yes") die("Раздача уже проверена"); sql_query("UPDATE torrents SET modded = 'yes', modby = ".sqlesc($CURUSER["id"]).", modname = ".sqlesc($CURUSER["username"]).", modtime = '" . get_date_time() . "' WHERE id = ".sqlesc($torrent)) or sqlerr(__FILE__,__LINE__); sql_query("UPDATE users SET moderated = moderated + 1 WHERE id = ".sqlesc($CURUSER["id"])) or sqlerr(__FILE__,__LINE__); $res = sql_query("SELECT modby, modname FROM torrents WHERE id = ".sqlesc($torrent)) or sqlerr(__FILE__,__LINE__); $row = mysql_fetch_assoc($res); print "<a href=\"userdetails.php?id=".$row["modby"]."\">".$row["modname"]."</a>"; ?>
5. Создать в корне сайта modded.php
<?php require "include/bittorrent.php"; dbconn(false); loggedinorreturn(); if (get_user_class() < UC_MODERATOR) stderr($tracker_lang['error'], "Нет доступа."); stdhead("Обзор проверки торрентов"); print "<div align=\"center\" style=\"padding: 10px;\"><a href=\"modded.php\">Непроверенные</a> | <a href=\"modded.php?modded\">Проверенные</a> | <a href=\"modded.php?top\">Топ модераторов</a></div>"; if (isset($_GET["top"])) { begin_frame("Топ модераторов (включая удаленные раздачи)"); echo '<table width="100%" cellpadding="5"><tr><td class="colhead">№</td><td class="colhead">Модератор</td><td class="colhead">Проверил</td></tr>'; $res = sql_query("SELECT id, username, class, moderated FROM users WHERE class >= ".UC_MODERATOR." AND moderated > 0 ORDER BY moderated DESC") or sqlerr(__FILE__,__LINE__); if (!mysql_num_rows($res)) echo ("<tr><td colspan=\"3\">Нет статистики</td></tr>"); else { $i=1; while ($row = mysql_fetch_array($res)) { echo '<tr><td>'.$i.'</td><td><a href="userdetails.php?id='.$row["id"].'">'.get_user_class_color($row["class"], $row["username"]).'</a></td><td><a href="modded.php?moderator='.$row["id"].'">'.$row["moderated"].'</a></td></tr>'; $i++; } } echo '</tr></table>'; end_frame(); } elseif (isset($_GET["modded"])) { $count = get_row_count("torrents", "WHERE modded='yes'"); list($pagertop, $pagerbottom, $limit) = pager(15, $count, "modded.php?modded&"); begin_frame("Проверенные торренты [$count]"); echo '<table width="100%" cellpadding="5"><tr><td class="colhead">Торрент</td><td class="colhead">Загрузил</td><td class="colhead">Проверил</td><td class="colhead">Когда?</td></tr>'; $res = sql_query("SELECT torrents.*, users.username, users.class FROM torrents LEFT JOIN users ON torrents.owner = users.id WHERE modded = 'yes' ORDER BY torrents.modtime DESC $limit") or sqlerr(__FILE__,__LINE__); if (!mysql_num_rows($res)) echo ("<tr><td colspan=\"4\">Нет проверенных торрентов</td></tr>"); else { while ($row = mysql_fetch_array($res)) echo '<tr><td><a href="details.php?id='.$row["id"].'">'.$row["name"].'</a></td><td><a href="userdetails.php?id='.$row["owner"].'">'.get_user_class_color($row["class"], $row["username"]).'</a></td><td><a href="userdetails.php?id='.$row["modby"].'">'.$row["modname"].'</a></td><td>'.$row["modtime"].'</td></tr>'; } if ($count) { echo '<tr><td colspan="4">'; echo $pagerbottom; echo '</td></tr>'; } echo '</tr></table>'; end_frame(); } elseif (isset($_GET["moderator"])) { $moderaror = unesc($_GET["moderator"]); $count = number_format(get_row_count("torrents", "WHERE modby = ".sqlesc($moderaror))); list($pagertop, $pagerbottom, $limit) = pager(15, $count, "modded.php?moderator=".unesc($_GET["moderator"])."&"); $res = sql_query("SELECT users.id, users.username, users.class, torrents.modby FROM users LEFT JOIN torrents ON users.id = torrents.modby WHERE torrents.modby = ".sqlesc($moderaror)) or sqlerr(__FILE__,__LINE__); $row = mysql_fetch_array($res); begin_frame("Торренты, проверенные <a href=\"userdetails.php?id=".$row["id"]."\">".get_user_class_color($row["class"], $row["username"])."</a> [$count]"); echo '<table width="100%" cellpadding="5"><tr><td class="colhead">Торрент</td><td class="colhead">Загрузил</td><td class="colhead">Проверен</td></tr>'; $res = sql_query("SELECT torrents.*, users.username, users.class FROM torrents LEFT JOIN users ON torrents.owner = users.id WHERE modby = ".sqlesc($moderaror)." ORDER BY torrents.modtime DESC") or sqlerr(__FILE__,__LINE__); if (!mysql_num_rows($res) || empty($moderaror)) echo ("<tr><td colspan=\"4\">Не проверено ни одного торрента этим модератором</td></tr>"); else { while ($row = mysql_fetch_array($res)) echo '<tr><td><a href="details.php?id='.$row["id"].'">'.$row["name"].'</a></td><td><a href="userdetails.php?id='.$row["owner"].'">'.get_user_class_color($row["class"], $row["username"]).'</a></td><td>'.$row["modtime"].'</td></tr>'; } if ($count) { echo '<tr><td colspan="4">'; echo $pagerbottom; echo '</td></tr>'; } echo '</tr></table>'; end_frame(); } else { $count = number_format(get_row_count("torrents", "WHERE modded='no'")); list($pagertop, $pagerbottom, $limit) = pager(15, $count, "modded.php?"); begin_frame("Непроверенные торренты [$count]"); echo '<table width="100%" cellpadding="5"><tr><td class="colhead">Торрент</td><td class="colhead">Загрузил</td><td class="colhead">Когда?</td></tr>'; $res = sql_query("SELECT torrents.*, users.username, users.class FROM torrents LEFT JOIN users ON torrents.owner = users.id WHERE modded = 'no' ORDER BY torrents.id $limit") or sqlerr(__FILE__,__LINE__); if (!mysql_num_rows($res)) echo ("<tr><td colspan=\"3\">Все торренты проверены</td></tr>"); else { while ($row = mysql_fetch_array($res)) echo '<tr><td><a href="details.php?id='.$row["id"].'">'.$row["name"].'</a></td><td><a href="userdetails.php?id='.$row["owner"].'">'.get_user_class_color($row["class"], $row["username"]).'</a></td><td>'.$row["added"].'</td></tr>'; } if ($count) { echo '<tr><td colspan="3">'; echo $pagerbottom; echo '</td></tr>'; } echo '</tr></table>'; end_frame(); } stdfoot(); ?>
6. userdetails.php
Найти
print("<td align=\"left\">$torrentcomments</td></tr>\n");
После добавить
if (get_user_class() >= UC_MODERATOR && $user["moderated"] > 0) print("<tr valign=\"top\"><td class=\"rowhead\">Проверил торрентов</td><td align=\"left\"><a href=\"modded.php?moderator=".$user["id"]."\">".$user["moderated"]."</a></td></tr>\n");
7. browse.php
Найти и заменить в запросе (если нет, то просто добавить)
torrents.moderated на torrents.modded и torrents.moderatedby на torrents.modby
Найти (если есть)
case '10': if (get_user_class() >= UC_MODERATOR) $column = "moderatedby"; break;
Заменить на
case '10': if (get_user_class() >= UC_MODERATOR) $column = "modby"; break;
8. functions.php
Найти
print("<tr".($row["sticky"] == "yes" ? " class=\"highlight\"" : "").">\n");
Заменить на
if ($row["modded"] == "no" && get_user_class() < UC_MODERATOR && $row["owner"] != $CURUSER["id"]) print ""; else { print("<tr".($row["sticky"] == "yes" ? " class=\"highlight\"" : "")." ".($row["modded"] == "no" ? " style=\"background: #EDECE9\"" : "").">\n");
Найти
if ((get_user_class() >= UC_MODERATOR) && $variant == "index") print("<td align=\"center\"><input type=\"checkbox\" name=\"delete[]\" value=\"" . $id . "\" /></td>\n"); print("</tr>\n"); }
После вставить
}
Найти (если есть)
if ((get_user_class() >= UC_MODERATOR) && $variant == "index") { if ($row["moderated"] == "no") print("<td align=\"center\"><font color=\"red\"><b>Нет</b></font></td>\n"); else print("<td align=\"center\"><a href=\"userdetails.php?id=$row[moderatedby]\"><font color=\"green\"><b>Да</b></font></a></td>\n"); }
Заменить на
if ((get_user_class() >= UC_MODERATOR) && $variant == "index") { if ($row["modded"] == "no") print("<td align=\"center\"><font color=\"red\"><b>Нет</b></font></td>\n"); else print("<td align=\"center\"><a href=\"userdetails.php?id=$row[modby]\"><font color=\"green\"><b>Да</b></font></a></td>\n"); }
Вот и все теперь у вас на сайте будит проверка торрентов модератором пользуемся с удовольствием