admincp_topic.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  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_topic.php 32657 2013-02-28 06:11:29Z zhangguosheng $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. require_once libfile('function/portalcp');
  12. cpheader();
  13. $operation = 'list';
  14. shownav('portal', 'topic');
  15. $searchctrl = '<span style="float: right; padding-right: 40px;">'
  16. .'<a href="javascript:;" onclick="$(\'tb_search\').style.display=\'\';$(\'a_search_show\').style.display=\'none\';$(\'a_search_hide\').style.display=\'\';" id="a_search_show" style="display:none">'.cplang('show_search').'</a>'
  17. .'<a href="javascript:;" onclick="$(\'tb_search\').style.display=\'none\';$(\'a_search_show\').style.display=\'\';$(\'a_search_hide\').style.display=\'none\';" id="a_search_hide">'.cplang('hide_search').'</a>'
  18. .'</span>';
  19. showsubmenu('topic', array(
  20. array('list', 'topic', 1),
  21. array('topic_add', 'portal.php?mod=portalcp&ac=topic', 0, 1, 1)
  22. ), $searchctrl);
  23. if(submitcheck('opsubmit')) {
  24. if(empty($_POST['ids'])) {
  25. cpmsg('topic_choose_at_least_one_topic', 'action=topic', 'error');
  26. }
  27. if($_POST['optype'] == 'delete') {
  28. require_once libfile('function/delete');
  29. deleteportaltopic($_POST['ids']);
  30. cpmsg('topic_delete_succeed', 'action=topic', 'succeed');
  31. } elseif($_POST['optype'] == 'close') {
  32. C::t('portal_topic')->update($_POST['ids'], array('closed' => 1));
  33. cpmsg('topic_close_succeed', 'action=topic', 'succeed');
  34. } elseif($_POST['optype'] == 'open') {
  35. C::t('portal_topic')->update($_POST['ids'], array('closed' => 0));
  36. cpmsg('topic_open_succeed', 'action=topic', 'succeed');
  37. } else {
  38. cpmsg('topic_choose_at_least_one_optype', 'action=topic', 'error');
  39. }
  40. } else {
  41. $intkeys = array('topicid', 'uid', 'closed');
  42. $strkeys = array();
  43. $randkeys = array();
  44. $likekeys = array('title', 'username');
  45. $results = getwheres($intkeys, $strkeys, $randkeys, $likekeys);
  46. foreach($likekeys as $k) {
  47. $_GET[$k] = dhtmlspecialchars($_GET[$k]);
  48. }
  49. $wherearr = $results['wherearr'];
  50. $mpurl = ADMINSCRIPT.'?action=topic';
  51. $mpurl .= '&'.implode('&', $results['urls']);
  52. if(strlen($_GET['closed'])) {
  53. $statusarr[$_GET['closed']] = ' selected';
  54. }
  55. $orders = getorders(array('dateline'), 'topicid');
  56. $ordersql = $orders['sql'];
  57. if($orders['urls']) $mpurl .= '&'.implode('&', $orders['urls']);
  58. $orderby = array($_GET['orderby']=>' selected');
  59. $ordersc = array($_GET['ordersc']=>' selected');
  60. $perpage = empty($_GET['perpage'])?0:intval($_GET['perpage']);
  61. if(!in_array($perpage, array(10,20,50,100))) $perpage = 10;
  62. $searchlang = array();
  63. $keys = array('search', 'likesupport', 'resultsort', 'defaultsort', 'orderdesc', 'orderasc', 'perpage_10', 'perpage_20', 'perpage_50', 'perpage_100',
  64. 'topic_dateline', 'topic_id', 'topic_title', 'topic_uid', 'topic_username', 'topic_closed', 'nolimit', 'no', 'yes');
  65. foreach ($keys as $key) {
  66. $searchlang[$key] = cplang($key);
  67. }
  68. $adminscript = ADMINSCRIPT;
  69. echo <<<SEARCH
  70. <form method="get" autocomplete="off" action="$adminscript" id="tb_search">
  71. <div style="margin-top:8px;">
  72. <table cellspacing="3" cellpadding="3">
  73. <tr>
  74. <th>$searchlang[topic_id]</th><td><input type="text" class="txt" name="topicid" value="$_GET[topicid]"></td>
  75. <th>$searchlang[topic_title]*</th><td><input type="text" class="txt" name="title" value="$_GET[title]">*$searchlang[likesupport]</td>
  76. </tr>
  77. <tr>
  78. <th>$searchlang[topic_uid]</th><td><input type="text" class="txt" name="uid" value="$_GET[uid]"></td>
  79. <th>$searchlang[topic_username]*</th><td><input type="text" class="txt" name="username" value="$_GET[username]"></td>
  80. </tr>
  81. <tr>
  82. <th>$searchlang[topic_closed]</th>
  83. <td colspan="3">
  84. <select name="closed">
  85. <option value="">$searchlang[nolimit]</option>
  86. <option value="0" $statusarr[0]>$searchlang[no]</option>
  87. <option value="1" $statusarr[1]>$searchlang[yes]</option>
  88. </select>
  89. </td>
  90. </tr>
  91. <tr>
  92. <th>$searchlang[resultsort]</th>
  93. <td colspan="3">
  94. <select name="orderby">
  95. <option value="">$searchlang[defaultsort]</option>
  96. <option value="dateline"$orderby[dateline]>$searchlang[topic_dateline]</option>
  97. </select>
  98. <select name="ordersc">
  99. <option value="desc"$ordersc[desc]>$searchlang[orderdesc]</option>
  100. <option value="asc"$ordersc[asc]>$searchlang[orderasc]</option>
  101. </select>
  102. <select name="perpage">
  103. <option value="10"$perpages[10]>$searchlang[perpage_10]</option>
  104. <option value="20"$perpages[20]>$searchlang[perpage_20]</option>
  105. <option value="50"$perpages[50]>$searchlang[perpage_50]</option>
  106. <option value="100"$perpages[100]>$searchlang[perpage_100]</option>
  107. </select>
  108. <input type="hidden" name="action" value="topic">
  109. <input type="submit" name="searchsubmit" value="$searchlang[search]" class="btn">
  110. </td>
  111. </tr>
  112. </table>
  113. </div>
  114. </form>
  115. <script src="static/js/makehtml.js?1" type="text/javascript"></script>
  116. SEARCH;
  117. $start = ($page-1)*$perpage;
  118. $mpurl .= '&perpage='.$perpage;
  119. $perpages = array($perpage => ' selected');
  120. $maketopichtml = !empty($_G['setting']['makehtml']['flag']) && !empty($_G['setting']['makehtml']['topichtmldir']);
  121. $subtitle = array('', 'topic_title', 'topic_domain', 'topic_name', 'topic_creator', 'topic_dateline');
  122. if($maketopichtml) {
  123. $subtitle[] = 'HTML';
  124. }
  125. $subtitle[] = 'operation';
  126. showformheader('topic');
  127. showtableheader('topic_list');
  128. showsubtitle($subtitle);
  129. $multipage = '';
  130. $count = C::t('portal_topic')->count_by_search_where($wherearr);
  131. if($count) {
  132. require_once libfile('function/portal');
  133. $repairs = array();
  134. foreach(C::t('portal_topic')->fetch_all_by_search_where($wherearr, $ordersql, $start, $perpage) as $topicid => $value) {
  135. if($maketopichtml && $value['htmlmade'] && ($htmlname = fetch_topic_url($value)) && !file_exists(DISCUZ_ROOT.'./'.$htmlname)) {
  136. $value['htmlmade'] = 0;
  137. $repairs[$topicid] = $topicid;
  138. }
  139. $tablerow = array(
  140. "<input type=\"checkbox\" class=\"checkbox\" name=\"ids[]\" value=\"$topicid\">",
  141. ($value['htmlmade'] ? "[<a href='$htmlname' target='_blank'>HTML</a>]" : '')
  142. ."<a href=\"portal.php?mod=topic&topicid=$topicid\" target=\"_blank\">".$value[title]."</a>"
  143. .($value['closed'] ? ' ['.cplang('topic_closed_yes').']' : ''),
  144. $value['domain'] && !empty($_G['setting']['domain']['root']['topic']) ? 'http://'.$value['domain'].'.'.$_G['setting']['domain']['root']['topic'] : '',
  145. $value['name'],
  146. "<a href=\"home.php?mod=space&uid=$value[uid]&do=profile\" target=\"_blank\">$value[username]</a>",
  147. dgmdate($value[dateline]),
  148. );
  149. if($maketopichtml) {
  150. $tablerow[] = "<span id='mkhtml_$value[topicid]' style='color:".($value['htmlmade'] ? "blue;'>".cplang('setting_functions_makehtml_made') : "red;'>".cplang('setting_functions_makehtml_dismake'))."</span>";
  151. }
  152. $tablerow[] = ($maketopichtml ? ($maketopichtml && !$value['closed'] ? "<a href='javascript:void(0);' onclick=\"make_html('portal.php?mod=topic&topicid=$value[topicid]', $('mkhtml_$value[topicid]'))\">".cplang('setting_functions_makehtml_make')."</a>" : cplang('setting_functions_makehtml_make_has_closed')) : '')
  153. ." <a href=\"portal.php?mod=portalcp&ac=topic&topicid=$topicid\" target=\"_blank\">".cplang('topic_edit')."</a>&nbsp;".
  154. "<a href=\"portal.php?mod=topic&topicid=$topicid&diy=yes\" target=\"_blank\">DIY</a>".
  155. '&nbsp;<a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname=portal/portal_topic_content_'.$value['topicid'].'&tpldirectory='.getdiydirectory($value['primaltplname']).'">'.cplang('topic_perm').'</a>';
  156. showtablerow('', array('class="td25"', 'class=""', 'class="td28"'), $tablerow);
  157. }
  158. $multipage = multi($count, $perpage, $page, $mpurl);
  159. if($repairs) {
  160. C::t('portal_topic')->repair_htmlmade($repairs);
  161. }
  162. }
  163. $ops = cplang('operation').': '
  164. ."<input type='radio' class='radio' name='optype' value='open' id='op_close' /><label for='op_close'>".cplang('topic_closed_no')."</label>&nbsp;&nbsp;"
  165. ."<input type='radio' class='radio' name='optype' value='close' id='op_open' /><label for='op_open'>".cplang('topic_closed_yes')."</label>&nbsp;&nbsp;"
  166. ."<input type='radio' class='radio' name='optype' value='delete' id='op_delete' /><label for='op_delete'>".cplang('delete')."</label>&nbsp;&nbsp;";
  167. showsubmit('', '', '', '<input type="checkbox" name="chkall" id="chkall" class="checkbox" onclick="checkAll(\'prefix\', this.form, \'ids\')" /><label for="chkall">'.cplang('select_all').'</label>&nbsp;&nbsp;'.$ops.'<input type="submit" class="btn" name="opsubmit" value="'.cplang('submit').'" />', $multipage);
  168. showtablefooter();
  169. showformfooter();
  170. }
  171. ?>