spacecp_pm.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  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: spacecp_pm.php 35056 2014-11-03 08:01:19Z hypowang $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. $pmid = empty($_GET['pmid'])?0:floatval($_GET['pmid']);
  12. $uid = empty($_GET['uid'])?0:intval($_GET['uid']);
  13. $plid = empty($_GET['plid'])?0:intval($_GET['plid']);
  14. $opactives['pm'] = 'class="a"';
  15. if($uid) {
  16. $touid = $uid;
  17. } else {
  18. $touid = empty($_GET['touid'])?0:intval($_GET['touid']);
  19. }
  20. $daterange = empty($_GET['daterange'])?1:intval($_GET['daterange']);
  21. loaducenter();
  22. if($_GET['op'] == 'checknewpm') {
  23. header('Content-Type: text/javascript');
  24. if($_G['uid'] && !getstatus($_G['member']['newpm'], 1)) {
  25. $ucnewpm = intval(uc_pm_checknew($_G['uid']));
  26. $newpm = setstatus(1, $ucnewpm ? 1 : 0, $_G['member']['newpm']);
  27. if($_G['member']['newpm'] != $newpm) {
  28. C::t('common_member')->update($_G['uid'], array('newpm' => $newpm));
  29. }
  30. }
  31. dsetcookie('checkpm', 1, 30);
  32. exit();
  33. } elseif($_GET['op'] == 'getpmuser') {
  34. $otherpm = $json = array();
  35. $result = uc_pm_list($_G['uid'], 1, 30, 'inbox', 'privatepm');
  36. foreach($result['data'] as $key => $value) {
  37. $value['lastauthor'] = daddslashes($value['lastauthor']);
  38. $value['avatar'] = avatar($value['lastauthorid'], 'small', true);
  39. if($value['isnew']) {
  40. $json[$value['lastauthorid']] = "$value[lastauthorid]:{'uid':$value[lastauthorid], 'username':'$value[lastauthor]', 'avatar':'$value[avatar]', 'plid':$value[plid], 'isnew':$value[isnew], 'daterange':$value[daterange]}";
  41. } else {
  42. $otherpm[$value['lastauthorid']] = "$value[lastauthorid]:{'uid':$value[lastauthorid], 'username':'$value[lastauthor]', 'avatar':'$value[avatar]', 'plid':$value[plid], 'isnew':$value[isnew], 'daterange':$value[daterange]}";
  43. }
  44. }
  45. if(!empty($otherpm)) {
  46. $json = array_merge($json, $otherpm);
  47. }
  48. $jsstr = "{'userdata':{".implode(',', $json)."}}";
  49. } elseif($_GET['op'] == 'showmsg') {
  50. $msgonly = empty($_GET['msgonly']) ? 0 : intval($_GET['msgonly']);
  51. $touid = empty($_GET['touid']) ? 0: intval($_GET['touid']);
  52. $daterange = empty($_GET['daterange']) ? 1 : intval($_GET['daterange']);
  53. $result = uc_pm_view($_G['uid'], 0, $touid, $daterange, 0, 0, 0, 0);
  54. $msglist = array();
  55. $msguser = $messageappend = '';
  56. $online = 0;
  57. foreach($result as $key => $value) {
  58. if($value['authorid'] != $_G['uid']) {
  59. $msguser = $value['author'];
  60. }
  61. $daykey = dgmdate($value['dateline'], 'Y-m-d');
  62. $msglist[$daykey][$key] = $value;
  63. }
  64. if($touid && empty($msguser)) {
  65. $member = getuserbyuid($touid);
  66. $msguser = $member['username'];
  67. }
  68. if(!$msgonly) {
  69. $online = C::app()->session->fetch_by_uid($touid) ? 1 : 0;
  70. if($_G['member']['newpm']) {
  71. $newpm = setstatus(1, 0, $_G['member']['newpm']);
  72. C::t('common_member')->update($_G['uid'], array('newpm' => $newpm));
  73. uc_pm_ignore($_G['uid']);
  74. }
  75. }
  76. if(!empty($_GET['tradeid'])) {
  77. $trade = C::t('forum_trade')->fetch_goods(0, $_GET['tradeid']);
  78. if($trade) {
  79. $messageappend = dhtmlspecialchars('[url='.$_G['siteurl'].'forum.php?mod=viewthread&tid='.$trade['tid'].'&do=tradeinfo&pid='.$trade['pid'].'][b]'.$trade['subject'].'[/b][/url]');
  80. }
  81. } elseif(!empty($_GET['commentid'])) {
  82. $comment = C::t('forum_postcomment')->fetch($_GET['commentid']);
  83. if($comment) {
  84. $comment['comment'] = str_replace(array('[b]', '[/b]', '[/color]'), array(''), preg_replace("/\[color=([#\w]+?)\]/i", '', strip_tags($comment['comment'])));
  85. $messageappend = dhtmlspecialchars('[url='.$_G['siteurl'].'forum.php?mod=redirect&goto=findpost&pid='.$comment['pid'].'&ptid='.$comment['tid'].'][b]'.lang('spacecp', 'pm_comment').'[/b][/url][quote]'.$comment['comment'].'[/quote]');
  86. }
  87. } elseif(!empty($_GET['tid']) && !empty($_GET['pid'])) {
  88. $thread = C::t('forum_thread')->fetch($_GET['tid']);
  89. if($thread) {
  90. $messageappend = dhtmlspecialchars('[url='.$_G['siteurl'].'forum.php?mod=redirect&goto=findpost&pid='.intval($_GET['pid']).'&ptid='.$thread['tid'].'][b]'.lang('spacecp', 'pm_thread_about', array('subject' => $thread['subject'])).'[/b][/url]');
  91. }
  92. }
  93. } elseif($_GET['op'] == 'showchatmsg') {
  94. $perpage = 50;
  95. $perpage = mob_perpage($perpage);
  96. $page = empty($_GET['page']) ? ceil($count/$perpage) : intval($_GET['page']);
  97. $list = uc_pm_view($_G['uid'], 0, $plid, 5, ceil($count/$perpage)-$page+1, $perpage, 1, 1);
  98. } elseif($_GET['op'] == 'delete') {
  99. if($_GET['formhash'] != formhash()) {
  100. showmessage('delete_pm_error_option');
  101. }
  102. $gpmid = is_array($_GET['deletepm_gpmid']) ? $_GET['deletepm_gpmid'] : 0;
  103. $deluid = is_array($_GET['deletepm_deluid']) ? $_GET['deletepm_deluid'] : 0;
  104. $delpmid = is_array($_GET['deletepm_pmid']) ? $_GET['deletepm_pmid'] : 0;
  105. $delplid = is_array($_GET['deletepm_delplid']) ? $_GET['deletepm_delplid'] : 0;
  106. $quitplid = is_array($_GET['deletepm_quitplid']) ? $_GET['deletepm_quitplid'] : 0;
  107. if(empty($gpmid) && empty($deluid) && empty($delpmid) && empty($delplid) && empty($quitplid)) {
  108. showmessage('delete_pm_error_option');
  109. }
  110. if(submitcheck('deletesubmit', 1)) {
  111. $flag = true;
  112. if(!empty($gpmid)) {
  113. $return = C::t('common_member_grouppm')->update($_G['uid'], $gpmid, array('status' => -1));
  114. $returnurl = 'home.php?mod=space&do=pm&filter=announcepm';
  115. if(!$return) {
  116. $flag = false;
  117. }
  118. }
  119. if(!empty($deluid)) {
  120. $return = uc_pm_deleteuser($_G['uid'], $deluid);
  121. $returnurl = 'home.php?mod=space&do=pm&filter=privatepm';
  122. if($return <= 0) {
  123. $flag = false;
  124. }
  125. }
  126. if(!empty($delpmid)) {
  127. $return = uc_pm_delete($_G['uid'], 'inbox', $delpmid[0]);
  128. $returnurl = 'home.php?mod=space&do=pm&subop=view&touid='.$touid;
  129. if($return <= 0) {
  130. $flag = false;
  131. }
  132. }
  133. if(!empty($delplid)) {
  134. $return = uc_pm_deletechat($_G['uid'], $delplid, 1);
  135. $returnurl = 'home.php?mod=space&do=pm&filter=privatepm';
  136. if(!$return) {
  137. $flag = false;
  138. }
  139. }
  140. if(!empty($quitplid)) {
  141. $return = uc_pm_deletechat($_G['uid'], $quitplid);
  142. $returnurl = 'home.php?mod=space&do=pm&filter=privatepm';
  143. if(!$return) {
  144. $flag = false;
  145. }
  146. }
  147. if($flag) {
  148. showmessage('delete_pm_success', $returnurl);
  149. } else {
  150. showmessage('this_message_could_note_be_option');
  151. }
  152. }
  153. } elseif($_GET['op'] == 'send') {
  154. $waittime = interval_check('post');
  155. if($waittime > 0) {
  156. showmessage('message_can_not_send_2', '', array(), array('return' => true));
  157. }
  158. cknewuser();
  159. if(!checkperm('allowsendpm')) {
  160. showmessage('no_privilege_sendpm', '', array(), array('return' => true));
  161. }
  162. if($touid) {
  163. if(isblacklist($touid)) {
  164. showmessage('is_blacklist', '', array(), array('return' => true));
  165. }
  166. }
  167. if(submitcheck('pmsubmit')) {
  168. if(!empty($_POST['username'])) {
  169. $_POST['users'][] = $_POST['username'];
  170. }
  171. $users = empty($_POST['users']) ? array() : $_POST['users'];
  172. $type = intval($_POST['type']);
  173. $coef = 1;
  174. if(!empty($users)) {
  175. $coef = count($users);
  176. }
  177. !($_G['group']['exempt'] & 1) && checklowerlimit('sendpm', 0, $coef);
  178. $message = (!empty($_POST['messageappend']) ? $_POST['messageappend']."\n" : '').trim($_POST['message']);
  179. if(empty($message)) {
  180. showmessage('unable_to_send_air_news', '', array(), array('return' => true));
  181. }
  182. $message = censor($message);
  183. loadcache(array('smilies', 'smileytypes'));
  184. foreach($_G['cache']['smilies']['replacearray'] AS $key => $smiley) {
  185. $_G['cache']['smilies']['replacearray'][$key] = '[img]'.$_G['siteurl'].'static/image/smiley/'.$_G['cache']['smileytypes'][$_G['cache']['smilies']['typearray'][$key]]['directory'].'/'.$smiley.'[/img]';
  186. }
  187. $message = preg_replace($_G['cache']['smilies']['searcharray'], $_G['cache']['smilies']['replacearray'], $message);
  188. $subject = '';
  189. if($type == 1) {
  190. $subject = dhtmlspecialchars(trim($_POST['subject']));
  191. }
  192. include_once libfile('function/friend');
  193. $return = 0;
  194. if($touid || $pmid) {
  195. if($touid) {
  196. if(($value = getuserbyuid($touid))) {
  197. $value['onlyacceptfriendpm'] = $value['onlyacceptfriendpm'] ? $value['onlyacceptfriendpm'] : ($_G['setting']['onlyacceptfriendpm'] ? 1 : 2);
  198. if($_G['group']['allowsendallpm'] || $value['onlyacceptfriendpm'] == 2 || ($value['onlyacceptfriendpm'] == 1 && friend_check($touid))) {
  199. $return = sendpm($touid, $subject, $message, '', 0, 0, $type);
  200. } else {
  201. showmessage('message_can_not_send_onlyfriend', '', array(), array('return' => true));
  202. }
  203. } else {
  204. showmessage('message_bad_touid', '', array(), array('return' => true));
  205. }
  206. } else {
  207. $topmuid = intval($_GET['topmuid']);
  208. $return = sendpm($topmuid, $subject, $message, '', $pmid, 0);
  209. }
  210. } elseif($users) {
  211. $newusers = $uidsarr = $membersarr = array();
  212. if($users) {
  213. $membersarr = C::t('common_member')->fetch_all_by_username($users);
  214. foreach($membersarr as $aUsername=>$aUser) {
  215. $uidsarr[] = $aUser['uid'];
  216. }
  217. }
  218. if(empty($membersarr)) {
  219. showmessage('message_bad_touser', '', array(), array('return' => true));
  220. }
  221. if(isset($membersarr[$_G['uid']])) {
  222. showmessage('message_can_not_send_to_self', '', array(), array('return' => true));
  223. }
  224. friend_check($uidsarr);
  225. foreach($membersarr as $key => $value) {
  226. $value['onlyacceptfriendpm'] = $value['onlyacceptfriendpm'] ? $value['onlyacceptfriendpm'] : ($_G['setting']['onlyacceptfriendpm'] ? 1 : 2);
  227. if($_G['group']['allowsendallpm'] || $value['onlyacceptfriendpm'] == 2 || ($value['onlyacceptfriendpm'] == 1 && $_G['home_friend_'.$value['uid'].'_'.$_G['uid']])) {
  228. $newusers[$value['uid']] = $value['username'];
  229. unset($users[array_search($value['username'], $users)]);
  230. }
  231. }
  232. if(empty($newusers)) {
  233. showmessage('message_can_not_send_onlyfriend', '', array(), array('return' => true));
  234. }
  235. foreach($newusers as $key=>$value) {
  236. if(isblacklist($key)) {
  237. showmessage('is_blacklist', '', array(), array('return' => true));
  238. }
  239. }
  240. $coef = count($newusers);
  241. $return = sendpm(implode(',', $newusers), $subject, $message, '', 0, 1, $type);
  242. } else {
  243. showmessage('message_can_not_send_9', '', array(), array('return' => true));
  244. }
  245. if($return > 0) {
  246. include_once libfile('function/stat');
  247. updatestat('sendpm', 0, $coef);
  248. C::t('common_member_status')->update($_G['uid'], array('lastpost' => TIMESTAMP));
  249. !($_G['group']['exempt'] & 1) && updatecreditbyaction('sendpm', 0, array(), '', $coef);
  250. if(!empty($newusers)) {
  251. if($type == 1) {
  252. $returnurl = 'home.php?mod=space&do=pm&filter=privatepm';
  253. } else {
  254. $returnurl = 'home.php?mod=space&do=pm';
  255. }
  256. showmessage(count($users) ? 'message_send_result' : 'do_success', $returnurl, array('users' => implode(',', $users), 'succeed' => count($newusers)));
  257. } else {
  258. if(!defined('IN_MOBILE')) {
  259. showmessage('do_success', 'home.php?mod=space&do=pm&subop=view&touid='.$touid, array('pmid' => $return), $_G['inajax'] ? array('msgtype' => 3, 'showmsg' => false) : array());
  260. } else {
  261. showmessage('do_success', 'home.php?mod=space&do=pm&subop=view'.(intval($_POST['touid']) ? '&touid='.intval($_POST['touid']) : ( intval($_POST['plid']) ? '&plid='.intval($_POST['plid']).'&daterange=1&type=1' : '' )));
  262. }
  263. }
  264. } else {
  265. if(in_array($return, range(-16, -1))) {
  266. showmessage('message_can_not_send_'.abs($return));
  267. } else {
  268. showmessage('message_can_not_send', '', array(), array('return' => true));
  269. }
  270. }
  271. }
  272. } elseif($_GET['op'] == 'ignore') {
  273. if(submitcheck('ignoresubmit')) {
  274. $single = intval($_GET['single']);
  275. if($single) {
  276. uc_pm_blackls_add($_G['uid'], $_POST['ignoreuser']);
  277. showmessage('do_success', dreferer(), array(), array('showdialog'=>1, 'showmsg' => true, 'closetime' => true));
  278. } else {
  279. uc_pm_blackls_set($_G['uid'], $_POST['ignorelist']);
  280. showmessage('do_success', 'home.php?mod=space&do=pm&view=ignore', array(), array('showdialog'=>1, 'showmsg' => true, 'closetime' => true));
  281. }
  282. }
  283. } elseif($_GET['op'] == 'setting') {
  284. if(submitcheck('settingsubmit')) {
  285. if(!(intval($_GET['onlyacceptfriendpm']) && intval($_GET['onlyacceptfriendpm']) == $_GET['onlyacceptfriendpm'])) {
  286. showmessage('pm_onlyacceptfriend_error', 'home.php?mod=space&do=pm&subop=setting');
  287. }
  288. uc_pm_blackls_set($_G['uid'], $_POST['ignorelist']);
  289. $setarr['onlyacceptfriendpm'] = $_GET['onlyacceptfriendpm'];
  290. C::t('common_member')->update($_G['uid'], $setarr);
  291. showmessage('do_success_pm', 'home.php?mod=space&do=pm&subop=setting');
  292. }
  293. } elseif($_GET['op'] == 'pm_report') {
  294. $waittime = interval_check('post');
  295. if($waittime > 0) {
  296. showmessage('operating_too_fast', '', array('waittime' => $waittime), array('return' => true));
  297. }
  298. if(!$pmid) {
  299. showmessage('pm_report_error_nopm');
  300. }
  301. if($pmid && submitcheck('pmreportsubmit', 1)) {
  302. $pms = uc_pm_view($_G['uid'], $pmid);
  303. $pm = $pms[0];
  304. if(empty($pm)) {
  305. showmessage('pm_report_error_nopm');
  306. }
  307. if($pm['authorid'] == $_G['uid'] || !$pm['authorid']) {
  308. showmessage('pm_report_error_nome');
  309. }
  310. $pmreportuser = explode(',', $_G['setting']['pmreportuser']);
  311. if(empty($pmreportuser)) {
  312. showmessage('pm_report_error_nopmreportuser');
  313. }
  314. $pmreportcontent = lang('spacecp', 'pm_report_content', array('reporterid' => $_G['uid'], 'reportername' => $_G['username'], 'uid' => $pm['authorid'], 'username' => $pm['author'], 'message' => $pm['message']));
  315. foreach($pmreportuser as $key => $value) {
  316. notification_add($value, 'pmreport', 'pmreportcontent', array('pmreportcontent' => $pmreportcontent), 0);
  317. }
  318. showmessage('do_success', dreferer(), array(), array('showdialog'=>1, 'showmsg' => true, 'closetime' => true));
  319. }
  320. } elseif($_GET['op'] == 'pm_ignore') {
  321. $waittime = interval_check('post');
  322. if($waittime > 0) {
  323. showmessage('operating_too_fast', '', array('waittime' => $waittime), array('return' => true));
  324. }
  325. $username = $_GET['username'];
  326. if(!$username || !uc_get_user($username)) {
  327. showmessage('pm_ignore_error_nopm');
  328. }
  329. if(submitcheck('pmignoresubmit')) {
  330. uc_pm_blackls_add($_G['uid'], addslashes($username));
  331. showmessage('do_success', dreferer(), array(), array('showdialog'=>1, 'showmsg' => true, 'closetime' => true));
  332. }
  333. } elseif($_GET['op'] == 'kickmember') {
  334. $memberuid = intval($_GET['memberuid']);
  335. if(!$memberuid) {
  336. showmessage('pm_kickmember_error_nopm');
  337. }
  338. if(submitcheck('pmkickmembersubmit')) {
  339. uc_pm_kickchatpm($plid, $_G['uid'], $memberuid);
  340. showmessage('do_success', dreferer(), array(), array('showdialog'=>1, 'showmsg' => true, 'closetime' => true, 'locationtime' => 3));
  341. }
  342. } elseif($_GET['op'] == 'appendmember') {
  343. $memberusername = trim($_GET['memberusername']);
  344. $members = array();
  345. if($memberusername) {
  346. $members = C::t('common_member')->fetch_all_by_username(explode(',', $memberusername));
  347. }
  348. if(empty($members)) {
  349. showmessage('pm_appendkmember_error_nopm');
  350. }
  351. if(submitcheck('pmappendmembersubmit')) {
  352. include_once libfile('function/friend');
  353. $returns = array();
  354. foreach($members as $member) {
  355. $member['onlyacceptfriendpm'] = $member['onlyacceptfriendpm'] ? $member['onlyacceptfriendpm'] : ($_G['setting']['onlyacceptfriendpm'] ? 1 : 2);
  356. if($_G['group']['allowsendallpm'] || $member['onlyacceptfriendpm'] == 2 || ($member['onlyacceptfriendpm'] == 1 && friend_check($member['uid']))) {
  357. $return = uc_pm_appendchatpm($plid, $_G['uid'], $member['uid']);
  358. $returns[] = array('uid' => $member['uid'], 'username' => $member['username'], 'return' => $return);
  359. } else {
  360. $returns[] = array('uid' => $member['uid'], 'username' => $member['username'], 'return' => 0);
  361. }
  362. }
  363. $cannotappend = array();
  364. foreach($returns as $value) {
  365. if($value['return'] < 0) {
  366. $cannotappend[] = $value['username'].'('.lang('spacecp', 'message_can_not_send_'.abs($value['return'])).')';
  367. } elseif($value['return'] == 0) {
  368. $cannotappend[] = $value['username'].'('.lang('spacecp', 'message_can_not_send_onlyfriend').')';
  369. }
  370. }
  371. if(empty($cannotappend)) {
  372. showmessage('do_success', dreferer(), array(), array('showdialog'=>1, 'showmsg' => true, 'closetime' => true, 'locationtime' => 3));
  373. } else {
  374. showmessage('message_can_not_append_reason', dreferer(), array('cannotappend' => implode('<br />', $cannotappend)), array('showdialog'=>1, 'showmsg' => true, 'closetime' => true, 'locationtime' => 5));
  375. }
  376. }
  377. } elseif($_GET['op'] == 'setpmstatus') {
  378. $gpmids = trim($_GET['gpmids']);
  379. $plids = trim($_GET['plids']);
  380. if($gpmids) {
  381. $gpmidarr = explode(',', $gpmids);
  382. C::t('common_member_grouppm')->update_to_read_by_unread($_G['uid'], $gpmidarr);
  383. }
  384. if($plids) {
  385. $plidarr = explode(',', $plids);
  386. uc_pm_readstatus($_G['uid'], array(), $plidarr, 0);
  387. }
  388. showmessage('do_success', '', array(), array('msgtype' => 3));
  389. } elseif($_GET['op'] == 'viewpmid') {
  390. $list = uc_pm_view($_G['uid'], $_GET['pmid']);
  391. $value = $list[0];
  392. include template('common/header_ajax');
  393. include template('home/space_pm_node');
  394. include template('common/footer_ajax');
  395. exit;
  396. } elseif($_GET['op'] == 'export') {
  397. if(!$touid && !$plid) {
  398. showmessage('pm_export_touser_not_exists');
  399. }
  400. if($touid) {
  401. $list = uc_pm_view($_G['uid'], 0, $touid, 5, 0, 0, 0, 0);
  402. } else {
  403. $list = uc_pm_view($_G['uid'], 0, $plid, 5, 0, 0, 1, 1);
  404. $subject = $list[0]['subject'];
  405. }
  406. if(count($list) == 0) {
  407. showmessage('pm_emport_banned_export');
  408. }
  409. $filename = lang('space', 'export_pm').'.html';
  410. if($touid) {
  411. if($touser = uc_get_user($touid, 1)) {
  412. $tousername = $touser[1];
  413. $filename = $touser[1].'.html';
  414. }
  415. }
  416. $contents = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
  417. $contents .= '<html xmlns="http://www.w3.org/1999/xhtml">';
  418. $contents .= '<head><meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'" /><title>'.lang('space', 'pm_export_header').'</title></head>';
  419. $contents .= '<body>';
  420. $contents .= lang('space', 'pm_export_header');
  421. $contents .= "\r\n\r\n================================================================\r\n";
  422. if($touser) {
  423. $contents .= lang('space', 'pm_export_touser', array('touser' => '<a href="'.$_G['siteurl'].'home.php?mod=space&uid='.$touser[0].'">'.$touser[1].'</a>'));
  424. $contents .= "\r\n================================================================\r\n";
  425. } elseif($subject) {
  426. $contents .= lang('space', 'pm_export_subject', array('subject' => $subject));
  427. $contents .= "\r\n================================================================\r\n";
  428. }
  429. $contents .= "\r\n";
  430. foreach($list as $key => $val) {
  431. $contents .= $val['author']."\t".dgmdate($val['dateline'])."\r\n";
  432. $contents .= str_replace(array('<br>', '<br />', '&nbsp;'), array("\r\n", "\r\n", ' '), $val['message'])."\r\n\r\n";
  433. }
  434. $contents .= '</body></html>';
  435. $contents = nl2br($contents);
  436. $filesize = strlen($contents);
  437. $filename = '"'.(strtolower(CHARSET) == 'utf-8' && strexists($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? urlencode($filename) : $filename).'"';
  438. dheader('Date: '.gmdate('D, d M Y H:i:s', $val['dateline']).' GMT');
  439. dheader('Last-Modified: '.gmdate('D, d M Y H:i:s', $val['dateline']).' GMT');
  440. dheader('Content-Encoding: none');
  441. dheader('Content-Disposition: attachment; filename='.$filename);
  442. dheader('Content-Type: application/octet-stream');
  443. dheader('Content-Length: '.$filesize);
  444. echo $contents;
  445. die;
  446. } else {
  447. cknewuser();
  448. if(!checkperm('allowsendpm')) {
  449. showmessage('no_privilege_sendpm');
  450. }
  451. $friends = array();
  452. if($space['friendnum']) {
  453. $query = C::t('home_friend')->fetch_all_by_uid($_G['uid'], 0, 100, true);
  454. foreach($query as $value) {
  455. $value['uid'] = $value['fuid'];
  456. $value['username'] = daddslashes($value['fusername']);
  457. $friends[] = $value;
  458. }
  459. }
  460. require_once libfile('function/friend');
  461. $friendgrouplist = friend_group_list();
  462. $type = intval($_GET['type']);
  463. }
  464. include_once template("home/spacecp_pm");
  465. ?>