PageRenderTime 47ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/source/include/space/space_pm.php

https://github.com/jinbo51/DiscuzX
PHP | 217 lines | 185 code | 26 blank | 6 comment | 59 complexity | d07b0fa7bc01686482b9921653db31d3 MD5 | raw file
Possible License(s): BSD-3-Clause
  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: space_pm.php 33421 2013-06-09 03:30:16Z jeffjzhang $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. loaducenter();
  12. $list = array();
  13. $plid = empty($_GET['plid'])?0:intval($_GET['plid']);
  14. $daterange = empty($_GET['daterange'])?0:intval($_GET['daterange']);
  15. $touid = empty($_GET['touid'])?0:intval($_GET['touid']);
  16. $opactives['pm'] = 'class="a"';
  17. if(empty($_G['member']['category_num']['manage']) && !in_array($_G['adminid'], array(1,2,3))) {
  18. unset($_G['notice_structure']['manage']);
  19. }
  20. if($_GET['subop'] == 'view') {
  21. $type = $_GET['type'];
  22. $page = empty($_GET['page']) ? 0 : intval($_GET['page']);
  23. $chatpmmember = intval($_GET['chatpmmember']);
  24. $chatpmmemberlist = array();
  25. if($chatpmmember) {
  26. $chatpmmember = uc_pm_chatpmmemberlist($_G['uid'], $plid);
  27. if(!empty($chatpmmember)) {
  28. $authorid = $founderuid = $chatpmmember['author'];
  29. $chatpmmemberlist = C::t('common_member')->fetch_all($chatpmmember['member']);
  30. foreach(C::t('common_member_field_home')->fetch_all($chatpmmember['member']) as $uid => $member) {
  31. $chatpmmemberlist[$uid] = array_merge($member, $chatpmmemberlist[$uid]);
  32. }
  33. }
  34. require_once libfile('function/friend');
  35. $friendgrouplist = friend_group_list();
  36. $actives = array('chatpmmember'=>' class="a"');
  37. } else {
  38. if($touid) {
  39. $ols = array();
  40. if(defined('IN_MOBILE')) {
  41. $perpage = 5;
  42. } else {
  43. $perpage = 10;
  44. }
  45. $perpage = mob_perpage($perpage);
  46. if(!$daterange) {
  47. $member = getuserbyuid($touid);
  48. $tousername = $member['username'];
  49. unset($member);
  50. $count = uc_pm_view_num($_G['uid'], $touid, 0);
  51. if(!$page) {
  52. $page = ceil($count/$perpage);
  53. }
  54. $list = uc_pm_view($_G['uid'], 0, $touid, 5, ceil($count/$perpage)-$page+1, $perpage, 0, 0);
  55. $multi = pmmulti($count, $perpage, $page, "home.php?mod=space&do=pm&subop=view&touid=$touid");
  56. } else {
  57. showmessage('parameters_error');
  58. }
  59. } else {
  60. if(defined('IN_MOBILE')) {
  61. $perpage = 10;
  62. } else {
  63. $perpage = 50;
  64. }
  65. $perpage = mob_perpage($perpage);
  66. $count = uc_pm_view_num($_G['uid'], $plid, 1);
  67. if(!$daterange) {
  68. if(!$page) {
  69. $page = ceil($count/$perpage);
  70. }
  71. $list = uc_pm_view($_G['uid'], 0, $plid, 5, ceil($count/$perpage)-$page+1, $perpage, $type, 1);
  72. $multi = pmmulti($count, $perpage, $page, "home.php?mod=space&do=pm&subop=view&plid=$plid&type=$type");
  73. } else {
  74. $list = uc_pm_view($_G['uid'], 0, $plid, 5, ceil($count/$perpage)-$page+1, $perpage, $type, 1);
  75. $chatpmmember = uc_pm_chatpmmemberlist($_G['uid'], $plid);
  76. if(!empty($chatpmmember)) {
  77. $authorid = $founderuid = $chatpmmember['author'];
  78. $chatpmmemberlist = C::t('common_member')->fetch_all($chatpmmember['member']);
  79. foreach(C::t('common_member_field_home')->fetch_all($chatpmmember['member']) as $uid => $member) {
  80. $chatpmmemberlist[$uid] = array_merge($member, $chatpmmemberlist[$uid]);
  81. }
  82. foreach(C::app()->session->fetch_all_by_uid($chatpmmember['member']) as $value) {
  83. if(!$value['invisible']) {
  84. $ols[$value['uid']] = $value['lastactivity'];
  85. }
  86. }
  87. }
  88. $membernum = count($chatpmmemberlist);
  89. $subject = $list[0]['subject'];
  90. $refreshtime = $_G['setting']['chatpmrefreshtime'];
  91. }
  92. }
  93. $founderuid = empty($list)?0:$list[0]['founderuid'];
  94. $pmid = empty($list)?0:$list[0]['pmid'];
  95. }
  96. $actives['privatepm'] = ' class="a"';
  97. } elseif($_GET['subop'] == 'viewg') {
  98. $grouppm = C::t('common_grouppm')->fetch($_GET['pmid']);
  99. if(!$grouppm) {
  100. $grouppm = array_merge((array)C::t('common_member_grouppm')->fetch($_G['uid'], $_GET['pmid']), $grouppm);
  101. }
  102. if($grouppm) {
  103. $grouppm['numbers'] = $grouppm['numbers'] - 1;
  104. }
  105. if(!$grouppm['status']) {
  106. C::t('common_member_grouppm')->update($_G['uid'], $_GET['pmid'], array('status' => 1, 'dateline' => TIMESTAMP));
  107. }
  108. $actives['announcepm'] = ' class="a"';
  109. } elseif($_GET['subop'] == 'ignore') {
  110. $ignorelist = uc_pm_blackls_get($_G['uid']);
  111. $actives = array('ignore'=>' class="a"');
  112. } elseif($_GET['subop'] == 'setting') {
  113. $actives = array('setting'=>' class="a"');
  114. $acceptfriendpmstatus = $_G['member']['onlyacceptfriendpm'] ? $_G['member']['onlyacceptfriendpm'] : ($_G['setting']['onlyacceptfriendpm'] ? 1 : 2);
  115. $ignorelist = uc_pm_blackls_get($_G['uid']);
  116. } else {
  117. $filter = in_array($_GET['filter'], array('newpm', 'privatepm', 'announcepm')) ? $_GET['filter'] : 'privatepm';
  118. $perpage = 15;
  119. $perpage = mob_perpage($perpage);
  120. $page = empty($_GET['page'])?0:intval($_GET['page']);
  121. if($page<1) $page = 1;
  122. $grouppms = $gpmids = $gpmstatus = array();
  123. $newpm = $newpmcount = 0;
  124. if($filter == 'privatepm' && $page == 1 || $filter == 'announcepm' || $filter == 'newpm') {
  125. $announcepm = 0;
  126. foreach(C::t('common_member_grouppm')->fetch_all_by_uid($_G['uid'], $filter == 'announcepm' ? 1 : 0) as $gpmid => $gpuser) {
  127. $gpmstatus[$gpmid] = $gpuser['status'];
  128. if($gpuser['status'] == 0) {
  129. $announcepm ++;
  130. }
  131. }
  132. $gpmids = array_keys($gpmstatus);
  133. if($gpmids) {
  134. foreach(C::t('common_grouppm')->fetch_all_by_id_authorid($gpmids) as $grouppm) {
  135. $grouppm['message'] = cutstr(strip_tags($grouppm['message']), 100, '');
  136. $grouppms[] = $grouppm;
  137. }
  138. }
  139. }
  140. if($filter == 'privatepm' || $filter == 'newpm') {
  141. $result = uc_pm_list($_G['uid'], $page, $perpage, 'inbox', $filter, 200);
  142. $count = $result['count'];
  143. $list = $result['data'];
  144. }
  145. if($filter == 'privatepm' && $page == 1 || $filter == 'newpm') {
  146. $newpmarr = uc_pm_checknew($_G['uid'], 1);
  147. $newpm = $newpmarr['newpm'];
  148. }
  149. $newpmcount = $newpm + $announcepm;
  150. if($_G['member']['newpm']) {
  151. if($newpm && $_G['setting']['cloud_status']) {
  152. $msgService = Cloud::loadClass('Cloud_Service_Client_Message');
  153. $msgService->setMsgFlag($_G['uid'], $_G['timestamp']);
  154. }
  155. C::t('common_member')->update($_G['uid'], array('newpm' => 0));
  156. uc_pm_ignore($_G['uid']);
  157. }
  158. $multi = multi($count, $perpage, $page, "home.php?mod=space&do=pm&filter=$filter", 0, 5);
  159. $actives = array($filter=>' class="a"');
  160. }
  161. if(!empty($list)) {
  162. $today = $_G['timestamp'] - ($_G['timestamp'] + $_G['setting']['timeoffset'] * 3600) % 86400;
  163. foreach ($list as $key => $value) {
  164. $value['lastsummary'] = str_replace('&amp;', '&', $value['lastsummary']);
  165. $value['lastsummary'] = preg_replace("/&[a-z]+\;/i", '', $value['lastsummary']);
  166. $value['daterange'] = 5;
  167. if($value['lastdateline'] >= $today) {
  168. $value['daterange'] = 1;
  169. } elseif($value['lastdateline'] >= $today - 86400) {
  170. $value['daterange'] = 2;
  171. } elseif($value['lastdateline'] >= $today - 172800) {
  172. $value['daterange'] = 3;
  173. } elseif($value['lastdateline'] >= $today - 604800) {
  174. $value['daterange'] = 4;
  175. }
  176. $list[$key] = $value;
  177. }
  178. }
  179. include_once template("diy:home/space_pm");
  180. function pmmulti($count, $perpage, $curpage, $mpurl) {
  181. $return = '';
  182. $lang['next'] = lang('core', 'nextpage');
  183. $lang['prev'] = lang('core', 'prevpage');
  184. $next = $curpage < ceil($count/$perpage) ? '<a href="'.$mpurl.'&amp;page='.($curpage + 1).'#last" class="nxt">'.$lang['next'].'</a>' : '';
  185. $prev = $curpage > 1 ? '<span class="pgb"><a href="'.$mpurl.'&amp;page='.($curpage - 1).'#last">'.$lang['prev'].'</a></span>' : '';
  186. if($next || $prev) {
  187. $return = '<div class="pg">'.$prev.$next.'</div>';
  188. }
  189. return $return;
  190. }
  191. ?>