diff --git a/core/trunk/core/class/ObjectControlerAbstract.php b/core/trunk/core/class/ObjectControlerAbstract.php
index b760a3409a6e9f409d6fd643c25658c1c22f670c..59a0e342c28d6f39955cf064c8e3cb554cee74cc 100644
--- a/core/trunk/core/class/ObjectControlerAbstract.php
+++ b/core/trunk/core/class/ObjectControlerAbstract.php
@@ -111,8 +111,15 @@ abstract class ObjectControler
                     $values[] = '?';
                     $arrayValues[] = $boolValue;
                 } else {
-                    $values[] = '?';
-                    $arrayValues[] = $value;
+                    if (
+                        $value == 'CURRENT_TIMESTAMP'
+                        || $value == 'SYSDATE'
+                    ) {
+                        $values[] = $value;
+                    } else {
+                        $values[] = '?';
+                        $arrayValues[] = $value;
+                    }
                 }
             }
         }
@@ -202,8 +209,15 @@ abstract class ObjectControler
                     $arrayValues[] = $boolValue;
                 } else {
                     // Character or date
-                    $result[] = $key . "=?";
-                    $arrayValues[] = $value;
+                    if (
+                        $value == 'CURRENT_TIMESTAMP'
+                        || $value == 'SYSDATE'
+                    ) {
+                    $result[] = $key . "=" . $value;
+                    } else {
+                        $result[] = $key . "=?";
+                        $arrayValues[] = $value;
+                    }
                 }
             }
         }
diff --git a/core/trunk/core/class/class_db_pdo.php b/core/trunk/core/class/class_db_pdo.php
index 8503fc89b023d86aa4048ce8d6d06caec675a1ef..5899b08f85a4d76cfa152221fd848129c97bdadd 100644
--- a/core/trunk/core/class/class_db_pdo.php
+++ b/core/trunk/core/class/class_db_pdo.php
@@ -386,5 +386,35 @@ class Database extends functions
             default             : return ' ';
         }
     }
+
+    /**
+    * Test if the specified column exists in the database
+    *
+    * @param  $table : Name of searched table
+    * @param  $field : Name of searched field in table
+    *  ==Return : true is field is founed, false is not
+    */
+    public function test_column($table, $field)
+    {
+        switch($this->driver) {
+            case 'pgsql'   : 
+                $stmt = $this->query(
+                    "select column_name from information_schema.columns where table_name = ? and column_name = ?", 
+                    array($table, $field)
+                );
+                $res = $stmt->rowCount();
+                if ($res > 0) return true; 
+                else return false;
+            case 'oci'       : 
+                $stmt = $this->query("SELECT * from USER_TAB_COLUMNS where TABLE_NAME = ? AND COLUMN_NAME = ?", 
+                    array($table, $field)
+                );
+                $res = $stmt->rowCount();
+                if ($res > 0) return true; 
+                else return false;
+            case 'mysql'        : return true; // TO DO
+            default             : return false;
+        }
+    }
 }
 
diff --git a/core/trunk/core/class/class_security.php b/core/trunk/core/class/class_security.php
index 55b1d5a4a18787ac13476f59491abfa2c569cf6f..3e8ad870babf977e3da3a8ce725cf16da7e8487a 100644
--- a/core/trunk/core/class/class_security.php
+++ b/core/trunk/core/class/class_security.php
@@ -1,6 +1,6 @@
 <?php
 /*
-*    Copyright 2008,2009,2010 Maarch
+*    Copyright 2008-2015 Maarch
 *
 *  This file is part of Maarch Framework.
 *
@@ -41,6 +41,7 @@
 */
 
 //Requires to launch history functions
+require_once 'core/class/class_db_pdo.php';
 require_once 'core/class/class_history.php';
 require_once 'core/class/SecurityControler.php';
 require_once 'core/where_targets.php';
@@ -54,7 +55,7 @@ require_once 'core/class/ServiceControler.php';
 
 //require_once('lib/FirePHP/Init.php');
 
-class security extends dbquery
+class security extends Database
 {
     /**
     * Gets the indice of the collection in the  $_SESSION['collections'] array
@@ -298,8 +299,6 @@ class security extends dbquery
     */
     public function reopen($s_UserId,$s_key)
     {
-        $this->connect();
-
         $comp = " and cookie_key = '".$s_key."' and STATUS <> 'DEL'";
         $uc = new users_controler();
         $user = users_controler::get($s_login, $comp);
@@ -322,13 +321,12 @@ class security extends dbquery
                     ) {
                         $_SESSION['user']['signature_path'] = $user->__get('signature_path');
                         $_SESSION['user']['signature_file_name'] = $user->__get('signature_file_name');
-                        $db = new dbquery();
-                        $db->connect();
+                        $db = new Database();
                         $query = "select path_template from " 
                             . _DOCSERVERS_TABLE_NAME 
                             . " where docserver_id = 'TEMPLATES'";
-                        $db->query($query);
-                        $resDs = $db->fetch_object();
+                        $stmt = $db->query($query);
+                        $resDs = $stmt->fetchObject();
                         $pathToDs = $resDs->path_template;
                         $_SESSION['user']['pathToSignature'] = $pathToDs . str_replace(
                                 "#", 
@@ -819,13 +817,12 @@ class security extends dbquery
             $view = $this->retrieve_table_from_coll($coll_id);
         }
         $where_clause = $this->get_where_clause_from_coll_id($coll_id);
-        $query = "select res_id from " . $view . " where res_id = " . $s_id;
+        $query = "select res_id from " . $view . " where res_id = ?";
         if (!empty($where_clause)) {
             $query .= " and (" . $where_clause . ") ";
         }
-        $this->connect();
-        $this->query($query);
-        if ($this->nb_result() < 1) {
+        $stmt = $this->query($query, array($s_id));
+        if ($stmt->rowCount() < 1) {
             //NOT IN THE DOC PERIMETER SO TEST IT IN THE BASKETS
             $basketQuery = '';
             for (
@@ -851,10 +848,9 @@ class security extends dbquery
             if ($basketQuery <> '') {
                 $basketQuery = preg_replace('/^ or/', '', $basketQuery);
                 $query = "select res_id from " 
-                    . $view . " where (" . $basketQuery . ") and res_id = " . $s_id;
-                $this->connect();
-                $this->query($query);
-                if ($this->nb_result() < 1) {
+                    . $view . " where (" . $basketQuery . ") and res_id = ?";
+                $stmt = $this->query($query, array($s_id));
+                if ($stmt->rowCount() < 1) {
                     return false;
                 } else {
                     return true;
diff --git a/core/trunk/core/class/docserver_locations_controler.php b/core/trunk/core/class/docserver_locations_controler.php
index 32b97c1cacc4fa154ea733c298aef0ef764abb6b..7405f8b962d23ecb57a6db98b1c7e43d142f389b 100644
--- a/core/trunk/core/class/docserver_locations_controler.php
+++ b/core/trunk/core/class/docserver_locations_controler.php
@@ -385,18 +385,11 @@ class docserver_locations_controler extends ObjectControler
             );
             return $control;
         }
-        $db=new dbquery();
-        $db->connect();
+        $db = new Database();
         $query = "delete from " . _DOCSERVER_LOCATIONS_TABLE_NAME 
-               . " where docserver_location_id = '" 
-               . $func->protect_string_db(
-                   $docserverLocation->docserver_location_id
-               ) . "'";
+               . " where docserver_location_id = ?";
         try {
-            if ($_ENV['DEBUG']) {
-                functions::xecho($query) . ' // ';
-            }
-            $db->query($query);
+            $stmt = $db->query($query, array($docserverLocation->docserver_location_id));
         } catch (Exception $e) {
             $control = array(
                 'status' => 'ko', 
@@ -405,7 +398,6 @@ class docserver_locations_controler extends ObjectControler
                 . ' ' . $docserverLocation->docserver_location_id
             );
         }
-        $db->disconnect();
         $control = array(
                 'status' => 'ok', 
                 'value' => $docserverLocation->docserver_location_id
@@ -555,26 +547,19 @@ class docserver_locations_controler extends ObjectControler
     {
         if (!isset ($docserverLocationId) || empty ($docserverLocationId))
             return false;
-        $db = new dbquery();
-        $db->connect();
+        $db = new Database();
         $query = "select docserver_location_id from " 
                . _DOCSERVER_LOCATIONS_TABLE_NAME 
-               . " where docserver_location_id = '" . $docserverLocationId 
-               . "'";
+               . " where docserver_location_id = ?";
         try {
-            if ($_ENV['DEBUG']) {
-                functions::xecho($query) . ' // ';
-            }
-            $db->query($query);
+            $stmt = $db->query($query, array($docserverLocationId));
         } catch (Exception $e) {
             echo _UNKNOWN . _DOCSERVER_LOCATION . ' ' 
                 . functions::xssafe($docserverLocationId) . ' // ';
         }
-        if ($db->nb_result() > 0) {
-            $db->disconnect();
+        if ($stmt->rowCount() > 0) {
             return true;
         }
-        $db->disconnect();
         return false;
     }
 
@@ -588,17 +573,13 @@ class docserver_locations_controler extends ObjectControler
     {
         if (!isset($docserverLocationId) || empty($docserverLocationId))
             return false;
-        $db=new dbquery();
-        $db->connect();
+        $db=new Database();
         $query = "select docserver_location_id from " . _DOCSERVERS_TABLE_NAME 
-               . " where docserver_location_id = '" . $docserverLocationId 
-               . "'";
-        $db->query($query);
-        if ($db->nb_result()>0) {
-            $db->disconnect();
+               . " where docserver_location_id = ?";
+        $stmt = $db->query($query, array($docserverLocationId));
+        if ($stmt->rowCount()>0) {
             return true;
         }
-        $db->disconnect();
     }
     
     /** 
@@ -693,24 +674,18 @@ class docserver_locations_controler extends ObjectControler
         if (empty($docserverLocationId))
             return null;
         $docservers = array();
-        $db=new dbquery();
-        $db->connect();
+        $db=new Database();
         $query = "select docserver_id from " . _DOCSERVERS_TABLE_NAME 
-               . " where docserver_location_id = '" . $docserverLocationId 
-               . "'";
+               . " where docserver_location_id = ?";
         try{
-            if ($_ENV['DEBUG']) {
-                functions::xecho($query) . ' // ';
-            }
-            $db->query($query);
+            $stmt = $db->query($query, array($docserverLocationId));
         } catch (Exception $e) {
                     echo _NO_DOCSERVER_LOCATION_WITH_ID . ' ' 
                     . functions::xssafe($docserverLocationId) . ' // ';
         }
-        while ($res = $db->fetch_object()) {
+        while ($res = $stmt->fetchObject()) {
             array_push($docservers, $res->docserver_id);
         }
-        $db->disconnect();
         return $docservers;
     }
 
@@ -720,30 +695,25 @@ class docserver_locations_controler extends ObjectControler
     */
     public function getAllId($can_be_disabled = false)
     {
-        $db = new dbquery();
-        $db->connect();
+        $db = new Database();
         $query = "select docserver_location_id from " 
                . _DOCSERVER_LOCATIONS_TABLE_NAME . " ";
         if (!$can_be_disabled)
             $query .= " where enabled = 'Y'";
         try {
-            if ($_ENV['DEBUG'])
-                functions::xecho($query) . ' // ';
-            $db->query($query);
+            $stmt = $db->query($query);
         } catch (Exception $e) {
             echo _NO_DOCSERVER_LOCATION . ' // ';
         }
-        if ($db->nb_result() > 0) {
+        if ($stmt->rowCount() > 0) {
             $result = array ();
             $cptId = 0;
-            while ($queryResult = $db->fetch_object()) {
+            while ($queryResult = $stmt->fetchObject()) {
                 $result[$cptId] = $queryResult->docserver_location_id;
                 $cptId++;
             }
-            $db->disconnect();
             return $result;
         } else {
-            $db->disconnect();
             return null;
         }
     }
diff --git a/core/trunk/core/class/docserver_types_controler.php b/core/trunk/core/class/docserver_types_controler.php
index 20c436bd718383cc21937674cb6f578bdc80ec76..4d93e9d8ca76721b8eb6d6da080a4868a792ab44 100644
--- a/core/trunk/core/class/docserver_types_controler.php
+++ b/core/trunk/core/class/docserver_types_controler.php
@@ -270,18 +270,17 @@ class docserver_types_controler extends ObjectControler implements ObjectControl
                 $control = array("status" => "ko", "value" => "", "error" => _LINK_EXISTS);
                 return $control;
             }
-            $db=new dbquery();
-            $db->connect();
-            $query="delete from "._DOCSERVER_TYPES_TABLE_NAME." where docserver_type_id ='".$func->protect_string_db($docserver_type->docserver_type_id)."'";
+            $db = new Database();
+            
+            $stmt = $query="delete from " . _DOCSERVER_TYPES_TABLE_NAME 
+                . " where docserver_type_id =?";
             try {
-                if ($_ENV['DEBUG']) {functions::xecho($query) . ' // ';}
-                $db->query($query);
+                $db->query($query, array($docserver_type->docserver_type_id));
                 $ok = true;
             } catch (Exception $e) {
                 $control = array("status" => "ko", "value" => "", "error" => _CANNOT_DELETE_DOCSERVER_TYPE_ID." ".$docserver_type->docserver_type_id);
                 $ok = false;
             }
-            $db->disconnect();
             $control = array("status" => "ok", "value" => $docserver_type->docserver_type_id);
             if ($_SESSION['history']['docserverstypesdel'] == "true") {
                 $history = new history();
@@ -409,22 +408,17 @@ class docserver_types_controler extends ObjectControler implements ObjectControl
     public function docserverTypeExists($docserver_type_id) {
         if (!isset ($docserver_type_id) || empty ($docserver_type_id))
             return false;
-        $db = new dbquery();
-        $db->connect();
-        $query = "select docserver_type_id from " . _DOCSERVER_TYPES_TABLE_NAME . " where docserver_type_id = '" . $docserver_type_id . "'";
+        $db = new Database();
+        $query = "select docserver_type_id from " 
+            . _DOCSERVER_TYPES_TABLE_NAME . " where docserver_type_id = ?";
         try {
-            if ($_ENV['DEBUG']) {
-                functions::xecho($query) . ' // ';
-            }
-            $db->query($query);
+            $stmt = $db->query($query, array($docserver_type_id));
         } catch (Exception $e) {
             echo _UNKNOWN . _LC_CYCLE . " " . functions::xssafe($docserver_type_id) . ' // ';
         }
-        if ($db->nb_result() > 0) {
-            $db->disconnect();
+        if ($stmt->rowCount() > 0) {
             return true;
         }
-        $db->disconnect();
         return false;
     }
     
@@ -437,16 +431,13 @@ class docserver_types_controler extends ObjectControler implements ObjectControl
     public function docserverLinkExists($docserver_type_id) {
         if (!isset($docserver_type_id) || empty($docserver_type_id))
             return false;
-        $db=new dbquery();
-        $db->connect();
-        
-        $query = "select docserver_type_id from "._DOCSERVERS_TABLE_NAME." where docserver_type_id = '".$docserver_type_id."'";
-        $db->query($query);
-        if ($db->nb_result()>0) {
-            $db->disconnect();
+        $db = new Database();        
+        $query = "select docserver_type_id from "
+            . _DOCSERVERS_TABLE_NAME . " where docserver_type_id = ?";
+        $stmt = $db->query($query, array($docserver_type_id));
+        if ($stmt->rowCount()>0) {
             return true;
         }
-        $db->disconnect();
     }
     
     /**
@@ -458,15 +449,13 @@ class docserver_types_controler extends ObjectControler implements ObjectControl
     public function lcCycleStepsLinkExists($docserver_type_id) {
         if (!isset($docserver_type_id) || empty($docserver_type_id))
             return false;
-        $db=new dbquery();
-        $db->connect();
-        $query = "select docserver_type_id from "._LC_CYCLE_STEPS_TABLE_NAME." where docserver_type_id = '".$docserver_type_id."'";
-        $db->query($query);
-        if ($db->nb_result()>0) {
-            $db->disconnect();
+        $db = new Database();
+        $query = "select docserver_type_id from " 
+            . _LC_CYCLE_STEPS_TABLE_NAME . " where docserver_type_id = ?";
+        $stmt = $db->query($query, array($docserver_type_id));
+        if ($stmt->rowCount()>0) {
             return true;
         }
-        $db->disconnect();
     }
 
     /**
@@ -479,20 +468,17 @@ class docserver_types_controler extends ObjectControler implements ObjectControl
         if (empty($docserver_type_id))
             return null;
         $docservers = array();
-        $db=new dbquery();
-        $db->connect();
-        $query = "select docserver_id from "._DOCSERVERS_TABLE_NAME." where docserver_type_id = '".$docserver_type_id."'";
+        $db = new Database();
+        $query = "select docserver_id from "
+            . _DOCSERVERS_TABLE_NAME . " where docserver_type_id = ?";
         try{
-            if ($_ENV['DEBUG']) {functions::xecho($query) . ' // ';}
-                    $db->query($query);
+            $stmt = $db->query($query, array($docserver_type_id));
         } catch (Exception $e) {
-                    echo _NO_TYPE_WITH_ID.' '.functions::xssafe($docserver_type_id).' // ';
+            echo _NO_TYPE_WITH_ID.' '.functions::xssafe($docserver_type_id).' // ';
         }
-        while($res = $db->fetch_object())
-        {
+        while ($res = $stmt->fetchObject()) {
             array_push($docservers, $res->docserver_id);
         }
-        $db->disconnect();
         return $docservers;
     }
     
@@ -501,32 +487,25 @@ class docserver_types_controler extends ObjectControler implements ObjectControl
     * @return array of docservers types
     */
     public function getAllId($can_be_disabled = false) {
-        $db = new dbquery();
-        $db->connect();
+        $db = new Database();
         $query = "select docserver_type_id from " . _DOCSERVER_TYPES_TABLE_NAME . " ";
         if (!$can_be_disabled)
             $query .= " where enabled = 'Y'";
         try {
-            if ($_ENV['DEBUG'])
-                functions::xecho($query) . ' // ';
-            $db->query($query);
+            $stmt = $db->query($query);
         } catch (Exception $e) {
             echo _NO_DOCSERVER_TYPE . ' // ';
         }
-        if ($db->nb_result() > 0) {
-            $result = array ();
+        if ($stmt->rowCount() > 0) {
+            $result = array();
             $cptId = 0;
-            while ($queryResult = $db->fetch_object()) {
+            while ($queryResult = $stmt->fetchObject()) {
                 $result[$cptId] = $queryResult->docserver_type_id;
                 $cptId++;
             }
-            $db->disconnect();
             return $result;
         } else {
-            $db->disconnect();
             return null;
         }
     }
 }
-
-?>
diff --git a/core/trunk/core/class/docservers_controler.php b/core/trunk/core/class/docservers_controler.php
index 8c508d99831eae26e29470767f533bd80de25374..7586aebc506509c6dba525a9a9e93af89a9c5295 100644
--- a/core/trunk/core/class/docservers_controler.php
+++ b/core/trunk/core/class/docservers_controler.php
@@ -529,13 +529,11 @@ class docservers_controler
                 );
                 return $control;
             }
-            $db = new dbquery();
-            $db->connect();
+            $db = new Database();
             $query = "delete from " . _DOCSERVERS_TABLE_NAME
-                   . " where docserver_id ='"
-                   . $func->protect_string_db($docserver->docserver_id) . "'";
+                   . " where docserver_id = ?";
             try {
-                $db->query($query);
+                $stmt = $db->query($query, array($docserver->docserver_id));
             } catch (Exception $e) {
                 $control = array(
                     'status' => 'ko',
@@ -544,7 +542,6 @@ class docservers_controler
                     . ' ' . $docserver->docserver_id,
                 );
             }
-            $db->disconnect();
             $control = array(
                 'status' => 'ok',
                 'value' => $docserver->docserver_id,
@@ -701,20 +698,17 @@ class docservers_controler
         if (!isset($docserver_id) || empty($docserver_id)) {
             return false;
         }
-        $db = new dbquery();
-        $db->connect();
+        $db = new Database();
         $query = "select docserver_id from " . _DOCSERVERS_TABLE_NAME
-               . " where docserver_id = '" . $docserver_id . "'";
+               . " where docserver_id = ?";
         try{
-            $db->query($query);
+            $stmt = $db->query($query, array($docserver_id));
         } catch (Exception $e) {
             echo _UNKNOWN . _DOCSERVER . ' ' . functions::xssafe($docserver_id) . ' // ';
         }
-        if ($db->nb_result() > 0) {
-            $db->disconnect();
+        if ($stmt->rowCount() > 0) {
             return true;
         }
-        $db->disconnect();
         return false;
     }