nouveau module "models" dans l'environnement
[mtweb] / mw / app / data / modules / sql / mw_data_crud.php
index 13aa8b1..f438ef1 100644 (file)
@@ -3,79 +3,18 @@
   class mw_data_crud extends mw_data{
 
     # ----------------------------------------------------------------------------------------
-    #                                                                                call_crud
+    #                                                                              description
     #
 
-    function call_data_crud($method_name, $arguments){
-      $r = false;
+    function data_desc($params = array()){
       $sgbd = $this->sgbd();
-      // add_<table_name>(array $values)
-      if(
-            (substr($method_name, 0, 4) == "add_")
-        &&  ($table_name = substr($method_name, 4))
-        &&  ($sgbd->table_exists("#--".$table_name))
-      ){
-        $r = $this->data_insert(
-          array(
-            "values" => $arguments[0],
-            "table_name" => $table_name
-          )
-        );
-      }
-      // get_<table_name>(string $index_name, string $index_value)
-      elseif(
-            (substr($method_name, 0, 4) == "get_")
-        &&  ($table_name = substr($method_name, 4))
-        &&  ($sgbd->table_exists("#--".$table_name))
-      ){
-        $r = $this->data_read(
-          array(
-            "table_name" => $table_name,
-            "index_name" => $arguments[0],
-            "index_value" => $arguments[1]
-          )
-        );
-      }
-      // list_<table_name>(array $params)
-      elseif(
-            (substr($method_name, 0, 5) == "list_")
-        &&  ($table_name = substr($method_name, 5))
-        &&  ($sgbd->table_exists("#--".$table_name))
-      ){
-        $params = $arguments[0];
-        $params["table_name"] = $table_name;
-        $r = $this->data_list($params);
-      }
-      // set_<table_name>(string index_name, string index_value, array $values)
-      elseif(
-            (substr($method_name, 0, 4) == "set_")
-        &&  ($table_name = substr($method_name, 4))
-        &&  ($sgbd->table_exists("#--".$table_name))
-      ){
-        $r = $this->data_update(
-          array(
-            "table_name" => $table_name,
-            "index_name" => $arguments[0],
-            "index_value" => $arguments[1],
-            "values" => $arguments[2]
-          )
-        );
-      }
-      // del_<table_name>(string $index_name, string $index_value)
-      elseif(
-            (substr($method_name, 0, 4) == "del_")
-        &&  ($table_name = substr($method_name, 4))
-        &&  ($sgbd->table_exists("#--".$table_name))
-      ){
-        $r = $this->data_delete(
-          array(
-            "table_name" => $table_name,
-            "index_name" => $arguments[0],
-            "index_value" => $arguments[1]
-          )
-        );
+      $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
+      if(!$table_name) return false;
+      try{
+        $desc = $sgbd->desc_table("#--".$table_name);
       }
-      return $r;
+      catch(Exception $e){ $desc = false; }
+      return $desc;
     }
 
     # ----------------------------------------------------------------------------------------
     }
 
     # ----------------------------------------------------------------------------------------
-    #                                                                                     list
-    #
-
-    function data_list($params = array()){
-      $sgbd = $this->sgbd();
-      $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
-      if(!$table_name) return false;
-      $index_name = isset($params["index_name"]) ? $params["index_name"] : "";
-      $select = "SELECT `#--".$table_name."`.*";
-      $from = " FROM `#--".$table_name."`";
-      $where = isset($params["where"]) ? " WHERE ".$params["where"] : "";
-      $order = isset($params["order_by"]) ?
-        " ORDER BY ".$params["order_by"].(isset($params["order"]) ? " ".$params["order"] : "")
-      : "";
-      $limit = isset($params["limit"]) ?
-        " LIMIT ".$params["limit"].(isset($params["offset"]) ? " OFFSET ".$params["offset"] : "")
-      : "";
-      $list = array("list" => array(), "total" => 0);
-      try{
-        $sql = "SELECT count(*) as n FROM(".$select.$from.$where.") res";
-        $rst = $sgbd->query($sql);
-        if($v_rst = $sgbd->fetch_assoc($rst)) $list["total"] = $v_rst["n"];
-        $sgbd->free_result($rst);
-        if($list["total"] > 0){
-          $sql = "SELECT * FROM(".$select.$from.$where.$order.$limit.") res";
-          $rst = $sgbd->query($sql);
-          while($v_rst = $sgbd->fetch_assoc($rst)){
-            if($index_name) $list["list"][$v_rst[$index_name]] = $v_rst;
-            else $list["list"][] = $v_rst;
-          }
-          $sgbd->free_result($rst);
-        }
-      }
-      catch(Exception $e) { $list = false; }
-      return $list;
-    }
-
-    # ----------------------------------------------------------------------------------------
     #                                                                                   update
     #
 
       $table_name = isset($params["table_name"]) ? $params["table_name"] : false;
       $values = (isset($params["values"]) && is_array($params["values"])) ? $params["values"] : false;
       $index_name = isset($params["index_name"]) ? $params["index_name"] : false;
-      $index_value = isset($params["index_value"]) ? $params["index_value"] : false;
+      $index_value = isset($params["index_value"]) && (strlen($params["index_value"]) > 0) ? $params["index_value"] : false;
       if(!$table_name || !$index_name || !$index_value || !$values) return false;
       try{
         $sql = "UPDATE `#--".$table_name."`";
         $sql = "DELETE FROM `#--".$table_name."` WHERE `".$index_name."`=".$this->eq($index_value);
         $sgbd->query($sql);
       }
-      catch(Exception $e) { return false; }
+      catch(Exception $e) { debug($e->getMessage()); return false; }
       return true;
     }
 
+    # ----------------------------------------------------------------------------------------
+    #                                                                                     list
+    #
+
+    function data_list($params = array()){
+      $sgbd = $this->sgbd();
+      $table_name = isset($params["table_name"]) ? $params["table_name"] : "";
+      if(!$table_name) return false;
+      $index_name = isset($params["index_name"]) ? $params["index_name"] : "";
+      $select = "SELECT `#--".$table_name."`.*";
+      $from = " FROM `#--".$table_name."`";
+      $where = isset($params["where"]) ? " WHERE ".$params["where"] : "";
+      if(isset($params["filters"])){
+        foreach($params["filters"] as $filter){
+          $and_where = "";
+          if(isset($filter[0]) && isset($filter[1])){
+            switch(strtolower($filter[1])){
+              case "eq":
+                if(isset($filter[2])){
+                  $and_where .= ($where ? " AND " : " WHERE ").$filter[0]."=".$this->eq($filter[2]);
+                  break;
+                }
+              case "lt":
+                if(isset($filter[2])){
+                  $and_where .= ($where ? " AND " : " WHERE ").$filter[0]."<".$this->eq($filter[2]);
+                  break;
+                }
+              case "lte":
+                if(isset($filter[2])){
+                  $and_where .= ($where ? " AND " : " WHERE ").$filter[0].">=".$this->eq($filter[2]);
+                  break;
+                }
+              case "gt":
+                if(isset($filter[2])){
+                  $and_where .= ($where ? " AND " : " WHERE ").$filter[0].">".$this->eq($filter[2]);
+                  break;
+                }
+              case "gte":
+                if(isset($filter[2])){
+                  $and_where .= ($where ? " AND " : " WHERE ").$filter[0].">=".$this->eq($filter[2]);
+                  break;
+                }
+            }
+          }
+          $where .= $and_where;
+        }
+      }
+      $order = isset($params["order_by"]) ?
+        " ORDER BY ".$params["order_by"].(isset($params["order"]) ? " ".$params["order"] : "")
+      : "";
+      $limit = isset($params["limit"]) ?
+        " LIMIT ".$params["limit"].(isset($params["offset"]) ? " OFFSET ".$params["offset"] : "")
+      : "";
+      $list = array("list" => array(), "total" => 0);
+      try{
+        $sql = "SELECT count(*) as n FROM(".$select.$from.$where.") res";
+        $rst = $sgbd->query($sql);
+        if($v_rst = $sgbd->fetch_assoc($rst)) $list["total"] = $v_rst["n"];
+        $sgbd->free_result($rst);
+        if($list["total"] > 0){
+          $sql = "SELECT * FROM(".$select.$from.$where.$order.$limit.") res";
+          $rst = $sgbd->query($sql);
+          while($v_rst = $sgbd->fetch_assoc($rst)){
+            if($index_name) $list["list"][$v_rst[$index_name]] = $v_rst;
+            else $list["list"][] = $v_rst;
+          }
+          $sgbd->free_result($rst);
+        }
+      }
+      catch(Exception $e) { $list = false; }
+      return $list;
+    }
+
   }
 
 ?>
\ No newline at end of file