source: trunk/web/install/mods/e_install.php @ 10

Last change on this file since 10 was 6, checked in by dj3c1t, 13 years ago

mise a jour du trunk

File size: 8.5 KB
Line 
1<?php
2
3  function e_install($env)
4  { if($_POST)
5    {
6      if(!$env->message) write_pathes_file($env);
7      if(!$env->message) write_config_file($env);
8      if(!$env->message) init_db($env);
9      if(!$env->message) install_db($env);
10      if(!$env->message) clear_pun_cache($env);
11      if(!$env->message)
12      { _redirect
13        ( $env,
14          "../index.php",
15          "Le site a &eacute;t&eacute; install&eacute;"
16        ); 
17      }
18    }
19  }
20
21  function write_pathes_file($env)
22  { if(!is_dir("../pathes.php") && is_writable("../pathes.php"))
23    { if(($pathes_content = @file_get_contents("dist/pathes.php")) !== false) 
24      { if($h_pathes = fopen("../pathes.php", 'w'))
25        { if
26          ( fwrite
27            ( $h_pathes,
28              str_replace
29              ( array("[config_file]"),
30                array($_POST["config_file"]),
31                $pathes_content
32              )
33            )
34          )
35          {
36          }
37          else $env->message .= "<br/>impossible d'&eacute;crire dans <b>pathes.php</b>";
38          fclose($h_pathes);
39        }
40        else $env->message .= "<br/>impossible d'&eacute;crire dans <b>pathes.php</b>";
41      }
42      else $env->message .=
43       "<br/>impossible de lire le fichier <b>install/dist/pathes.php</b>"
44      ."<br/>v&eacute;rifiez que vous avez bien upload&eacute; tous les fichiers";
45    }
46    else $env->message .= "<br/>le fichier <b>pathes.php</b> n'est pas accessible en &eacute;criture";
47  }
48
49  function write_config_file($env)
50  { if(!is_dir("../config.php") && is_writable("../config.php"))
51    { if(($config_content = @file_get_contents("dist/config.php")) !== false) 
52      { if($h_config = fopen("../config.php", 'w'))
53        { $web_path = "";
54          $v_path = explode("/", $_SERVER["SCRIPT_NAME"]);
55          for($i = 0; $i < (count($v_path) - 2); $i++) $web_path .= $v_path[$i]."/";
56          if
57          ( fwrite
58            ( $h_config,
59              str_replace
60              ( array
61                ( "[db_type]",
62                  "[db_host]",
63                  "[db_base]",
64                  "[db_user]",
65                  "[db_password]",
66                  "[db_prefix]",
67                  "[web_path]",
68                  "[site_name]"
69                ),
70                array
71                ( $_POST["db_type"],
72                  $_POST["db_hote"],
73                  $_POST["db_base"],
74                  $_POST["db_user"],
75                  $_POST["db_password"],
76                  $_POST["db_prefix"],
77                  $web_path,
78                  $_POST["site_name"]
79                ),
80                $config_content
81              )
82            )
83          )
84          {
85          }
86          else $env->message .= "<br/>impossible d'&eacute;crire dans <b>config.php</b>";
87          fclose($h_config);
88        }
89        else $env->message .= "<br/>impossible d'&eacute;crire dans <b>config.php</b>";
90      }
91      else $env->message .=
92       "<br/>impossible de lire le fichier <b>install/dist/config.php</b>"
93      ."<br/>v&eacute;rifiez que vous avez bien upload&eacute; tous les fichiers";
94    }
95    else $env->message .= "<br/>le fichier <b>config.php</b> n'est pas accessible en &eacute;criture";
96  }
97
98  function init_db($env)
99  { switch($_POST["db_type"])
100    { case 'mysql':
101        require "../punbb/include/dblayer/mysql.php";
102        break;
103      case 'mysqli':
104        require PUN_ROOT.'include/dblayer/mysqli.php';
105        break;
106      case 'pgsql':
107        require PUN_ROOT.'include/dblayer/pgsql.php';
108        break;
109      case 'sqlite':
110        require PUN_ROOT.'include/dblayer/sqlite.php';
111        break;
112      default:
113        $env->message = "<b>'".$_POST["db_type"]."'</b> n'est pas un type de base de données valable.";
114        break;
115    }
116    if(!$env->message)
117    { $env->db = new DBLayer($_POST["db_host"], $_POST["db_user"], $_POST["db_password"], $_POST["db_base"], $_POST["db_prefix"], false);
118      require "../app/data/sql.php";
119      require "../app/data/data.php";
120      $env->data = new data(new sql($env->db, "#--", $_POST["db_prefix"]), $env);
121    }
122  }
123
124  function install_db($env)
125  { $flag = 0;
126    try
127    { $env->data->sql->query("USE ".$_POST["db_base"]);
128      if(($sql = file_get_contents("dist/sql/init.sql")) !== false)
129      { $flag = 1;
130        if($sql) try
131        { $flag = 2;
132          $env->data->sql->query($sql);
133          $flag = 3;
134          if(($sql = file_get_contents("dist/sql/raz.sql")) !== false)
135          { $flag = 4;
136            if($sql) try
137            { $flag = 5;
138              $sql = str_replace("[prefix]", $_POST["db_prefix"], $sql);
139              $v_sql = explode("# --", $sql);
140              foreach($v_sql as $_sql) if($_sql) $env->data->sql->query($_sql);
141              $flag = 6;
142              if(($sql = file_get_contents("dist/sql/tables.sql")) !== false)
143              { $flag = 7;
144                if($sql) try
145                { $flag = 8;
146                  $sql = str_replace("[prefix]", $_POST["db_prefix"], $sql);
147                  $v_sql = explode("# --", $sql);
148                  foreach($v_sql as $_sql) if($_sql) $env->data->sql->query($_sql);
149                  $flag = 9;
150                  if(($sql = file_get_contents("dist/sql/content.sql")) !== false)
151                  { $flag = 10;
152                    if($sql) try
153                    { $flag = 11;
154                      $punbb_url = "http://".$_SERVER["SERVER_NAME"];
155                      $v_path = explode("/", $_SERVER["SCRIPT_NAME"]);
156                      $path = "";
157                      for($i = 1; $i < (count($v_path) - 2); $i++) $path .= "/".$v_path[$i];
158                      $punbb_url .= $path."/punbb";
159                      $sql = str_replace
160                      ( array
161                        ( "[prefix]",
162                          "[site_name]",
163                          "[email_admin]",
164                          "[pun_url]"
165                        ),
166                        array
167                        ( $_POST["db_prefix"],
168                          $_POST["site_name"],
169                          $_POST["email_admin"],
170                          $punbb_url
171                        ),
172                        $sql
173                      );
174                      $v_sql = explode("# --", $sql);
175                      foreach($v_sql as $_sql) if($_sql) $env->data->sql->query($_sql);
176                      $flag = 12;
177                    }
178                    catch(Exception $_e)
179                    { $env->message =
180                       "Impossible d'executer les requetes du fichier content.sql<br/>"
181                      ."erreur sur la requete: ".$_sql;
182                      return;
183                    }
184                  }
185                  else $env->message .=
186                   "<br/>impossible de lire le fichier <b>install/dist/sql/content.sql</b>"
187                  ."<br/>v&eacute;rifiez que vous avez bien upload&eacute; tous les fichiers";
188                }
189                catch(Exception $_e)
190                { $env->message =
191                   "Impossible d'executer les requetes du fichier tables.sql"
192                  ."<br/>erreur dans la requete sql:<br/>".$_sql;
193                  return;
194                }
195              }
196              else $env->message .=
197               "<br/>impossible de lire le fichier <b>install/dist/sql/tables.sql</b>"
198              ."<br/>v&eacute;rifiez que vous avez bien upload&eacute; tous les fichiers";
199            }
200            catch(Exception $_e) { $env->message = "Impossible d'executer les requetes du fichier raz.sql"; return; }
201          }
202          else $env->message .=
203           "<br/>impossible de lire le fichier <b>install/dist/sql/raz.sql</b>"
204          ."<br/>v&eacute;rifiez que vous avez bien upload&eacute; tous les fichiers";
205        }
206        catch(Exception $_e)
207        { $env->message =
208           "Impossible d'executer les requetes du fichier init.sql (flag ".$flag.")"
209          ."<br>V&eacute;rifiez que vous avez indiqu&eacute; les bon param&egrave;tres de connection &agrave la base de donn&eacute;es";
210          return;
211        }
212      }
213      else $env->message .=
214       "<br/>impossible de lire le fichier <b>install/dist/sql/init.sql</b>"
215      ."<br/>v&eacute;rifiez que vous avez bien upload&eacute; tous les fichiers";
216    }
217    catch(Exception $_e) { $env->message .= "impossible d'acc&eacute;der &agrave; la base de donn&eacute;es"; }
218  }
219
220  function clear_pun_cache()
221  { if(is_dir("../punbb/cache/") && ($dh = opendir("../punbb/cache/")))
222    { while(($file = readdir($dh)) !== false) if(strpos($file, "cache_") === 0) @unlink("../punbb/cache/".$file);
223      closedir($dh);
224    }
225  }
226
227?>
Note: See TracBrowser for help on using the repository browser.