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

Last change on this file since 1 was 1, checked in by dj3c1t, 12 years ago

import initial

File size: 7.8 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  { try
126    { if(($sql = file_get_contents("dist/sql/init.sql")) !== false)
127      { if($sql) try
128        { $env->data->sql->query($sql);
129          if(($sql = file_get_contents("dist/sql/raz.sql")) !== false)
130          { if($sql) try
131            { $sql = str_replace("[prefix]", $_POST["db_prefix"], $sql);
132              $v_sql = explode("# --", $sql);
133              foreach($v_sql as $_sql) if($_sql) $env->data->sql->query($_sql);
134              if(($sql = file_get_contents("dist/sql/tables.sql")) !== false)
135              { if($sql) try
136                { $sql = str_replace("[prefix]", $_POST["db_prefix"], $sql);
137                  $v_sql = explode("# --", $sql);
138                  foreach($v_sql as $_sql) if($_sql) $env->data->sql->query($_sql);
139                  if(($sql = file_get_contents("dist/sql/content.sql")) !== false)
140                  { if($sql) try
141                    { $punbb_url = "http://".$_SERVER["SERVER_NAME"];
142                      $v_path = explode("/", $_SERVER["SCRIPT_NAME"]);
143                      $path = "";
144                      for($i = 1; $i < (count($v_path) - 2); $i++) $path .= "/".$v_path[$i];
145                      $punbb_url .= $path."/punbb";
146                      $sql = str_replace
147                      ( array
148                        ( "[prefix]",
149                          "[site_name]",
150                          "[email_admin]",
151                          "[pun_url]"
152                        ),
153                        array
154                        ( $_POST["db_prefix"],
155                          $_POST["site_name"],
156                          $_POST["email_admin"],
157                          $punbb_url
158                        ),
159                        $sql
160                      );
161                      $v_sql = explode("# --", $sql);
162                      foreach($v_sql as $_sql) if($_sql) $env->data->sql->query($_sql);
163                    }
164                    catch(Exception $_e)
165                    { $env->message =
166                       "Impossible d'executer les requetes du fichier content.sql<br/>"
167                      ."erreur sur la requete: ".$_sql;
168                      return;
169                    }
170                  }
171                  else $env->message .=
172                   "<br/>impossible de lire le fichier <b>install/dist/sql/content.sql</b>"
173                  ."<br/>v&eacute;rifiez que vous avez bien upload&eacute; tous les fichiers";
174                }
175                catch(Exception $_e) { $env->message = "Impossible d'executer les requetes du fichier tables.sql"; return; }
176              }
177              else $env->message .=
178               "<br/>impossible de lire le fichier <b>install/dist/sql/tables.sql</b>"
179              ."<br/>v&eacute;rifiez que vous avez bien upload&eacute; tous les fichiers";
180            }
181            catch(Exception $_e) { $env->message = "Impossible d'executer les requetes du fichier raz.sql"; return; }
182          }
183          else $env->message .=
184           "<br/>impossible de lire le fichier <b>install/dist/sql/raz.sql</b>"
185          ."<br/>v&eacute;rifiez que vous avez bien upload&eacute; tous les fichiers";
186        }
187        catch(Exception $_e) { $env->message = "Impossible d'executer les requetes du fichier init.sql"; return; }
188      }
189      else $env->message .=
190       "<br/>impossible de lire le fichier <b>install/dist/sql/init.sql</b>"
191      ."<br/>v&eacute;rifiez que vous avez bien upload&eacute; tous les fichiers";
192    }
193    catch(Exception $_e) { $env->message .= "<br/>impossible d'acc&eacute;der &agrave; la base de donn&eacute;es"; }
194  }
195
196  function clear_pun_cache()
197  { if(is_dir("../punbb/cache/") && ($dh = opendir("../punbb/cache/")))
198    { while(($file = readdir($dh)) !== false) if(strpos($file, "cache_") === 0 && $file !== "cache_smilies.php") @unlink("../punbb/cache/".$file);
199      closedir($dh);
200    }
201  }
202
203?>
Note: See TracBrowser for help on using the repository browser.