[xoops-cvslog 6632] CVS update: xoops2jp/html/class/database

Back to archive index

NobuNobu nobun****@users*****
2007年 4月 30日 (月) 16:50:33 JST


Index: xoops2jp/html/class/database/database.php
diff -u xoops2jp/html/class/database/database.php:1.3 xoops2jp/html/class/database/database.php:1.3.8.1
--- xoops2jp/html/class/database/database.php:1.3	Mon May  1 11:37:24 2006
+++ xoops2jp/html/class/database/database.php	Mon Apr 30 16:50:33 2007
@@ -1,5 +1,5 @@
 <?php
-// $Id: database.php,v 1.3 2006/05/01 02:37:24 onokazu Exp $
+// $Id: database.php,v 1.3.8.1 2007/04/30 07:50:33 nobunobu Exp $
 // database.php - defines abstract database wrapper class 
 //  ------------------------------------------------------------------------ //
 //                XOOPS - PHP Content Management System                      //
@@ -29,15 +29,15 @@
  * @package     kernel
  * @subpackage  database
  * 
- * @author      Kazumi Ono  <onoka****@xoops*****>
- * @copyright   copyright (c) 2000-2003 XOOPS.org
+ * @author	    Kazumi Ono	<onoka****@xoops*****>
+ * @copyright	copyright (c) 2000-2003 XOOPS.org
  */
 
 /**
  * make sure this is only included once!
  */
 if ( !defined("XOOPS_C_DATABASE_INCLUDED") ) {
-    define("XOOPS_C_DATABASE_INCLUDED",1);
+	define("XOOPS_C_DATABASE_INCLUDED",1);
 
 /**
  * Abstract base class for Database access classes
@@ -51,67 +51,67 @@
  * @subpackage database
  */
 class XoopsDatabase
-    {
-        /**
-         * Prefix for tables in the database
-         * @var string
-         */
-        var $prefix = '';
-        /**
-         * reference to a {@link XoopsLogger} object
+	{
+		/**
+		 * Prefix for tables in the database
+		 * @var string
+		 */
+		var $prefix = '';
+		/**
+		 * reference to a {@link XoopsLogger} object
          * @see XoopsLogger
-         * @var object XoopsLogger
-         */
-        var $logger;
+		 * @var object XoopsLogger
+		 */
+		var $logger;
 
-        /**
-         * constructor
+		/**
+		 * constructor
          * 
          * will always fail, because this is an abstract class!
-         */
-        function XoopsDatabase()
-        {
-            // exit("Cannot instantiate this class directly");
-        }
-
-        /**
-         * assign a {@link XoopsLogger} object to the database
-         * 
+		 */
+		function XoopsDatabase()
+		{
+			// exit("Cannot instantiate this class directly");
+		}
+
+		/**
+		 * assign a {@link XoopsLogger} object to the database
+		 * 
          * @see XoopsLogger
          * @param object $logger reference to a {@link XoopsLogger} object
-         */
-        function setLogger(&$logger)
-        {
-            $this->logger =& $logger;
-        }
-
-        /**
-         * set the prefix for tables in the database
-         * 
+		 */
+		function setLogger(&$logger)
+		{
+			$this->logger =& $logger;
+		}
+
+		/**
+		 * set the prefix for tables in the database
+		 * 
          * @param string $value table prefix
-         */
-        function setPrefix($value)
-        {
-            $this->prefix = $value;
-        }
-        
-        /**
-         * attach the prefix.'_' to a given tablename
+		 */
+		function setPrefix($value)
+		{
+			$this->prefix = $value;
+		}
+		
+		/**
+		 * attach the prefix.'_' to a given tablename
          * 
          * if tablename is empty, only prefix will be returned
-         * 
+		 * 
          * @param string $tablename tablename
          * @return string prefixed tablename, just prefix if tablename is empty
-         */
-        function prefix($tablename='')
-        {
-            if ( $tablename != '' ) {
-                return $this->prefix .'_'. $tablename;
-            } else {
-                return $this->prefix;
-            }
-        }
-    }
+		 */
+		function prefix($tablename='')
+		{
+			if ( $tablename != '' ) {
+				return $this->prefix .'_'. $tablename;
+			} else {
+				return $this->prefix;
+			}
+		}
+	}
 }
 
 
@@ -123,11 +123,11 @@
 class Database
 {
 
-    function &getInstance()
-    {
-        $ret =& XoopsDatabaseFactory::getDatabaseConnection();
-        return $ret;
-    }
+	function &getInstance()
+	{
+		$instance =& XoopsDatabaseFactory::getDatabaseConnection();
+		return $instance;
+	}
 }
 
 ?>
\ No newline at end of file
Index: xoops2jp/html/class/database/mysqldatabase.php
diff -u xoops2jp/html/class/database/mysqldatabase.php:1.3 xoops2jp/html/class/database/mysqldatabase.php:1.3.8.1
--- xoops2jp/html/class/database/mysqldatabase.php:1.3	Mon May  1 11:37:24 2006
+++ xoops2jp/html/class/database/mysqldatabase.php	Mon Apr 30 16:50:33 2007
@@ -1,5 +1,5 @@
 <?php
-// $Id: mysqldatabase.php,v 1.3 2006/05/01 02:37:24 onokazu Exp $
+// $Id: mysqldatabase.php,v 1.3.8.1 2007/04/30 07:50:33 nobunobu Exp $
 //  ------------------------------------------------------------------------ //
 //                XOOPS - PHP Content Management System                      //
 //                    Copyright (c) 2000 XOOPS.org                           //
@@ -32,10 +32,12 @@
  * @package     kernel
  * @subpackage  database
  * 
- * @author      Kazumi Ono  <onoka****@xoops*****>
- * @copyright   copyright (c) 2000-2003 XOOPS.org
+ * @author	    Kazumi Ono	<onoka****@xoops*****>
+ * @copyright	copyright (c) 2000-2003 XOOPS.org
  */
 
+if (!defined('XOOPS_ROOT_PATH')) exit();
+
 /**
  * base class
  */
@@ -54,71 +56,77 @@
  */
 class XoopsMySQLDatabase extends XoopsDatabase
 {
-    /**
-     * Database connection
-     * @var resource
-     */
-    var $conn;
-
-    /**
-     * connect to the database
-     * 
+	/**
+	 * Database connection
+	 * @var resource
+	 */
+	var $conn;
+
+	/**
+	 * String for Emulation prepare
+	 * @var string
+	 */
+	var $mPrepareQuery=null;
+
+	/**
+	 * connect to the database
+	 * 
      * @param bool $selectdb select the database now?
      * @return bool successful?
-     */
-    function connect($selectdb = true)
-    {
-        if (XOOPS_DB_PCONNECT == 1) {
-            $this->conn = @mysql_pconnect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
-        } else {
-            $this->conn = @mysql_connect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
-        }
-    
-        if (!$this->conn) {
-            $this->logger->addQuery('', $this->error(), $this->errno());
-            return false;
-        }
-        
-        if($selectdb != false){
-            if (!mysql_select_db(XOOPS_DB_NAME)) {
-                $this->logger->addQuery('', $this->error(), $this->errno());
-                return false;
-            }
-        }
-        return true;
-    }
+	 */
+	function connect($selectdb = true)
+	{
+		if (XOOPS_DB_PCONNECT == 1) {
+			$this->conn = @mysql_pconnect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
+		} else {
+			$this->conn = @mysql_connect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
+		}
+	
+		if (!$this->conn) {
+			$this->logger->addQuery('', $this->error(), $this->errno());
+			return false;
+		}
+		
+		if($selectdb != false){
+			if (!mysql_select_db(XOOPS_DB_NAME)) {
+				$this->logger->addQuery('', $this->error(), $this->errno());
+				return false;
+			}
+		}
+		return true;
+	}
 
-    /**
-     * generate an ID for a new row
+	/**
+	 * generate an ID for a new row
      * 
      * This is for compatibility only. Will always return 0, because MySQL supports
      * autoincrement for primary keys.
      * 
      * @param string $sequence name of the sequence from which to get the next ID
      * @return int always 0, because mysql has support for autoincrement
-     */
-    function genId($sequence)
-    {
-        return 0; // will use auto_increment
-    }
-
-    /**
-     * Get a result row as an enumerated array
-     * 
+	 */
+	function genId($sequence)
+	{
+		return 0; // will use auto_increment
+	}
+
+	/**
+	 * Get a result row as an enumerated array
+	 * 
      * @param resource $result
      * @return array
-     */
-    function fetchRow($result)
-    {
-        return @mysql_fetch_row($result);
-    }
-
-    /**
-     * Fetch a result row as an associative array
-     *
+	 */
+	function fetchRow($result)
+	{
+		return @mysql_fetch_row($result);
+	}
+
+	/**
+	 * Fetch a result row as an associative array
+	 *
      * @return array
-     */
-    function fetchArray($result)
+	 */
+	function fetchArray($result)
     {
         return @mysql_fetch_assoc( $result );
     }
@@ -133,76 +141,76 @@
         return @mysql_fetch_array( $result, MYSQL_BOTH );
     }
 
-    /**
-     * Get the ID generated from the previous INSERT operation
-     * 
+	/**
+	 * Get the ID generated from the previous INSERT operation
+	 * 
      * @return int
-     */
-    function getInsertId()
-    {
-        return mysql_insert_id($this->conn);
-    }
-
-    /**
-     * Get number of rows in result
-     * 
+	 */
+	function getInsertId()
+	{
+		return mysql_insert_id($this->conn);
+	}
+
+	/**
+	 * Get number of rows in result
+	 * 
      * @param resource query result
      * @return int
-     */
-    function getRowsNum($result)
-    {
-        return @mysql_num_rows($result);
-    }
-
-    /**
-     * Get number of affected rows
-     *
+	 */
+	function getRowsNum($result)
+	{
+		return @mysql_num_rows($result);
+	}
+
+	/**
+	 * Get number of affected rows
+	 *
      * @return int
-     */
-    function getAffectedRows()
-    {
-        return mysql_affected_rows($this->conn);
-    }
-
-    /**
-     * Close MySQL connection
-     * 
-     */
-    function close()
-    {
-        mysql_close($this->conn);
-    }
-
-    /**
-     * will free all memory associated with the result identifier result.
-     * 
+	 */
+	function getAffectedRows()
+	{
+		return mysql_affected_rows($this->conn);
+	}
+
+	/**
+	 * Close MySQL connection
+	 * 
+	 */
+	function close()
+	{
+		mysql_close($this->conn);
+	}
+
+	/**
+	 * will free all memory associated with the result identifier result.
+	 * 
      * @param resource query result
      * @return bool TRUE on success or FALSE on failure. 
-     */
-    function freeRecordSet($result)
-    {
-        return mysql_free_result($result);
-    }
-
-    /**
-     * Returns the text of the error message from previous MySQL operation
-     * 
+	 */
+	function freeRecordSet($result)
+	{
+		return mysql_free_result($result);
+	}
+
+	/**
+	 * Returns the text of the error message from previous MySQL operation
+	 * 
      * @return bool Returns the error text from the last MySQL function, or '' (the empty string) if no error occurred. 
-     */
-    function error()
-    {
-        return @mysql_error();
-    }
-
-    /**
-     * Returns the numerical value of the error message from previous MySQL operation 
-     * 
+	 */
+	function error()
+	{
+		return @mysql_error();
+	}
+
+	/**
+	 * Returns the numerical value of the error message from previous MySQL operation 
+	 * 
      * @return int Returns the error number from the last MySQL function, or 0 (zero) if no error occurred. 
-     */
-    function errno()
-    {
-        return @mysql_errno();
-    }
+	 */
+	function errno()
+	{
+		return @mysql_errno();
+	}
 
     /**
      * Returns escaped string text with single quotes around it to be safely stored in database
@@ -226,51 +234,51 @@
      * or TRUE if successful and no result
      */
     function &queryF($sql, $limit=0, $start=0)
-    {
-        if ( !empty($limit) ) {
-            if (empty($start)) {
-                $start = 0;
-            }
-            $sql = $sql. ' LIMIT '.(int)$start.', '.(int)$limit;
-        }
-        $result = mysql_query($sql, $this->conn);
-        if ( $result ) {
-            $this->logger->addQuery($sql);
-            return $result;
+	{
+		if ( !empty($limit) ) {
+			if (empty($start)) {
+				$start = 0;
+			}
+			$sql = $sql. ' LIMIT '.(int)$start.', '.(int)$limit;
+		}
+		$result = mysql_query($sql, $this->conn);
+		if ( $result ) {
+			$this->logger->addQuery($sql);
+			return $result;
         } else {
-            $this->logger->addQuery($sql, $this->error(), $this->errno());
+			$this->logger->addQuery($sql, $this->error(), $this->errno());
             $ret = false;
             return $ret;
         }
     }
 
-    /**
-     * perform a query
+	/**
+	 * perform a query
      * 
      * This method is empty and does nothing! It should therefore only be
      * used if nothing is exactly what you want done! ;-)
-     * 
+	 * 
      * @param string $sql a valid MySQL query
      * @param int $limit number of records to return
      * @param int $start offset of first record to return
      * 
      * @abstract
-     */
-    function &query($sql, $limit=0, $start=0)
-    {
+	 */
+	function &query($sql, $limit=0, $start=0)
+	{
 
     }
 
     /**
-     * perform queries from SQL dump file in a batch
-     * 
+	 * perform queries from SQL dump file in a batch
+	 * 
      * @param string $file file path to an SQL dump file
      * 
      * @return bool FALSE if failed reading SQL file or TRUE if the file has been read and queries executed
-     */
-    function queryFromFile($file){
+	 */
+	function queryFromFile($file){
         if (false !== ($fp = fopen($file, 'r'))) {
-            include_once XOOPS_ROOT_PATH.'/class/database/sqlutility.php';
+			include_once XOOPS_ROOT_PATH.'/class/database/sqlutility.php';
             $sql_queries = trim(fread($fp, filesize($file)));
             SqlUtility::splitMySqlFile($pieces, $sql_queries);
             foreach ($pieces as $query) {
@@ -287,39 +295,120 @@
     }
     
     /**
-     * Get field name
-     *
+	 * Get field name
+	 *
      * @param resource $result query result
      * @param int numerical field index
      * @return string
-     */
-    function getFieldName($result, $offset)
-    {
-        return mysql_field_name($result, $offset);
-    }
-
-    /**
-     * Get field type
-     *
+	 */
+	function getFieldName($result, $offset)
+	{
+		return mysql_field_name($result, $offset);
+	}
+
+	/**
+	 * Get field type
+	 *
      * @param resource $result query result
      * @param int $offset numerical field index
      * @return string
-     */
+	 */
     function getFieldType($result, $offset)
-    {
-        return mysql_field_type($result, $offset);
-    }
-
-    /**
-     * Get number of fields in result
-     *
+	{
+		return mysql_field_type($result, $offset);
+	}
+
+	/**
+	 * Get number of fields in result
+	 *
      * @param resource $result query result
      * @return int
-     */
-    function getFieldsNum($result)
-    {
-        return mysql_num_fields($result);
-    }
+	 */
+	function getFieldsNum($result)
+	{
+		return mysql_num_fields($result);
+	}
+
+	/**
+	 * Emulates prepare(), but this is TEST API.
+	 * @remark This is TEST API. This method should be called by only Legacy.
+	 */
+	function prepare($query)
+	{
+		$count=0;
+		while(($pos=strpos($query,"?"))!==false) {
+			$pre=substr($query,0,$pos);
+			$after="";
+			if($pos+1<=strlen($query))
+				$after=substr($query,$pos+1);
+				
+			$query=$pre."{".$count."}".$after;
+			$count++;
+		}
+		$this->mPrepareQuery=$query;
+	}
+
+	/**
+	 * Emulates bind_param(), but this is TEST API.
+	 * @remark This is TEST API. This method should be called by only Legacy.
+	 */
+	function bind_param()
+	{
+		if(func_num_args()<2)
+			return;
+
+		$types=func_get_arg(0);
+		$count=strlen($types);
+		if(func_num_args()<$count)
+			return;
+
+		$searches=array();
+		$replaces=array();
+		for($i=0;$i<$count;$i++) {
+			$searches[$i]="{".$i."}";
+			switch(substr($types,$i,1)) {
+				case "i":
+					$replaces[$i]=intval(func_get_arg($i+1));
+					break;
+
+				case "s":
+					$replaces[$i]=$this->quoteString(func_get_arg($i+1));
+					break;
+
+				case "d":
+					$replaces[$i]=doubleval(func_get_arg($i+1));
+					break;
+				
+				case "b":
+					// Exception
+					die();
+			}
+		}
+
+		$this->mPrepareQuery=str_replace($searches,$replaces,$this->mPrepareQuery);
+	}
+
+	/**
+	 * Executes prepared SQL with query(), but this is TEST API.
+	 * @remark This is TEST API. This method should be called by only Legacy.
+	 */
+	function &execute()
+	{
+		$result=&$this->query($this->mPrepareQuery);
+		$this->mPrepareQuery=null;
+		return $result;
+	}
+
+	/**
+	 * Executes prepared SQL with queryF(), but this is TEST API.
+	 * @remark This is TEST API. This method should be called by only Legacy.
+	 */
+	function &executeF()
+	{
+		$result=&$this->queryF($this->mPrepareQuery);
+		$this->mPrepareQuery=null;
+		return $result;
+	}
 }
 
 /**
@@ -344,11 +433,11 @@
      * @return resource query result or FALSE if successful
      * or TRUE if successful and no result
      */
-    function &query($sql, $limit=0, $start=0)
-    {
-        $ret =& $this->queryF($sql, $limit, $start);
-        return $ret;
-    }
+	function &query($sql, $limit=0, $start=0)
+	{
+		$result =& $this->queryF($sql, $limit, $start);
+		return $result;
+	}
 }
 
 /**
@@ -377,17 +466,18 @@
      * @param int $start offset of first record to return
      * @return resource query result or FALSE if unsuccessful
      */
-    function &query($sql, $limit=0, $start=0)
-    {
-        $ret = false;
-        $sql = ltrim($sql);
-        if (strtolower(substr($sql, 0, 6)) == 'select') {
-        //if (preg_match("/^SELECT.*/i", $sql)) {
-            $ret =& $this->queryF($sql, $limit, $start);
-        } else {
-            $this->logger->addQuery($sql, 'Database update not allowed during processing of a GET request', 0);
-        }
-        return $ret;
-    }
+	function &query($sql, $limit=0, $start=0)
+	{
+	    $sql = ltrim($sql);
+		if (strtolower(substr($sql, 0, 6)) == 'select') {
+		//if (preg_match("/^SELECT.*/i", $sql)) {
+			$ret = $this->queryF($sql, $limit, $start);
+			return $ret;
+		}
+		$this->logger->addQuery($sql, 'Database update not allowed during processing of a GET request', 0);
+		
+		$ret = false;
+		return $ret;
+	}
 }
 ?>
\ No newline at end of file


xoops-cvslog メーリングリストの案内
Back to archive index