PageRenderTime 56ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/system/admin/groups/main.php

https://gitlab.com/BaseX/BaseX
PHP | 254 lines | 220 code | 3 blank | 31 comment | 37 complexity | 8c392b8f0ad8ba017268da3b191f6d9c MD5 | raw file
  1. <?php
  2. // $Id: main.php 2 2005-11-02 18:23:29Z skalpa $
  3. // ------------------------------------------------------------------------ //
  4. // XOOPS - PHP Content Management System //
  5. // Copyright (c) 2000 XOOPS.org //
  6. // <http://www.xoops.org/> //
  7. // ------------------------------------------------------------------------ //
  8. // This program is free software; you can redistribute it and/or modify //
  9. // it under the terms of the GNU General Public License as published by //
  10. // the Free Software Foundation; either version 2 of the License, or //
  11. // (at your option) any later version. //
  12. // //
  13. // You may not change or alter any portion of this comment or credits //
  14. // of supporting developers from this source code or any supporting //
  15. // source code which is considered copyrighted (c) material of the //
  16. // original comment or credit authors. //
  17. // //
  18. // This program is distributed in the hope that it will be useful, //
  19. // but WITHOUT ANY WARRANTY; without even the implied warranty of //
  20. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
  21. // GNU General Public License for more details. //
  22. // //
  23. // You should have received a copy of the GNU General Public License //
  24. // along with this program; if not, write to the Free Software //
  25. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
  26. // ------------------------------------------------------------------------ //
  27. // Author: Kazumi Ono (AKA onokazu) //
  28. // URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
  29. // Project: The XOOPS Project //
  30. // ------------------------------------------------------------------------- //
  31. if ( !is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid()) ) {
  32. exit("Access Denied");
  33. } else {
  34. include_once XOOPS_ROOT_PATH.'/class/xoopsblock.php';
  35. include_once XOOPS_ROOT_PATH."/modules/system/admin/groups/groups.php";
  36. $op = "display";
  37. if ( isset($_POST) ) {
  38. foreach ( $_POST as $k => $v ) {
  39. $$k = $v;
  40. }
  41. }
  42. if ( isset($_GET['op']) ) {
  43. if ($_GET['op'] == "modify" || $_GET['op'] == "del") {
  44. $op = $_GET['op'];
  45. $g_id = $_GET['g_id'];
  46. }
  47. }
  48. // from finduser section
  49. if ( !empty($memberslist_id) && is_array($memberslist_id) ) {
  50. $op = "addUser";
  51. $uids =& $memberslist_id;
  52. }
  53. switch ($op) {
  54. case "modify":
  55. include_once XOOPS_ROOT_PATH.'/class/pagenav.php';
  56. modifyGroup($g_id);
  57. break;
  58. case "update":
  59. if (!$GLOBALS['xoopsSecurity']->check()) {
  60. redirect_header("admin.php?fct=groups&amp;op=adminMain", 3, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
  61. }
  62. $system_catids = empty($system_catids) ? array() : $system_catids;
  63. $admin_mids = empty($admin_mids) ? array() : $admin_mids;
  64. $read_mids = empty($read_mids) ? array() : $read_mids;
  65. $read_bids = empty($read_bids) ? array() : $read_bids;
  66. $member_handler =& xoops_gethandler('member');
  67. $group =& $member_handler->getGroup($g_id);
  68. $group->setVar('name', $name);
  69. $group->setVar('description', $desc);
  70. // if this group is not one of the default groups
  71. if (!in_array($group->getVar('groupid'), array(XOOPS_GROUP_ADMIN, XOOPS_GROUP_USERS, XOOPS_GROUP_ANONYMOUS))) {
  72. if (count($system_catids) > 0) {
  73. $group->setVar('group_type', 'Admin');
  74. } else {
  75. $group->setVar('group_type', '');
  76. }
  77. }
  78. if (!$member_handler->insertGroup($group)) {
  79. xoops_cp_header();
  80. echo $group->getHtmlErrors();
  81. xoops_cp_footer();
  82. } else {
  83. $groupid = $group->getVar('groupid');
  84. $gperm_handler =& xoops_gethandler('groupperm');
  85. $criteria = new CriteriaCompo(new Criteria('gperm_groupid', $groupid));
  86. $criteria->add(new Criteria('gperm_modid', 1));
  87. $criteria2 = new CriteriaCompo(new Criteria('gperm_name', 'system_admin'));
  88. $criteria2->add(new Criteria('gperm_name', 'module_admin'), 'OR');
  89. $criteria2->add(new Criteria('gperm_name', 'module_read'), 'OR');
  90. $criteria2->add(new Criteria('gperm_name', 'block_read'), 'OR');
  91. $criteria->add($criteria2);
  92. $gperm_handler->deleteAll($criteria);
  93. if (count($system_catids) > 0) {
  94. array_push($admin_mids, 1);
  95. foreach ($system_catids as $s_cid) {
  96. $sysperm =& $gperm_handler->create();
  97. $sysperm->setVar('gperm_groupid', $groupid);
  98. $sysperm->setVar('gperm_itemid', $s_cid);
  99. $sysperm->setVar('gperm_name', 'system_admin');
  100. $sysperm->setVar('gperm_modid', 1);
  101. $gperm_handler->insert($sysperm);
  102. }
  103. }
  104. foreach ($admin_mids as $a_mid) {
  105. $modperm =& $gperm_handler->create();
  106. $modperm->setVar('gperm_groupid', $groupid);
  107. $modperm->setVar('gperm_itemid', $a_mid);
  108. $modperm->setVar('gperm_name', 'module_admin');
  109. $modperm->setVar('gperm_modid', 1);
  110. $gperm_handler->insert($modperm);
  111. }
  112. array_push($read_mids, 1);
  113. foreach ($read_mids as $r_mid) {
  114. $modperm =& $gperm_handler->create();
  115. $modperm->setVar('gperm_groupid', $groupid);
  116. $modperm->setVar('gperm_itemid', $r_mid);
  117. $modperm->setVar('gperm_name', 'module_read');
  118. $modperm->setVar('gperm_modid', 1);
  119. $gperm_handler->insert($modperm);
  120. }
  121. foreach ($read_bids as $r_bid) {
  122. $blockperm =& $gperm_handler->create();
  123. $blockperm->setVar('gperm_groupid', $groupid);
  124. $blockperm->setVar('gperm_itemid', $r_bid);
  125. $blockperm->setVar('gperm_name', 'block_read');
  126. $blockperm->setVar('gperm_modid', 1);
  127. $gperm_handler->insert($blockperm);
  128. }
  129. redirect_header("admin.php?fct=groups&amp;op=adminMain",1,_AM_DBUPDATED);
  130. }
  131. break;
  132. case "add":
  133. if (!$GLOBALS['xoopsSecurity']->check()) {
  134. redirect_header("admin.php?fct=groups&amp;op=adminMain", 3, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
  135. }
  136. if (!$name) {
  137. xoops_cp_header();
  138. echo _AM_UNEED2ENTER;
  139. xoops_cp_footer();
  140. exit();
  141. }
  142. $system_catids = empty($system_catids) ? array() : $system_catids;
  143. $admin_mids = empty($admin_mids) ? array() : $admin_mids;
  144. $read_mids = empty($read_mids) ? array() : $read_mids;
  145. $read_bids = empty($read_bids) ? array() : $read_bids;
  146. $member_handler =& xoops_gethandler('member');
  147. $group =& $member_handler->createGroup();
  148. $group->setVar("name", $name);
  149. $group->setVar("description", $desc);
  150. if (count($system_catids) > 0) {
  151. $group->setVar("group_type", 'Admin');
  152. }
  153. if (!$member_handler->insertGroup($group)) {
  154. xoops_cp_header();
  155. echo $group->getHtmlErrors();
  156. xoops_cp_footer();
  157. } else {
  158. $groupid = $group->getVar('groupid');
  159. $gperm_handler =& xoops_gethandler('groupperm');
  160. if (count($system_catids) > 0) {
  161. array_push($admin_mids, 1);
  162. foreach ($system_catids as $s_cid) {
  163. $sysperm =& $gperm_handler->create();
  164. $sysperm->setVar('gperm_groupid', $groupid);
  165. $sysperm->setVar('gperm_itemid', $s_cid);
  166. $sysperm->setVar('gperm_name', 'system_admin');
  167. $sysperm->setVar('gperm_modid', 1);
  168. $gperm_handler->insert($sysperm);
  169. }
  170. }
  171. foreach ($admin_mids as $a_mid) {
  172. $modperm =& $gperm_handler->create();
  173. $modperm->setVar('gperm_groupid', $groupid);
  174. $modperm->setVar('gperm_itemid', $a_mid);
  175. $modperm->setVar('gperm_name', 'module_admin');
  176. $modperm->setVar('gperm_modid', 1);
  177. $gperm_handler->insert($modperm);
  178. }
  179. array_push($read_mids, 1);
  180. foreach ($read_mids as $r_mid) {
  181. $modperm =& $gperm_handler->create();
  182. $modperm->setVar('gperm_groupid', $groupid);
  183. $modperm->setVar('gperm_itemid', $r_mid);
  184. $modperm->setVar('gperm_name', 'module_read');
  185. $modperm->setVar('gperm_modid', 1);
  186. $gperm_handler->insert($modperm);
  187. }
  188. foreach ($read_bids as $r_bid) {
  189. $blockperm =& $gperm_handler->create();
  190. $blockperm->setVar('gperm_groupid', $groupid);
  191. $blockperm->setVar('gperm_itemid', $r_bid);
  192. $blockperm->setVar('gperm_name', 'block_read');
  193. $blockperm->setVar('gperm_modid', 1);
  194. $gperm_handler->insert($blockperm);
  195. }
  196. redirect_header("admin.php?fct=groups&amp;op=adminMain",1,_AM_DBUPDATED);
  197. }
  198. break;
  199. case "del":
  200. xoops_cp_header();
  201. xoops_confirm(array('fct' => 'groups', 'op' => 'delConf', 'g_id' => $g_id), 'admin.php', _AM_AREUSUREDEL);
  202. xoops_cp_footer();
  203. break;
  204. case "delConf":
  205. if (!$GLOBALS['xoopsSecurity']->check()) {
  206. redirect_header("admin.php?fct=groups&amp;op=adminMain", 3, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
  207. }
  208. if (intval($g_id) > 0 && !in_array($g_id, array(XOOPS_GROUP_ADMIN, XOOPS_GROUP_USERS, XOOPS_GROUP_ANONYMOUS))) {
  209. $member_handler =& xoops_gethandler('member');
  210. $group =& $member_handler->getGroup($g_id);
  211. $member_handler->deleteGroup($group);
  212. $gperm_handler =& xoops_gethandler('groupperm');
  213. $gperm_handler->deleteByGroup($g_id);
  214. }
  215. redirect_header("admin.php?fct=groups&amp;op=adminMain",1,_AM_DBUPDATED);
  216. break;
  217. case "addUser":
  218. if (!$GLOBALS['xoopsSecurity']->check()) {
  219. redirect_header("admin.php?fct=groups&amp;op=adminMain", 3, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
  220. }
  221. $member_handler =& xoops_gethandler('member');
  222. $size = count($uids);
  223. for ( $i = 0; $i < $size; $i++ ) {
  224. $member_handler->addUserToGroup($groupid, $uids[$i]);
  225. }
  226. redirect_header("admin.php?fct=groups&amp;op=modify&amp;g_id=".$groupid."",0,_AM_DBUPDATED);
  227. break;
  228. case "delUser":
  229. if (!$GLOBALS['xoopsSecurity']->check()) {
  230. redirect_header("admin.php?fct=groups&amp;op=adminMain", 3, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
  231. }
  232. if (intval($groupid) > 0) {
  233. $member_handler =& xoops_gethandler('member');
  234. $memstart = isset($memstart) ? intval($memstart) : 0;
  235. if ($groupid == XOOPS_GROUP_ADMIN) {
  236. if ($member_handler->getUserCountByGroup($groupid) > count($uids)){
  237. $member_handler->removeUsersFromGroup($groupid, $uids);
  238. }
  239. } else {
  240. $member_handler->removeUsersFromGroup($groupid, $uids);
  241. }
  242. redirect_header('admin.php?fct=groups&amp;op=modify&amp;g_id='.$groupid.'&amp;memstart='.$memstart,0,_AM_DBUPDATED);
  243. }
  244. break;
  245. case "display":
  246. default:
  247. displayGroups();
  248. break;
  249. }
  250. }
  251. ?>