Oppaitime's version of Gazelle
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

class_promotion.php 5.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?
  2. //------------- Promote users -------------------------------------------//
  3. // Disabled in favor of store-based promotions
  4. /*
  5. sleep(5);
  6. $GiB = 1024*1024*1024;
  7. $Criteria = array();
  8. $Criteria[] = array(
  9. 'From' => USER,
  10. 'To' => MEMBER,
  11. 'MinUpload' => 10 * $GiB,
  12. 'MinRatio' => 0.7,
  13. 'MinUploads' => 0,
  14. 'MaxTime' => time_minus(3600 * 24 * 7)
  15. );
  16. $Criteria[] = array(
  17. 'From' => MEMBER,
  18. 'To' => POWER,
  19. 'MinUpload' => 100 * $GiB,
  20. 'MinRatio' => 1.1,
  21. 'MinUploads' => 5,
  22. 'MaxTime' => time_minus(3600 * 24 * 7 * 2)
  23. );
  24. $Criteria[] = array(
  25. 'From' => POWER,
  26. 'To' => ELITE,
  27. 'MinUpload' => 500 * $GiB,
  28. 'MinRatio' => 1.2,
  29. 'MinUploads' => 50,
  30. 'MaxTime' => time_minus(3600 * 24 * 7 * 4)
  31. );
  32. $Criteria[] = array(
  33. 'From' => ELITE,
  34. 'To' => TORRENT_MASTER,
  35. 'MinUpload' => 1024 * $GiB,
  36. 'MinRatio' => 1.3,
  37. 'MinUploads' => 200,
  38. 'MaxTime' => time_minus(3600 * 24 * 7 * 8)
  39. );
  40. $Criteria[] = array(
  41. 'From' => TORRENT_MASTER,
  42. 'To' => POWER_TM,
  43. 'MinUpload' => 1.5 * 1024 * $GiB,
  44. 'MinRatio' => 1.3,
  45. 'MinUploads' => 200,
  46. 'MaxTime' => time_minus(3600 * 24 * 7 * 8),
  47. 'Extra' => '
  48. (
  49. SELECT COUNT(DISTINCT GroupID)
  50. FROM torrents
  51. WHERE UserID = users_main.ID
  52. ) >= 300');
  53. /*$Criteria[] = array(
  54. 'From' => POWER_TM,
  55. 'To' => ELITE_TM,
  56. 'MinUpload' => 2 * 1024 * 1024 * 1024 * 1024,
  57. 'MinRatio' => 1.3,
  58. 'MinUploads' => 400,
  59. 'MaxTime' => time_minus(3600 * 24 * 7 * 8),
  60. 'Extra' => '
  61. (
  62. SELECT COUNT(DISTINCT GroupID)
  63. FROM torrents
  64. WHERE UserID = users_main.ID
  65. ) >= 400');
  66. 'Extra' => "
  67. (
  68. SELECT COUNT(ID)
  69. FROM torrents
  70. WHERE ((LogScore = 100 AND Format = 'FLAC')
  71. OR (Media = 'Vinyl' AND Format = 'FLAC')
  72. OR (Media = 'WEB' AND Format = 'FLAC')
  73. OR (Media = 'DVD' AND Format = 'FLAC')
  74. OR (Media = 'Soundboard' AND Format = 'FLAC')
  75. OR (Media = 'Cassette' AND Format = 'FLAC')
  76. OR (Media = 'SACD' AND Format = 'FLAC')
  77. OR (Media = 'Blu-ray' AND Format = 'FLAC')
  78. OR (Media = 'DAT' AND Format = 'FLAC')
  79. )
  80. AND UserID = users_main.ID
  81. ) >= 500");
  82. foreach ($Criteria as $L) { // $L = Level
  83. $Query = "
  84. SELECT ID
  85. FROM users_main
  86. JOIN users_info ON users_main.ID = users_info.UserID
  87. WHERE PermissionID = ".$L['From']."
  88. AND Warned = NULL
  89. AND Uploaded >= '$L[MinUpload]'
  90. AND (Uploaded / Downloaded >= '$L[MinRatio]' OR (Uploaded / Downloaded IS NULL))
  91. AND JoinDate < '$L[MaxTime]'
  92. AND (
  93. SELECT COUNT(ID)
  94. FROM torrents
  95. WHERE UserID = users_main.ID
  96. ) >= '$L[MinUploads]'
  97. AND Enabled = '1'";
  98. if (!empty($L['Extra'])) {
  99. $Query .= ' AND '.$L['Extra'];
  100. }
  101. $DB->query($Query);
  102. $UserIDs = $DB->collect('ID');
  103. if (count($UserIDs) > 0) {
  104. $DB->query("
  105. UPDATE users_main
  106. SET PermissionID = ".$L['To']."
  107. WHERE ID IN(".implode(',', $UserIDs).')');
  108. foreach ($UserIDs as $UserID) {
  109. /*$Cache->begin_transaction("user_info_$UserID");
  110. $Cache->update_row(false, array('PermissionID' => $L['To']));
  111. $Cache->commit_transaction(0);
  112. $Cache->delete_value("user_info_$UserID");
  113. $Cache->delete_value("user_info_heavy_$UserID");
  114. $Cache->delete_value("user_stats_$UserID");
  115. $Cache->delete_value("enabled_$UserID");
  116. $DB->query("
  117. UPDATE users_info
  118. SET AdminComment = CONCAT('".sqltime()." - Class changed to ".Users::make_class_string($L['To'])." by System\n\n', AdminComment)
  119. WHERE UserID = $UserID");
  120. Misc::send_pm($UserID, 0, 'You have been promoted to '.Users::make_class_string($L['To']), 'Congratulations on your promotion to '.Users::make_class_string($L['To'])."!\n\nTo read more about ".SITE_NAME."'s user classes, read [url=".site_url()."wiki.php?action=article&amp;name=userclasses]this wiki article[/url].");
  121. }
  122. }
  123. // Demote users with less than the required uploads
  124. $Query = "
  125. SELECT ID
  126. FROM users_main
  127. JOIN users_info ON users_main.ID = users_info.UserID
  128. WHERE PermissionID = '$L[To]'
  129. AND ( Uploaded < '$L[MinUpload]'
  130. OR (
  131. SELECT COUNT(ID)
  132. FROM torrents
  133. WHERE UserID = users_main.ID
  134. ) < '$L[MinUploads]'";
  135. if (!empty($L['Extra'])) {
  136. $Query .= ' OR NOT '.$L['Extra'];
  137. }
  138. $Query .= "
  139. )
  140. AND Enabled = '1'";
  141. $DB->query($Query);
  142. $UserIDs = $DB->collect('ID');
  143. if (count($UserIDs) > 0) {
  144. $DB->query("
  145. UPDATE users_main
  146. SET PermissionID = ".$L['From']."
  147. WHERE ID IN(".implode(',', $UserIDs).')');
  148. foreach ($UserIDs as $UserID) {
  149. /*$Cache->begin_transaction("user_info_$UserID");
  150. $Cache->update_row(false, array('PermissionID' => $L['From']));
  151. $Cache->commit_transaction(0);
  152. $Cache->delete_value("user_info_$UserID");
  153. $Cache->delete_value("user_info_heavy_$UserID");
  154. $Cache->delete_value("user_stats_$UserID");
  155. $Cache->delete_value("enabled_$UserID");
  156. $DB->query("
  157. UPDATE users_info
  158. SET AdminComment = CONCAT('".sqltime()." - Class changed to ".Users::make_class_string($L['From'])." by System\n\n', AdminComment)
  159. WHERE UserID = $UserID");
  160. Misc::send_pm($UserID, 0, 'You have been demoted to '.Users::make_class_string($L['From']), "You now only qualify for the \"".Users::make_class_string($L['From'])."\" user class.\n\nTo read more about ".SITE_NAME."'s user classes, read [url=".site_url()."wiki.php?action=article&amp;name=userclasses]this wiki article[/url].");
  161. }
  162. }
  163. }
  164. */
  165. ?>