misc_invite.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: misc_invite.php 33107 2013-04-26 03:43:21Z andyzheng $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. require_once libfile('function/friend');
  12. $_GET['action'] = dhtmlspecialchars(preg_replace("/[^\[A-Za-z0-9_\]]/", '', $_GET['action']));
  13. $friendgrouplist = friend_group_list();
  14. if($_GET['action'] == 'group') {
  15. $id = intval($_GET['id']);
  16. $groupuserinfo = C::t('forum_groupuser')->fetch_userinfo($_G['uid'], $id);
  17. if(empty($groupuserinfo['uid'])) {
  18. showmessage('group_invite_failed');
  19. }
  20. $foruminfo = C::t('forum_forum')->fetch($id);
  21. $grouplevel = $foruminfo['level'];
  22. loadcache('grouplevels');
  23. $grouplevel = $_G['grouplevels'][$grouplevel];
  24. $membermaximum = $grouplevel['specialswitch']['membermaximum'];
  25. if(!empty($membermaximum)) {
  26. $curnum = C::t('forum_groupuser')->fetch_count_by_fid($id, -1);
  27. if($curnum >= $membermaximum) {
  28. showmessage('group_member_maximum', '', array('membermaximum' => $membermaximum));
  29. }
  30. }
  31. $groupname = $foruminfo['name'];
  32. $invitename = lang('group/misc', 'group_join', array('groupname' => $groupname));
  33. if(!submitcheck('invitesubmit')) {
  34. $friends = friend_list($_G['uid'], 100);
  35. if(!empty($friends)) {
  36. $frienduids = array_keys($friends);
  37. $inviteduids = array();
  38. $query = C::t('forum_groupinvite')->fetch_all_inviteuid($id, $frienduids, $_G['uid']);
  39. foreach($query as $inviteuser) {
  40. $inviteduids[$inviteuser['inviteuid']] = $inviteuser['inviteuid'];
  41. }
  42. $query = C::t('forum_groupuser')->fetch_all_userinfo($frienduids, $id);
  43. foreach($query as $inviteuser) {
  44. $inviteduids[$inviteuser['uid']] = $inviteuser['uid'];
  45. }
  46. }
  47. $inviteduids = !empty($inviteduids) ? implode(',', $inviteduids) : '';
  48. } else {
  49. $uids = $_GET['uids'];
  50. if($uids) {
  51. if(count($uids) > 20) {
  52. showmessage('group_choose_friends_max');
  53. }
  54. foreach(C::t('common_member')->fetch_all($uids, false, 0) as $uid => $user) {
  55. C::t('forum_groupinvite')->insert(array('fid' => $id, 'uid' => $_G['uid'], 'inviteuid' => $uid, 'dateline' => TIMESTAMP), true, true);
  56. $already = C::t('forum_groupinvite')->affected_rows();
  57. if($already == 1) {
  58. notification_add($uid, 'group', 'group_member_invite', array('groupname' => $groupname, 'fid' => $id, 'url' =>'forum.php?mod=group&action=join&fid='.$id, 'from_id' => $id, 'from_idtype' => 'invite_group'), 1);
  59. }
  60. }
  61. showmessage('group_invite_succeed', "forum.php?mod=group&fid=$id");
  62. } else {
  63. showmessage('group_invite_choose_member', "forum.php?mod=group&fid=$id");
  64. }
  65. }
  66. } elseif($_GET['action'] == 'thread') {
  67. $inviteduids = array();
  68. $id = intval($_GET['id']);
  69. $thread = C::t('forum_thread')->fetch($id);
  70. $at = 0;
  71. $maxselect = 20;
  72. if(empty($_GET['activity'])) {
  73. $at = 1;
  74. $maxselect = 0;
  75. if($_G['group']['allowat']) {
  76. $atnum = 0;
  77. foreach(C::t('home_notification')->fetch_all_by_authorid_fromid($_G['uid'], $id, 'at') as $row) {
  78. $atnum ++;
  79. $inviteduids[$row[uid]] = $row['uid'];
  80. }
  81. $maxselect = $_G['group']['allowat'] - $atnum;
  82. } else {
  83. showmessage('noperm_at_user');
  84. }
  85. if($maxselect <= 0) {
  86. showmessage('thread_at_usernum_limit');
  87. }
  88. $invitename = lang('forum/misc', 'at_invite');
  89. } else {
  90. $invitename = lang('forum/misc', 'join_activity');
  91. }
  92. if(!submitcheck('invitesubmit')) {
  93. $inviteduids = !empty($inviteduids) ? implode(',', $inviteduids) : '';
  94. } else {
  95. $uids = $_GET['uids'];
  96. if($uids) {
  97. if(count($uids) > $maxselect) {
  98. showmessage('group_choose_friends_max');
  99. }
  100. $post = C::t('forum_post')->fetch_threadpost_by_tid_invisible($id);
  101. require_once libfile('function/post');
  102. $post['message'] = messagecutstr($post['message'], 150);
  103. foreach(C::t('common_member')->fetch_all($uids, false, 0) as $uid => $user) {
  104. if($at) {
  105. notification_add($uid, 'at', 'at_message', array('from_id' => $id, 'from_idtype' => 'at', 'buyerid' => $_G['uid'], 'buyer' => $_G['username'], 'tid' => $id, 'subject' => $thread['subject'], 'pid' => $post['pid'], 'message' => $post['message']));
  106. } else {
  107. notification_add($uid, 'thread', 'thread_invite', array('subject' => $thread['subject'], 'invitename' => $invitename, 'tid' => $id, 'from_id' => $id, 'from_idtype' => 'invite_thread'));
  108. }
  109. }
  110. showmessage(($at ? 'at_succeed' : 'group_invite_succeed'), "forum.php?mod=viewthread&tid=$id");
  111. } else {
  112. showmessage(($at ? 'at_choose_member' : 'group_invite_choose_member'), "forum.php?mod=viewthread&tid=$id");
  113. }
  114. }
  115. } elseif($_GET['action'] == 'blog') {
  116. $id = intval($_GET['id']);
  117. $blog = C::t('home_blog')->fetch($id);
  118. if(!submitcheck('invitesubmit')) {
  119. $inviteduids = '';
  120. } else {
  121. $uids = $_GET['uids'];
  122. if($uids) {
  123. if(count($uids) > 20) {
  124. showmessage('group_choose_friends_max');
  125. }
  126. foreach(C::t('common_member')->fetch_all($uids, false, 0) as $uid => $user) {
  127. notification_add($uid, 'blog', 'blog_invite', array('subject' => $blog['subject'], 'uid' => $blog['uid'], 'blogid' => $id, 'from_id' => $id, 'from_idtype' => 'invite_blog'));
  128. }
  129. showmessage('group_invite_succeed', "home.php?mod=space&uid=".$blog['uid']."&do=blog&id=$id");
  130. } else {
  131. showmessage('group_invite_choose_member', "home.php?mod=space&uid=".$blog['uid']."&do=blog&id=$id");
  132. }
  133. }
  134. } elseif($_GET['action'] == 'article') {
  135. $id = intval($_GET['id']);
  136. $article = C::t('portal_article_title')->fetch($id);
  137. if(!submitcheck('invitesubmit')) {
  138. $inviteduids = '';
  139. } else {
  140. require_once libfile('function/portal');
  141. $article_url = fetch_article_url($article);
  142. $uids = $_GET['uids'];
  143. if($uids) {
  144. if(count($uids) > 20) {
  145. showmessage('group_choose_friends_max');
  146. }
  147. foreach(C::t('common_member')->fetch_all($uids, false, 0) as $uid => $user) {
  148. notification_add($uid, 'article', 'article_invite', array('subject' => $article['title'], 'url' => $article_url, 'from_id' => $id, 'from_idtype' => 'invite_article'));
  149. }
  150. showmessage('group_invite_succeed', $article_url);
  151. } else {
  152. showmessage('group_invite_choose_member', $article_url);
  153. }
  154. }
  155. }
  156. include template('common/invite');
  157. ?>