' . sprintf(__('Users of \'%s\' user group'), htmlspecialchars($userGroup)) . ''; $cfgRelation = PMA_getRelationsParam(); $usersTable = PMA_Util::backquote($cfgRelation['db']) . "." . PMA_Util::backquote($cfgRelation['users']); $sql_query = "SELECT `username` FROM " . $usersTable . " WHERE `usergroup`='" . PMA_Util::sqlAddSlashes($userGroup) . "'"; $result = PMA_queryAsControlUser($sql_query, false); if ($result) { if ($GLOBALS['dbi']->numRows($result) == 0) { $html_output .= '

' . __('No users were found belonging to this user group.') . '

'; } else { $html_output .= '' . '' . ''; $i = 0; while ($row = $GLOBALS['dbi']->fetchRow($result)) { $i++; $html_output .= '' . '' . '' . ''; } $html_output .= '' . '
#' . __('User') . '
' . $i . ' ' . htmlspecialchars($row[0]) . '
'; } } $GLOBALS['dbi']->freeResult($result); return $html_output; } /** * Returns HTML for the 'user groups' table * * @return string HTML for the 'user groups' table */ function PMA_getHtmlForUserGroupsTable() { $html_output = '

' . __('User groups') . '

'; $cfgRelation = PMA_getRelationsParam(); $groupTable = PMA_Util::backquote($cfgRelation['db']) . "." . PMA_Util::backquote($cfgRelation['usergroups']); $sql_query = "SELECT * FROM " . $groupTable . " ORDER BY `usergroup` ASC"; $result = PMA_queryAsControlUser($sql_query, false); if ($result && $GLOBALS['dbi']->numRows($result)) { $html_output .= '
'; $html_output .= PMA_URL_getHiddenInputs(); $html_output .= ''; $html_output .= ''; $html_output .= ''; $html_output .= ''; $html_output .= ''; $html_output .= ''; $html_output .= ''; $html_output .= ''; $html_output .= ''; $odd = true; $userGroups = array(); while ($row = $GLOBALS['dbi']->fetchAssoc($result)) { $groupName = $row['usergroup']; if (! isset($userGroups[$groupName])) { $userGroups[$groupName] = array(); } $userGroups[$groupName][$row['tab']] = $row['allowed']; } foreach ($userGroups as $groupName => $tabs) { $html_output .= ''; $html_output .= ''; $html_output .= ''; $html_output .= ''; $html_output .= ''; $html_output .= ''; $html_output .= ''; $odd = ! $odd; } $html_output .= ''; $html_output .= '
' . __('User group') . '' . __('Server level tabs') . '' . __('Database level tabs') . '' . __('Table level tabs') . '' . __('Action') . '
' . htmlspecialchars($groupName) . '' . _getAllowedTabNames($tabs, 'server') . '' . _getAllowedTabNames($tabs, 'db') . '' . _getAllowedTabNames($tabs, 'table') . ''; $html_output .= '' . PMA_Util::getIcon('b_usrlist.png', __('View users')) . ''; $html_output .= '  '; $html_output .= '' . PMA_Util::getIcon('b_edit.png', __('Edit')) . ''; $html_output .= '  '; $html_output .= '' . PMA_Util::getIcon('b_drop.png', __('Delete')) . ''; $html_output .= '
'; $html_output .= '
'; } $GLOBALS['dbi']->freeResult($result); $html_output .= '
'; $html_output .= '' . PMA_Util::getIcon('b_usradd.png') . __('Add user group') . ''; $html_output .= '
'; return $html_output; } /** * Returns the list of allowed menu tab names * based on a data row from usergroup table. * * @param array $row row of usergroup table * @param string $level 'server', 'db' or 'table' * * @return string comma separated list of allowed menu tab names */ function _getAllowedTabNames($row, $level) { $tabNames = array(); $tabs = PMA_Util::getMenuTabList($level); foreach ($tabs as $tab => $tabName) { if (! isset($row[$level . '_' . $tab]) || $row[$level . '_' . $tab] == 'Y' ) { $tabNames[] = $tabName; } } return implode(', ', $tabNames); } /** * Deletes a user group * * @param string $userGroup user group name * * @return void */ function PMA_deleteUserGroup($userGroup) { $cfgRelation = PMA_getRelationsParam(); $userTable = PMA_Util::backquote($cfgRelation['db']) . "." . PMA_Util::backquote($cfgRelation['users']); $groupTable = PMA_Util::backquote($cfgRelation['db']) . "." . PMA_Util::backquote($cfgRelation['usergroups']); $sql_query = "DELETE FROM " . $userTable . " WHERE `usergroup`='" . PMA_Util::sqlAddSlashes($userGroup) . "'"; PMA_queryAsControlUser($sql_query, true); $sql_query = "DELETE FROM " . $groupTable . " WHERE `usergroup`='" . PMA_Util::sqlAddSlashes($userGroup) . "'"; PMA_queryAsControlUser($sql_query, true); } /** * Returns HTML for add/edit user group dialog * * @param string $userGroup name of the user group in case of editing * * @return string HTML for add/edit user group dialog */ function PMA_getHtmlToEditUserGroup($userGroup = null) { $html_output = ''; if ($userGroup == null) { $html_output .= '

' . __('Add user group') . '

'; } else { $html_output .= '

' . sprintf(__('Edit user group: \'%s\''), htmlspecialchars($userGroup)) . '

'; } $html_output .= '
'; $urlParams = array(); if ($userGroup != null) { $urlParams['userGroup'] = $userGroup; $urlParams['editUserGroupSubmit'] = '1'; } else { $urlParams['addUserGroupSubmit'] = '1'; } $html_output .= PMA_URL_getHiddenInputs($urlParams); $html_output .= '
'; $html_output .= '' . __('User group menu assignments') . '   ' . '' . '' . ''; if ($userGroup == null) { $html_output .= ''; $html_output .= ''; $html_output .= '
'; } $allowedTabs = array( 'server' => array(), 'db' => array(), 'table' => array() ); if ($userGroup != null) { $cfgRelation = PMA_getRelationsParam(); $groupTable = PMA_Util::backquote($cfgRelation['db']) . "." . PMA_Util::backquote($cfgRelation['usergroups']); $sql_query = "SELECT * FROM " . $groupTable . " WHERE `usergroup`='" . PMA_Util::sqlAddSlashes($userGroup) . "'"; $result = PMA_queryAsControlUser($sql_query, false); if ($result) { while ($row = $GLOBALS['dbi']->fetchAssoc($result)) { $key = $row['tab']; $value = $row['allowed']; if (substr($key, 0, 7) == 'server_' && $value == 'Y') { $allowedTabs['server'][] = /*overload*/mb_substr($key, 7); } elseif (substr($key, 0, 3) == 'db_' && $value == 'Y') { $allowedTabs['db'][] = /*overload*/mb_substr($key, 3); } elseif (substr($key, 0, 6) == 'table_' && $value == 'Y' ) { $allowedTabs['table'][] = /*overload*/mb_substr($key, 6); } } } $GLOBALS['dbi']->freeResult($result); } $html_output .= _getTabList( __('Server-level tabs'), 'server', $allowedTabs['server'] ); $html_output .= _getTabList( __('Database-level tabs'), 'db', $allowedTabs['db'] ); $html_output .= _getTabList( __('Table-level tabs'), 'table', $allowedTabs['table'] ); $html_output .= '
'; $html_output .= ''; return $html_output; } /** * Returns HTML for checkbox groups to choose * tabs of 'server', 'db' or 'table' levels. * * @param string $title title of the checkbox group * @param string $level 'server', 'db' or 'table' * @param array $selected array of selected allowed tabs * * @return string HTML for checkbox groups */ function _getTabList($title, $level, $selected) { $tabs = PMA_Util::getMenuTabList($level); $html_output = '
'; $html_output .= '' . $title . ''; foreach ($tabs as $tab => $tabName) { $html_output .= '
'; $html_output .= ''; $html_output .= ''; $html_output .= '
'; } $html_output .= '
'; return $html_output; } /** * Add/update a user group with allowed menu tabs. * * @param string $userGroup user group name * @param boolean $new whether this is a new user group * * @return void */ function PMA_editUserGroup($userGroup, $new = false) { $tabs = PMA_Util::getMenuTabList(); $cfgRelation = PMA_getRelationsParam(); $groupTable = PMA_Util::backquote($cfgRelation['db']) . "." . PMA_Util::backquote($cfgRelation['usergroups']); if (! $new) { $sql_query = "DELETE FROM " . $groupTable . " WHERE `usergroup`='" . PMA_Util::sqlAddSlashes($userGroup) . "';"; PMA_queryAsControlUser($sql_query, true); } $sql_query = "INSERT INTO " . $groupTable . "(`usergroup`, `tab`, `allowed`)" . " VALUES "; $first = true; foreach ($tabs as $tabGroupName => $tabGroup) { foreach ($tabs[$tabGroupName] as $tab => $tabName) { if (! $first) { $sql_query .= ", "; } $tabName = $tabGroupName . '_' . $tab; $allowed = isset($_REQUEST[$tabName]) && $_REQUEST[$tabName] == 'Y'; $sql_query .= "('" . $userGroup . "', '" . $tabName . "', '" . ($allowed ? "Y" : "N") . "')"; $first = false; } } $sql_query .= ";"; PMA_queryAsControlUser($sql_query, true); } ?>