/** * Main function for the routines functionality * * @param string $type 'FUNCTION' for functions, * 'PROCEDURE' for procedures, * null for both * * @return void */ function PMA_RTN_main($type) { global $db; PMA_RTN_setGlobals(); /** * Process all requests */ PMA_RTN_handleEditor(); PMA_RTN_handleExecute(); PMA_RTN_handleExport(); /** * Display a list of available routines */ if (!PMA_isValid($type, array('FUNCTION', 'PROCEDURE'))) { $type = null; } $items = $GLOBALS['dbi']->getRoutines($db, $type); echo PMA_RTE_getList('routine', $items); /** * Display the form for adding a new routine, if the user has the privileges. */ echo PMA_RTN_getFooterLinks(); /** * Display a warning for users with PHP's old "mysql" extension. */ if (!PMA\libraries\DatabaseInterface::checkDbExtension('mysqli')) { trigger_error(__('You are using PHP\'s deprecated \'mysql\' extension, ' . 'which is not capable of handling multi queries. ' . '[strong]The execution of some stored routines may fail![/strong] ' . 'Please use the improved \'mysqli\' extension to ' . 'avoid any problems.'), E_USER_WARNING); } }
/** * Main function for the routines functionality * * @param string $type 'FUNCTION' for functions, * 'PROCEDURE' for procedures, * null for both * * @return void */ function PMA_RTN_main($type) { global $db; PMA_RTN_setGlobals(); /** * Process all requests */ PMA_RTN_handleEditor(); PMA_RTN_handleExecute(); PMA_RTN_handleExport(); /** * Display a list of available routines */ $columns = "`SPECIFIC_NAME`, `ROUTINE_NAME`, `ROUTINE_TYPE`, "; $columns .= "`DTD_IDENTIFIER`, `ROUTINE_DEFINITION`"; $where = "ROUTINE_SCHEMA " . PMA_Util::getCollateForIS() . "=" . "'" . PMA_Util::sqlAddSlashes($db) . "'"; if (PMA_isValid($type, array('FUNCTION', 'PROCEDURE'))) { $where .= " AND `ROUTINE_TYPE`='" . $type . "'"; } $items = $GLOBALS['dbi']->fetchResult("SELECT {$columns} FROM `INFORMATION_SCHEMA`.`ROUTINES` WHERE {$where};"); echo PMA_RTE_getList('routine', $items); /** * Display the form for adding a new routine, if the user has the privileges. */ echo PMA_RTN_getFooterLinks(); /** * Display a warning for users with PHP's old "mysql" extension. */ if (!PMA_DatabaseInterface::checkDbExtension('mysqli')) { trigger_error(__('You are using PHP\'s deprecated \'mysql\' extension, ' . 'which is not capable of handling multi queries. ' . '[strong]The execution of some stored routines may fail![/strong] ' . 'Please use the improved \'mysqli\' extension to ' . 'avoid any problems.'), E_USER_WARNING); } }
/** * Main function for the routines functionality * * @return nothing */ function PMA_RTN_main() { global $db; PMA_RTN_setGlobals(); /** * Process all requests */ PMA_RTN_handleEditor(); PMA_RTN_handleExecute(); PMA_RTN_handleExport(); /** * Display a list of available routines */ $columns = "`SPECIFIC_NAME`, `ROUTINE_NAME`, `ROUTINE_TYPE`, "; $columns .= "`DTD_IDENTIFIER`, `ROUTINE_DEFINITION`"; $where = "ROUTINE_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "'"; $items = PMA_DBI_fetch_result("SELECT {$columns} FROM `INFORMATION_SCHEMA`.`ROUTINES` WHERE {$where};"); echo PMA_RTE_getList('routine', $items); /** * Display the form for adding a new routine, if the user has the privileges. */ echo PMA_RTN_getFooterLinks(); /** * Display a warning for users with PHP's old "mysql" extension. */ if ($GLOBALS['cfg']['Server']['extension'] === 'mysql') { trigger_error(__('You are using PHP\'s deprecated \'mysql\' extension, ' . 'which is not capable of handling multi queries. ' . '[strong]The execution of some stored routines may fail![/strong] ' . 'Please use the improved \'mysqli\' extension to ' . 'avoid any problems.'), E_USER_WARNING); } }
/** * Test for PMA_RTN_getDataFromRequest * * @param array $in Input * @param array $out Expected output * * @return void * * @dataProvider provider */ public function testgetDataFromRequest($in, $out) { global $cfg, $_REQUEST; unset($_REQUEST); foreach ($in as $key => $value) { if ($value !== '') { $_REQUEST[$key] = $value; } } PMA_RTN_setGlobals(); $this->assertEquals($out, PMA_RTN_getDataFromRequest()); }
/** * Test for PMA_RTN_getQueryFromRequest * * @param array $request Request * @param string $query Query * @param int $num_err Error number * * @return void * * @dataProvider provider */ public function testgetQueryFromRequest($request, $query, $num_err) { global $_REQUEST, $errors, $cfg; $cfg['ShowFunctionFields'] = false; $GLOBALS['PMA_Types'] = new PMA_Types_MySQL(); $errors = array(); PMA_RTN_setGlobals(); unset($_REQUEST); $_REQUEST = $request; $this->assertEquals($query, PMA_RTN_getQueryFromRequest()); $this->assertEquals($num_err, count($errors)); }
/** * @dataProvider provider */ public function testgetQueryFromRequest($request, $query, $num_err) { global $_REQUEST, $errors, $cfg; $cfg['ShowFunctionFields'] = false; include 'libraries/data_mysql.inc.php'; $errors = array(); PMA_RTN_setGlobals(); unset($_REQUEST); $_REQUEST = $request; $this->assertEquals($query, PMA_RTN_getQueryFromRequest()); $this->assertEquals($num_err, count($errors)); }
/** * Test for PMA_RTN_getQueryFromRequest * * @param array $request Request * @param string $query Query * @param int $num_err Error number * * @return void * * @dataProvider provider */ public function testgetQueryFromRequest($request, $query, $num_err) { global $_REQUEST, $errors, $cfg; $cfg['ShowFunctionFields'] = false; $GLOBALS['PMA_Types'] = new TypesMySQL(); $errors = array(); PMA_RTN_setGlobals(); $old_dbi = isset($GLOBALS['dbi']) ? $GLOBALS['dbi'] : null; $dbi = $this->getMockBuilder('PMA\\libraries\\DatabaseInterface')->disableOriginalConstructor()->getMock(); $dbi->expects($this->any())->method('escapeString')->will($this->returnValueMap(array(array('foo', null, 'foo'), array("foo's bar", null, "foo\\'s bar"), array('', null, '')))); $GLOBALS['dbi'] = $dbi; unset($_REQUEST); $_REQUEST = $request; $this->assertEquals($query, PMA_RTN_getQueryFromRequest()); $this->assertEquals($num_err, count($errors)); // reset $GLOBALS['dbi'] = $old_dbi; }
/** * @depends testgetParameterRow_ajax * @dataProvider provider_editor_4 */ public function testgetEditorForm_4($data, $matcher) { $GLOBALS['is_ajax_request'] = false; PMA_RTN_setGlobals(); $this->assertTag($matcher, PMA_RTN_getEditorForm('edit', 'change', $data), false); }
/** * Test for PMA_RTN_getExecuteForm * * @param array $data Data for routine * @param array $matcher Matcher * * @return void * * @dataProvider provider_2 */ public function testgetExecuteForm_2($data, $matcher) { $GLOBALS['is_ajax_request'] = true; PMA_RTN_setGlobals(); $this->assertContains($matcher, PMA_RTN_getExecuteForm($data)); }
/** * Test for PMA_RTN_getEditorForm * * @param array $data Data for routine * @param array $matcher Matcher * * @return void * * @depends testgetParameterRowAjax * @dataProvider providerEditor4 */ public function testgetEditorForm4($data, $matcher) { PMA_RTN_setGlobals(); $this->assertContains( $matcher, PMA_RTN_getEditorForm('edit', 'change', $data) ); }
/** * @depends test_parseOneParameter * @dataProvider query_provider */ public function test_parseAllParameters($query, $type, $target) { PMA_RTN_setGlobals(); $this->assertEquals($target, PMA_RTN_parseAllParameters(PMA_SQP_parse($query), $type)); }
/** * Test for PMA_RTN_getExecuteForm * * @param array $data Data for routine * @param array $matcher Matcher * * @return void * * @dataProvider provider2 */ public function testgetExecuteForm2($data, $matcher) { Response::getInstance()->setAjax(true); PMA_RTN_setGlobals(); $this->assertContains( $matcher, PMA_RTN_getExecuteForm($data) ); Response::getInstance()->setAjax(false); }