implementations sgbd dans env/sgbd
[mtweb] / mw / env / modules / mw_env_sgbds.php
diff --git a/mw/env/modules/mw_env_sgbds.php b/mw/env/modules/mw_env_sgbds.php
new file mode 100644 (file)
index 0000000..dfdb74f
--- /dev/null
@@ -0,0 +1,105 @@
+<?php
+
+  class mw_env_sgbds extends mw_env{
+
+    private $sgbds;
+
+    public function sgbds(){
+      if(isset($this->sgbds)) return $this->sgbds;
+      $this->sgbds = array();
+      $impls_dir = $this->path("mw_dir")."env/sgbd";
+      if(!file_exists($impls_dir) || !is_dir($impls_dir)){
+        return false;
+      }
+      if($dh = opendir($impls_dir)){
+        $OK = true;
+        while($OK && ($impl_file = readdir($dh)) !== false){
+          if(substr($impl_file, 0 ,1) !== "." && substr($impl_file, -4) == ".php"){
+            require_once $impls_dir."/".$impl_file;
+            if(class_exists($class_name = substr($impl_file, 0, -4))){
+              if(
+                    method_exists($class_name, "name")
+                &&  method_exists($class_name, "extention_ok")
+              ){
+                $impl = new $class_name($this);
+                if($impl->extention_ok($this)) $this->sgbds[$class_name] = $impl;
+              }
+            }
+          }
+        }
+      }
+      else{
+        return false;
+      }
+      return $this->sgbds;
+    }
+
+  }
+
+  // -------------------------------------------------------------------------------------------
+  //                                                                               class mw_sgbd
+  //
+
+  abstract class mw_sgbd{
+
+    public $env;
+    public $link;
+    public $host;
+    public $base;
+    public $user;
+    public $password;
+    public $EXTENTION_OK;
+
+    public function __construct($env, $params = array()){
+      $this->env = $env;
+      $default_params = $this->default_params();
+      $params = $this->prepare_params($params);
+      $this->host = isset($params["host"]) ? $params["host"] : $default_params["host"];
+      $this->base = isset($params["base"]) ? $params["base"] : $default_params["base"];
+      $this->user = isset($params["user"]) ? $params["user"] : $default_params["user"];
+      $this->password = isset($params["password"]) ? $params["password"] : $default_params["password"];
+      $this->EXTENTION_OK = $this->validate_extention();
+    }
+
+    public function name(){
+      return "";
+    }
+
+    public function default_params(){
+      return array(
+        "host" => "",
+        "base" => "",
+        "user" => "",
+        "password" => ""
+      );
+    }
+
+    public function prepare_params($params){
+      return $params;
+    }
+
+    public function validate_extention(){
+      return false;
+    }
+
+    public function authentication_required(){
+      return false;
+    }
+
+    public function get_link(){
+      return $this->link;
+    }
+
+    public function extention_ok(){
+      return $this->EXTENTION_OK;
+    }
+
+    public function replace_prefixes($content){
+      return (
+        ($prefix_codes = array_keys($this->env->bdd("table_prefix"))) ?
+          str_replace($prefix_codes, array_values($this->env->bdd("table_prefix")), $content)
+        : $content
+      );
+    }
+
+  }