1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10:
11:
12: use Xoops\Core\Kernel\Criteria;
13: use Xoops\Core\Kernel\CriteriaCompo;
14: use Xoops\Core\Kernel\Handlers\XoopsGroup;
15:
16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
27: class SystemGroupForm extends Xoops\Form\ThemeForm
28: {
29: 30: 31: 32: 33:
34: public function __construct(XoopsGroup $obj)
35: {
36: $xoops = Xoops::getInstance();
37:
38: if ($obj->isNew()) {
39: $s_cat_value = '';
40: $a_mod_value = array();
41: $r_mod_value = array();
42: $r_block_value = array();
43: } else {
44: $sysperm_handler = $xoops->getHandlerGroupPermission();
45: $s_cat_value = $sysperm_handler->getItemIds('system_admin', $obj->getVar('groupid'));
46: $member_handler = $xoops->getHandlerMember();
47: $thisgroup = $member_handler->getGroup($obj->getVar('groupid'));
48: $moduleperm_handler = $xoops->getHandlerGroupPermission();
49: $a_mod_value = $moduleperm_handler->getItemIds('module_admin', $thisgroup->getVar('groupid'));
50: $r_mod_value = $moduleperm_handler->getItemIds('module_read', $thisgroup->getVar('groupid'));
51: $gperm_handler = $xoops->getHandlerGroupPermission();
52: $r_block_value = $gperm_handler->getItemIds('block_read', $obj->getVar('groupid'));
53: }
54: include_once $xoops->path('/modules/system/constants.php');
55:
56: $title = $obj->isNew() ? SystemLocale::ADD_NEW_GROUP : SystemLocale::EDIT_GROUP;
57: parent::__construct($title, "groupform", 'admin.php', "post", true);
58: $this->setExtra('enctype="multipart/form-data"');
59:
60: $name_text = new Xoops\Form\Text(SystemLocale::GROUP_NAME, "name", 4, 50, $obj->getVar('name'));
61: $desc_text = new Xoops\Form\TextArea(SystemLocale::GROUP_DESCRIPTION, "desc", $obj->getVar('description'));
62:
63: $system_catids = new Xoops\Form\ElementTray(SystemLocale::SYSTEM_ADMIN_RIGHTS, '');
64:
65: $s_cat_checkbox_all = new Xoops\Form\Checkbox('', "catbox", 1);
66: $s_cat_checkbox_all->addOption('allbox', XoopsLocale::ALL);
67: $s_cat_checkbox_all->setExtra(" onclick='xoopsCheckGroup(\"groupform\", \"catbox\" , \"system_catids[]\");' ");
68: $s_cat_checkbox_all->setClass('xo-checkall');
69: $system_catids->addElement($s_cat_checkbox_all);
70:
71: $s_cat_checkbox = new Xoops\Form\Checkbox('', "system_catids", $s_cat_value);
72:
73: $admin_dir = \XoopsBaseConfig::get('root-path') . '/modules/system/admin/';
74: $dirlist = XoopsLists::getDirListAsArray($admin_dir);
75: foreach ($dirlist as $file) {
76: include \XoopsBaseConfig::get('root-path') . '/modules/system/admin/' . $file . '/xoops_version.php';
77: if (!empty($modversion['category'])) {
78: if ($xoops->getModuleConfig('active_' . $file, 'system') == 1) {
79: $s_cat_checkbox->addOption($modversion['category'], $modversion['name']);
80: }
81: }
82: unset($modversion);
83: }
84: unset($dirlist);
85: $system_catids->addElement($s_cat_checkbox);
86:
87: $admin_mids = new Xoops\Form\ElementTray(SystemLocale::MODULE_ADMIN_RIGHTS, '');
88:
89: $s_admin_checkbox_all = new Xoops\Form\Checkbox('', "adminbox", 1);
90: $s_admin_checkbox_all->addOption('allbox', XoopsLocale::ALL);
91: $s_admin_checkbox_all->setExtra(" onclick='xoopsCheckGroup(\"groupform\", \"adminbox\" , \"admin_mids[]\");' ");
92: $s_admin_checkbox_all->setClass('xo-checkall');
93: $admin_mids->addElement($s_admin_checkbox_all);
94:
95: $a_mod_checkbox = new Xoops\Form\Checkbox('', "admin_mids[]", $a_mod_value);
96:
97: $module_handler = $xoops->getHandlerModule();
98: $criteria = new CriteriaCompo(new Criteria('hasadmin', 1));
99: $criteria->add(new Criteria('isactive', 1));
100: $criteria->add(new Criteria('dirname', 'system', '<>'));
101: $a_mod_checkbox->addOptionArray($module_handler->getNameList($criteria));
102: $admin_mids->addElement($a_mod_checkbox);
103:
104: $read_mids = new Xoops\Form\ElementTray(SystemLocale::MODULE_ACCESS_RIGHTS, '');
105:
106: $s_mod_checkbox_all = new Xoops\Form\Checkbox('', "readbox", 1);
107: $s_mod_checkbox_all->addOption('allbox', XoopsLocale::ALL);
108: $s_mod_checkbox_all->setExtra(" onclick='xoopsCheckGroup(\"groupform\", \"readbox\" , \"read_mids[]\");' ");
109: $s_mod_checkbox_all->setClass('xo-checkall');
110: $read_mids->addElement($s_mod_checkbox_all);
111:
112: $r_mod_checkbox = new Xoops\Form\Checkbox('', "read_mids[]", $r_mod_value);
113:
114: $criteria = new CriteriaCompo(new Criteria('hasmain', 1));
115: $criteria->add(new Criteria('isactive', 1));
116: $r_mod_checkbox->addOptionArray($module_handler->getNameList($criteria));
117: $read_mids->addElement($r_mod_checkbox);
118:
119: $criteria = new CriteriaCompo(new Criteria('isactive', 1));
120: $criteria->setSort("mid");
121: $criteria->setOrder("ASC");
122: $module_list = $module_handler->getNameList($criteria);
123: $module_list[0] = SystemLocale::CUSTOM_BLOCK;
124:
125: $block_handler = $xoops->getHandlerBlock();
126: $blocks_obj = $block_handler->getDistinctObjects(
127: new Criteria("mid", "('" . implode("', '", array_keys($module_list)) . "')", "IN"),
128: true
129: );
130:
131: $blocks_module = array();
132: foreach (array_keys($blocks_obj) as $bid) {
133: $title = $blocks_obj[$bid]->getVar("title");
134: $blocks_module[$blocks_obj[$bid]->getVar('mid')][$blocks_obj[$bid]->getVar('bid')] =
135: empty($title) ? $blocks_obj[$bid]->getVar("name") : $title;
136: }
137: ksort($blocks_module);
138:
139: $r_block_tray = new Xoops\Form\ElementTray(SystemLocale::BLOCK_ACCESS_RIGHTS, "<br /><br />");
140: $s_checkbox_all = new Xoops\Form\Checkbox('', "blocksbox", 1);
141: $s_checkbox_all->addOption('allbox', XoopsLocale::ALL);
142: $s_checkbox_all->setExtra(" onclick='xoopsCheckGroup(\"groupform\", \"blocksbox\" , \"read_bids[]\");' ");
143: $s_checkbox_all->setClass('xo-checkall');
144: $r_block_tray->addElement($s_checkbox_all);
145: foreach (array_keys($blocks_module) as $mid) {
146:
147: $new_blocks_array = array();
148: foreach ($blocks_module[$mid] as $key => $value) {
149: $new_blocks_array[$key] = "<a href='" . \XoopsBaseConfig::get('url')
150: . "/modules/system/admin.php?fct=blocksadmin&op=edit&bid={$key}' "
151: . "title='ID: {$key}' rel='external'>{$value}</a>";
152: }
153: $r_block_checkbox = new Xoops\Form\Checkbox(
154: '<strong>' . $module_list[$mid] . '</strong><br />',
155: "read_bids[]",
156: $r_block_value
157: );
158:
159: $r_block_checkbox->addOptionArray($new_blocks_array);
160: $r_block_tray->addElement($r_block_checkbox);
161: unset($r_block_checkbox);
162: }
163: if (!$obj->isNew()) {
164: $this->addElement(new Xoops\Form\Hidden('g_id', $obj->getVar('groupid')));
165: $this->addElement(new Xoops\Form\Hidden("op", "groups_save_update"));
166: } else {
167: $this->addElement(new Xoops\Form\Hidden("op", "groups_save_add"));
168: }
169: $this->addElement(new Xoops\Form\Hidden('fct', 'groups'));
170:
171: $this->addElement($name_text, true);
172: $this->addElement($desc_text);
173: $this->addElement($system_catids);
174: $this->addElement($admin_mids);
175: $this->addElement($read_mids);
176: $this->addElement($r_block_tray);
177: $this->addElement(new Xoops\Form\Button("", "submit", XoopsLocale::A_SUBMIT, "submit"));
178: }
179: }
180: