Browse Source

Better type hinting and code structure for the PgSQL database driver

Raphaël Doursenaud 10 years ago
parent
commit
ccd14c8305
2 changed files with 29 additions and 29 deletions
  1. 28 28
      htdocs/core/db/pgsql.class.php
  2. 1 1
      htdocs/install/etape2.php

+ 28 - 28
htdocs/core/db/pgsql.class.php

@@ -147,10 +147,10 @@ class DoliDBPgsql extends DoliDB
      *
      *  @param  string	$line   			SQL request line to convert
      *  @param  string	$type				Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
-     *  @param	string	$unescapeslashquot	Unescape slash quote with quote quote
+     *  @param	bool	$unescapeslashquot	Unescape slash quote with quote quote
      *  @return string   					SQL request line converted
      */
-	static function convertSQLFromMysql($line,$type='auto',$unescapeslashquot=0)
+	static function convertSQLFromMysql($line,$type='auto',$unescapeslashquot=false)
 	{
 		// Removed empty line if this is a comment line for SVN tagging
 		if (preg_match('/^--\s\$Id/i',$line)) {
@@ -353,7 +353,7 @@ class DoliDBPgsql extends DoliDB
      *  On compare juste manuellement si la database choisie est bien celle activee par la connexion
 	 *
 	 *	@param	    string	$database	Name of database
-	 *	@return	    boolean  		    true if OK, false if KO
+	 *	@return	    bool				true if OK, false if KO
 	 */
 	function select_db($database)
 	{
@@ -369,7 +369,7 @@ class DoliDBPgsql extends DoliDB
 	 *	@param	    string		$passwd		Password
 	 *	@param		string		$name		Name of database (not used for mysql, used for pgsql)
 	 *	@param		integer		$port		Port of database server
-	 *	@return		resource				Database access handler
+	 *	@return		false|resource			Database access handler
 	 *	@see		close
 	 */
 	function connect($host, $login, $passwd, $name, $port=0)
@@ -463,7 +463,7 @@ class DoliDBPgsql extends DoliDB
 	 * @param	string	$query			SQL query string
 	 * @param	int		$usesavepoint	0=Default mode, 1=Run a savepoint before and a rollback to savepoint if error (this allow to have some request with errors inside global transactions).
      * @param   string	$type           Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
-	 * @return	resource    			Resultset of answer
+	 * @return	false|resource			Resultset of answer
 	 */
 	function query($query,$usesavepoint=0,$type='auto')
 	{
@@ -530,8 +530,8 @@ class DoliDBPgsql extends DoliDB
 	/**
 	 *	Renvoie la ligne courante (comme un objet) pour le curseur resultset
 	 *
-	 *	@param	Resultset	$resultset  Curseur de la requete voulue
-	 *	@return	Object 					Object result line or false if KO or end of cursor
+	 *	@param	resource	$resultset  Curseur de la requete voulue
+	 *	@return	false|object			Object result line or false if KO or end of cursor
 	 */
 	function fetch_object($resultset)
 	{
@@ -544,7 +544,7 @@ class DoliDBPgsql extends DoliDB
      *	Return datas as an array
      *
      *	@param	resource	$resultset  Resultset of request
-     *	@return	array					Array
+     *	@return	false|array				Array
 	 */
 	function fetch_array($resultset)
 	{
@@ -557,7 +557,7 @@ class DoliDBPgsql extends DoliDB
      *	Return datas as an array
      *
      *	@param	resource	$resultset  Resultset of request
-     *	@return	array					Array
+     *	@return	false|array				Array
 	 */
 	function fetch_row($resultset)
 	{
@@ -569,8 +569,8 @@ class DoliDBPgsql extends DoliDB
 	/**
      *	Return number of lines for result of a SELECT
      *
-     *	@param	Resultset	$resultset  Resulset of requests
-     *	@return int		    			Nb of lines
+     *	@param	resourse	$resultset  Resulset of requests
+     *	@return int		    			Nb of lines, -1 on error
      *	@see    affected_rows
 	 */
 	function num_rows($resultset)
@@ -583,7 +583,7 @@ class DoliDBPgsql extends DoliDB
 	/**
 	 * Renvoie le nombre de lignes dans le resultat d'une requete INSERT, DELETE ou UPDATE
 	 *
-	 * @param	Resultset	$resultset  Result set of request
+	 * @param	resource	$resultset  Result set of request
 	 * @return  int		    			Nb of lines
 	 * @see 	num_rows
 	 */
@@ -600,10 +600,10 @@ class DoliDBPgsql extends DoliDB
 	/**
 	 * Libere le dernier resultset utilise sur cette connexion
 	 *
-	 * @param	Resultset	$resultset  Result set of request
+	 * @param	resource	$resultset  Result set of request
 	 * @return	void
 	 */
-	function free($resultset=0)
+	function free($resultset=null)
 	{
         // If resultset not provided, we take the last used by connexion
 		if (! is_resource($resultset)) { $resultset=$this->_results; }
@@ -746,7 +746,7 @@ class DoliDBPgsql extends DoliDB
 	 *
 	 * @param   string	$tab    	Table name concerned by insert. Ne sert pas sous MySql mais requis pour compatibilite avec Postgresql
 	 * @param	string	$fieldid	Field name
-	 * @return  int     			Id of row
+	 * @return  string     			Id of row
 	 */
 	function last_insert_id($tab,$fieldid='rowid')
 	{
@@ -827,7 +827,7 @@ class DoliDBPgsql extends DoliDB
 	 * 	@param	string	$charset		Charset used to store data
 	 * 	@param	string	$collation		Charset used to sort data
 	 * 	@param	string	$owner			Username of database owner
-	 * 	@return	resource				resource defined if OK, null if KO
+	 * 	@return	false|resource				resource defined if OK, null if KO
 	 */
 	function DDLCreateDb($database,$charset='',$collation='',$owner='')
 	{
@@ -910,11 +910,13 @@ class DoliDBPgsql extends DoliDB
 	 *	@param	    string	$type 			Type de la table
 	 *	@param	    array	$unique_keys 	Tableau associatifs Nom de champs qui seront clef unique => valeur
 	 *	@param	    array	$fulltext_keys	Tableau des Nom de champs qui seront indexes en fulltext
-	 *	@param	    string	$keys 			Tableau des champs cles noms => valeur
+	 *	@param	    array	$keys 			Tableau des champs cles noms => valeur
 	 *	@return	    int						<0 if KO, >=0 if OK
 	 */
-	function DDLCreateTable($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="")
+	function DDLCreateTable($table,$fields,$primary_key,$type,$unique_keys=null,$fulltext_keys=null,$keys=null)
 	{
+		// FIXME: $fulltext_keys parameter is unused
+
 		// cles recherchees dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
 		// ex. : $fields['rowid'] = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
 		$sql = "create table ".$table."(";
@@ -944,7 +946,7 @@ class DoliDBPgsql extends DoliDB
 		if($primary_key != "")
 		$pk = "primary key(".$primary_key.")";
 
-		if($unique_keys != "")
+		if(is_array($unique_keys))
 		{
 			$i = 0;
 			foreach($unique_keys as $key => $value)
@@ -953,7 +955,7 @@ class DoliDBPgsql extends DoliDB
 				$i++;
 			}
 		}
-		if($keys != "")
+		if(is_array($keys))
 		{
 			$i = 0;
 			foreach($keys as $key => $value)
@@ -965,9 +967,9 @@ class DoliDBPgsql extends DoliDB
 		$sql .= implode(',',$sqlfields);
 		if($primary_key != "")
 		$sql .= ",".$pk;
-		if($unique_keys != "")
+		if(is_array($unique_keys))
 		$sql .= ",".implode(',',$sqluq);
-		if($keys != "")
+		if(is_array($keys))
 		$sql .= ",".implode(',',$sqlk);
 		$sql .=") type=".$type;
 
@@ -1007,7 +1009,7 @@ class DoliDBPgsql extends DoliDB
 	 *
 	 *	@param	string		$table	Name of table
 	 *	@param	string		$field	Optionnel : Name of field if we want description of field
-	 *	@return	resource			Resultset x (x->attname)
+	 *	@return	false|resource		Resultset x (x->attname)
 	 */
 	function DDLDescTable($table,$field="")
 	{
@@ -1052,8 +1054,7 @@ class DoliDBPgsql extends DoliDB
 
 		dol_syslog($sql,LOG_DEBUG);
 		if(! $this -> query($sql))
-		return -1;
-		else
+			return -1;
 		return 1;
 	}
 
@@ -1078,8 +1079,7 @@ class DoliDBPgsql extends DoliDB
 
 		dol_syslog($sql,LOG_DEBUG);
 		if (! $this->query($sql))
-		return -1;
-		else
+			return -1;
 		return 1;
 	}
 
@@ -1099,7 +1099,7 @@ class DoliDBPgsql extends DoliDB
 			$this->error=$this->lasterror();
 			return -1;
 		}
-		else return 1;
+		return 1;
 	}
 
 	/**

+ 1 - 1
htdocs/install/etape2.php

@@ -139,7 +139,7 @@ if ($action == "set")
 
 
     // To say sql requests are escaped for mysql so we need to unescape them
-    $db->unescapeslashquot=1;
+    $db->unescapeslashquot=true;
 
 
     /**************************************************************************************