Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Ungureanu <udan1107@gmail.com>2015-06-22 22:28:33 +0300
committerDan Ungureanu <udan1107@gmail.com>2015-07-10 23:18:13 +0300
commit6c3ccb2d5643663ff4d1104b18b73e4b856119c3 (patch)
tree71f6f0db24aefd26e881b3dcc93ae3cc72fab3a5
parent83c6f77716d423fc1a22a6c0ca58886d131b3c35 (diff)
Use new parser in routines' execute form.
Signed-off-by: Dan Ungureanu <udan1107@gmail.com>
-rw-r--r--libraries/rte/rte_routines.lib.php39
-rw-r--r--test/libraries/rte/PMA_RTN_getExecuteForm_test.php16
2 files changed, 33 insertions, 22 deletions
diff --git a/libraries/rte/rte_routines.lib.php b/libraries/rte/rte_routines.lib.php
index 73980f41c4..8cb00379a0 100644
--- a/libraries/rte/rte_routines.lib.php
+++ b/libraries/rte/rte_routines.lib.php
@@ -520,13 +520,14 @@ function PMA_RTN_getDataFromName($name, $type, $all = true)
$routineStatement = $parser->statements[0];
$params = SqlParser\Utils\Routine::getParameters($routineStatement);
- $retval['item_num_params'] = $params['num'];
- $retval['item_param_dir'] = $params['dir'];
- $retval['item_param_name'] = $params['name'];
- $retval['item_param_type'] = $params['type'];
- $retval['item_param_length'] = $params['length'];
- $retval['item_param_opts_num'] = $params['opts'];
- $retval['item_param_opts_text'] = $params['opts'];
+ $retval['item_num_params'] = $params['num'];
+ $retval['item_param_dir'] = $params['dir'];
+ $retval['item_param_name'] = $params['name'];
+ $retval['item_param_type'] = $params['type'];
+ $retval['item_param_length'] = $params['length'];
+ $retval['item_param_length_arr'] = $params['length_arr'];
+ $retval['item_param_opts_num'] = $params['opts'];
+ $retval['item_param_opts_text'] = $params['opts'];
// Get extra data
if (!$all) {
@@ -538,8 +539,8 @@ function PMA_RTN_getDataFromName($name, $type, $all = true)
} else {
$retval['item_type_toggle'] = 'FUNCTION';
}
- $retval['item_returntype'] = '';
- $retval['item_returnlength'] = '';
+ $retval['item_returntype'] = '';
+ $retval['item_returnlength'] = '';
$retval['item_returnopts_num'] = '';
$retval['item_returnopts_text'] = '';
@@ -1543,24 +1544,18 @@ function PMA_RTN_getExecuteForm($routine)
}
$retval .= "<td class='nowrap'>\n";
if (in_array($routine['item_param_type'][$i], array('ENUM', 'SET'))) {
- $tokens = PMA_SQP_parse($routine['item_param_length'][$i]);
if ($routine['item_param_type'][$i] == 'ENUM') {
$input_type = 'radio';
} else {
$input_type = 'checkbox';
}
- for ($j = 0; $j < $tokens['len']; $j++) {
- if ($tokens[$j]['type'] != 'punct_listsep') {
- $tokens[$j]['data'] = htmlentities(
- PMA_Util::unquote($tokens[$j]['data']),
- ENT_QUOTES
- );
- $retval .= "<input name='params["
- . $routine['item_param_name'][$i] . "][]' "
- . "value='" . $tokens[$j]['data'] . "' type='"
- . $input_type . "' />"
- . $tokens[$j]['data'] . "<br />\n";
- }
+ foreach ($routine['item_param_length_arr'][$i] as $value) {
+ $value = htmlentities(PMA_Util::unquote($value), ENT_QUOTES);
+ $retval .= "<input name='params["
+ . $routine['item_param_name'][$i] . "][]' "
+ . "value='" . $value . "' type='"
+ . $input_type . "' />"
+ . $value . "<br />\n";
}
} else if (in_array(
/*overload*/mb_strtolower($routine['item_param_type'][$i]),
diff --git a/test/libraries/rte/PMA_RTN_getExecuteForm_test.php b/test/libraries/rte/PMA_RTN_getExecuteForm_test.php
index 4ac10f5285..44061c9090 100644
--- a/test/libraries/rte/PMA_RTN_getExecuteForm_test.php
+++ b/test/libraries/rte/PMA_RTN_getExecuteForm_test.php
@@ -113,6 +113,14 @@ class PMA_RTN_GetExecuteForm_Test extends PHPUnit_Framework_TestCase
4 => "'a','b'",
5 => "'a','b'"
),
+ 'item_param_length_arr' => array(
+ 0 => array(),
+ 1 => array('22'),
+ 2 => array(),
+ 3 => array(),
+ 4 => array("'a'", "'b'"),
+ 5 => array("'a'", "'b'")
+ ),
'item_param_opts_num' => array(
0 => '',
1 => '',
@@ -241,6 +249,14 @@ class PMA_RTN_GetExecuteForm_Test extends PHPUnit_Framework_TestCase
4 => "'a','b'",
5 => "'a','b'"
),
+ 'item_param_length_arr' => array(
+ 0 => array(),
+ 1 => array('22'),
+ 2 => array(),
+ 3 => array(),
+ 4 => array("'a'", "'b'"),
+ 5 => array("'a'", "'b'")
+ ),
'item_param_opts_num' => array(
0 => '',
1 => '',