admincp_announce.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  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: admincp_announce.php 33271 2013-05-13 08:16:21Z kamichen $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. cpheader();
  12. if(empty($operation)) {
  13. if(!submitcheck('announcesubmit')) {
  14. shownav('extended', 'announce', 'admin');
  15. showsubmenu('announce', array(
  16. array('admin', 'announce', 1),
  17. array('add', 'announce&operation=add', 0)
  18. ));
  19. showtips('announce_tips');
  20. showformheader('announce');
  21. showtableheader();
  22. showsubtitle(array('del', 'display_order', 'author', 'subject', 'message', 'announce_type', 'start_time', 'end_time', ''));
  23. $announce_type = array(0=>$lang['announce_words'], 1=>$lang['announce_url']);
  24. $annlist = C::t('forum_announcement')->fetch_all_by_displayorder();
  25. foreach ($annlist as $announce) {
  26. $disabled = $_G['adminid'] != 1 && $announce['author'] != $_G['member']['username'] ? 'disabled' : NULL;
  27. $announce['starttime'] = $announce['starttime'] ? dgmdate($announce['starttime'], 'Y-n-j H:i') : $lang['unlimited'];
  28. $announce['endtime'] = $announce['endtime'] ? dgmdate($announce['endtime'], 'Y-n-j H:i') : $lang['unlimited'];
  29. showtablerow('', array('class="td25"', 'class="td28"'), array(
  30. "<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$announce[id]\" $disabled>",
  31. "<input type=\"text\" class=\"txt\" name=\"displayordernew[{$announce[id]}]\" value=\"$announce[displayorder]\" size=\"2\" $disabled>",
  32. "<a href=\"./home.php?mod=space&username=".rawurlencode($announce['author'])."\" target=\"_blank\">$announce[author]</a>",
  33. $announce['subject'],
  34. cutstr(strip_tags($announce['message']), 20),
  35. $announce_type[$announce['type']],
  36. $announce['starttime'],
  37. $announce['endtime'],
  38. "<a href=\"".ADMINSCRIPT."?action=announce&operation=edit&announceid=$announce[id]\" $disabled>$lang[edit]</a>"
  39. ));
  40. }
  41. showsubmit('announcesubmit', 'submit', 'select_all');
  42. showtablefooter();
  43. showformfooter();
  44. } else {
  45. if(is_array($_GET['delete'])) {
  46. C::t('forum_announcement')->delete_by_id_username($_GET['delete'], $_G['username'], $_G['adminid']);
  47. }
  48. if(is_array($_GET['displayordernew'])) {
  49. foreach($_GET['displayordernew'] as $id => $displayorder) {
  50. C::t('forum_announcement')->update_displayorder_by_id_username($id, $displayorder, $_G['username'], $_G['adminid']);
  51. }
  52. }
  53. updatecache(array('announcements', 'announcements_forum'));
  54. cpmsg('announce_update_succeed', 'action=announce', 'succeed');
  55. }
  56. } elseif($operation == 'add') {
  57. if(!submitcheck('addsubmit')) {
  58. $newstarttime = dgmdate(TIMESTAMP, 'Y-n-j H:i');
  59. $newendtime = dgmdate(TIMESTAMP + 86400* 7, 'Y-n-j H:i');
  60. shownav('extended', 'announce', 'add');
  61. showsubmenu('announce', array(
  62. array('admin', 'announce', 0),
  63. array('add', 'announce&operation=add', 1)
  64. ));
  65. showformheader('announce&operation=add');
  66. showtableheader('announce_add');
  67. showsetting($lang[subject], 'newsubject', '', 'htmltext');
  68. showsetting($lang['start_time'], 'newstarttime', $newstarttime, 'calendar', '', 0, '', 1);
  69. showsetting($lang['end_time'], 'newendtime', $newendtime, 'calendar', '', 0, '', 1);
  70. showsetting('announce_type', array('newtype', array(
  71. array(0, $lang['announce_words']),
  72. array(1, $lang['announce_url']))), 0, 'mradio');
  73. showsetting('announce_message', 'newmessage', '', 'textarea');
  74. showsubmit('addsubmit');
  75. showtablefooter();
  76. showformfooter();
  77. } else {
  78. $newstarttime = $_GET['newstarttime'] ? strtotime($_GET['newstarttime']) : 0;
  79. $newendtime = $_GET['newendtime'] ? strtotime($_GET['newendtime']) : 0;
  80. if($newendtime && $newstarttime > $newendtime) {
  81. cpmsg('announce_time_invalid', '', 'error');
  82. }
  83. $newsubject = trim($_GET['newsubject']);
  84. $newmessage = trim($_GET['newmessage']);
  85. if(!$newstarttime) {
  86. cpmsg('announce_time_invalid', '', 'error');
  87. } elseif(!$newsubject || !$newmessage) {
  88. cpmsg('announce_invalid', '', 'error');
  89. } else {
  90. $newmessage = $_GET['newtype'] == 1 ? explode("\n", $_GET['newmessage']) : array(0 => $_GET['newmessage']);
  91. $data = array(
  92. 'author' => $_G['username'],
  93. 'subject' => strip_tags($newsubject, '<u><i><b><font>'),
  94. 'type' => $_GET['newtype'],
  95. 'starttime' => $newstarttime,
  96. 'endtime' => $newendtime,
  97. 'message' => $newmessage[0],
  98. );
  99. C::t('forum_announcement')->insert($data);
  100. updatecache(array('announcements', 'announcements_forum'));
  101. cpmsg('announce_succeed', 'action=announce', 'succeed');
  102. }
  103. }
  104. } elseif($operation == 'edit' && $_GET['announceid']) {
  105. $announce = C::t('forum_announcement')->fetch_by_id_username($_GET['announceid'], $_G['username'], $_G['adminid']);
  106. if(!$announce) {
  107. cpmsg('announce_nonexistence', '', 'error');
  108. }
  109. if(!submitcheck('editsubmit')) {
  110. $announce['starttime'] = $announce['starttime'] ? dgmdate($announce['starttime'], 'Y-n-j H:i') : "";
  111. $announce['endtime'] = $announce['endtime'] ? dgmdate($announce['endtime'], 'Y-n-j H:i') : "";
  112. $b = $i = $u = $colorselect = $colorcheck = '';
  113. if(preg_match('/<b>(.*?)<\/b>/i', $announce['subject'])) {
  114. $b = 'class="a"';
  115. }
  116. if(preg_match('/<i>(.*?)<\/i>/i', $announce['subject'])) {
  117. $i = 'class="a"';
  118. }
  119. if(preg_match('/<u>(.*?)<\/u>/i', $announce['subject'])) {
  120. $u = 'class="a"';
  121. }
  122. $colorselect = preg_replace('/<font color=(.*?)>(.*?)<\/font>/i', '$1', $announce['subject']);
  123. $colorselect = strip_tags($colorselect);
  124. $_G['forum_colorarray'] = array(1=>'#EE1B2E', 2=>'#EE5023', 3=>'#996600', 4=>'#3C9D40', 5=>'#2897C5', 6=>'#2B65B7', 7=>'#8F2A90', 8=>'#EC1282');
  125. if(in_array($colorselect, $_G['forum_colorarray'])) {
  126. $colorcheck = "style=\"background: $colorselect\"";
  127. }
  128. shownav('extended', 'announce');
  129. showsubmenu('announce', array(
  130. array('admin', 'announce', 0),
  131. array('add', 'announce&operation=add', 0)
  132. ));
  133. showformheader("announce&operation=edit&announceid={$_GET['announceid']}");
  134. showtableheader();
  135. showtitle('announce_edit');
  136. showsetting($lang['subject'], 'newsubject', $announce[subject], 'htmltext');
  137. showsetting('start_time', 'starttimenew', $announce['starttime'], 'calendar', '', 0, '', 1);
  138. showsetting('end_time', 'endtimenew', $announce['endtime'], 'calendar', '', 0, '', 1);
  139. showsetting('announce_type', array('typenew', array(
  140. array(0, $lang['announce_words']),
  141. array(1, $lang['announce_url'])
  142. )), $announce['type'], 'mradio');
  143. showsetting('announce_message', 'messagenew', $announce['message'], 'textarea');
  144. showsubmit('editsubmit');
  145. showtablefooter();
  146. showformfooter();
  147. } else {
  148. if(strpos($_GET['starttimenew'], '-')) {
  149. $starttimenew = strtotime($_GET['starttimenew']);
  150. } else {
  151. $starttimenew = 0;
  152. }
  153. if(strpos($_GET['endtimenew'], '-')) {
  154. $endtimenew = strtotime($_GET['endtimenew']);
  155. } else {
  156. $endtimenew = 0;
  157. }
  158. $subjectnew = trim($_GET['newsubject']);
  159. $messagenew = trim($_GET['messagenew']);
  160. if(!$starttimenew || ($endtimenew && $endtimenew <= TIMESTAMP) || $endtimenew && $starttimenew > $endtimenew) {
  161. cpmsg('announce_time_invalid', '', 'error');
  162. } elseif(!$subjectnew || !$messagenew) {
  163. cpmsg('announce_invalid', '', 'error');
  164. } else {
  165. $messagenew = $_GET['typenew'] == 1 ? explode("\n", $messagenew) : array(0 => $messagenew);
  166. C::t('forum_announcement')->update_by_id_username($_GET['announceid'], array(
  167. 'subject' => strip_tags($subjectnew, '<u><i><b><font>'),
  168. 'type' => $_GET['typenew'],
  169. 'starttime' => $starttimenew,
  170. 'endtime' => $endtimenew,
  171. 'message' => $messagenew[0],
  172. ), $_G['username'], $_G['adminid']);
  173. updatecache(array('announcements', 'announcements_forum'));
  174. cpmsg('announce_succeed', 'action=announce', 'succeed');
  175. }
  176. }
  177. }
  178. echo '<script type="text/javascript" src="static/js/calendar.js"></script>';
  179. ?>