maj version dans config.xml
[mtweb] / mw / app / data / modules / sql / mw_data_sql_crud.php
index 0d9abbd..8daf014 100644 (file)
   class mw_data_sql_crud extends mw_data{
 
     # ----------------------------------------------------------------------------------------
+    #                                                                       parametres du sgbd
+    #
+
+    public function set_sgbd_param($key, $value){
+      $env = $this->env();
+      if(($env->bdd("sgbd") == "pdo_mysql") || ($env->bdd("sgbd") == "mysql")){
+        return $this->set_sgbd_mysql_param($key, $value);
+      }
+      return false;
+    }
+
+    public function set_sgbd_mysql_param($key, $value){
+      $sgbd = $this->sgbd();
+      $sql = "SET ".$key."=\"".$value."\"";
+      try{
+        $sgbd->query($sql);
+      }
+      catch(Exception $e){
+        return false;
+      }
+      return true;
+    }
+
+    # ----------------------------------------------------------------------------------------
+    #                                                                             create table
+    #
+
+    public function data_create_table($params){
+      $env = $this->env();
+      if($env->bdd("sgbd") == "pdo_sqlite"){
+        return $this->data_create_sqlite_table($params);
+      }
+      return $this->data_create_mysql_table($params);
+    }
+
+    public function data_create_mysql_table($params){
+      $sgbd = $this->sgbd();
+      $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
+      $fields = isset($params["fields"]) ? $params["fields"] : array();
+      $keys = isset($params["keys"]) ? $params["keys"] : array();
+      $options = isset($params["options"]) ? $params["options"] : array();
+      if(!$table_name || !$fields) return false;
+      $sql_fields = "";
+      $sql_keys = "";
+      $sql_options = "";\r
+      foreach($fields as $field_name => $field){
+        if(!preg_match("/^[a-z]+[a-z_0-9]*$/", $field_name)) return false;
+        if(!isset($field["type"])) return false;
+        $sql_field = "";
+        switch($field["type"]){
+          case "int":
+            $value = isset($field["value"]) ? $field["value"] : "11";
+            if(!preg_match("/^[0-9]+$/", $value)) return false;
+            $sql_field .= "`".$field_name."` int(".$value.")";
+            break;
+          case "varchar":
+            $value = isset($field["value"]) ? $field["value"] : "255";
+            if(!preg_match("/^[0-9]+$/", $value)) return false;
+            $sql_field .= "`".$field_name."` varchar(".$value.")";
+            break;
+          case "text":
+            $sql_field .= "`".$field_name."` text";
+            break;
+          case "date":
+            $sql_field .= "`".$field_name."` date";
+            break;
+          case "datetime":
+            $sql_field .= "`".$field_name."` datetime";
+            break;
+        }
+        if($sql_field){
+          $null = isset($field["null"]) ? $field["null"] : false;
+          $sql_field .= ($null ? " DEFAULT" : " NOT")." NULL";
+          if($null && isset($field["default"])){
+            $sql_field .= " DEFAULT ".$this->eq($field["default"]);
+          }
+          if(isset($field["autoincrement"]) && $field["autoincrement"]){
+            $sql_field .= " AUTO_INCREMENT";
+          }
+          $sql_fields .= ($sql_fields ? ", " : "").$sql_field;
+        }
+      }
+      $key_index = 0;
+      foreach($keys as $key){
+        $key_index++;
+        $sql_key_fields = "";
+        foreach($key["fields"] as $key_field){
+          $sql_key_fields .= ($sql_key_fields ? "," : "")."`".$key_field."`";
+        }
+        $sql_key = "KEY `#--".$table_name."_".$key_index."`(".$sql_key_fields.")";
+        if(isset($key["primary"]) && $key["primary"]){
+          $sql_key = "PRIMARY ".$sql_key;
+        }
+        $sql_keys .= ($sql_keys ? ", " : "").$sql_key;
+      }
+      foreach($options as $option_name => $option_value){
+        switch($option_name){
+          case "default_charset":
+            $sql_options .= " DEFAULT CHARSET=".$option_value;
+            break;
+        }
+      }
+      $sql = "CREATE TABLE `#--".$table_name."`(".$sql_fields.", ".$sql_keys.")".$sql_options;
+      try{
+        $sgbd->query($sql);
+      }
+      catch(Exception $e){
+        return false;
+      }
+      return true;
+    }
+
+    public function data_create_sqlite_table($params){
+      $sgbd = $this->sgbd();
+      $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
+      $fields = isset($params["fields"]) ? $params["fields"] : array();
+      $keys = isset($params["keys"]) ? $params["keys"] : array();
+      $options = isset($params["options"]) ? $params["options"] : array();
+      if(!$table_name || !$fields) return false;
+      $sql_fields = "";
+      $sql_keys = "";
+      $sql_options = "";\r
+      foreach($fields as $field_name => $field){
+        if(!preg_match("/^[a-z]+[a-z_0-9]*$/", $field_name)) return false;
+        if(!isset($field["type"])) return false;
+        $sql_field = "";
+        switch($field["type"]){
+          case "int":
+            $sql_field .= "`".$field_name."` INTEGER";
+            break;
+          case "varchar":
+          case "text":
+          case "date":
+          case "datetime":
+            $sql_field .= "`".$field_name."` TEXT";
+            break;
+        }
+        if($sql_field){
+          $null = isset($field["null"]) ? $field["null"] : false;
+          $sql_field .= ($null ? " DEFAULT" : " NOT")." NULL";
+          if($null && isset($field["default"])){
+            $sql_field .= " DEFAULT ".$this->eq($field["default"]);
+          }
+          $sql_fields .= ($sql_fields ? ", " : "").$sql_field;
+        }
+      }
+      $key_index = 0;
+      foreach($keys as $key){
+        if(isset($key["primary"]) && $key["primary"]){
+          $key_index++;
+          $sql_key_fields = "";
+          foreach($key["fields"] as $key_field){
+            $sql_key_fields .= ($sql_key_fields ? "," : "")."`".$key_field."`";
+          }
+          $sql_key = "PRIMARY KEY (".$sql_key_fields.")";
+          $sql_keys .= ($sql_keys ? ", " : "").$sql_key;
+        }
+      }
+      $sql = "CREATE TABLE `#--".$table_name."`(".$sql_fields.", ".$sql_keys.")".$sql_options;
+      try{
+        $sgbd->query($sql);
+      }
+      catch(Exception $e){
+        return false;
+      }
+      return true;
+    }
+
+    # ----------------------------------------------------------------------------------------
     #                                                                              description
     #
 
-    function data_desc($params = array()){
+    public function data_desc($params = array()){
       $sgbd = $this->sgbd();
       $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
       if(!$table_name) return false;
     #                                                                                   insert
     #
 
-    function data_insert($params = array()){
+    public function data_insert($params = array()){
       $sgbd = $this->sgbd();
       $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
       if(!$table_name) return false;
     #                                                                                     read
     #
 
-    function data_read($params = array()){
+    public function data_read($params = array()){
       $sgbd = $this->sgbd();
       $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
       $index_name = isset($params["index_name"]) ? $params["index_name"] : "";
     #                                                                                   update
     #
 
-    function data_update($params = array()){
+    public function data_update($params = array()){
       $sgbd = $this->sgbd();
       $table_name = isset($params["table_name"]) ? $params["table_name"] : false;
       $values = (isset($params["values"]) && is_array($params["values"])) ? $params["values"] : false;
     #                                                                                   delete
     #
 
-    function data_delete($params = array()){
+    public function data_delete($params = array()){
       $sgbd = $this->sgbd();
       $table_name = isset($params["table_name"]) ? $params["table_name"] : false;
       $index_name = isset($params["index_name"]) ? $params["index_name"] : false;
         $sql = "DELETE FROM `#--".$table_name."` WHERE `".$index_name."`=".$this->eq($index_value);
         $sgbd->query($sql);
       }
-      catch(Exception $e) { debug($e->getMessage()); return false; }
+      catch(Exception $e) { return false; }
       return true;
     }
 
     #                                                                                     list
     #
 
-    function data_list($params = array()){
+    public function data_list($params = array()){
       $sgbd = $this->sgbd();
       $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
       if(!$table_name) return false;
     }
 
   }
-
-?>
\ No newline at end of file