diff options
author | Dan Ungureanu <udan1107@gmail.com> | 2015-06-22 22:28:33 +0300 |
---|---|---|
committer | Dan Ungureanu <udan1107@gmail.com> | 2015-07-10 23:18:13 +0300 |
commit | 6c3ccb2d5643663ff4d1104b18b73e4b856119c3 (patch) | |
tree | 71f6f0db24aefd26e881b3dcc93ae3cc72fab3a5 | |
parent | 83c6f77716d423fc1a22a6c0ca58886d131b3c35 (diff) |
Use new parser in routines' execute form.
Signed-off-by: Dan Ungureanu <udan1107@gmail.com>
-rw-r--r-- | libraries/rte/rte_routines.lib.php | 39 | ||||
-rw-r--r-- | test/libraries/rte/PMA_RTN_getExecuteForm_test.php | 16 |
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 => '', |