From d67eb1ca1dd595a9230a284a50260f02b0b9fab0 Mon Sep 17 00:00:00 2001 From: Robin Johnson Date: Sat, 3 Aug 2002 22:17:48 +0000 Subject: [PATCH] * libraries/sqlvalidator.php3, libraries/sqlvalidator.class.php3: - Function documentation and cleanup --- ChangeLog | 2 + libraries/sqlvalidator.class.php3 | 87 ++++++++++++++++++++++++++----- libraries/sqlvalidator.php3 | 54 ++++++++++++++++--- 3 files changed, 124 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 744a19c70..8a530e4a1 100755 --- a/ChangeLog +++ b/ChangeLog @@ -31,6 +31,8 @@ $Source$ * sql.php3, libraries/common.lib.php3: - Improved logic of edit, show_as_php, explain and validator in the SQL query box + * libraries/sqlvalidator.php3, libraries/sqlvalidator.class.php3: + - Function documentation and cleanup 2002-08-02 Robin Johnson * libraries/defines*: diff --git a/libraries/sqlvalidator.class.php3 b/libraries/sqlvalidator.class.php3 index 89f9c6687..04a5ba49d 100644 --- a/libraries/sqlvalidator.class.php3 +++ b/libraries/sqlvalidator.class.php3 @@ -16,14 +16,17 @@ * * * @access public -* @author Robin Johnson -* @version $Revision$ +* @author Robin Johnson +* @version $Id$ */ if (!defined('PMA_SQL_VALIDATOR_CLASS_INCLUDED')) { define('PMA_SQL_VALIDATOR_CLASS_INCLUDED', 1); - include("SOAP/Client.php"); + @include("SOAP/Client.php"); + if(!class_exists('SOAP_Client') { + $GLOBALS['sqlvalidator_error'] = TRUE; + } else { // Ok, so we have SOAP Support, so let's use it! @@ -52,6 +55,7 @@ if (!defined('PMA_SQL_VALIDATOR_CLASS_INCLUDED')) { $this->url = "http://sqlvalidator.mimer.com/v1/services"; $this->serviceName = 'SQL99Validator'; $this->wsdl = '?wsdl'; + $this->outputType = 'html'; $this->username = 'anonymous'; @@ -119,6 +123,11 @@ if (!defined('PMA_SQL_VALIDATOR_CLASS_INCLUDED')) { { $this->interactive = $interactive; } + + function setOutputType($outputtype) + { + $this->OutputType = $outputtype; + } function start() { @@ -145,28 +154,69 @@ if (!defined('PMA_SQL_VALIDATOR_CLASS_INCLUDED')) { } } - + /** + * Call to determine just if a query is valid or not. + * + * @param string SQL statement to validate + * + * @return string Validator string from Mimer + * + * @see _validate + */ function isValid($sql) { $res = $this->_validate($sql); return $res->standard; } - + + /** + * Call for complete validator response + * + * @param string SQL statement to validate + * + * @return string Validator string from Mimer + * + * @see _validate + */ function ValidationString($sql) { $res = $this->_validate($sql); return $res->data; } - /* Private functions beyond here - * - */ + /** Private functions beyond here + * You don't need to mess with these + */ + + /** + * Service opening + * + * @param string URL of Mimer SQL Validator WSDL file + * + * @return object Object to use + */ function _openService($url) { $obj = new SOAP_Client($url,TRUE); return $obj; } + /** + * Service initializer to connect to server + * + * @param object Service object + * @param string Username + * @param string Password + * @param string Name of calling program + * @param string Version of calling program + * @param string Target DBMS + * @param string Version of target DBMS + * @param string Connection Technology + * @param string version of Connection Technology + * @param number boolean of 1/0 to specify if we are an interactive system + * + * @return object stdClass return object with data + */ function _openSession($obj, $username, $password, $callingProgram, $callingProgramVersion, $targetDbms, $targetDbmsVersion, $connectionTechnology, $connectionTechnologyVersion, $interactive) { @@ -176,17 +226,28 @@ if (!defined('PMA_SQL_VALIDATOR_CLASS_INCLUDED')) { } /** - * Standard calling method - * - * @param sql SQL statement to validate - * @return Raw string from Mimer - */ + * Validator sytem call + * + * @param object Service object + * @param object Session object + * @param string SQL Query to validate + * @param string Data return type + * + * @return object stClass return with data + */ function _validateSQL($obj,$session,$sql,$method) { $res = $obj->validateSQL($session->sessionId, $session->sessionKey, $sql, $this->outputType); return $res; } + /** + * Validator sytem call + * + * @param string SQL Query to validate + * + * @return object stClass return with data + */ function _validate($sql) { $ret = $this->_validateSQL($this->serviceLink, $this->sessionData, $sql, $this->outputType); diff --git a/libraries/sqlvalidator.php3 b/libraries/sqlvalidator.php3 index 337861793..535a25b5e 100644 --- a/libraries/sqlvalidator.php3 +++ b/libraries/sqlvalidator.php3 @@ -9,6 +9,11 @@ * This function uses the Mimer SQL Validator service * from phpMyAdmin * + * Copyright for Server side validator systems: + * "All SQL statements are stored anonymously for statistical purposes. + * Mimer SQL Validator, Copyright 2002 Upright Database Technology. + * All rights reserved." + * * All data is transported over HTTP-SOAP * And uses the PEAR SOAP Module * @@ -31,29 +36,66 @@ if (!defined('PMA_SQL_VALIDATOR_INCLUDED')) { // For now we actually use a configuration flag if ($cfg['SQLValidator']['use'] == TRUE) { include_once('sqlvalidator.class.php3'); + } // if ($cfg['SQLValidator']['use'] == TRUE) - function validateSQL($sql) - { - global $cfg; + /** + * This function utilizes the Mimer SQL Validator service + * to validate an SQL query + * + * + * + * @param string SQL query to validate + * + * @return string Validator result string + */ + function validateSQL($sql) + { + global $cfg; + $str = ''; + if ($cfg['SQLValidator']['use'] == TRUE) { + // create new class instance $srv = new SQLValidator(); + + // check for username settings + // The class defaults to anonymous with an empty password + // automatically if($cfg['SQLValidator']['username'] != '') { $srv->setCredentials($cfg['SQLValidator']['username'], $cfg['SQLValidator']['password']); } + + // Identify ourselves to the server properly $srv->appendCallingProgram('phpMyAdmin',PMA_VERSION); + + // And specify what database system we are using $srv->setTargetDbms('MySQL',PMA_MYSQL_STR_VERSION); + + // Log on to service $srv->start(); + + // Do service validation $str = $srv->ValidationString($sql); + + // Strip out the copyright if requested if($cfg['SQLValidator']['DisplayCopyright'] != TRUE) { $match = "reserved.
\n
"; $pos = strpos($str,$match); $pos += strlen($match); $str = substr($str,$pos); } - return $str; + + } else { + + // The service is not available + // So note that properly + $str = $GLOBALS['strValidatorDisabled']; - } // function validateSQL($sql) + } + + // Give string back to caller + return $str; + + } // function validateSQL($sql) - } // if ($cfg['SQLValidator']['use'] == TRUE) } //$__PMA_SQL_VALIDATOR__