function set_unit($unit) { global $mysqli; echo "> Get homechannel's access rights\n"; // get current access rights $sql = 'SELECT userid, level FROM ChannelAccess c JOIN Units u ON u.homechannel = c.channelid WHERE u.id=?'; $stmt = $mysqli->prepare($sql); $stmt->bind_param('i', $unit); $stmt->execute(); $stmt->bind_result($id, $level); // try to fetch $current_permissions = array(); while ($stmt->fetch()) { $current_permissions[$id] = $level; } $stmt->close(); echo "> List Groups\n"; // then work on unit // 1. find out which groups have currently what level of access here $data = list_groups($unit); echo "> Insert Group Permissions\n"; // 2. check if permissions already present foreach ($data as $permissions) { insert_unit_permissions($unit, $permissions['id'], $permissions['level'], $current_permissions); } }
function recursive_call($channel, $current_permissions) { global $mysqli; // then work on channels // 1. find out which groups have currently what level of access here $data = list_groups($channel); // 2. check if permissions already present foreach ($data as $permissions) { if (array_key_exists($permissions['id'], $current_permissions) && $current_permissions[$permissions['id']] == $permissions['level']) { // already in there } else { // put in database insert_channel_permissions($channel, $permissions['id'], $permissions['level']); $current_permissions[$permissions['id']] = $permissions['level']; } } // recurse $sql = 'SELECT id FROM Channels WHERE parent = ?'; $stmt = $mysqli->prepare($sql); $stmt->bind_param('i', $channel); $stmt->execute(); $stmt->bind_result($id); $list = array(); while ($stmt->fetch()) { $list[] = $id; } $stmt->close(); foreach ($list as $id) { // recurse recursive_call($id, $current_permissions); } }
function list_groups($parent) { $str = ''; $qb_groups = midcom_db_group::new_query_builder(); $qb_groups->add_constraint('owner', '=', $parent); $groups = $qb_groups->execute(); if (count($groups) > 0) { $str = "<ul>\n"; foreach ($groups as $group) { $str .= "<li>"; $str .= '<input name="add_to_groups[' . $group->guid . ']" id="group_' . $group->guid . '" type="checkbox" value="' . $group->guid . '"> <label for="group_' . $group->guid . '">' . $group->official . '</label>'; $str .= "</li>\n"; $str .= list_groups($group->id); } $str .= "</ul>"; } return $str; }
$class = $class == 'even' ? 'odd' : 'even'; } echo "\r\n\t\t<tr>\r\n\t\t\t<td class='foot' align='center' colspan='6'>\r\n\t\t\t\t<input type='hidden' name='fct' value='blocksadmin' />\r\n\t\t\t\t<input type='hidden' name='op' value='order' />\r\n\t\t\t\t<input type='submit' name='submit' value='" . _SUBMIT . "' />\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t</table>\r\n\t</form>\n"; } function list_groups() { global $xoopsModule, $block_arr; foreach (array_keys($block_arr) as $i) { $item_list[$block_arr[$i]->getVar("bid")] = $block_arr[$i]->getVar("title"); } $form = new MyXoopsGroupPermForm(_MD_AM_ADGS, 1, 'block_read', ''); $form->addAppendix('module_admin', $xoopsModule->mid(), $xoopsModule->name() . ' ' . _AM_ACTIVERIGHTS); $form->addAppendix('module_read', $xoopsModule->mid(), $xoopsModule->name() . ' ' . _AM_ACCESSRIGHTS); foreach ($item_list as $item_id => $item_name) { $form->addItem($item_id, $item_name); } echo $form->render(); } if (!empty($_POST['submit'])) { include "mygroupperm.php"; redirect_header(XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/admin/myblocksadmin.php", 1, _MD_AM_DBUPDATED); } xoops_cp_header(); if (file_exists('./mymenu.php')) { include './mymenu.php'; } echo "<h3 style='text-align:left;'>" . $xoopsModule->name() . "</h3>\n"; echo "<h4 style='text-align:left;'>" . _AM_BADMIN . "</h4>\n"; list_blocks(); list_groups(); xoops_cp_footer();
$cancel = 'display_on'; $viewedit = 'display_off'; $selected_group = mysql_real_escape_string($_GET['group']); //we will continue adding users to this group $added_user = mysql_real_escape_string($_GET['user']); $added_user_text = " '" . $added_user . "' added to group."; $user_dropdown = user_dropdown($selected_group); //dropdown should show only users not already in the group } #get result count $get_records = $Query; $check_get_records = mysql_query($get_records); $result = $check_get_records; #Count table rows $count = mysql_num_rows($result); $grouplist = list_groups(); //list of current troups $gdb_dropdown = gdb_dropdown(); //list all GDB available $groups_dropdown = groups_dropdown(); //select a group ### Mode Button Display $display_block = "\r\n<table style=\"font-size:12px\" width=\"92%\">\r\n<tbody>\r\n\t<tr>\r\n\t\t<td colspan=\"8\">\r\n\t\t\t<h2 class=\"{$edituser} indent1 bottommargin1\">\r\n\t\t\t\tEdit Group Membership:\r\n\t\t\t</h2>\r\n\t\t\t<p class=\"{$edituser} instruction\"> \r\n\t\t\t\tClick radio button(s) to change user Group Member Type, then click 'Update'. <span class=\"heading\"> (Inactive Users are <span class=\"gray\">Gray</span>)</span>\r\n\t\t\t</p>\r\n\t\t\t<p class=\"{$edituser} instruction\">\r\n\t\t\t\tSelect 'REMOVE' to delete a user-group assignment (does NOT affect user's yrGATE account)\r\n\t\t\t</p>\r\n\t\t\t<h2 class=\"{$addgroup} indent1 bottommargin1\">\r\n\t\t\t\tCreate New Group\r\n\t\t\t</h2>\r\n\t\t\t<p class=\"{$addgroup} instruction indent1\">\r\n\t\t\t\tEnter New Group name, single GDB or 'All', and Group Administrator (required).\r\n\t\t\t</p>\r\n\t\t\t<p class=\"{$addgroup} instruction indent1\">\r\n\t\t\t\tOnce you have created this group, click 'Add Users to Group...' from the Groups page.\r\n\t\t\t</p>\t\t\t\r\n \t\t\t<p class= \"{$view}\">\r\n \t\t\t\tyrGATE users can be assigned to one or more <b>Groups</b> that share common curation resources. On this page you can <b>create Groups</b>, add <b>Users</b>, and edit <b>Group Membership</b> (assign Group Admins; remove Members from Group). See also <a href=\"/admin/users.php\">Manage User Accounts</a>\r\n \t\t\t</p>\r\n \t\t\t<p class= \"{$view}\">\r\n \t\t\t\t<b>Only Active users are shown except in Edit mode </b>.\r\n \t\t\t</p>\r\n \t\t\t\t<p class=\"{$view} instruction indent1\">Select an action from the choices below: \r\n \t\t\t</p>\r\n\t\t\t<h2 class=\"{$adduser} indent1 bottommargin1\">\r\n\t\t\tAdd Users to Group:\r\n\t\t\t</h2>\r\n\t\t\t</td>\r\n \t</tr>\r\n\t<tr>\r\n \t\t<td width=\"20%\" align = \"left\">\r\n \t\t\r\n \t\t</td>\r\n\t\t<td align=\"right\" valign=\"bottom\">\r\n\t\t\t<form method=\"post\" action=\"/admin/groups.php\" name=\"add_group_on\" class=\"styled\">\r\n\t\t\t\t<input id=\"creategrp\" class=\"submit {$view}\" type=\"submit\" name=\"mode\" value=\"1. Create New Group...\" />\r\n\t\t\t\t<input type=\"hidden\" name=\"mode\" value=\"AddGroup\" />\r\n\t\t\t</form>\r\n\t\t</td>\r\n\t\t<td width=\"20%\" align = \"right\" >\r\n\t\t</td>\r\n\t\t<td align=\"right\">\r\n\t\t\t<form method=\"post\" action=\"/admin/groups.php\" name=\"add_users_on\" class=\"styled\">\r\n\t\t\t\t<select class=\"submit {$view} normalfont\" name=\"group\">{$groups_dropdown}</select><br />\r\n\t\t\t\t<input id=\"adduser\" class=\"submit {$view}\" type=\"submit\" name=\"mode\" value=\"2. Add Users to Group...\" />\r\n\t\t\t <input type=\"hidden\" name=\"mode\" value=\"AddUser\" />\r\n </form>\r\n\t\t</td>\r\n\t <td width=\"20%\" align=\"right\">\r\n\t\t</td>\r\n\t\t<td align = \"right\" valign=\"bottom\">\r\n\t\t\t<form method=\"post\" action=\"/admin/groups.php\" name=\"edit_status_on\" class=\"styled\">\r\n\t\t\t\t<input id=\"editacct\" class=\"submit {$view}\" type=\"submit\" name=\"mode\" value=\"3. Edit Group Membership...\" />\r\n\t\t\t\t<input type=\"hidden\" name=\"mode\" value=\"EditUser\" />\r\n\t\t\t</form>\r\n\t\t</td>\r\n\t\t<td width=\"20%\" align = \"right\">\r\n\t\t\t<form method=\"post\" action=\"/admin/groups.php\" name=\"view_status_on\" class=\"styled\">\r\n\t\t\t\t<input id=\"cancel\" class=\"{$cancel} submit\" type=\"submit\" value=\" Cancel \" />\r\n\t\t\t\t<input type=\"hidden\" name=\"mode\" value=\"Cancel\" />\r\n\t\t\t</form>\r\n\t\t</td>\r\n\t</tr>\r\n\t</tbody>\r\n</table>\r\n"; #Action Button Display and Table Headers $display_block .= "\r\n\r\n<form name=\"form1\" method=\"post\" action=\"/admin/update_groups.php\" class=\"styled\">\r\n\r\n<table style=\"font-size:12px\" width=\"92%\">\r\n\t\t\t<tr>\r\n\t\t\t\t<td class=\"{$adduser} indent2\" width=\"90%\">\r\n\t\t\t\t\t<p class=\"instruction\">Select Username and Account Type (USER or ADMIN) </p>\r\n\t\t\t\t\t<p class=\"instruction\">If adding more users to this Group, click 'Insert & Next'; or, click 'Insert & Done'</p>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td>\r\n\t\t\t\t\t<input id=\"update\" class=\"{$edituser} submit\" type=\"submit\" name=\"edit_action\" value=\"Update Accounts\">\r\n\t\t\t\t\t<input id=\"count\" class=\"{$edituser} submit\" type=\"hidden\" name=\"count\" value=\"{$count}\">\r\n\t\t\t\t</td>\r\n\t\t\t\t<td align=\"right\">\r\n\t\t\t\t\t<input id=\"insert_group\" class=\"{$addgroup} submit\" type=\"submit\" name=\"group_action\" value=\"Create Group\">\r\n\t\t\t\t</td>\r\n\t\t\t\t<td>\r\n <input id=\"insertuser_repeat\" class=\"{$adduser} submit\" type=\"submit\" name=\"user_action_repeat\" value=\"Insert & Next\">\r\n\t\t\t\t\t<input id=\"insertuser\" class=\"{$adduser} submit\" type=\"submit\" name=\"user_action\" value=\"Insert & Done\">\r\n\t\t\t\t</td>\r\n\t\t\t</tr>\r\n</table>\r\n<table class=\"featuretable bottommargin1 topmargin1\" style=\"font-size:12px\" cellpadding=\"6\">\r\n\t\t<thead align=\"center\">\r\n\t\t\t\t\t\t<tr class=\"{$viewedit}\">\r\n\t\t\t\t\t\t\t<th class=\"reverse_1\">User Group</th>\r\n\t\t\t\t\t\t\t<th class=\"reverse_1\">GDB </th>\r\n\t\t\t\t\t\t\t<th class=\"reverse_1\">User</th>\r\n\t\t\t\t\t\t\t<th class=\"reverse_1\">Email</th>\r\n\t\t\t\t\t\t\t<th class=\"reverse_1\" style=\"width:250px\">\r\n\t\t\t\t\t\t\tGroup Member Type \r\n\t\t\t\t\t\t\t<img id='admin_group_account' title='Help' class='help-button nudge1' src='/XGDB/images/help-icon.png' alt='?' />\r\n\t\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\r\n\t\t</thead>\r\n\t\t<tbody>\r\n"; # Table Body Rows for View mode $user_check = array(); $admin_check = array(); $inactive_check = array(); $user_style = array(); $admin_style = array();
<th>last log <small>(sysop)</small></th> <th>Local groups</th> </tr> </thead> <tbody>'; foreach ($wikis as $wiki) { $dbname = $wiki->dbName; $domain = $wiki->domain; $family = $wiki->family; /* get data */ $db->Connect($dbname); $id = $db->Query('SELECT user_id FROM user WHERE user_name=? LIMIT 1', array($user))->fetchValue(); if ($id) { // groups $groups = $db->Query('SELECT GROUP_CONCAT(ug_group SEPARATOR ", ") FROM user_groups WHERE ug_user=?', array($id))->fetchValue(); // edits $last_edit = $db->Query('SELECT DATE_FORMAT(rev_timestamp, "%Y-%m-%d %H:%i") FROM revision_userindex WHERE rev_user=? ORDER BY rev_timestamp DESC LIMIT 1', array($id))->fetchValue(); // log actions $last_log_bur = $db->Query('SELECT DATE_FORMAT(log_timestamp, "%Y-%m-%d %H:%i") FROM logging_userindex WHERE log_user=? AND log_type IN ("makebot", "renameuser", "rights") ORDER BY log_timestamp DESC LIMIT 1', array($id))->fetchValue(); $last_log_sys = $db->Query('SELECT DATE_FORMAT(log_timestamp, "%Y-%m-%d %H:%i") FROM logging_userindex WHERE log_user=? AND log_type IN ("block", "delete", "protect") ORDER BY log_timestamp DESC LIMIT 1', array($id))->fetchValue(); // output if ($show_all || !empty($last_edit) || !empty($last_log_bur) || !empty($last_log_sys)) { echo '<tr>', '<td>', $family, '</td>', '<td>', link_domain($domain), '</td>', color_cell($last_edit), color_cell($last_log_bur), color_cell($last_log_sys), list_groups($groups), '</tr>'; } } $db->dispose(); } echo '</tbody></table>'; echo '</div>'; } while (0); $backend->footer();