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