[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_4_3_2-15205-g79f7461
Rouslan Placella
roccivic at users.sourceforge.net
Tue Aug 16 15:15:30 CEST 2011
The branch, master has been updated
via 79f746198eeea63e17a85bddacbddb3c48663e7b (commit)
via 8f1aca48180621de54a24472a6c10af412fdd947 (commit)
via 4e4456e9b87720ea9e1c426e9efc381356b68c3d (commit)
via 39b0f4d34bff1815ff37241ea4c47698e6d4f935 (commit)
from f2842a22bf179b93a7eeebd034ed9302fb781e97 (commit)
- Log -----------------------------------------------------------------
commit 79f746198eeea63e17a85bddacbddb3c48663e7b
Merge: 8f1aca4 f2842a2
Author: Rouslan Placella <rouslan at placella.com>
Date: Tue Aug 16 14:02:40 2011 +0100
Merge remote-tracking branch 'origin/master'
commit 8f1aca48180621de54a24472a6c10af412fdd947
Author: Rouslan Placella <rouslan at placella.com>
Date: Tue Aug 16 14:02:16 2011 +0100
MySQL allows a function and a procedure with the same name in the same db. This case was unhandled.
commit 4e4456e9b87720ea9e1c426e9efc381356b68c3d
Author: Rouslan Placella <rouslan at placella.com>
Date: Tue Aug 16 12:36:38 2011 +0100
Fixed wrong permission check for "Drop Routine" action
commit 39b0f4d34bff1815ff37241ea4c47698e6d4f935
Author: Rouslan Placella <rouslan at placella.com>
Date: Tue Aug 16 12:35:43 2011 +0100
Fixed wrong destination page on "Drop Routine" action
-----------------------------------------------------------------------
Summary of changes:
libraries/rte/rte_export.lib.php | 21 +++++++++++----------
libraries/rte/rte_list.lib.php | 10 +++++++---
libraries/rte/rte_routines.lib.php | 20 +++++++++++++-------
3 files changed, 31 insertions(+), 20 deletions(-)
diff --git a/libraries/rte/rte_export.lib.php b/libraries/rte/rte_export.lib.php
index d4d8f99..8cac214 100644
--- a/libraries/rte/rte_export.lib.php
+++ b/libraries/rte/rte_export.lib.php
@@ -70,16 +70,17 @@ function PMA_RTN_handleExport()
{
global $_GET, $db;
- if (! empty($_GET['export_item']) && ! empty($_GET['item_name'])) {
- $item_name = $_GET['item_name'];
- $type = PMA_DBI_fetch_value(
- "SELECT ROUTINE_TYPE " .
- "FROM INFORMATION_SCHEMA.ROUTINES " .
- "WHERE ROUTINE_SCHEMA='" . PMA_sqlAddSlashes($db) . "' " .
- "AND SPECIFIC_NAME='" . PMA_sqlAddSlashes($item_name) . "';"
- );
- $export_data = PMA_DBI_get_definition($db, $type, $item_name);
- PMA_RTE_handleExport($item_name, $export_data);
+ if ( ! empty($_GET['export_item'])
+ && ! empty($_GET['item_name'])
+ && ! empty($_GET['item_type'])
+ ) {
+ if ($_GET['item_type'] == 'FUNCTION' || $_GET['item_type'] == 'PROCEDURE') {
+ $export_data = PMA_DBI_get_definition(
+ $db,
+ $_GET['item_type'],
+ $_GET['item_name']);
+ PMA_RTE_handleExport($_GET['item_name'], $export_data);
+ }
}
} // end PMA_RTN_handleExport()
diff --git a/libraries/rte/rte_list.lib.php b/libraries/rte/rte_list.lib.php
index 3b6177d..19e8e64 100644
--- a/libraries/rte/rte_list.lib.php
+++ b/libraries/rte/rte_list.lib.php
@@ -117,7 +117,7 @@ function PMA_RTN_getRowForList($routine, $rowclass = '')
$sql_drop = sprintf('DROP %s IF EXISTS %s',
$routine['ROUTINE_TYPE'],
PMA_backquote($routine['SPECIFIC_NAME']));
-
+ $type_link = "item_type={$routine['ROUTINE_TYPE']}";
$retval = " <tr class='noclick $rowclass'>\n";
$retval .= " <td>\n";
@@ -136,6 +136,7 @@ function PMA_RTN_getRowForList($routine, $rowclass = '')
. $url_query
. '&edit_item=1'
. '&item_name=' . urlencode($routine['SPECIFIC_NAME'])
+ . '&' . $type_link
. '">' . $titles['Edit'] . "</a>\n";
} else {
$retval .= " {$titles['NoEdit']}\n";
@@ -150,6 +151,7 @@ function PMA_RTN_getRowForList($routine, $rowclass = '')
// otherwise we can execute it directly.
$routine_details = PMA_RTN_getDataFromName(
$routine['SPECIFIC_NAME'],
+ $routine['ROUTINE_TYPE'],
false
);
if ($routine !== false) {
@@ -168,6 +170,7 @@ function PMA_RTN_getRowForList($routine, $rowclass = '')
. $url_query
. '&' . $execute_action . '=1'
. '&item_name=' . urlencode($routine['SPECIFIC_NAME'])
+ . '&' . $type_link
. '">' . $titles['Execute'] . "</a>\n";
}
} else {
@@ -180,15 +183,16 @@ function PMA_RTN_getRowForList($routine, $rowclass = '')
. $url_query
. '&export_item=1'
. '&item_name=' . urlencode($routine['SPECIFIC_NAME'])
+ . '&' . $type_link
. '">' . $titles['Export'] . "</a>\n";
$retval .= " </td>\n";
$retval .= " <td>\n";
- if (PMA_currentUserHasPrivilege('EVENT', $db)) {
+ if (PMA_currentUserHasPrivilege('ALTER ROUTINE', $db)) {
$retval .= ' <a ' . $ajax_class['drop']
. ' href="sql.php?'
. $url_query
. '&sql_query=' . urlencode($sql_drop)
- . '&goto=db_events.php' . urlencode("?db={$db}")
+ . '&goto=db_routines.php' . urlencode("?db={$db}")
. '" >' . $titles['Drop'] . "</a>\n";
} else {
$retval .= " {$titles['NoDrop']}\n";
diff --git a/libraries/rte/rte_routines.lib.php b/libraries/rte/rte_routines.lib.php
index 3e63603..8cd0529 100644
--- a/libraries/rte/rte_routines.lib.php
+++ b/libraries/rte/rte_routines.lib.php
@@ -304,7 +304,9 @@ function PMA_RTN_handleEditor()
$extra_data = array();
if ($message->isSuccess()) {
$columns = "`SPECIFIC_NAME`, `ROUTINE_NAME`, `ROUTINE_TYPE`, `DTD_IDENTIFIER`, `ROUTINE_DEFINITION`";
- $where = "ROUTINE_SCHEMA='" . PMA_sqlAddSlashes($db) . "' AND ROUTINE_NAME='" . PMA_sqlAddSlashes($_REQUEST['item_name']) . "'";
+ $where = "ROUTINE_SCHEMA='" . PMA_sqlAddSlashes($db) . "' "
+ . "AND ROUTINE_NAME='" . PMA_sqlAddSlashes($_REQUEST['item_name']) . "'"
+ . "AND ROUTINE_TYPE='" . PMA_sqlAddSlashes($_REQUEST['item_type']) . "'";
$routine = PMA_DBI_fetch_single_row("SELECT $columns FROM `INFORMATION_SCHEMA`.`ROUTINES` WHERE $where;");
$extra_data['name'] = htmlspecialchars(strtoupper($_REQUEST['item_name']));
$extra_data['new_row'] = PMA_RTN_getRowForList($routine);
@@ -343,7 +345,7 @@ function PMA_RTN_handleEditor()
} else if (! empty($_REQUEST['edit_item'])) {
$title = __("Edit routine");
if (! $operation && ! empty($_REQUEST['item_name']) && empty($_REQUEST['editor_process_edit'])) {
- $routine = PMA_RTN_getDataFromName($_REQUEST['item_name']);
+ $routine = PMA_RTN_getDataFromName($_REQUEST['item_name'], $_REQUEST['item_type']);
if ($routine !== false) {
$routine['item_original_name'] = $routine['item_name'];
$routine['item_original_type'] = $routine['item_type'];
@@ -501,12 +503,13 @@ function PMA_RTN_getDataFromRequest()
* the "Edit routine" form given the name of a routine.
*
* @param string $name The name of the routine.
+ * @param string $type Type of routine (ROUTINE|PROCEDURE)
* @param bool $all Whether to return all data or just
* the info about parameters.
*
* @return array Data necessary to create the routine editor.
*/
-function PMA_RTN_getDataFromName($name, $all = true)
+function PMA_RTN_getDataFromName($name, $type, $all = true)
{
global $param_directions, $param_sqldataaccess, $db;
@@ -517,7 +520,8 @@ function PMA_RTN_getDataFromName($name, $all = true)
. "ROUTINE_DEFINITION, IS_DETERMINISTIC, SQL_DATA_ACCESS, "
. "ROUTINE_COMMENT, SECURITY_TYPE";
$where = "ROUTINE_SCHEMA='" . PMA_sqlAddSlashes($db) . "' "
- . "AND SPECIFIC_NAME='" . PMA_sqlAddSlashes($name) . "'";
+ . "AND SPECIFIC_NAME='" . PMA_sqlAddSlashes($name) . "'"
+ . "AND ROUTINE_TYPE='" . PMA_sqlAddSlashes($type) . "'";
$query = "SELECT $fields FROM INFORMATION_SCHEMA.ROUTINES WHERE $where;";
$routine = PMA_DBI_fetch_single_row($query);
@@ -1002,7 +1006,7 @@ function PMA_RTN_getQueryFromRequest()
$warned_about_dir = false;
$warned_about_name = false;
$warned_about_length = false;
- if (! empty($_REQUEST['item_param_name'])
+ if ( ! empty($_REQUEST['item_param_name'])
&& ! empty($_REQUEST['item_param_type'])
&& ! empty($_REQUEST['item_param_length'])
&& is_array($_REQUEST['item_param_name'])
@@ -1124,7 +1128,7 @@ function PMA_RTN_handleExecute()
*/
if (! empty($_REQUEST['execute_routine']) && ! empty($_REQUEST['item_name'])) {
// Build the queries
- $routine = PMA_RTN_getDataFromName($_REQUEST['item_name'], false);
+ $routine = PMA_RTN_getDataFromName($_REQUEST['item_name'], $_REQUEST['item_type'], false);
if ($routine !== false) {
$queries = array();
$end_query = array();
@@ -1279,7 +1283,7 @@ function PMA_RTN_handleExecute()
/**
* Display the execute form for a routine.
*/
- $routine = PMA_RTN_getDataFromName($_GET['item_name'], false);
+ $routine = PMA_RTN_getDataFromName($_GET['item_name'], $_GET['item_type'], true);
if ($routine !== false) {
$form = PMA_RTN_getExecuteForm($routine);
if ($GLOBALS['is_ajax_request'] == true) {
@@ -1336,6 +1340,8 @@ function PMA_RTN_getExecuteForm($routine)
$retval .= "<form action='db_routines.php' method='post' class='rte_form'>\n";
$retval .= "<input type='hidden' name='item_name'\n";
$retval .= " value='{$routine['item_name']}' />\n";
+ $retval .= "<input type='hidden' name='item_type'\n";
+ $retval .= " value='{$routine['item_type']}' />\n";
$retval .= PMA_generate_common_hidden_inputs($db) . "\n";
$retval .= "<fieldset>\n";
if ($GLOBALS['is_ajax_request'] != true) {
hooks/post-receive
--
phpMyAdmin
More information about the Git
mailing list