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.

grant_invites.php 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?
  2. //------------- Give out invites! ---------------------------------------//
  3. /*
  4. Well Endowed (POWER) have a cap of 2 invites. Bombshells (ELITE) have a cap of 3, Top Heavy (TORRENT_MASTER) have a cap of 4
  5. Every month, on the 8th and the 22nd, each user gets one invite up to their max.
  6. Then, every month, on the 8th and the 22nd, we give out bonus invites like this:
  7. Every POWER, ELITE, or TORRENT_MASTER whose total invitee ratio is above 0.75 and total invitee upload is over 2 GBs gets one invite.
  8. Every ELITE or TORRENT_MASTER whose total invitee ratio is above 2.0 and total invitee upload is over 10 GBs gets one more invite.
  9. Every TORRENT_MASTER whose total invitee ratio is above 3.0 and total invitee upload is over 20 GBs gets yet one more invite.
  10. This cascades, so if you qualify for the last bonus group, you also qualify for the first two and will receive three bonus invites.
  11. The bonus invites cannot put a user over their cap.
  12. */
  13. $DB->query("
  14. SELECT ID
  15. FROM users_main AS um
  16. JOIN users_info AS ui ON ui.UserID = um.ID
  17. WHERE um.Enabled = '1'
  18. AND ui.DisableInvites = '0'
  19. AND ((um.PermissionID = ".POWER."
  20. AND um.Invites < 2)
  21. OR (um.PermissionID = ".ELITE."
  22. AND um.Invites < 3)
  23. OR (um.PermissionID = ".TORRENT_MASTER."
  24. AND um.Invites < 4))");
  25. $UserIDs = $DB->collect('ID');
  26. if (count($UserIDs) > 0) {
  27. foreach ($UserIDs as $UserID) {
  28. $Cache->begin_transaction("user_info_heavy_$UserID");
  29. $Cache->update_row(false, array('Invites' => '+1'));
  30. $Cache->commit_transaction(0);
  31. }
  32. $DB->query('
  33. UPDATE users_main
  34. SET Invites = Invites + 1
  35. WHERE ID IN ('.implode(',', $UserIDs).')');
  36. }
  37. $BonusReqs = array(
  38. array(0.75, 2 * 1024 * 1024 * 1024),
  39. array(2.0, 10 * 1024 * 1024 * 1024),
  40. array(3.0, 20 * 1024 * 1024 * 1024));
  41. // Since MySQL doesn't like subselecting from the target table during an update, we must create a temporary table.
  42. $DB->query("
  43. CREATE TEMPORARY TABLE temp_sections_schedule_index
  44. SELECT SUM(Uploaded) AS Upload, SUM(Downloaded) AS Download, Inviter
  45. FROM users_main AS um
  46. JOIN users_info AS ui ON ui.UserID = um.ID
  47. GROUP BY Inviter");
  48. $DB->query("
  49. SELECT ID
  50. FROM users_main AS um
  51. JOIN users_info AS ui ON ui.UserID = um.ID
  52. JOIN temp_sections_schedule_index AS u ON u.Inviter = um.ID
  53. WHERE u.Upload > 0.75
  54. AND u.Upload / u.Download > ".(2*1024*1024*1024)."
  55. AND um.Enabled = '1'
  56. AND ui.DisableInvites = '0'
  57. AND ((um.PermissionID = ".POWER."
  58. AND um.Invites < 2)
  59. OR (um.PermissionID = ".ELITE."
  60. AND um.Invites < 3)
  61. OR (um.PermissionID = ".TORRENT_MASTER."
  62. AND um.Invites < 4))");
  63. $UserIDs = $DB->collect('ID');
  64. if (count($UserIDs) > 0) {
  65. foreach ($UserIDs as $UserID) {
  66. $Cache->begin_transaction("user_info_heavy_$UserID");
  67. $Cache->update_row(false, array('Invites' => '+1'));
  68. $Cache->commit_transaction(0);
  69. }
  70. $DB->query('
  71. UPDATE users_main
  72. SET Invites = Invites + 1
  73. WHERE ID IN ('.implode(',', $UserIDs).')');
  74. }
  75. $DB->query("
  76. SELECT ID
  77. FROM users_main AS um
  78. JOIN users_info AS ui ON ui.UserID = um.ID
  79. JOIN temp_sections_schedule_index AS u ON u.Inviter = um.ID
  80. WHERE u.Upload > 2.0
  81. AND u.Upload / u.Download > ".(10*1024*1024*1024)."
  82. AND um.Enabled = '1'
  83. AND ui.DisableInvites = '0'
  84. AND ((um.PermissionID = ".ELITE."
  85. AND um.Invites < 3)
  86. OR (um.PermissionID = ".TORRENT_MASTER."
  87. AND um.Invites < 4)
  88. )");
  89. $UserIDs = $DB->collect('ID');
  90. if (count($UserIDs) > 0) {
  91. foreach ($UserIDs as $UserID) {
  92. $Cache->begin_transaction("user_info_heavy_$UserID");
  93. $Cache->update_row(false, array('Invites' => '+1'));
  94. $Cache->commit_transaction(0);
  95. }
  96. $DB->query('
  97. UPDATE users_main
  98. SET Invites = Invites + 1
  99. WHERE ID IN ('.implode(',', $UserIDs).')');
  100. }
  101. $DB->query("
  102. SELECT ID
  103. FROM users_main AS um
  104. JOIN users_info AS ui ON ui.UserID = um.ID
  105. JOIN temp_sections_schedule_index AS u ON u.Inviter = um.ID
  106. WHERE u.Upload > 3.0
  107. AND u.Upload / u.Download > ".(20*1024*1024*1024)."
  108. AND um.Enabled = '1'
  109. AND ui.DisableInvites = '0'
  110. AND (um.PermissionID = ".TORRENT_MASTER."
  111. AND um.Invites < 4)");
  112. $UserIDs = $DB->collect('ID');
  113. if (count($UserIDs) > 0) {
  114. foreach ($UserIDs as $UserID) {
  115. $Cache->begin_transaction("user_info_heavy_$UserID");
  116. $Cache->update_row(false, array('Invites' => '+1'));
  117. $Cache->commit_transaction(0);
  118. }
  119. $DB->query('
  120. UPDATE users_main
  121. SET Invites = Invites + 1
  122. WHERE ID IN ('.implode(',', $UserIDs).')');
  123. }
  124. ?>