예제 #1
0
/**
 * 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);
    }
}
예제 #2
0
/**
 * 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);
    }
}
예제 #3
0
/**
 * 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));
 }
예제 #6
0
    /**
     * @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);
 }