<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * set of functions for user group handling * * @package PhpMyAdmin */ /** * Return HTML to list the users belonging to a given user group * * @param string $userGroup user group name * * @return string HTML to list the users belonging to a given user group */ function PMA_getHtmlForListingUsersofAGroup($userGroup) { $html_output = '<h2>' . sprintf(__('Users of \'%s\' user group'), htmlspecialchars($userGroup)) . '</h2>'; $cfgRelation = PMA_getRelationsParam(); $usersTable = PMA\libraries\Util::backquote($cfgRelation['db']) . "." . PMA\libraries\Util::backquote($cfgRelation['users']); $sql_query = "SELECT `username` FROM " . $usersTable . " WHERE `usergroup`='" . $GLOBALS['dbi']->escapeString($userGroup) . "'"; $result = PMA_queryAsControlUser($sql_query, false); if ($result) { if ($GLOBALS['dbi']->numRows($result) == 0) { $html_output .= '<p>' . __('No users were found belonging to this user group.') . '</p>'; } else { $html_output .= '<table>' . '<thead><tr><th>#</th><th>' . __('User') . '</th></tr></thead>' . '<tbody>'; $i = 0; while ($row = $GLOBALS['dbi']->fetchRow($result)) { $i++; $html_output .= '<tr>' . '<td>' . $i . ' </td>' . '<td>' . htmlspecialchars($row[0]) . '</td>' . '</tr>'; } $html_output .= '</tbody>' . '</table>'; } } $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 = '<h2>' . __('User groups') . '</h2>'; $cfgRelation = PMA_getRelationsParam(); $groupTable = PMA\libraries\Util::backquote($cfgRelation['db']) . "." . PMA\libraries\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 .= '<form name="userGroupsForm" id="userGroupsForm"' . ' action="server_privileges.php" method="post">'; $html_output .= PMA_URL_getHiddenInputs(); $html_output .= '<table id="userGroupsTable">'; $html_output .= '<thead><tr>'; $html_output .= '<th style="white-space: nowrap">' . __('User group') . '</th>'; $html_output .= '<th>' . __('Server level tabs') . '</th>'; $html_output .= '<th>' . __('Database level tabs') . '</th>'; $html_output .= '<th>' . __('Table level tabs') . '</th>'; $html_output .= '<th>' . __('Action') . '</th>'; $html_output .= '</tr></thead>'; $html_output .= '<tbody>'; $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 .= '<tr class="' . ($odd ? 'odd' : 'even') . '">'; $html_output .= '<td>' . htmlspecialchars($groupName) . '</td>'; $html_output .= '<td>' . _getAllowedTabNames($tabs, 'server') . '</td>'; $html_output .= '<td>' . _getAllowedTabNames($tabs, 'db') . '</td>'; $html_output .= '<td>' . _getAllowedTabNames($tabs, 'table') . '</td>'; $html_output .= '<td>'; $html_output .= '<a class="" href="server_user_groups.php' . PMA_URL_getCommon( array( 'viewUsers' => 1, 'userGroup' => $groupName ) ) . '">' . PMA\libraries\Util::getIcon('b_usrlist.png', __('View users')) . '</a>'; $html_output .= ' '; $html_output .= '<a class="" href="server_user_groups.php' . PMA_URL_getCommon( array( 'editUserGroup' => 1, 'userGroup' => $groupName ) ) . '">' . PMA\libraries\Util::getIcon('b_edit.png', __('Edit')) . '</a>'; $html_output .= ' '; $html_output .= '<a class="deleteUserGroup ajax"' . ' href="server_user_groups.php' . PMA_URL_getCommon( array( 'deleteUserGroup' => 1, 'userGroup' => $groupName ) ) . '">' . PMA\libraries\Util::getIcon('b_drop.png', __('Delete')) . '</a>'; $html_output .= '</td>'; $html_output .= '</tr>'; $odd = ! $odd; } $html_output .= '</tbody>'; $html_output .= '</table>'; $html_output .= '</form>'; } $GLOBALS['dbi']->freeResult($result); $html_output .= '<fieldset id="fieldset_add_user_group">'; $html_output .= '<a href="server_user_groups.php' . PMA_URL_getCommon(array('addUserGroup' => 1)) . '">' . PMA\libraries\Util::getIcon('b_usradd.png') . __('Add user group') . '</a>'; $html_output .= '</fieldset>'; 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\libraries\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\libraries\Util::backquote($cfgRelation['db']) . "." . PMA\libraries\Util::backquote($cfgRelation['users']); $groupTable = PMA\libraries\Util::backquote($cfgRelation['db']) . "." . PMA\libraries\Util::backquote($cfgRelation['usergroups']); $sql_query = "DELETE FROM " . $userTable . " WHERE `usergroup`='" . $GLOBALS['dbi']->escapeString($userGroup) . "'"; PMA_queryAsControlUser($sql_query, true); $sql_query = "DELETE FROM " . $groupTable . " WHERE `usergroup`='" . $GLOBALS['dbi']->escapeString($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 .= '<h2>' . __('Add user group') . '</h2>'; } else { $html_output .= '<h2>' . sprintf(__('Edit user group: \'%s\''), htmlspecialchars($userGroup)) . '</h2>'; } $html_output .= '<form name="userGroupForm" id="userGroupForm"' . ' action="server_user_groups.php" method="post">'; $urlParams = array(); if ($userGroup != null) { $urlParams['userGroup'] = $userGroup; $urlParams['editUserGroupSubmit'] = '1'; } else { $urlParams['addUserGroupSubmit'] = '1'; } $html_output .= PMA_URL_getHiddenInputs($urlParams); $html_output .= '<fieldset id="fieldset_user_group_rights">'; $html_output .= '<legend>' . __('User group menu assignments') . ' ' . '<input type="checkbox" id="addUsersForm_checkall" ' . 'class="checkall_box" title="Check all">' . '<label for="addUsersForm_checkall">' . __('Check all') . '</label>' . '</legend>'; if ($userGroup == null) { $html_output .= '<label for="userGroup">' . __('Group name:') . '</label>'; $html_output .= '<input type="text" name="userGroup" ' . 'autocomplete="off" required="required" />'; $html_output .= '<div class="clearfloat"></div>'; } $allowedTabs = array( 'server' => array(), 'db' => array(), 'table' => array() ); if ($userGroup != null) { $cfgRelation = PMA_getRelationsParam(); $groupTable = PMA\libraries\Util::backquote($cfgRelation['db']) . "." . PMA\libraries\Util::backquote($cfgRelation['usergroups']); $sql_query = "SELECT * FROM " . $groupTable . " WHERE `usergroup`='" . $GLOBALS['dbi']->escapeString($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'][] = mb_substr($key, 7); } elseif (substr($key, 0, 3) == 'db_' && $value == 'Y') { $allowedTabs['db'][] = mb_substr($key, 3); } elseif (substr($key, 0, 6) == 'table_' && $value == 'Y' ) { $allowedTabs['table'][] = 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 .= '</fieldset>'; $html_output .= '<fieldset id="fieldset_user_group_rights_footer"' . ' class="tblFooters">'; $html_output .= '<input type="submit" value="' . __('Go') . '">'; $html_output .= '</fieldset>'; 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\libraries\Util::getMenuTabList($level); $html_output = '<fieldset>'; $html_output .= '<legend>' . $title . '</legend>'; foreach ($tabs as $tab => $tabName) { $html_output .= '<div class="item">'; $html_output .= '<input type="checkbox" class="checkall"' . (in_array($tab, $selected) ? ' checked="checked"' : '') . ' name="' . $level . '_' . $tab . '" value="Y" />'; $html_output .= '<label for="' . $level . '_' . $tab . '">' . '<code>' . $tabName . '</code>' . '</label>'; $html_output .= '</div>'; } $html_output .= '</fieldset>'; 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\libraries\Util::getMenuTabList(); $cfgRelation = PMA_getRelationsParam(); $groupTable = PMA\libraries\Util::backquote($cfgRelation['db']) . "." . PMA\libraries\Util::backquote($cfgRelation['usergroups']); if (! $new) { $sql_query = "DELETE FROM " . $groupTable . " WHERE `usergroup`='" . $GLOBALS['dbi']->escapeString($userGroup) . "';"; PMA_queryAsControlUser($sql_query, true); } $sql_query = "INSERT INTO " . $groupTable . "(`usergroup`, `tab`, `allowed`)" . " VALUES "; $first = true; foreach ($tabs as $tabGroupName => $tabGroup) { foreach ($tabGroup as $tab => $tabName) { if (! $first) { $sql_query .= ", "; } $tabName = $tabGroupName . '_' . $tab; $allowed = isset($_REQUEST[$tabName]) && $_REQUEST[$tabName] == 'Y'; $sql_query .= "('" . $GLOBALS['dbi']->escapeString($userGroup) . "', '" . $tabName . "', '" . ($allowed ? "Y" : "N") . "')"; $first = false; } } $sql_query .= ";"; PMA_queryAsControlUser($sql_query, true); }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
bfShapeFiles | Folder | 0755 |
|
|
config | Folder | 0755 |
|
|
controllers | Folder | 0755 |
|
|
dbi | Folder | 0755 |
|
|
di | Folder | 0755 |
|
|
engines | Folder | 0755 |
|
|
gis | Folder | 0755 |
|
|
navigation | Folder | 0755 |
|
|
plugins | Folder | 0755 |
|
|
properties | Folder | 0755 |
|
|
rte | Folder | 0755 |
|
|
sql-parser | Folder | 0755 |
|
|
Advisor.php | File | 15.13 KB | 0644 |
|
Config.php | File | 54.7 KB | 0644 |
|
Console.php | File | 14.82 KB | 0644 |
|
DatabaseInterface.php | File | 95.6 KB | 0644 |
|
DbList.php | File | 1.9 KB | 0644 |
|
DbQbe.php | File | 68.87 KB | 0644 |
|
DbSearch.php | File | 17.21 KB | 0644 |
|
DisplayResults.php | File | 206 KB | 0644 |
|
Error.php | File | 12.7 KB | 0644 |
|
ErrorHandler.php | File | 16.48 KB | 0644 |
|
File.php | File | 18.82 KB | 0644 |
|
Font.php | File | 4.24 KB | 0644 |
|
Footer.php | File | 10.52 KB | 0644 |
|
Header.php | File | 25.34 KB | 0644 |
|
Index.php | File | 23.79 KB | 0644 |
|
IndexColumn.php | File | 4.46 KB | 0644 |
|
Language.php | File | 4.27 KB | 0644 |
|
LanguageManager.php | File | 20.75 KB | 0644 |
|
Linter.php | File | 5.02 KB | 0644 |
|
ListAbstract.php | File | 3.15 KB | 0644 |
|
ListDatabase.php | File | 4.62 KB | 0644 |
|
Menu.php | File | 21.14 KB | 0644 |
|
Message.php | File | 18.67 KB | 0644 |
|
OutputBuffering.php | File | 3.59 KB | 0644 |
|
PDF.php | File | 3.94 KB | 0644 |
|
Partition.php | File | 7.26 KB | 0644 |
|
Psr4Autoloader.php | File | 4.85 KB | 0644 |
|
RecentFavoriteTable.php | File | 11.78 KB | 0644 |
|
Response.php | File | 12.61 KB | 0644 |
|
SavedSearches.php | File | 11.67 KB | 0644 |
|
Scripts.php | File | 7.38 KB | 0644 |
|
ServerStatusData.php | File | 15.72 KB | 0644 |
|
StorageEngine.php | File | 13.61 KB | 0644 |
|
SubPartition.php | File | 3.52 KB | 0644 |
|
SysInfo.php | File | 799 B | 0644 |
|
SysInfoLinux.php | File | 1.92 KB | 0644 |
|
SysInfoSunOS.php | File | 1.86 KB | 0644 |
|
SysInfoWINNT.php | File | 3.08 KB | 0644 |
|
SystemDatabase.php | File | 3.66 KB | 0644 |
|
Table.php | File | 88.12 KB | 0644 |
|
Template.php | File | 4.45 KB | 0644 |
|
Theme.php | File | 11.34 KB | 0644 |
|
ThemeManager.php | File | 12.91 KB | 0644 |
|
Tracker.php | File | 30.35 KB | 0644 |
|
Types.php | File | 6.08 KB | 0644 |
|
TypesMySQL.php | File | 17.26 KB | 0644 |
|
Util.php | File | 172.46 KB | 0644 |
|
VersionInformation.php | File | 7.87 KB | 0644 |
|
ZipFile.php | File | 6.63 KB | 0644 |
|
advisor.lib.php | File | 1.6 KB | 0644 |
|
advisory_rules.txt | File | 25.94 KB | 0644 |
|
autoloader.php | File | 450 B | 0644 |
|
bookmark.lib.php | File | 8.5 KB | 0644 |
|
browse_foreigners.lib.php | File | 9.83 KB | 0644 |
|
central_columns.lib.php | File | 49.38 KB | 0644 |
|
charset_conversion.lib.php | File | 3.54 KB | 0644 |
|
check_user_privileges.lib.php | File | 10.65 KB | 0644 |
|
cleanup.lib.php | File | 1.29 KB | 0644 |
|
common.inc.php | File | 34.38 KB | 0644 |
|
config.default.php | File | 66.5 KB | 0644 |
|
config.values.php | File | 10.17 KB | 0644 |
|
core.lib.php | File | 29.94 KB | 0644 |
|
create_addfield.lib.php | File | 15.68 KB | 0644 |
|
database_interface.inc.php | File | 2.63 KB | 0644 |
|
db_common.inc.php | File | 3.12 KB | 0644 |
|
db_designer.lib.php | File | 10.4 KB | 0644 |
|
db_table_exists.lib.php | File | 3.21 KB | 0644 |
|
display_change_password.lib.php | File | 5.45 KB | 0644 |
|
display_create_table.lib.php | File | 1.53 KB | 0644 |
|
display_export.lib.php | File | 38.11 KB | 0644 |
|
display_git_revision.lib.php | File | 3.04 KB | 0644 |
|
display_import.lib.php | File | 24.34 KB | 0644 |
|
display_import_ajax.lib.php | File | 3.13 KB | 0644 |
|
display_select_lang.lib.php | File | 2.36 KB | 0644 |
|
error.inc.php | File | 1.21 KB | 0644 |
|
error_report.lib.php | File | 10.25 KB | 0644 |
|
export.lib.php | File | 35.16 KB | 0644 |
|
file_listing.lib.php | File | 2.37 KB | 0644 |
|
iconv_wrapper.lib.php | File | 3.88 KB | 0644 |
|
import.lib.php | File | 50.64 KB | 0644 |
|
index.lib.php | File | 1.37 KB | 0644 |
|
information_schema_relations.lib.php | File | 10.95 KB | 0644 |
|
insert_edit.lib.php | File | 112.79 KB | 0644 |
|
ip_allow_deny.lib.php | File | 9.35 KB | 0644 |
|
js_escape.lib.php | File | 4.43 KB | 0644 |
|
kanji-encoding.lib.php | File | 4.46 KB | 0644 |
|
language_stats.inc.php | File | 1.45 KB | 0644 |
|
logging.lib.php | File | 521 B | 0644 |
|
mime.lib.php | File | 704 B | 0644 |
|
mult_submits.inc.php | File | 10.64 KB | 0644 |
|
mult_submits.lib.php | File | 20.44 KB | 0644 |
|
mysql_charsets.inc.php | File | 4.09 KB | 0644 |
|
mysql_charsets.lib.php | File | 10.47 KB | 0644 |
|
mysql_relations.lib.php | File | 5.12 KB | 0644 |
|
normalization.lib.php | File | 33.98 KB | 0644 |
|
opendocument.lib.php | File | 7.94 KB | 0644 |
|
operations.lib.php | File | 73.64 KB | 0644 |
|
parse_analyze.lib.php | File | 2.12 KB | 0644 |
|
plugin_interface.lib.php | File | 19.69 KB | 0644 |
|
plugin_interface.lib.php.bak | File | 19.69 KB | 0644 |
|
pmd_common.php | File | 24.2 KB | 0644 |
|
relation.lib.php | File | 68.41 KB | 0644 |
|
relation_cleanup.lib.php | File | 13.84 KB | 0644 |
|
replication.inc.php | File | 8.82 KB | 0644 |
|
replication_gui.lib.php | File | 37.45 KB | 0644 |
|
sanitizing.lib.php | File | 6.3 KB | 0644 |
|
select_server.lib.php | File | 3.4 KB | 0644 |
|
server_common.inc.php | File | 1.22 KB | 0644 |
|
server_common.lib.php | File | 1.92 KB | 0644 |
|
server_privileges.lib.php | File | 179.22 KB | 0644 |
|
server_status.lib.php | File | 9.92 KB | 0644 |
|
server_status_advisor.lib.php | File | 1.89 KB | 0644 |
|
server_status_monitor.lib.php | File | 26.22 KB | 0644 |
|
server_status_processes.lib.php | File | 9.57 KB | 0644 |
|
server_status_queries.lib.php | File | 4.86 KB | 0644 |
|
server_status_variables.lib.php | File | 28.95 KB | 0644 |
|
server_user_groups.lib.php | File | 12.8 KB | 0644 |
|
server_users.lib.php | File | 1.35 KB | 0644 |
|
session.inc.php | File | 5.22 KB | 0644 |
|
session.lib.php | File | 735 B | 0644 |
|
special_schema_links.lib.php | File | 17.51 KB | 0644 |
|
sql.lib.php | File | 77.51 KB | 0644 |
|
sql.lib.php.bak | File | 77.51 KB | 0644 |
|
sql_query_form.lib.php | File | 15.71 KB | 0644 |
|
string.lib.php | File | 800 B | 0644 |
|
stringMb.lib.php | File | 1.86 KB | 0644 |
|
stringNative.lib.php | File | 6.82 KB | 0644 |
|
sysinfo.lib.php | File | 1.34 KB | 0644 |
|
tbl_columns_definition_form.inc.php | File | 13.55 KB | 0644 |
|
tbl_common.inc.php | File | 1.3 KB | 0644 |
|
tbl_info.inc.php | File | 3.54 KB | 0644 |
|
tbl_partition_definition.inc.php | File | 5.55 KB | 0644 |
|
tracking.lib.php | File | 54.93 KB | 0644 |
|
transformations.lib.php | File | 14.63 KB | 0644 |
|
url_generating.lib.php | File | 6.77 KB | 0644 |
|
user_preferences.inc.php | File | 2.38 KB | 0644 |
|
user_preferences.lib.php | File | 8.17 KB | 0644 |
|
util.lib.php | File | 749 B | 0644 |
|
vendor_config.php | File | 2.49 KB | 0644 |
|
zip_extension.lib.php | File | 5.38 KB | 0644 |
|