message) write_pathes_file($env);
if(!$env->message) write_config_file($env);
if(!$env->message) init_db($env);
if(!$env->message) install_db($env);
if(!$env->message) clear_pun_cache($env);
if(!$env->message)
{ _redirect
( $env,
"../index.php",
"Le site a été installé"
);
}
}
}
function write_pathes_file($env)
{ if(!is_dir("../pathes.php") && is_writable("../pathes.php"))
{ if(($pathes_content = @file_get_contents("dist/pathes.php")) !== false)
{ if($h_pathes = fopen("../pathes.php", 'w'))
{ if
( fwrite
( $h_pathes,
str_replace
( array("[config_file]"),
array($_POST["config_file"]),
$pathes_content
)
)
)
{
}
else $env->message .= "
impossible d'écrire dans pathes.php";
fclose($h_pathes);
}
else $env->message .= "
impossible d'écrire dans pathes.php";
}
else $env->message .=
"
impossible de lire le fichier install/dist/pathes.php"
."
vérifiez que vous avez bien uploadé tous les fichiers";
}
else $env->message .= "
le fichier pathes.php n'est pas accessible en écriture";
}
function write_config_file($env)
{ if(!is_dir("../config.php") && is_writable("../config.php"))
{ if(($config_content = @file_get_contents("dist/config.php")) !== false)
{ if($h_config = fopen("../config.php", 'w'))
{ $web_path = "";
$v_path = explode("/", $_SERVER["SCRIPT_NAME"]);
for($i = 0; $i < (count($v_path) - 2); $i++) $web_path .= $v_path[$i]."/";
if
( fwrite
( $h_config,
str_replace
( array
( "[db_type]",
"[db_host]",
"[db_base]",
"[db_user]",
"[db_password]",
"[db_prefix]",
"[web_path]",
"[site_name]"
),
array
( $_POST["db_type"],
$_POST["db_hote"],
$_POST["db_base"],
$_POST["db_user"],
$_POST["db_password"],
$_POST["db_prefix"],
$web_path,
$_POST["site_name"]
),
$config_content
)
)
)
{
}
else $env->message .= "
impossible d'écrire dans config.php";
fclose($h_config);
}
else $env->message .= "
impossible d'écrire dans config.php";
}
else $env->message .=
"
impossible de lire le fichier install/dist/config.php"
."
vérifiez que vous avez bien uploadé tous les fichiers";
}
else $env->message .= "
le fichier config.php n'est pas accessible en écriture";
}
function init_db($env)
{ switch($_POST["db_type"])
{ case 'mysql':
require "../punbb/include/dblayer/mysql.php";
break;
case 'mysqli':
require PUN_ROOT.'include/dblayer/mysqli.php';
break;
case 'pgsql':
require PUN_ROOT.'include/dblayer/pgsql.php';
break;
case 'sqlite':
require PUN_ROOT.'include/dblayer/sqlite.php';
break;
default:
$env->message = "'".$_POST["db_type"]."' n'est pas un type de base de données valable.";
break;
}
if(!$env->message)
{ $env->db = new DBLayer($_POST["db_host"], $_POST["db_user"], $_POST["db_password"], $_POST["db_base"], $_POST["db_prefix"], false);
require "../app/data/sql.php";
require "../app/data/data.php";
$env->data = new data(new sql($env->db, "#--", $_POST["db_prefix"]), $env);
}
}
function install_db($env)
{ $flag = 0;
try
{ $env->data->sql->query("USE ".$_POST["db_base"]);
if(($sql = file_get_contents("dist/sql/init.sql")) !== false)
{ $flag = 1;
if($sql) try
{ $flag = 2;
$env->data->sql->query($sql);
$flag = 3;
if(($sql = file_get_contents("dist/sql/raz.sql")) !== false)
{ $flag = 4;
if($sql) try
{ $flag = 5;
$sql = str_replace("[prefix]", $_POST["db_prefix"], $sql);
$v_sql = explode("# --", $sql);
foreach($v_sql as $_sql) if($_sql) $env->data->sql->query($_sql);
$flag = 6;
if(($sql = file_get_contents("dist/sql/tables.sql")) !== false)
{ $flag = 7;
if($sql) try
{ $flag = 8;
$sql = str_replace("[prefix]", $_POST["db_prefix"], $sql);
$v_sql = explode("# --", $sql);
foreach($v_sql as $_sql) if($_sql) $env->data->sql->query($_sql);
$flag = 9;
if(($sql = file_get_contents("dist/sql/content.sql")) !== false)
{ $flag = 10;
if($sql) try
{ $flag = 11;
$punbb_url = "http://".$_SERVER["SERVER_NAME"];
$v_path = explode("/", $_SERVER["SCRIPT_NAME"]);
$path = "";
for($i = 1; $i < (count($v_path) - 2); $i++) $path .= "/".$v_path[$i];
$punbb_url .= $path."/punbb";
$sql = str_replace
( array
( "[prefix]",
"[site_name]",
"[email_admin]",
"[pun_url]"
),
array
( $_POST["db_prefix"],
$_POST["site_name"],
$_POST["email_admin"],
$punbb_url
),
$sql
);
$v_sql = explode("# --", $sql);
foreach($v_sql as $_sql) if($_sql) $env->data->sql->query($_sql);
$flag = 12;
}
catch(Exception $_e)
{ $env->message =
"Impossible d'executer les requetes du fichier content.sql
"
."erreur sur la requete: ".$_sql;
return;
}
}
else $env->message .=
"
impossible de lire le fichier install/dist/sql/content.sql"
."
vérifiez que vous avez bien uploadé tous les fichiers";
}
catch(Exception $_e)
{ $env->message =
"Impossible d'executer les requetes du fichier tables.sql"
."
erreur dans la requete sql:
".$_sql;
return;
}
}
else $env->message .=
"
impossible de lire le fichier install/dist/sql/tables.sql"
."
vérifiez que vous avez bien uploadé tous les fichiers";
}
catch(Exception $_e) { $env->message = "Impossible d'executer les requetes du fichier raz.sql"; return; }
}
else $env->message .=
"
impossible de lire le fichier install/dist/sql/raz.sql"
."
vérifiez que vous avez bien uploadé tous les fichiers";
}
catch(Exception $_e)
{ $env->message =
"Impossible d'executer les requetes du fichier init.sql (flag ".$flag.")"
."
Vérifiez que vous avez indiqué les bon paramètres de connection à la base de données";
return;
}
}
else $env->message .=
"
impossible de lire le fichier install/dist/sql/init.sql"
."
vérifiez que vous avez bien uploadé tous les fichiers";
}
catch(Exception $_e) { $env->message .= "impossible d'accéder à la base de données"; }
}
function clear_pun_cache()
{ if(is_dir("../punbb/cache/") && ($dh = opendir("../punbb/cache/")))
{ while(($file = readdir($dh)) !== false) if(strpos($file, "cache_") === 0) @unlink("../punbb/cache/".$file);
closedir($dh);
}
}
?>