PageRenderTime 52ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/uploadapps.php

https://github.com/Bigjoos/U-232
PHP | 224 lines | 191 code | 21 blank | 12 comment | 53 complexity | f49b35f4d4f5f2df73e6b355485921d7 MD5 | raw file
  1. <?php
  2. /**
  3. * http://btdev.net:1337/svn/test/Installer09_Beta
  4. * Licence Info: GPL
  5. * Copyright (C) 2010 BTDev Installer v.1
  6. * A bittorrent tracker source based on TBDev.net/tbsource/bytemonsoon.
  7. * Project Leaders: Mindless,putyn.
  8. **/
  9. require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'bittorrent.php');
  10. require_once(INCL_DIR . 'user_functions.php');
  11. require_once INCL_DIR . 'pager_functions.php';
  12. dbconn(false);
  13. loggedinorreturn();
  14. $lang = array_merge(load_language('global'), load_language('uploadapps'));
  15. if ($CURUSER["class"] < UC_MODERATOR)
  16. stderr($lang['uploadapps_user_error'], $lang['uploadapps_notmod']);
  17. $action = isset($_GET["action"]) ? htmlspecialchars($_GET["action"]) : '';
  18. $HTMLOUT = "";
  19. //== View applications
  20. if (!$action || $action == "show") {
  21. if ($action == "show")
  22. $hide = "[<a href='{$INSTALLER09['baseurl']}/uploadapps.php'>{$lang['uploadapps_hide']}</a>]";
  23. else {
  24. $hide = "[<a href='{$INSTALLER09['baseurl']}/uploadapps.php?action=show'>{$lang['uploadapps_show']}</a>]";
  25. $where = "WHERE status = 'pending'";
  26. $where1 = "WHERE uploadapp.status = 'pending'";
  27. }
  28. $where = "";
  29. $res = sql_query("SELECT count(id) FROM uploadapp $where") or sqlerr(__FILE__, __LINE__);
  30. $row = mysqli_fetch_array($res);
  31. $url = " .{$_SERVER['PHP_SELF']}?";
  32. $count = $row[0];
  33. $perpage = 15;
  34. $pager = pager($perpage, $count, $url);
  35. $HTMLOUT .= "<h1 align='center'>{$lang['uploadapps_applications']}</h1>";
  36. if ($count == 0) {
  37. $HTMLOUT .= "<table class='main' width='850' border='0' cellspacing='0' cellpadding='0'><tr><td class='embedded'>
  38. <div align='right'><font class='small'>{$hide}</font></div></td></tr></table>
  39. <table width='100%' border='1' cellspacing='0' cellpadding='5'><tr><td>
  40. <div align='center'>{$lang['uploadapps_noapps']}</div>
  41. </td></tr></table>";
  42. } else {
  43. $HTMLOUT .= "<form method='post' action='?action=takeappdelete'>";
  44. if ($count > $perpage)
  45. $HTMLOUT .= $pager['pagertop'];
  46. $HTMLOUT .= "<table class='main' width='850' border='0' cellspacing='0' cellpadding='0'><tr><td class='embedded'>
  47. <div align='right'><font class='small'>{$hide}</font></div>
  48. <table width='100%' border='1' cellspacing='0' cellpadding='5' align='center'>
  49. <tr>
  50. <td class='colhead' align='left'>{$lang['uploadapps_applied']}</td>
  51. <td class='colhead' align='left'>{$lang['uploadapps_application']}</td>
  52. <td class='colhead' align='left'>{$lang['uploadapps_username']}</td>
  53. <td class='colhead' align='left'>{$lang['uploadapps_joined']}</td>
  54. <td class='colhead' align='left'>{$lang['uploadapps_class']}</td>
  55. <td class='colhead' align='left'>{$lang['uploadapps_upped']}</td>
  56. <td class='colhead' align='left'>{$lang['uploadapps_ratio']}</td>
  57. <td class='colhead' align='left'>{$lang['uploadapps_status']}</td>
  58. <td class='colhead' align='left'>{$lang['uploadapps_delete']}</td>
  59. </tr>\n";
  60. $where1 = "";
  61. $res = sql_query("SELECT uploadapp.*, users.id AS uid, users.username, users.class, users.added, users.uploaded, users.downloaded FROM uploadapp INNER JOIN users on uploadapp.userid = users.id $where1 " . $pager['limit']) or sqlerr(__FILE__, __LINE__);
  62. while ($arr = mysqli_fetch_assoc($res)) {
  63. if ($arr["status"] == "accepted")
  64. $status = "<font color='green'>{$lang['uploadapps_accepted']}</font>";
  65. elseif ($arr["status"] == "rejected")
  66. $status = "<font color='red'>{$lang['uploadapps_rejected']}</font>";
  67. else
  68. $status = "<font color='blue'>{$lang['uploadapps_pending']}</font>";
  69. $membertime = get_date($arr['added'], '', 0, 1);
  70. $elapsed = get_date($arr['applied'], '', 0, 1);
  71. if ($arr["downloaded"] == 0 && $arr["uploaded"] == 0)
  72. $ratio = '---';
  73. else if ($arr["downloaded"] == 0 && $arr["uploaded"] != 0)
  74. $ratio = 'Inf.';
  75. else
  76. $ratio = number_format($arr["uploaded"] / $arr["downloaded"], 3);
  77. $HTMLOUT .= "<tr>
  78. <td>{$elapsed}</td>
  79. <td><a href='?action=viewapp&amp;id=" . intval($arr['id']) . "'>{$lang['uploadapps_viewapp']}</a></td>
  80. <td><a href='{$INSTALLER09['baseurl']}/userdetails.php?id=" . intval($arr['uid']) . "'>" . htmlspecialchars($arr['username']) . "</a></td>
  81. <td>{$membertime}</td>
  82. <td>" . get_user_class_name($arr["class"]) . "</td>
  83. <td>" . mksize($arr["uploaded"]) . "</td>
  84. <td>{$ratio}</td>
  85. <td>{$status}</td>
  86. <td><input type=\"checkbox\" name=\"deleteapp[]\" value=\"" . intval($arr['id']) . "\" /></td>
  87. </tr>\n";
  88. }
  89. $HTMLOUT .= "</table>
  90. <div align='right'><input type='submit' value='Delete' /></div>
  91. </td></tr></table></form>\n";
  92. if ($count > $perpage)
  93. $HTMLOUT .= $pager['pagerbottom'];
  94. }
  95. }
  96. //== View application
  97. if ($action == "viewapp") {
  98. $id = (int) $_GET["id"];
  99. $res = sql_query("SELECT uploadapp.*, users.id AS uid, users.username, users.class, users.added, users.uploaded, users.downloaded FROM uploadapp INNER JOIN users on uploadapp.userid = users.id WHERE uploadapp.id=" . sqlesc($id)) or sqlerr(__FILE__, __LINE__);
  100. $arr = mysqli_fetch_assoc($res);
  101. $membertime = get_date($arr['added'], '', 0, 1);
  102. $elapsed = get_date($arr['applied'], '', 0, 1);
  103. if ($arr["downloaded"] == 0 && $arr["uploaded"] == 0)
  104. $ratio = '---';
  105. else if ($arr["downloaded"] == 0 && $arr["uploaded"] != 0)
  106. $ratio = 'Inf.';
  107. else
  108. $ratio = number_format($arr["uploaded"] / $arr["downloaded"], 3);
  109. $HTMLOUT .= "<h1 align='center'>Uploader application</h1>
  110. <table width='750' border='1' cellspacing='0' cellpadding='5'>
  111. <tr>
  112. <td class='rowhead' width='25%'>{$lang['uploadapps_username1']} </td><td><a href='{$INSTALLER09['baseurl']}/userdetails.php?id=$arr[uid]'>$arr[username]</a></td>
  113. </tr>
  114. <tr>
  115. <td class='rowhead'>{$lang['uploadapps_joined']} </td><td>" . htmlspecialchars($membertime) . "</td>
  116. </tr>
  117. <tr>
  118. <td class='rowhead'>{$lang['uploadapps_upped1']} </td><td>" . htmlspecialchars(mksize($arr["uploaded"])) . "</td>
  119. </tr>
  120. <tr>
  121. <td class='rowhead'>{$lang['uploadapps_downed']} </td><td>" . htmlspecialchars(mksize($arr["downloaded"])) . "</td>
  122. </tr>
  123. <tr>
  124. <td class='rowhead'>{$lang['uploadapps_ratio1']} </td><td>" . htmlspecialchars($ratio) . "</td>
  125. </tr>
  126. <tr>
  127. <td class='rowhead'>{$lang['uploadapps_connectable']} </td><td>" . htmlspecialchars($arr["connectable"]) . "</td>
  128. </tr>
  129. <tr>
  130. <td class='rowhead'>{$lang['uploadapps_class1']} </td><td>" . get_user_class_name($arr["class"]) . "</td>
  131. </tr>
  132. <tr>
  133. <td class='rowhead'>{$lang['uploadapps_applied1']} </td><td>" . htmlspecialchars($elapsed) . "</td>
  134. </tr>
  135. <tr>
  136. <td class='rowhead'>{$lang['uploadapps_upspeed']} </td><td>" . htmlspecialchars($arr["speed"]) . "</td>
  137. </tr>
  138. <tr>
  139. <td class='rowhead'>{$lang['uploadapps_offer']} </td><td>" . htmlspecialchars($arr["offer"]) . "</td>
  140. </tr>
  141. <tr>
  142. <td class='rowhead'>{$lang['uploadapps_why']} </td><td>" . htmlspecialchars($arr["reason"]) . "</td>
  143. </tr>
  144. <tr>
  145. <td class='rowhead'>{$lang['uploadapps_uploader']} </td><td>" . htmlspecialchars($arr["sites"]) . "</td>
  146. </tr>";
  147. if ($arr["sitenames"] != "")
  148. $HTMLOUT .= "<tr><td class='rowhead'>{$lang['uploadapps_sites']} </td><td>" . htmlspecialchars($arr["sitenames"]) . "</td></tr>
  149. <tr><td class='rowhead'>{$lang['uploadapps_axx']} </td><td>" . htmlspecialchars($arr["scene"]) . "</td></tr>
  150. <tr><td colspan='2'>{$lang['uploadapps_create']} <b>" . htmlspecialchars($arr["creating"]) . "</b><br />{$lang['uploadapps_seeding']} <b>" . htmlspecialchars($arr["seeding"]) . "</b></td></tr>";
  151. if ($arr["status"] == "pending")
  152. $HTMLOUT .= "<tr><td align='center' colspan='2'><form method='post' action='?action=acceptapp'><input name='id' type='hidden' value='" . intval($arr["id"]) . "' /><b>Note: (optional)</b><br /><input type='text' name='note' size='40' /> <input type='submit' value='Accept' style='height: 20px' /></form><br /><form method='post' action='?action=rejectapp'><input name='id' type='hidden' value='" . intval($arr["id"]) . "' /><b>Reason: (optional)</b><br /><input type='text' name='reason' size='40' /> <input type='submit' value='Reject' style='height: 20px' /></form></td></tr></table>";
  153. else
  154. $HTMLOUT .= "<tr><td colspan='2' align='center'>{$lang['uploadapps_application']} " . ($arr["status"] == "accepted" ? "accepted" : "rejected") . " by <b>" . htmlspecialchars($arr["moderator"]) . "</b><br />Comment: " . htmlspecialchars($arr["comment"]) . "</td></tr></table>
  155. <div align='center'><a href='{$INSTALLER09['baseurl']}/uploadapps.php'>Return to uploader applications page</a></div>";
  156. }
  157. //== Accept application
  158. if ($action == "acceptapp") {
  159. $id = 0 + $_POST["id"];
  160. if (!is_valid_id($id))
  161. stderr($lang['uploadapps_error'], $lang['uploadapps_noid']);
  162. $res = sql_query("SELECT uploadapp.id, users.username, users.modcomment, users.id AS uid FROM uploadapp INNER JOIN users on uploadapp.userid = users.id WHERE uploadapp.id = " . sqlesc($id)) or sqlerr(__FILE__, __LINE__);
  163. $arr = mysqli_fetch_assoc($res);
  164. $note = htmlspecialchars($_POST["note"]);
  165. $subject = sqlesc("Uploader Promotion");
  166. $msg = sqlesc("Congratulations, your uploader application has been accepted! You have been promoted to Uploader and you are now able to upload torrents. Please make sure you have read the [url={$INSTALLER09['baseurl']}/rules.php]guidelines on uploading[/url] before you do.\n\nNote: $note");
  167. $msg1 = sqlesc("User [url={$INSTALLER09['baseurl']}/userdetails.php?id=" . intval($arr['uid']) . "][b]" . htmlspecialchars($arr['username']) . "[/b][/url] has been promoted to Uploader by " . htmlspecialchars($CURUSER['username']) . ".");
  168. $modcomment = get_date(time(), 'DATE', 1) . " - Promoted to 'Uploader' by " . $CURUSER["username"] . "." . ($arr["modcomment"] != "" ? "\n" : "") . "{$arr['modcomment']}";
  169. $dt = sqlesc(time());
  170. sql_query("UPDATE uploadapp SET status = 'accepted', comment = " . sqlesc($note) . ", moderator = " . sqlesc($CURUSER["username"]) . " WHERE id=" . sqlesc($id)) or sqlerr(__FILE__, __LINE__);
  171. sql_query("UPDATE users SET class = 3, modcomment = " . sqlesc($modcomment) . " WHERE id=" . sqlesc($arr['uid']) . " AND class < " . UC_MODERATOR . "") or sqlerr(__FILE__, __LINE__);
  172. sql_query("INSERT INTO messages(sender, receiver, added, msg, subject, poster) VALUES(0, " . sqlesc($arr['uid']) . ", " . sqlesc($dt) . ", $msg, $subject, 0)") or sqlerr(__FILE__, __LINE__);
  173. $subres = sql_query("SELECT id FROM users WHERE class = 6") or sqlerr(__FILE__, __LINE__);
  174. while ($subarr = mysqli_fetch_assoc($subres))
  175. sql_query("INSERT INTO messages(sender, receiver, added, msg, subject, poster) VALUES(0, " . sqlesc($subarr['id']) . ", " . sqlesc($dt) . ", $msg1, $subject, 0)") or sqlerr(__FILE__, __LINE__);
  176. stderr("Application accepted", "The application was succesfully accepted. The user has been promoted and has been sent a PM notification. Click <a href='{$INSTALLER09['baseurl']}/uploadapps.php'><b>Here</b></a> to return to the upload applications page.");
  177. }
  178. //== Reject application
  179. if ($action == "rejectapp") {
  180. $id = 0 + $_POST["id"];
  181. if (!is_valid_id($id))
  182. stderr("Error", "It appears that there is no uploader application with that ID.");
  183. $res = sql_query("SELECT uploadapp.id, users.id AS uid FROM uploadapp INNER JOIN users on uploadapp.userid = users.id WHERE uploadapp.id=" . sqlesc($id)) or sqlerr(__FILE__, __LINE__);
  184. $arr = mysqli_fetch_assoc($res);
  185. $reason = htmlspecialchars($_POST["reason"]);
  186. $subject = sqlesc("Uploader Promotion");
  187. $msg = sqlesc("Sorry, your uploader application has been rejected. It appears that you are not qualified enough to become uploader.\n\nReason: $reason");
  188. $dt = sqlesc(time());
  189. sql_query("UPDATE uploadapp SET status = 'rejected', comment = " . sqlesc($reason) . ", moderator = " . sqlesc($CURUSER["username"]) . " WHERE id=" . sqlesc($id)) or sqlerr(__FILE__, __LINE__);
  190. sql_query("INSERT INTO messages(sender, receiver, added, msg, subject, poster) VALUES(0, " . sqlesc($arr['uid']) . ", " . sqlesc($dt) . ", $msg, $subject, 0)") or sqlerr(__FILE__, __LINE__);
  191. stderr("Application rejected", "The application was succesfully rejected. The user has been sent a PM notification. Click <a href='{$INSTALLER09['baseurl']}/uploadapps.php'><b>Here</b></a> to return to the upload applications page.");
  192. }
  193. //== Delete applications
  194. if ($action == "takeappdelete") {
  195. if (empty($_POST['deleteapp']))
  196. stderr('Silly Rabbit', 'Twix are for kids.. Check at least one application stupid...You cant delete nothing !');
  197. $res = sql_query("SELECT id FROM uploadapp WHERE id IN (" . implode(", ", $_POST["deleteapp"]) . ")") or sqlerr(__FILE__, __LINE__);
  198. while ($arr = mysqli_fetch_assoc($res))
  199. sql_query("DELETE FROM uploadapp WHERE id=" . sqlesc($arr['id'])) or sqlerr(__FILE__, __LINE__);
  200. stderr("Deleted", "The upload applications were succesfully deleted. Click <a href='{$INSTALLER09['baseurl']}/uploadapps.php'><b>Here</b></a> to return to the upload applications page.");
  201. }
  202. echo stdhead('Uploader application page') . $HTMLOUT . stdfoot();
  203. ?>