verification de la version
authordj3c1t <dj3c1t@dj3c1t.net>
Fri, 1 Nov 2013 17:42:52 +0000 (18:42 +0100)
committerdj3c1t <dj3c1t@dj3c1t.net>
Fri, 1 Nov 2013 17:42:52 +0000 (18:42 +0100)
mw/app/controllers/install/index.php
mw/app/data/modules/share/mw_data_versions.php [new file with mode: 0644]
mw/app/init/0400_config.php
mw/app/init/0500_users.php
mw/app/init/0600_check_instance.php [deleted file]
mw/app/init/0600_links.php [moved from mw/app/init/0700_links.php with 93% similarity]
mw/app/init/0700_init_plugins.php [moved from mw/app/init/0800_init_plugins.php with 89% similarity]
mw/app/out/default/views/admin/users/index.php
mw/env/modules/mw_env_config.php
mw/mw_app.php

index 1decc17..8cc63f0 100644 (file)
@@ -29,7 +29,7 @@
           "#--" => $table_prefix
         )
       );
-      $current_sgbd = "mw_pdo_sqlite";
+      $current_sgbd = isset($sgbds["mw_pdo_sqlite"]) ? "mw_pdo_sqlite" : "mw_xml";
       if($_POST){
         if(!isset($_POST["sgbd"])){
           $env->erreur("Parametre de SGBD manquant");
diff --git a/mw/app/data/modules/share/mw_data_versions.php b/mw/app/data/modules/share/mw_data_versions.php
new file mode 100644 (file)
index 0000000..26bc0ee
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+  class mw_data_versions extends mw_data{
+
+    function version($application_name){
+      if(
+        $version = $this->data_read(
+          array(
+            "table_name" => "versions",
+            "index_name" => "application",
+            "index_value" => $application_name
+          )
+        )
+      ) return $version["version"];
+      return false;
+    }
+
+  }
index e51eefb..1566400 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-  if(!$this->bdd("sgbd")) return;
+  if($this->bdd_ready() !== true) return;
   if(($config = $data->config()) !== false){
     $this->set_config($config);
     $start_action_params_config =
index 8d698ff..890c368 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-  if(!$this->bdd("sgbd")) return;
+  if($this->bdd_ready() !== true) return;
   if($data->load_session() !== false){
     if($data->init_roles() !== false){
       if($data->init_actions_roles() === false){
diff --git a/mw/app/init/0600_check_instance.php b/mw/app/init/0600_check_instance.php
deleted file mode 100644 (file)
index cd24e27..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-  if(($check_instance_return = $data->check_instance()) !== false){
-    if($check_instance_return !== true){
-      $this->erreur($check_instance_return, true);
-    }
-  }
-  else $this->erreur("Impossible de verifier l'integrit&eacute; de la base de donn&eacute;", true);
-
-?>
\ No newline at end of file
similarity index 93%
rename from mw/app/init/0700_links.php
rename to mw/app/init/0600_links.php
index 4aea816..7421160 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 
+  if($this->bdd_ready() !== true) return;
   if($this->init_links()){
     $this->set_link("users/infos", $this->url("users/infos"), "Compte", 10);
     $this->set_link("admin/users", $this->url("admin/users"), "Utilisateurs", 20);
similarity index 89%
rename from mw/app/init/0800_init_plugins.php
rename to mw/app/init/0700_init_plugins.php
index 699998e..a936fbe 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 
+  if($this->bdd_ready() !== true) return;
   if(($plugins = $this->plugins("DESC")) !== false){
     foreach($plugins as $plugin_name => $plugin){
       if($plugin["installed"] && $plugin["enabled"]){
index d7ceb35..96d3f6e 100644 (file)
@@ -14,9 +14,9 @@
   <li>Afficher les utilisateurs pour</li>  
   <li>
     <select onchange="document.location=this.options[this.selectedIndex].value;">
-      <option value="<?php echo $this->url("admin/users", $users_params); ?>"<?php echo $_GET[$this->param("alpha")] ? "" : " selected=\"selected\""; ?>>Tous les logins</option>
+      <option value="<?php echo $this->url("admin/users", $users_params); ?>"<?php echo (isset($_GET[$this->param("alpha")]) && $_GET[$this->param("alpha")]) ? "" : " selected=\"selected\""; ?>>Tous les logins</option>
       <?php for($i = 65; $i <= 90; $i++) : $users_params["alpha"] = chr($i); ?>
-      <option value="<?php echo $this->url("admin/users", $users_params); ?>"<?php echo $_GET[$this->param("alpha")] == chr($i) ? " selected=\"selected\"" : ""; ?>><?php echo chr($i); ?></option>
+      <option value="<?php echo $this->url("admin/users", $users_params); ?>"<?php echo (isset($_GET[$this->param("alpha")]) && ($_GET[$this->param("alpha")] == chr($i))) ? " selected=\"selected\"" : ""; ?>><?php echo chr($i); ?></option>
       <?php endfor; ?>
     </select>
   </li>
@@ -30,9 +30,9 @@
 ?>
   <li>
     <select onchange="document.location=this.options[this.selectedIndex].value;">
-      <option value="<?php echo $this->url("admin/users", $users_params); ?>"<?php echo $_GET[$this->param("role")] ? "" : " selected=\"selected\""; ?>>Tous les roles</option>
+      <option value="<?php echo $this->url("admin/users", $users_params); ?>"<?php echo (isset($_GET[$this->param("role")]) && $_GET[$this->param("role")]) ? "" : " selected=\"selected\""; ?>>Tous les roles</option>
       <?php foreach($this->out["roles"] as $role) : if($role["id"]) : $users_params["role"] = $role["id"]; ?>
-      <option value="<?php echo $this->url("admin/users", $users_params); ?>"<?php echo $_GET[$this->param("role")] == $role["id"] ? " selected=\"selected\"" : ""; ?>><?php echo $role["intitule"]; ?></option>
+      <option value="<?php echo $this->url("admin/users", $users_params); ?>"<?php echo (isset($_GET[$this->param("role")]) && ($_GET[$this->param("role")] == $role["id"])) ? " selected=\"selected\"" : ""; ?>><?php echo $role["intitule"]; ?></option>
       <?php endif; endforeach; ?>
     </select>
   </li>
index e9b2316..5f14e35 100644 (file)
       $this->bdd[$key] = $value;
     }
 
+    function bdd_ready(){
+      if(!$this->bdd("sgbd")) return "aucun sgbd defini";
+      $data = $this->data();
+      if(!$data) return "objet data non defini";
+      if(!$this->version("mtweb")) return "impossible de lire la version de mtweb";
+      if($data->version("mtweb") != $this->version("mtweb")) return "la version de la base et du code sont différentes";
+      return true;
+    }
+
     function add_table_prefix($table_prefix){
       if(is_array($table_prefix)){
         foreach($table_prefix as $prefix_code => $prefix) $this->bdd["table_prefix"][$prefix_code] = $prefix;
index d1f6148..990d7a7 100644 (file)
       if(!$this->init_pathes()) return $this->get_error();
       if(!$this->init_config()) return $this->get_error();
       if(!$this->init_env()) return $this->get_error();
-      if($this->config_file) return true;
-      if($this->DO_SETUP) $this->setup();
-      return $this->get_error();
+      if(!$this->config_file){
+        if($this->DO_SETUP){
+          $this->setup();
+          exit;
+        }
+        return $this->get_error();
+      }
+      $env = $this->env();
+      if(!$env->version("mtweb")){
+        $this->error("impossible de lire la version du code");
+        return $this->get_error();
+      }
+      $data = $env->data();
+      if($data->version("mtweb") != $env->version("mtweb")){
+        $this->upgrade();
+        exit;
+      }
+      return true;
     }
 
     function init_pathes(){
       $etat = isset($_GET[$env->param("e")]) ? $_GET[$env->param("e")] : "install";
       $env->run($etat, array(), false);
       $this->display();
-      exit;
+    }
+
+    function upgrade(){
+      debug("la base de données doit être mise à jour");
     }
 
     function error($content){