admincp_portalpermission.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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_portalpermission.php 29236 2012-03-30 05:34:47Z chenmengshu $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. cpheader();
  12. $ops = array('article', 'template', 'block');
  13. $operation = in_array($operation, $ops, true) ? $operation : 'article';
  14. $opdata = array();
  15. foreach($ops as $op) {
  16. $opdata[] = array('portalpermission_'.$op, 'portalpermission&operation='.$op, $op == $operation);
  17. }
  18. $line = '&minus;';
  19. $right = '&radic;';
  20. $adminscript = $mpurl = ADMINSCRIPT.'?action=portalpermission&operation='.$operation;
  21. $permissions = $members = $uids = array();
  22. shownav('portal', 'portalpermission');
  23. showsubmenu('portalpermission', $opdata);
  24. $_GET['ordersc'] = in_array($_GET['ordersc'], array('desc', 'asc'), true) ? $_GET['ordersc'] : 'desc';
  25. $_GET['uid'] = dintval($_GET['uid']);
  26. if(($_GET['uid'] = $_GET['uid'] ? $_GET['uid'] : '')) {
  27. $mpurl .= '&uid='.$_GET['uid'];
  28. } elseif($_GET['username']) {
  29. $uids = array_keys(C::t('common_member')->fetch_all_by_like_username($_GET['username']));
  30. $uids = $uids ? $uids : array(0);
  31. $mpurl .= '&username='.dhtmlspecialchars($_GET['username']);
  32. }
  33. if($_GET['inherited']) {
  34. $inherited = ' checked';
  35. $mpurl .= '&inherited=1';
  36. }
  37. $ordersc = array($_GET['ordersc']=>' selected');
  38. $perpage = in_array($_GET['perpage'], array(10,20,50,100)) ? $_GET['perpage'] : 20;
  39. $start = ($page-1)*$perpage;
  40. $perpages = array($perpage => ' selected');
  41. $searchlang = array();
  42. $keys = array('search', 'resultsort', 'orderdesc', 'orderasc', 'perpage_10', 'perpage_20', 'perpage_50', 'perpage_100', 'likesupport',
  43. 'uid', 'username', 'portalpermission_no_inherited');
  44. foreach ($keys as $key) {
  45. $searchlang[$key] = cplang($key);
  46. }
  47. echo <<<SEARCH
  48. <form method="get" autocomplete="off" action="$adminscript" id="tb_search">
  49. <div style="margin-top:8px;">
  50. <table cellspacing="3" cellpadding="3">
  51. <tr>
  52. <th>$searchlang[uid]</th><td><input type="text" class="txt" name="uid" value="$_GET[uid]"></td>
  53. <th>$searchlang[username]*</th><td><input type="text" class="txt" name="username" value="$_GET[username]"> *$searchlang[likesupport]</td>
  54. </tr>
  55. <tr>
  56. <th>$searchlang[resultsort]</th>
  57. <td>
  58. <select name="ordersc">
  59. <option value="desc"$ordersc[desc]>$searchlang[orderdesc]</option>
  60. <option value="asc"$ordersc[asc]>$searchlang[orderasc]</option>
  61. </select>
  62. <select name="perpage">
  63. <option value="10"$perpages[10]>$searchlang[perpage_10]</option>
  64. <option value="20"$perpages[20]>$searchlang[perpage_20]</option>
  65. <option value="50"$perpages[50]>$searchlang[perpage_50]</option>
  66. <option value="100"$perpages[100]>$searchlang[perpage_100]</option>
  67. </select>
  68. </td>
  69. <th><label for="inherited">$searchlang[portalpermission_no_inherited]</label></th>
  70. <td>
  71. <input type="checkbox" value=1 name="inherited" id="inherited" $inherited/>
  72. <input type="hidden" name="action" value="portalpermission">
  73. <input type="hidden" name="operation" value="$operation">
  74. <input type="submit" name="searchsubmit" value="$searchlang[search]" class="btn">
  75. </td>
  76. </tr>
  77. </table>
  78. </div>
  79. </form>
  80. SEARCH;
  81. showformheader('portalpermission&operation='.$operation);
  82. showtableheader('portalpermission');
  83. if($operation == 'article') {
  84. showsubtitle(array('username', 'portalcategory', 'portalcategory_perm_publish', 'portalcategory_perm_manage', 'block_perm_inherited'));
  85. showtagheader('tbody', '', true);
  86. loadcache('portalcategory');
  87. $wherearr = array();
  88. if(($where = $_GET['uid'] ? 'uid='.$_GET['uid'] : ($uids ? 'uid IN('.dimplode($uids).')' : ''))) {
  89. $wherearr[] = $where;
  90. }
  91. if($inherited) {
  92. $wherearr[] = 'inheritedcatid = \'\'';
  93. }
  94. $wheresql = $wherearr ? ' WHERE '.implode(' AND ', $wherearr) : '';
  95. $uids = $_GET['uid'] ? array($_GET['uid']) : $uids;
  96. $count = C::t('portal_category_permission')->count_by_uids($uids, !$inherited);
  97. if($count) {
  98. $permissions = C::t('portal_category_permission')->fetch_all_by_uid($uids, !$inherited, $_GET['ordersc'], $start, $perpage);
  99. foreach($permissions as $value) {
  100. $uids[$value['uid']] = $value['uid'];
  101. }
  102. if(empty($members)) $members = C::t('common_member')->fetch_all($uids);
  103. $multipage = multi($count, $perpage, $page, $mpurl.'&perpage='.$perpage);
  104. foreach($permissions as $value){
  105. showtablerow('', '', array(
  106. $members[$value['uid']]['username'],
  107. '<a href="'.ADMINSCRIPT.'?action=portalcategory&operation=perm&catid='.$value['catid'].'">'.$_G['cache']['portalcategory'][$value['catid']]['catname'].'</a>',
  108. $value['allowpublish'] ? $right : $line,
  109. $value['allowmanage'] ? $right : $line,
  110. $value['inheritedcatid'] ? '<a href="'.ADMINSCRIPT.'?action=portalcategory&operation=perm&catid='.$value['inheritedcatid'].'">'.$_G['cache']['portalcategory'][$value['inheritedcatid']]['catname'].'</a>' : $line,
  111. ));
  112. }
  113. echo '<tr><td colspan="6">'.$multipage.'</td></tr>';
  114. }
  115. showtagfooter('tbody');
  116. } elseif ($operation == 'template') {
  117. showsubtitle(array('username', 'diytemplate_name', 'block_perm_manage', 'block_perm_recommend', 'block_perm_needverify', 'block_perm_inherited'));
  118. showtagheader('tbody', '', true);
  119. loadcache('diytemplatename');
  120. $uids = $_GET['uid'] ? array($_GET['uid']) : $uids;
  121. $count = C::t('common_template_permission')->count_by_uids($uids, !$inherited);
  122. if($count) {
  123. $permissions = C::t('common_template_permission')->fetch_all_by_uid($uids, !$inherited, $_GET['ordersc'], $start, $perpage);
  124. foreach($permissions as $value) {
  125. $uids[$value['uid']] = $value['uid'];
  126. }
  127. if(empty($members)) $members = C::t('common_member')->fetch_all($uids);
  128. $multipage = multi($count, $perpage, $page, $mpurl.'&perpage='.$perpage);
  129. foreach($permissions as $value){
  130. $targettplname = $_G['cache']['diytemplatename'][$value['targettplname']];
  131. showtablerow('', '', array(
  132. $members[$value['uid']]['username'],
  133. '<a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname='.$value['targettplname'].'">'.$targettplname.'</a>',
  134. $value['allowmanage'] ? $right : $line,
  135. $value['allowrecommend'] ? $right : $line,
  136. $value['needverify'] ? $right : $line,
  137. $value['inheritedtplname'] ? '<a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname='.$value['inheritedtplname'].'">'.$_G['cache']['diytemplatename'][$value['inheritedtplname']].'</a>' : $line,
  138. ));
  139. }
  140. echo '<tr><td colspan="6">'.$multipage.'</td></tr>';
  141. }
  142. showtagfooter('tbody');
  143. } elseif ($operation == 'block') {
  144. showsubtitle(array('username', 'block_name', 'block_perm_manage', 'block_perm_recommend', 'block_perm_needverify', 'block_perm_inherited'));
  145. showtagheader('tbody', '', true);
  146. loadcache('diytemplatename');
  147. $uids = $_GET['uid'] ? array($_GET['uid']) : $uids;
  148. if(($count = C::t('common_block_permission')->count_by_uids($uids, !$inherited))) {
  149. $blocks = $bids = array();
  150. $permissions = C::t('common_block_permission')->fetch_all_by_uid($uids, !$inherited, $_GET['ordersc'], $start, $perpage);
  151. foreach($permissions as $value) {
  152. $uids[$value['uid']] = $value['uid'];
  153. $bids[$value['bid']] = $value['bid'];
  154. }
  155. if($bids) $blocks = C::t('common_block')->fetch_all($bids);
  156. if(empty($members)) $members = C::t('common_member')->fetch_all($uids);
  157. $multipage = multi($count, $perpage, $page, $mpurl.'&perpage='.$perpage);
  158. foreach($permissions as $value){
  159. $blockname = $blocks[$value['bid']]['name'] ? $blocks[$value['bid']]['name'] : $value['bid'];
  160. showtablerow('', '', array(
  161. $members[$value['uid']]['username'],
  162. '<a href="'.ADMINSCRIPT.'?action=block&operation=perm&bid='.$value['bid'].'">'.$blockname.'</a>',
  163. $value['allowmanage'] ? $right : $line,
  164. $value['allowrecommend'] ? $right : $line,
  165. $value['needverify'] ? $right : $line,
  166. $value['inheritedtplname'] ? '<a href="'.ADMINSCRIPT.'?action=diytemplate&operation=perm&targettplname='.$value['inheritedtplname'].'">'.$_G['cache']['diytemplatename'][$value['inheritedtplname']].'</a>' : $line,
  167. ));
  168. }
  169. echo '<tr><td colspan="6">'.$multipage.'</td></tr>';
  170. }
  171. showtagfooter('tbody');
  172. }
  173. showtablefooter();
  174. showformfooter();
  175. ?>