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.

linkedfunctions.php 7.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. <?
  2. function link_users($UserID, $TargetID) {
  3. global $DB, $LoggedUser;
  4. authorize();
  5. if (!check_perms('users_mod')) {
  6. error(403);
  7. }
  8. if (!is_number($UserID) || !is_number($TargetID)) {
  9. error(403);
  10. }
  11. if ($UserID == $TargetID) {
  12. return;
  13. }
  14. $DB->query("
  15. SELECT 1
  16. FROM users_main
  17. WHERE ID IN ($UserID, $TargetID)");
  18. if ($DB->record_count() !== 2) {
  19. error(403);
  20. }
  21. $DB->query("
  22. SELECT GroupID
  23. FROM users_dupes
  24. WHERE UserID = $TargetID");
  25. list($TargetGroupID) = $DB->next_record();
  26. $DB->query("
  27. SELECT u.GroupID, d.Comments
  28. FROM users_dupes AS u
  29. JOIN dupe_groups AS d ON d.ID = u.GroupID
  30. WHERE UserID = $UserID");
  31. list($UserGroupID, $Comments) = $DB->next_record();
  32. $UserInfo = Users::user_info($UserID);
  33. $TargetInfo = Users::user_info($TargetID);
  34. if (!$UserInfo || !$TargetInfo) {
  35. return;
  36. }
  37. if ($TargetGroupID) {
  38. if ($TargetGroupID == $UserGroupID) {
  39. return;
  40. }
  41. if ($UserGroupID) {
  42. $DB->query("
  43. UPDATE users_dupes
  44. SET GroupID = $TargetGroupID
  45. WHERE GroupID = $UserGroupID");
  46. $DB->query("
  47. UPDATE dupe_groups
  48. SET Comments = CONCAT('".db_string($Comments)."\n\n',Comments)
  49. WHERE ID = $TargetGroupID");
  50. $DB->query("DELETE FROM dupe_groups WHERE ID = $UserGroupID");
  51. $GroupID = $UserGroupID;
  52. } else {
  53. $DB->query("INSERT INTO users_dupes (UserID, GroupID) VALUES ($UserID, $TargetGroupID)");
  54. $GroupID = $TargetGroupID;
  55. }
  56. } elseif ($UserGroupID) {
  57. $DB->query("INSERT INTO users_dupes (UserID, GroupID) VALUES ($TargetID, $UserGroupID)");
  58. $GroupID = $UserGroupID;
  59. } else {
  60. $DB->query("INSERT INTO dupe_groups () VALUES ()");
  61. $GroupID = $DB->inserted_id();
  62. $DB->query("INSERT INTO users_dupes (UserID, GroupID) VALUES ($TargetID, $GroupID)");
  63. $DB->query("INSERT INTO users_dupes (UserID, GroupID) VALUES ($UserID, $GroupID)");
  64. }
  65. $AdminComment = sqltime()." - Linked accounts updated: [user]".$UserInfo['Username']."[/user] and [user]".$TargetInfo['Username']."[/user] linked by ".$LoggedUser['Username'];
  66. $DB->query("
  67. UPDATE users_info AS i
  68. JOIN users_dupes AS d ON d.UserID = i.UserID
  69. SET i.AdminComment = CONCAT('".db_string($AdminComment)."\n\n', i.AdminComment)
  70. WHERE d.GroupID = $GroupID");
  71. }
  72. function unlink_user($UserID) {
  73. global $DB, $LoggedUser;
  74. authorize();
  75. if (!check_perms('users_mod')) {
  76. error(403);
  77. }
  78. if (!is_number($UserID)) {
  79. error(403);
  80. }
  81. $UserInfo = Users::user_info($UserID);
  82. if ($UserInfo === false) {
  83. return;
  84. }
  85. $AdminComment = sqltime()." - Linked accounts updated: [user]".$UserInfo['Username']."[/user] unlinked by ".$LoggedUser['Username'];
  86. $DB->query("
  87. UPDATE users_info AS i
  88. JOIN users_dupes AS d1 ON d1.UserID = i.UserID
  89. JOIN users_dupes AS d2 ON d2.GroupID = d1.GroupID
  90. SET i.AdminComment = CONCAT('".db_string($AdminComment)."\n\n', i.AdminComment)
  91. WHERE d2.UserID = $UserID");
  92. $DB->query("DELETE FROM users_dupes WHERE UserID = '$UserID'");
  93. $DB->query("
  94. DELETE g.*
  95. FROM dupe_groups AS g
  96. LEFT JOIN users_dupes AS u ON u.GroupID = g.ID
  97. WHERE u.GroupID IS NULL");
  98. }
  99. function delete_dupegroup($GroupID) {
  100. global $DB;
  101. authorize();
  102. if (!check_perms('users_mod')) {
  103. error(403);
  104. }
  105. if (!is_number($GroupID)) {
  106. error(403);
  107. }
  108. $DB->query("DELETE FROM dupe_groups WHERE ID = '$GroupID'");
  109. }
  110. function dupe_comments($GroupID, $Comments) {
  111. global $DB, $LoggedUser;
  112. authorize();
  113. if (!check_perms('users_mod')) {
  114. error(403);
  115. }
  116. if (!is_number($GroupID)) {
  117. error(403);
  118. }
  119. $DB->query("
  120. SELECT SHA1(Comments) AS CommentHash
  121. FROM dupe_groups
  122. WHERE ID = $GroupID");
  123. list($OldCommentHash) = $DB->next_record();
  124. if ($OldCommentHash != sha1($Comments)) {
  125. $AdminComment = sqltime()." - Linked accounts updated: Comments updated by ".$LoggedUser['Username'];
  126. if ($_POST['form_comment_hash'] == $OldCommentHash) {
  127. $DB->query("
  128. UPDATE dupe_groups
  129. SET Comments = '".db_string($Comments)."'
  130. WHERE ID = '$GroupID'");
  131. } else {
  132. $DB->query("
  133. UPDATE dupe_groups
  134. SET Comments = CONCAT('".db_string($Comments)."\n\n',Comments)
  135. WHERE ID = '$GroupID'");
  136. }
  137. $DB->query("
  138. UPDATE users_info AS i
  139. JOIN users_dupes AS d ON d.UserID = i.UserID
  140. SET i.AdminComment = CONCAT('".db_string($AdminComment)."\n\n', i.AdminComment)
  141. WHERE d.GroupID = $GroupID");
  142. }
  143. }
  144. function user_dupes_table($UserID) {
  145. global $DB, $LoggedUser;
  146. if (!check_perms('users_mod')) {
  147. error(403);
  148. }
  149. if (!is_number($UserID)) {
  150. error(403);
  151. }
  152. $DB->query("
  153. SELECT d.ID, d.Comments, SHA1(d.Comments) AS CommentHash
  154. FROM dupe_groups AS d
  155. JOIN users_dupes AS u ON u.GroupID = d.ID
  156. WHERE u.UserID = $UserID");
  157. if (list($GroupID, $Comments, $CommentHash) = $DB->next_record()) {
  158. $DB->query("
  159. SELECT m.ID
  160. FROM users_main AS m
  161. JOIN users_dupes AS d ON m.ID = d.UserID
  162. WHERE d.GroupID = $GroupID
  163. ORDER BY m.ID ASC");
  164. $DupeCount = $DB->record_count();
  165. $Dupes = $DB->to_array();
  166. } else {
  167. $DupeCount = 0;
  168. $Dupes = array();
  169. }
  170. ?>
  171. <form class="manage_form" name="user" method="post" id="linkedform" action="">
  172. <input type="hidden" name="action" value="dupes" />
  173. <input type="hidden" name="dupeaction" value="update" />
  174. <input type="hidden" name="userid" value="<?=$UserID?>" />
  175. <input type="hidden" id="auth" name="auth" value="<?=$LoggedUser['AuthKey']?>" />
  176. <input type="hidden" id="form_comment_hash" name="form_comment_hash" value="<?=$CommentHash?>" />
  177. <div class="box box2" id="l_a_box">
  178. <div class="head">
  179. Linked Accounts (<?=max($DupeCount - 1, 0)?>) <span style="float: right;"><a toggle-target=".linkedaccounts" class="brackets">Toggle</a></span>
  180. </div>
  181. <table width="100%" class="layout hidden linkedaccounts">
  182. <?=($DupeCount ? "<tr>\n" : '')?>
  183. <?
  184. $i = 0;
  185. foreach ($Dupes as $Dupe) {
  186. $i++;
  187. list($DupeID) = $Dupe;
  188. $DupeInfo = Users::user_info($DupeID);
  189. ?>
  190. <td align="left"><?=Users::format_username($DupeID, true, true, true, true)?>
  191. <a href="user.php?action=dupes&amp;dupeaction=remove&amp;auth=<?=$LoggedUser['AuthKey']?>&amp;userid=<?=$UserID?>&amp;removeid=<?=$DupeID?>" onclick="return confirm('Are you sure you wish to remove <?=$DupeInfo['Username']?> from this group?');" class="brackets tooltip" title="Remove linked account">X</a>
  192. </td>
  193. <?
  194. if ($i == 4) {
  195. $i = 0;
  196. echo "\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n";
  197. }
  198. }
  199. if ($DupeCount) {
  200. if ($i !== 0) {
  201. for ($j = $i; $j < 4; $j++) {
  202. echo "\t\t\t\t\t\t<td>&nbsp;</td>\n";
  203. }
  204. }
  205. ?>
  206. </tr>
  207. <? } ?>
  208. <tr>
  209. <td colspan="5" align="left" style="border-top: thin solid;"><strong>Comments:</strong></td>
  210. </tr>
  211. <tr>
  212. <td colspan="5" align="left">
  213. <div id="dupecomments" class="<?=($DupeCount ? '' : 'hidden')?>"><?=Text::full_format($Comments);?></div>
  214. <div id="editdupecomments" class="<?=($DupeCount ? 'hidden' : '')?>">
  215. <textarea name="dupecomments" onkeyup="resize('dupecommentsbox');" id="dupecommentsbox" cols="65" rows="5" style="width: 98%;"><?=display_str($Comments)?></textarea>
  216. </div>
  217. <span style="float: right;"><a href="#" onclick="$('#dupecomments').gtoggle(); $('#editdupecomments').gtoggle(); resize('dupecommentsbox'); return false;" class="brackets">Edit linked account comments</a></span>
  218. </td>
  219. </tr>
  220. </table>
  221. <div class="pad hidden linkedaccounts">
  222. <label for="target">Link this user with: </label>
  223. <input type="text" name="target" id="target" />
  224. <input type="submit" value="Update" id="submitlink" />
  225. </div>
  226. </div>
  227. </form>
  228. <?
  229. }
  230. ?>