else $env->message("merci de choisir un mot de passe pour l'administrateur");
if(!$env->messages()){
$sgbds[$current_sgbd] = null;
- $impl = new $current_sgbd($params);
+ $impl = new $current_sgbd($env, $params);
$sgbds[$current_sgbd] = $impl;
- $data->set_sgbd(
- new mw_sgbd(
- $sgbds[$current_sgbd],
- $env
- )
- );
+ $data->set_sgbd($sgbds[$current_sgbd]);
$data->load_modules($env->path("mw_dir")."app/", "data/modules/".($current_sgbd == "mw_xml" ? "xml" : "sql")."/");
if(
$current_sgbd == "mw_xml"
<?php
- class mw_mysql{
-
- public $link;
- public $host;
- public $base;
- public $user;
- public $password;
- public $EXTENTION_OK;
-
- public function __construct($params = array()){
- $this->host = isset($params["host"]) ? $params["host"] : "localhost";
- $this->base = isset($params["base"]) ? $params["base"] : "mtweb";
- $this->user = isset($params["user"]) ? $params["user"] : "";
- $this->password = isset($params["password"]) ? $params["password"] : "";
- $this->EXTENTION_OK = function_exists("mysql_connect");
+ class mw_mysql extends mw_sgbd{
+
+ public function name(){
+ return "MySql";
}
- public function extention_ok(&$env){
- return $this->EXTENTION_OK;
+ public function default_params(){
+ return array(
+ "host" => "localhost",
+ "base" => "mtweb",
+ "user" => "",
+ "password" => ""
+ );
}
- public function authentication_required(){
- return true;
+ public function validate_extention(){
+ return function_exists("mysql_connect");
}
- public function sgbd_name(){
- return "MySql";
+ public function authentication_required(){
+ return true;
}
public function connect($host, $base, $user, $password){
}
public function desc_table($table_name){
+ $table_name = $this->replace_prefixes($table_name);
$sql = "SELECT * from information_schema.columns where table_name='".$table_name."'";
$rst = $this->query($sql);
$desc = array(
return $desc;
}
- public function table_exists($table_name){\r
+ public function table_exists($table_name){
+ $table_name = $this->replace_prefixes($table_name);\r
if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
$EXISTS = false;
try{
}
public function field_exists($table_name, $field_name){
+ $table_name = $this->replace_prefixes($table_name);
if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
if(!($desc = $this->desc_table($table_name))){
throw new Exception($this->exception_out("Impossible de lire la description de la table"));
return $EXISTS;
}
- public function query($query_string){\r
+ public function query($query_string){
+ $query_string = $this->replace_prefixes($query_string);\r
if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
$result = @mysql_query($query_string, $this->link);\r
if(!$result) throw new Exception($this->exception_out("Syntaxe invalide dans une requete"));\r
<?php
- class mw_pdo_mysql{
-
- public $link;
- public $host;
- public $base;
- public $user;
- public $password;
- public $EXTENTION_OK;
-
- public function __construct($params = array()){
- $this->host = isset($params["host"]) ? $params["host"] : "localhost";
- $this->base = isset($params["base"]) ? $params["base"] : "mtweb";
- $this->user = isset($params["user"]) ? $params["user"] : "";
- $this->password = isset($params["password"]) ? $params["password"] : "";
- $this->EXTENTION_OK = (extension_loaded("pdo") && extension_loaded("pdo_mysql"));
+ class mw_pdo_mysql extends mw_sgbd{
+
+ public function name(){
+ return "PDO MySql";
}
- public function get_link(){
- return $this->link;
+ public function default_params(){
+ return array(
+ "host" => "localhost",
+ "base" => "mtweb",
+ "user" => "",
+ "password" => ""
+ );
}
- public function extention_ok(&$env){
- return $this->EXTENTION_OK;
+ public function validate_extention(){
+ return extension_loaded("pdo") && extension_loaded("pdo_mysql");
}
public function authentication_required(){
return true;
}
- public function sgbd_name(){
- return "PDO MySql";
- }
-
public function connect($host, $base, $user, $password){
try{
$this->link = new PDO("mysql:host=".$host.";dbname=".$base, $user, $password);
}
public function desc_table($table_name){
+ $table_name = $this->replace_prefixes($table_name);
$sql = "SELECT * from information_schema.columns where table_name='".$table_name."'";
$rst = $this->query($sql);
$desc = array(
}
public function table_exists($table_name){
+ $table_name = $this->replace_prefixes($table_name);
if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
$EXISTS = false;
try{
}
public function field_exists($table_name, $field_name){
+ $table_name = $this->replace_prefixes($table_name);
if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
if(!($desc = $this->desc_table($table_name))){
throw new Exception($this->exception_out("Impossible de lire la description de la table"));
return $EXISTS;
}
- public function query($query_string){\r
+ public function query($query_string){
+ $query_string = $this->replace_prefixes($query_string);\r
if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
if(!($result = $this->link->query($query_string))){
throw new Exception($this->exception_out("Syntaxe invalide dans une requete"));
<?php
- class mw_pdo_sqlite{
-
- public $link;
- public $host;
- public $base;
- public $user;
- public $password;
- public $EXTENTION_OK;
-
- public function __construct($params = array()){
- $this->host = isset($params["host"]) ? $params["host"] : "content/data/sqlite";
- $this->base = isset($params["base"]) ? $params["base"] : "mtweb.db";
- $this->user = isset($params["user"]) ? $params["user"] : "";
- $this->password = isset($params["password"]) ? $params["password"] : "";
- $this->EXTENTION_OK = (extension_loaded("pdo") && extension_loaded("pdo_sqlite"));
+ class mw_pdo_sqlite extends mw_sgbd{
+
+ public function name(){
+ return "PDO SQLite";
}
- public function get_link(){
- return $this->link;
+ public function default_params(){
+ return array(
+ "host" => "content/data/sqlite",
+ "base" => "mtweb.db",
+ "user" => "",
+ "password" => ""
+ );
}
- public function extention_ok(&$env){
- return $this->EXTENTION_OK;
+ public function validate_extention(){
+ return extension_loaded("pdo") && extension_loaded("pdo_sqlite");
}
public function authentication_required(){
return false;
}
- public function sgbd_name(){
- return "PDO SQLite";
- }
-
public function connect($host, $base, $user, $password){
if($host) $host .= substr($host, -1) != "/" ? "/" : "";
try{
}
public function desc_table($table_name){
+ $table_name = $this->replace_prefixes($table_name);
if(strpos($table_name, "'") !== false){
throw new Exception($this->exception_out("nom de table avec un simple quote"));
}
}
public function table_exists($table_name){
+ $table_name = $this->replace_prefixes($table_name);
if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
$EXISTS = false;
try{
}
public function field_exists($table_name, $field_name){
+ $table_name = $this->replace_prefixes($table_name);
if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
if(!($desc = $this->desc_table($table_name))){
throw new Exception($this->exception_out("Impossible de lire la description de la table"));
return $EXISTS;
}
- public function query($query_string){\r
+ public function query($query_string){
+ $query_string = $this->replace_prefixes($query_string);\r
if(!$this->link) $this->connect($this->host, $this->base, $this->user, $this->password);\r
if(!($result = $this->link->query($query_string))){
throw new Exception($this->exception_out("Syntaxe invalide dans une requete"));
<?php
- class mw_xml{
+ class mw_xml extends mw_sgbd{
- public $host;
- public $base;
- public $user;
- public $password;
- public $EXTENTION_OK;
public $xml_data;
public $data_handlers;
public $last_data_handler;
- public function __construct($params = array()){
- $this->init_xml_env(
- isset($params["host"]) ? $params["host"] : "content/data/xml",
- isset($params["base"]) ? $params["base"] : "mw",
- isset($params["user"]) ? $params["user"] : "",
- isset($params["password"]) ? $params["password"] : ""
+ public function name(){
+ return "XML";
+ }
+
+ public function default_params(){
+ return array(
+ "host" => "content/data/xml",
+ "base" => "mw",
+ "user" => "",
+ "password" => ""
);
- $this->EXTENTION_OK = true;
- }
-
- public function extention_ok(&$env){
- if($this->EXTENTION_OK){
- if(
- file_exists($env->app_file("data/impl/xml/mw_xml_data.php"))
- && file_exists($env->app_file("data/impl/xml/mw_xml_data_handler.php"))
- ){
- if(!class_exists("mw_xml_data")) require_once $env->app_file("data/impl/xml/mw_xml_data.php");
- if(!class_exists("mw_xml_data_handler")) require_once $env->app_file("data/impl/xml/mw_xml_data_handler.php");
- if(
- class_exists("mw_xml_data")
- && class_exists("mw_xml_data_handler")
- ){
- $this->xml_data = new mw_xml_data($this->host, $this->base);
- }
- else $this->EXTENTION_OK = false;
- }
- else $this->EXTENTION_OK = false;
- }
- return $this->EXTENTION_OK;
}
public function authentication_required(){
return false;
}
- public function sgbd_name(){
- return "XML";
- }
-
- public function init_xml_env($host, $base, $user, $password){
- $this->host = $host.($host && substr($host, -1) != "/" ? "/" : "");
- $this->base = $base.($base && substr($base, -1) != "/" ? "/" : "");
- $this->user = $user;
- $this->password = $password;
+ public function prepare_params($params){
+ if(isset($params["host"])){
+ $params["host"] .= $params["host"] && substr($params["host"], -1) != "/" ? "/" : "";
+ }
+ if(isset($params["base"])){
+ $params["base"] .= $params["base"] && substr($params["base"], -1) != "/" ? "/" : "";
+ }
$this->data_handlers = array();
$this->last_data_handler = 0;
+ return $params;
+ }
+
+ public function validate_extention(){
+ if(
+ !file_exists($this->env->app_file("data/impl/xml/mw_xml_data.php"))
+ || !file_exists($this->env->app_file("data/impl/xml/mw_xml_data_handler.php"))
+ ){
+ return false;
+ }
+ if(!class_exists("mw_xml_data")) require_once $this->env->app_file("data/impl/xml/mw_xml_data.php");
+ if(!class_exists("mw_xml_data_handler")) require_once $this->env->app_file("data/impl/xml/mw_xml_data_handler.php");
+ if(
+ !class_exists("mw_xml_data")
+ || !class_exists("mw_xml_data_handler")
+ ){
+ return false;
+ }
+ $this->xml_data = new mw_xml_data($this->host, $this->base);
+ return true;
}
public function connect($host, $base, $user, $password){
if($host.$base && is_dir($host.$base) && is_writable($host.$base)){
- $this->init_xml_env($host, $base, $user, $password);
$this->xml_data = new mw_xml_data($this->host, $this->base);
return true;
}
require_once $impls_dir."/".$impl_file;
if(class_exists($class_name = substr($impl_file, 0, -4))){
if(
- method_exists($class_name, "sgbd_name")
+ method_exists($class_name, "name")
&& method_exists($class_name, "extention_ok")
){
- $impl = new $class_name();
+ $impl = new $class_name($env);
if($impl->extention_ok($env)) $sgbds[$class_name] = $impl;
}
}
if(!class_exists($sgbd_impl)){
$this->erreur("Impossible de trouver la classe d'implementation du sgbd ".$this->bdd("sgbd"), true);
}
- $sgbd = new mw_sgbd(
- new $sgbd_impl(
- array(
- "host" => $this->bdd("host"),
- "base" => $this->bdd("base"),
- "user" => $this->bdd("user"),
- "password" => $this->bdd("password")
- )
- ),
- $this
+ $sgbd = new $sgbd_impl(
+ $this,
+ array(
+ "host" => $this->bdd("host"),
+ "base" => $this->bdd("base"),
+ "user" => $this->bdd("user"),
+ "password" => $this->bdd("password")
+ )
);
if(!$sgbd->extention_ok()){
$this->erreur("L'extention php ".$this->bdd("sgbd")." n'est pas installée", true);
<select name="sgbd" id="sgbd">
<?php foreach($this->out["sgbds"] as $class_name => $sgbd) : ?>
<option value="<?php echo $class_name; ?>"<?php echo $class_name == $this->out["current_sgbd"] ? " selected" : ""; ?>>
- <?php echo $sgbd->sgbd_name(); ?>
+ <?php echo $sgbd->name(); ?>
</option>
<?php endforeach; ?>
</select>
}
+ // -------------------------------------------------------------------------------------------
+ // class mw_data
+ //
+
class mw_data extends empty_class{
public function call_default($inst, $method_name, $arguments){
}
- class mw_sgbd{
+ // -------------------------------------------------------------------------------------------
+ // class mw_sgbd
+ //
- public $sgbd_impl;
- public $env;
+ abstract class mw_sgbd{
- public function __construct($sgbd_impl, $env){
- $this->sgbd_impl = $sgbd_impl;
+ 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 extention_ok(){
- return $this->sgbd_impl->extention_ok($this->env);
+ public function name(){
+ return "";
}
- public function authentication_required(){
- return $this->sgbd_impl->authentication_required();
+ public function default_params(){
+ return array(
+ "host" => "",
+ "base" => "",
+ "user" => "",
+ "password" => ""
+ );
}
- public function connect($host, $base, $user, $password){
- return $this->sgbd_impl->connect($host, $base, $user, $password);
+ public function prepare_params($params){
+ return $params;
}
- public function select_db($db_name){
- return $this->sgbd_impl->select_db($db_name);
+ public function validate_extention(){
+ return false;
}
- # ---------------------------------------------------------------------------------
- # SQL
- #
-
- public function desc_table($table_name){
- if(!method_exists($this->sgbd_impl, "desc_table")) return false;
- return $this->sgbd_impl->desc_table(
- ($prefix_codes = array_keys($this->env->bdd("table_prefix"))) ?
- str_replace($prefix_codes, array_values($this->env->bdd("table_prefix")), $table_name)
- : $table_name
- );
+ public function authentication_required(){
+ return false;
}
- public function table_exists($table_name){
- if(!method_exists($this->sgbd_impl, "table_exists")) return false;
- return $this->sgbd_impl->table_exists(
- ($prefix_codes = array_keys($this->env->bdd("table_prefix"))) ?
- str_replace($prefix_codes, array_values($this->env->bdd("table_prefix")), $table_name)
- : $table_name
- );
+ public function get_link(){
+ return $this->link;
}
- public function field_exists($table_name, $field_name){
- if(!method_exists($this->sgbd_impl, "field_exists")) return false;
- return $this->sgbd_impl->field_exists(
- (
- $prefix_codes = array_keys($this->env->bdd("table_prefix"))) ?
- str_replace($prefix_codes, array_values($this->env->bdd("table_prefix")), $table_name)
- : $table_name,
- $field_name
- );
+ public function extention_ok(){
+ return $this->EXTENTION_OK;
}
- public function query($sql){
- if(!method_exists($this->sgbd_impl, "query")) return false;
- return $this->sgbd_impl->query(
+ 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")), $sql)
- : $sql
+ str_replace($prefix_codes, array_values($this->env->bdd("table_prefix")), $content)
+ : $content
);
}
- public function insert_id(){
- if(!method_exists($this->sgbd_impl, "insert_id")) return false;
- return $this->sgbd_impl->insert_id();
- }
-
- public function fetch_assoc($rst){
- if(!method_exists($this->sgbd_impl, "fetch_assoc")) return false;
- return $this->sgbd_impl->fetch_assoc($rst);
- }
-
- public function free_result($rst){
- if(!method_exists($this->sgbd_impl, "")) return false;
- return $this->sgbd_impl->free_result($rst);
- }
-
- public function close(){
- if(!method_exists($this->sgbd_impl, "")) return false;
- return $this->sgbd_impl->close();
- }
-
- # ---------------------------------------------------------------------------------
- # XML
- #
-
- public function data_exists($data_path){
- if(!method_exists($this->sgbd_impl, "data_exists")) return false;
- return $this->sgbd_impl->data_exists($data_path);
- }
-
- public function create_data($data_path){
- if(!method_exists($this->sgbd_impl, "create_data")) return false;
- return $this->sgbd_impl->create_data($data_path);
- }
-
- public function get_data($data_path, $data_id){
- if(!method_exists($this->sgbd_impl, "get_data")) return false;
- return $this->sgbd_impl->get_data($data_path, $data_id);
- }
-
- public function open_data($data_path, $FETCH = true){
- if(!method_exists($this->sgbd_impl, "open_data")) return false;
- return $this->sgbd_impl->open_data($data_path, $FETCH);
- }
-
- public function fetch_data($dh){
- if(!method_exists($this->sgbd_impl, "fetch_data")) return false;
- return $this->sgbd_impl->fetch_data($dh);
- }
-
- public function add_data($data_path, $data, $index = null){
- if(!method_exists($this->sgbd_impl, "add_data")) return false;
- return $this->sgbd_impl->add_data($data_path, $data, $index);
- }
-
- public function last_index($dh){
- if(!method_exists($this->sgbd_impl, "last_index")) return false;
- return $this->sgbd_impl->last_index($dh);
- }
-
- public function set_data($data_path, $data_id, $data){
- if(!method_exists($this->sgbd_impl, "set_data")) return false;
- return $this->sgbd_impl->set_data($data_path, $data_id, $data);
- }
-
- public function del_data($data_path, $data_id){
- if(!method_exists($this->sgbd_impl, "del_data")) return false;
- return $this->sgbd_impl->del_data($data_path, $data_id);
- }
-
- public function close_data($dh){
- if(!method_exists($this->sgbd_impl, "close_data")) return false;
- return $this->sgbd_impl->close_data($dh);
- }
-
- public function remove_data($data_path){
- if(!method_exists($this->sgbd_impl, "remove_data")) return false;
- return $this->sgbd_impl->remove_data($data_path);
- }
-
}