2020-12-03 16:35:44 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**-----------------------------------------------
|
|
|
|
*
|
|
|
|
* Rooty, 2018 <rooty@rooty.me>
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* This software is protected by copyright, please
|
|
|
|
* read the file COPYRIGHT.
|
|
|
|
* This program is distributed in the hope that it
|
|
|
|
* will be useful, but without any warranty; without
|
|
|
|
* even the implied warranty of merchantability or
|
|
|
|
* fitness for a particular purpose. Please
|
|
|
|
* read the file LICENCE.
|
|
|
|
*
|
2020-12-07 13:28:14 +01:00
|
|
|
* Ce fichier contient la gestion de l'installation qware
|
2020-12-03 16:35:44 +01:00
|
|
|
*
|
|
|
|
* @author Comendatore <www.comendatore.net|commendatore@comendatore.net>
|
|
|
|
* @copyright Copyright © 2009-2018, Rooty
|
|
|
|
* @since 2007/01/07
|
|
|
|
* @version 0.3
|
|
|
|
* @link www.rooty.me
|
|
|
|
* @package install
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fonction de gestion des étapes d'installation
|
|
|
|
*
|
|
|
|
* @author Initiance <www.initiance.com|martial@initiance.com>
|
|
|
|
*/
|
|
|
|
function stepprocess($step,$etat)
|
|
|
|
{
|
|
|
|
global $message, $on, $off, $stepimg;
|
|
|
|
|
|
|
|
switch($etat)
|
|
|
|
{
|
|
|
|
case 0 :
|
|
|
|
$img =$stepimg;
|
|
|
|
break;
|
|
|
|
case 1 :
|
|
|
|
$img = $on;
|
|
|
|
break;
|
|
|
|
case 2 :
|
|
|
|
$img = $off;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if($etat==1)
|
|
|
|
{
|
|
|
|
$chaine = "<li class=\"pass\">".$message->getMessage("Step".$step)."</li>";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if(!isset($_GET["step"]))
|
|
|
|
{
|
|
|
|
$_GET["step"]=0;
|
|
|
|
}
|
|
|
|
if($_GET["step"] == $step)
|
|
|
|
{
|
|
|
|
$chaine = "<li class=\"current\">".$message->getMessage("Step".$step)."</li>";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$chaine = "<li>".$message->getMessage("Step".$step)."</li>";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $chaine;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Parse les modules PHP depuis phpinfo()
|
|
|
|
*
|
|
|
|
* <P>Retourne le tableau des modules Php</P>
|
|
|
|
*
|
|
|
|
* @return tableau tableau des modules Php
|
|
|
|
*/
|
|
|
|
function getPhpModules()
|
|
|
|
{
|
|
|
|
ob_start();
|
|
|
|
phpinfo(INFO_MODULES);
|
|
|
|
$s = ob_get_contents();
|
|
|
|
ob_end_clean();
|
|
|
|
|
|
|
|
$s = strip_tags($s,'<h2><th><td>');
|
|
|
|
$s = preg_replace('/<th[^>]*>([^<]+)<\/th>/',"<info>\\1</info>",$s);
|
|
|
|
$s = preg_replace('/<td[^>]*>([^<]+)<\/td>/',"<info>\\1</info>",$s);
|
|
|
|
$vTmp = preg_split('/(<h2>[^<]+<\/h2>)/',$s,-1,PREG_SPLIT_DELIM_CAPTURE);
|
|
|
|
$arrayModules = array();
|
|
|
|
|
|
|
|
for ($i=1;$i<count($vTmp);$i++)
|
|
|
|
{
|
|
|
|
if (preg_match('/<h2>([^<]+)<\/h2>/',$vTmp[$i],$vMat))
|
|
|
|
{
|
|
|
|
$vName = trim($vMat[1]);
|
|
|
|
$vTmp2 = explode("\n",$vTmp[$i+1]);
|
|
|
|
|
|
|
|
foreach ($vTmp2 AS $vOne)
|
|
|
|
{
|
|
|
|
$vPat = '<info>([^<]+)<\/info>';
|
|
|
|
$vPat3 = "/$vPat\s*$vPat\s*$vPat/";
|
|
|
|
$vPat2 = "/$vPat\s*$vPat/";
|
|
|
|
|
|
|
|
if (preg_match($vPat3,$vOne,$vMat))
|
|
|
|
{ // 3 colonnes
|
|
|
|
$arrayModules[$vName][trim($vMat[1])] = array(trim($vMat[2]),trim($vMat[3]));
|
|
|
|
} elseif (preg_match($vPat2,$vOne,$vMat))
|
|
|
|
{ // 2 colonnes
|
|
|
|
$arrayModules[$vName][trim($vMat[1])] = trim($vMat[2]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $arrayModules;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Obtenir le paramètre d'un module
|
|
|
|
*
|
|
|
|
* <P>Retourne la valeur du paramètre du module Php demandé</P>
|
|
|
|
*
|
|
|
|
* @param chaîne module php
|
|
|
|
* @param chaîne paramètre du module
|
|
|
|
* @return string valeur du paramètre du module php
|
|
|
|
*/
|
|
|
|
function getModuleSetting($modulename,$setting)
|
|
|
|
{
|
|
|
|
$arrayModules = getPhpModules();
|
2020-12-07 13:28:14 +01:00
|
|
|
if( @$arrayModules[$modulename][$setting] )
|
|
|
|
return $arrayModules[$modulename][$setting];
|
|
|
|
else
|
|
|
|
return false;
|
2020-12-03 16:35:44 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Définit la version du backend BD à utiliser
|
|
|
|
*
|
|
|
|
* <P>Retourne la version du backend BD</P>
|
|
|
|
*
|
|
|
|
* @param string Backend BD
|
|
|
|
* @return string Version du backend BD
|
|
|
|
*
|
|
|
|
* <br>Trois backends sont actuellement imlémentés :
|
|
|
|
* mysql
|
|
|
|
* pgsql
|
|
|
|
* odbc
|
|
|
|
* </br>
|
|
|
|
* @TODO Implémentation des scripts d'installations des backends
|
|
|
|
*/
|
|
|
|
function setVersionDbConnector($dbserver)
|
|
|
|
{
|
|
|
|
|
|
|
|
switch($dbserver)
|
|
|
|
{
|
|
|
|
case "mysql":
|
|
|
|
$backendString = "Client API version";
|
|
|
|
break;
|
|
|
|
case "pgsql" :
|
|
|
|
$backendString = "PostgreSQL(libpq) Version";
|
|
|
|
break;
|
|
|
|
case "odbc" :
|
|
|
|
$backendString = "";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
$mysqlclientversion = getModuleSetting($dbserver,$backendString);
|
|
|
|
$mysqlConnector = explode(".", $mysqlclientversion);
|
|
|
|
$mysqlConnector = $mysqlConnector[0];
|
|
|
|
return $mysqlConnector;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fonction permettant de remplacer une chaîne de caractères par une
|
|
|
|
* autre dans le fichier cible passé en paramètre.
|
|
|
|
*
|
|
|
|
* <P>Retourne true/false</P>
|
|
|
|
*
|
|
|
|
* @param array En clé, l'ancienne valeur et en valeur, la valeur a remplacer
|
|
|
|
* @param string chemin absolu du fichier
|
|
|
|
* @return booléen true/false
|
|
|
|
* @TODO Implémenter 2 tableaux à la place des variables
|
|
|
|
*/
|
2020-12-07 13:28:14 +01:00
|
|
|
function updateStringInFile($arrayValue, $filein, $fileout)
|
2020-12-03 16:35:44 +01:00
|
|
|
{
|
2020-12-07 13:28:14 +01:00
|
|
|
$buffer = @fread(@fopen($filein, 'r'), @filesize($filein));
|
2020-12-03 16:35:44 +01:00
|
|
|
|
|
|
|
foreach($arrayValue as $oValue=>$nValue){
|
|
|
|
$buffer = str_replace($oValue, $nValue, $buffer);
|
|
|
|
}
|
|
|
|
|
2020-12-07 13:28:14 +01:00
|
|
|
if (($fp = @fopen($fileout, "w")) !== false)
|
2020-12-03 16:35:44 +01:00
|
|
|
{
|
2020-12-07 13:28:14 +01:00
|
|
|
if (@fwrite($fp, $buffer) !== false)
|
2020-12-03 16:35:44 +01:00
|
|
|
{
|
|
|
|
$res = true;
|
|
|
|
} else {
|
|
|
|
$res = false;
|
|
|
|
}
|
|
|
|
fclose($fp);
|
|
|
|
} else {
|
|
|
|
$res = false;
|
|
|
|
}
|
|
|
|
return $res;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Créé une chaîne "aléatoire"
|
|
|
|
*
|
|
|
|
* <P>Retourne une chaîne aléatoire</P>
|
|
|
|
*
|
|
|
|
* @return string chaîne aléatoire
|
|
|
|
*/
|
|
|
|
function makeMcryptKey($lenght)
|
|
|
|
{
|
2020-12-15 00:15:31 +01:00
|
|
|
$i=0;$mcryptKey=null;
|
2020-12-03 16:35:44 +01:00
|
|
|
while($i<$lenght)
|
|
|
|
{
|
|
|
|
$mcryptKey.=chr((rand()%26)+97);
|
|
|
|
$i++;
|
|
|
|
}
|
|
|
|
$mcryptKey=$mcryptKey.substr(uniqid (""),0,22);
|
|
|
|
return $mcryptKey;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fonction d'affichage de l'aide
|
|
|
|
*
|
|
|
|
* @author Initiance <www.initiance.com|martial@initiance.com>
|
|
|
|
*/
|
|
|
|
function aide($form,$nameField)
|
|
|
|
{
|
2020-12-07 13:28:14 +01:00
|
|
|
global $message, $help;
|
|
|
|
return "<a href=\"#\"><img src=\"media/$help\" alt=\"".$message->getMessage("".$nameField."")."\"/><span>".$message->getMessage("H".$nameField)."</span></a>";
|
2020-12-03 16:35:44 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
function datasource($POST="")
|
|
|
|
{
|
|
|
|
global $message, $etat, $CONF_LIB_PATH, $help;
|
|
|
|
|
|
|
|
if($POST=="")
|
|
|
|
{
|
|
|
|
$chaine = "<div class='main'>
|
|
|
|
<form id=\"myform\" action=\"index.php?step=1\" method=\"post\">
|
|
|
|
<div class=\"field\">
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td>".aide("myform","NameServeur")."</td>
|
|
|
|
<td><label for='serveur'>".$message->getMessage("NameServeur")."</label></td>
|
2020-12-07 13:28:14 +01:00
|
|
|
<td><input id='serveur' type=\"text\" name=\"NameServeur\" value=\"localhost\"/></td>
|
2020-12-03 16:35:44 +01:00
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<div class=\"field\">
|
2021-12-28 17:34:22 +01:00
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td>".aide("myform","PortServeur")."</td>
|
|
|
|
<td><label for='portserveur'>".$message->getMessage("PortServeur")."</label></td>
|
|
|
|
<td><input id='portserveur' type=\"text\" name=\"PortServeur\" value=\"3306\"/></td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<div class=\"field\">
|
2020-12-03 16:35:44 +01:00
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td>".aide("myform","LoginServeur")."
|
|
|
|
<td><label for='loginserveur'>".$message->getMessage("LoginServeur")."</label></td>
|
2021-09-23 00:46:07 +02:00
|
|
|
<td><input id='loginserveur' type=\"text\" name=\"LoginServeur\" value=\"_USER_\"/></td>
|
2020-12-03 16:35:44 +01:00
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<div class=\"field\">
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td>".aide("myform","PwdServeur")."
|
|
|
|
<td><label for='pwdserveur'>".$message->getMessage("PwdServeur")."</label></td>
|
2021-09-23 00:46:07 +02:00
|
|
|
<td><input id='pwdserveur' type=\"password\" name=\"PwdServeur\" value=\"_PASSWORD_\"/></td>
|
2020-12-03 16:35:44 +01:00
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<div class=\"field\">
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td>".aide("myform","BdServeur")."
|
|
|
|
<td><label for='bdserveur'>".$message->getMessage("BdServeur")."</label></td>
|
2021-09-23 00:46:07 +02:00
|
|
|
<td><input id='bdserveur' type=\"text\" name=\"BdServeur\" value=\"_DATABASE_\"/></td>
|
2020-12-03 16:35:44 +01:00
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<div class=\"field\">
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td>".aide("myform","PrefxBdServeur")."
|
|
|
|
<td><label for='prefxbdserveur'>".$message->getMessage("PrefxBdServeur")."</label></td>
|
|
|
|
<td><input id='prefxbdserveur' type=\"text\" name=\"PrefxBdServeur\"/></td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</div>
|
2020-12-07 13:28:14 +01:00
|
|
|
<!--<div>
|
2020-12-03 16:35:44 +01:00
|
|
|
<textarea id='helpdesc' name=\"helpdesc\" cols=\"45\" rows=\"4\"></textarea>
|
2020-12-07 13:28:14 +01:00
|
|
|
</div>-->
|
2020-12-03 16:35:44 +01:00
|
|
|
<div>
|
|
|
|
<input type=\"submit\" name=\"ok\" value=\"".$message->getMessage("Next")."\" class=\"button\"/>
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>";
|
|
|
|
$etat = 0;
|
|
|
|
return $chaine;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$chaine = "";
|
|
|
|
if($_POST)
|
|
|
|
{
|
|
|
|
foreach($_POST as $cle=>$val)
|
|
|
|
{
|
2021-12-28 17:34:22 +01:00
|
|
|
if($val=="" && ($cle !="PwdServeur" && $cle !="NameServeur" && $cle !="PortServeur" && $cle !="PrefxBdServeur" && $cle !="helpdesc"))
|
2020-12-03 16:35:44 +01:00
|
|
|
{
|
|
|
|
$chaine .= $message->getMessage($cle).", ";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if($chaine!="")
|
|
|
|
{
|
|
|
|
$chaine .= $message->getMessage('obligatory');
|
|
|
|
}
|
|
|
|
}
|
2021-04-05 16:07:32 +02:00
|
|
|
|
2020-12-03 16:35:44 +01:00
|
|
|
//Si certains champs sont manquants pour l'inscription
|
|
|
|
if ($chaine != "")
|
|
|
|
{
|
|
|
|
return datasource()."<p class='alert'>".$chaine."</p>";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$dbhost = (!empty($_POST['NameServeur'])) ? $_POST['NameServeur'] : 'localhost';
|
|
|
|
$dbuser = (!empty($_POST['LoginServeur'])) ? $_POST['LoginServeur']: "";
|
2021-12-13 12:46:19 +01:00
|
|
|
$dbport = (!empty($_POST['PortServeur'])) ? $_POST['PortServeur']: 3306;
|
2020-12-03 16:35:44 +01:00
|
|
|
$dbpasswd = (!empty($_POST['PwdServeur'])) ? $_POST['PwdServeur'] : "";
|
|
|
|
$dbname = (!empty($_POST['BdServeur'])) ? $_POST['BdServeur']: "";
|
|
|
|
$dbnameprefx = (!empty($_POST['PrefxBdServeur'])) ? $_POST['PrefxBdServeur']: "";
|
2021-04-05 16:07:32 +02:00
|
|
|
|
|
|
|
try {
|
2021-12-13 12:46:19 +01:00
|
|
|
$bd_connect = new PDO("mysql:host=$dbhost;port=$dbport", "$dbuser", "$dbpasswd"); // PDO Connection
|
2021-04-05 16:07:32 +02:00
|
|
|
} catch (PDOException $e) {
|
|
|
|
// $e->getCode = 1045 = Access denied
|
|
|
|
// $e->getCode = 1049 = Unknown database
|
|
|
|
if( $e->getCode() == '1045' ) return datasource()."<p class='alert'>".$message->getMessage("NoMysqlConnexion")."</p>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$dbselect = true;
|
2020-12-07 13:28:14 +01:00
|
|
|
try {
|
2021-12-13 12:46:19 +01:00
|
|
|
$bd_connect = new PDO("mysql:host=$dbhost;port=$dbport;dbname=$dbname;charset=utf8", "$dbuser", "$dbpasswd"); // PDO Connection
|
2021-04-05 16:07:32 +02:00
|
|
|
} catch (PDOException $e) {
|
|
|
|
// $e->getCode = 1049 = Unknown database
|
|
|
|
if( $e->getCode() == '1049' ) $dbselect = false;
|
|
|
|
}
|
|
|
|
|
2020-12-03 16:35:44 +01:00
|
|
|
if(!$dbselect)
|
|
|
|
{
|
|
|
|
include_once($CONF_LIB_PATH."lib/system/system_data_source/database/sql_parse.php");
|
|
|
|
|
2021-04-05 16:07:32 +02:00
|
|
|
$mysqlversion = explode(" ", getModuleSetting('pdo_mysql','Client API version'));
|
|
|
|
$mysqlversion = explode(".",$mysqlversion[1]);
|
|
|
|
$mysqlversion = $mysqlversion[0];
|
2020-12-07 13:28:14 +01:00
|
|
|
|
|
|
|
$sql_query = @fread(@fopen("./db_scripts/mysql/".$mysqlversion."_create_database.sql", 'r'), @filesize("./db_scripts/mysql/".$mysqlversion."_create_database.sql"));
|
2020-12-03 16:35:44 +01:00
|
|
|
$sql_query = preg_replace('/{_DATABASE_}/', "`".$dbname."`", $sql_query);
|
|
|
|
$sql_query = remove_remarks($sql_query);
|
|
|
|
|
2021-04-05 16:07:32 +02:00
|
|
|
$result = $bd_connect->exec($sql_query);
|
2020-12-07 13:28:14 +01:00
|
|
|
|
2021-04-05 16:07:32 +02:00
|
|
|
if ( !($dbselect = $bd_connect->exec("USE $dbname;")) )
|
2020-12-03 16:35:44 +01:00
|
|
|
{
|
2020-12-07 13:28:14 +01:00
|
|
|
$sql_query = @fread(@fopen("./db_scripts/mysql/".$mysqlversion."_create_structure.sql", 'r'), @filesize("./db_scripts/mysql/".$mysqlversion."_create_structure.sql"));
|
2020-12-03 16:35:44 +01:00
|
|
|
if($dbnameprefx != "") { $dbnameprefx = $dbnameprefx."_"; } else { $dbnameprefx = "sys_"; }
|
2020-12-07 13:28:14 +01:00
|
|
|
|
|
|
|
$sql_query = preg_replace('/{_DATABASE_}/', $dbname, $sql_query);
|
2020-12-03 16:35:44 +01:00
|
|
|
$sql_query = preg_replace('/{_PREFIX_}/', $dbnameprefx, $sql_query);
|
|
|
|
|
|
|
|
$sql_query = remove_remarks($sql_query);
|
|
|
|
$sql_query = split_sql_file($sql_query, ";");
|
|
|
|
|
|
|
|
for ($i = 0; $i < sizeof($sql_query); $i++)
|
|
|
|
{
|
2020-12-07 13:28:14 +01:00
|
|
|
if ($result = $bd_connect->exec($sql_query[$i]))
|
2020-12-03 16:35:44 +01:00
|
|
|
{
|
|
|
|
return datasource()."<p class='alert'>".$message->getMessage('BdStructureError')."</p>";
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql_query = "";
|
2020-12-07 13:28:14 +01:00
|
|
|
$sql_query = @fread(@fopen("./db_scripts/mysql/".$mysqlversion."_insert_datas.sql", 'r'), @filesize("./db_scripts/mysql/".$mysqlversion."_insert_datas.sql"));
|
|
|
|
|
|
|
|
$sql_query = preg_replace('/{_DATABASE_}/', $dbname, $sql_query);
|
2020-12-03 16:35:44 +01:00
|
|
|
$sql_query = preg_replace('/{_PREFIX_}/', $dbnameprefx, $sql_query);
|
|
|
|
|
|
|
|
$sql_query = remove_remarks($sql_query);
|
|
|
|
$sql_query = split_sql_file($sql_query, ";");
|
|
|
|
|
|
|
|
for ($i = 0; $i < sizeof($sql_query); $i++)
|
|
|
|
{
|
|
|
|
if (trim($sql_query[$i]) != '')
|
|
|
|
{
|
|
|
|
#####################################
|
|
|
|
### Ajout du remplacement des paths images!!!
|
|
|
|
$sql_query[$i]=make_path($sql_query[$i]);
|
|
|
|
#####################################
|
2020-12-07 13:28:14 +01:00
|
|
|
|
2021-04-05 16:07:32 +02:00
|
|
|
$result = $bd_connect->exec($sql_query[$i]);
|
|
|
|
if( !$result )
|
2020-12-03 16:35:44 +01:00
|
|
|
{
|
|
|
|
return datasource()."<p class='alert'>".$message->getMessage('BdDatasError')."</p>";
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return datasource()."<p class='alert'>".$message->getMessage('BdStructureError')."2</p>";
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
include_once($CONF_LIB_PATH."lib/system/system_data_source/database/sql_parse.php");
|
|
|
|
|
2020-12-15 00:15:31 +01:00
|
|
|
$mysqlversion = explode(" ", getModuleSetting('pdo_mysql','Client API version'));
|
2021-04-05 16:07:32 +02:00
|
|
|
$mysqlversion = explode(".",$mysqlversion[1]);
|
|
|
|
$mysqlversion = $mysqlversion[0];
|
|
|
|
|
2021-09-23 03:31:27 +02:00
|
|
|
$sql_query = @fread(@fopen("db_scripts/mysql/".$mysqlversion."_create_structure.sql", 'r'), @filesize("./db_scripts/mysql/".$mysqlversion."_create_structure.sql"));
|
2020-12-03 16:35:44 +01:00
|
|
|
if($dbnameprefx != "") { $dbnameprefx = $dbnameprefx."_"; } else { $dbnameprefx = "sys_"; }
|
2021-04-05 16:07:32 +02:00
|
|
|
|
2020-12-07 13:28:14 +01:00
|
|
|
$sql_query = preg_replace('/{_DATABASE_}/', $dbname, $sql_query);
|
2020-12-03 16:35:44 +01:00
|
|
|
$sql_query = preg_replace('/{_PREFIX_}/', $dbnameprefx, $sql_query);
|
|
|
|
|
|
|
|
$sql_query = remove_remarks($sql_query);
|
|
|
|
$sql_query = split_sql_file($sql_query, ";");
|
|
|
|
|
2021-04-05 16:07:32 +02:00
|
|
|
for ($i = 0; $i < sizeof($sql_query); $i++)
|
2020-12-03 16:35:44 +01:00
|
|
|
{
|
2020-12-07 13:28:14 +01:00
|
|
|
if ($result = $bd_connect->exec($sql_query[$i]))
|
|
|
|
{
|
|
|
|
return datasource()."<p class='alert'>".$message->getMessage('BdStructureError')."</p>";
|
|
|
|
exit;
|
|
|
|
}
|
2020-12-03 16:35:44 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
$sql_query = "";
|
2020-12-07 13:28:14 +01:00
|
|
|
$sql_query = @fread(@fopen("./db_scripts/mysql/".$mysqlversion."_insert_datas.sql", 'r'), @filesize("./db_scripts/mysql/".$mysqlversion."_insert_datas.sql"));
|
|
|
|
|
|
|
|
$sql_query = preg_replace('/{_DATABASE_}/', $dbname, $sql_query);
|
2020-12-03 16:35:44 +01:00
|
|
|
$sql_query = preg_replace('/{_PREFIX_}/', $dbnameprefx, $sql_query);
|
|
|
|
|
|
|
|
$sql_query = remove_remarks($sql_query);
|
|
|
|
$sql_query = split_sql_file($sql_query, ";");
|
|
|
|
|
2021-04-05 16:07:32 +02:00
|
|
|
for ($i = 0; $i < sizeof($sql_query); $i++)
|
|
|
|
{
|
|
|
|
if (trim($sql_query[$i]) != '')
|
|
|
|
{
|
|
|
|
#####################################
|
|
|
|
### Ajout du remplacement des paths images!!!
|
2020-12-07 13:28:14 +01:00
|
|
|
$sql_query[$i]=make_path($sql_query[$i]);
|
2021-04-05 16:07:32 +02:00
|
|
|
#####################################
|
|
|
|
|
|
|
|
$result = $bd_connect->exec($sql_query[$i]);
|
|
|
|
if( !$result )
|
|
|
|
{
|
|
|
|
return datasource()."<p class='alert'>".$message->getMessage('BdDatasError')."</p>";
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-12-03 16:35:44 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// On met à jour le fichier config.data_source.php
|
2020-12-07 13:28:14 +01:00
|
|
|
if ( updateStringInFile(array( "{_DBCONNECTOR_}"=>"mysql",
|
2021-04-05 16:07:32 +02:00
|
|
|
"{_DBHOST_}"=>$dbhost,
|
2021-12-13 12:46:19 +01:00
|
|
|
"{_DBPORT_}"=>$dbport,
|
2021-04-05 16:07:32 +02:00
|
|
|
"{_DBUSER_}"=>$dbuser,
|
|
|
|
"{_DBPASSWD_}"=>$dbpasswd,
|
|
|
|
"{_DBNAME_}"=>$dbname,
|
|
|
|
),
|
|
|
|
$CONF_LIB_PATH.'config/config.data_source.php.install',
|
|
|
|
$CONF_LIB_PATH.'config/config.data_source.php') == false)
|
|
|
|
{ redirect("index.php?step=1"); }
|
2020-12-03 16:35:44 +01:00
|
|
|
|
|
|
|
// On met à jour le fichier config.data_acces.php
|
2020-12-07 13:28:14 +01:00
|
|
|
if ( updateStringInFile(array( "{_PREFIX_}"=>$dbnameprefx
|
2021-04-05 16:07:32 +02:00
|
|
|
),
|
|
|
|
$CONF_LIB_PATH.'config/config.data_acces.php.install',
|
|
|
|
$CONF_LIB_PATH.'config/config.data_acces.php') !== false)
|
|
|
|
{ redirect("index.php?step=2"); } else { redirect("index.php?step=1"); }
|
2020-12-03 16:35:44 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @author Comendatore <www.comendatore.net|commendatore@comendatore.net>
|
|
|
|
*/
|
|
|
|
function adapt($POST="")
|
|
|
|
{
|
|
|
|
global $message, $etat, $CONF_LIB_PATH, $help;
|
2021-04-05 16:07:32 +02:00
|
|
|
|
2020-12-03 16:35:44 +01:00
|
|
|
if($POST=="")
|
|
|
|
{
|
|
|
|
$chaine = "<div class='main'>
|
2020-12-07 13:28:14 +01:00
|
|
|
<form id=\"myform\" action=\"index.php?step=2\" method=\"post\">
|
2020-12-03 16:35:44 +01:00
|
|
|
<div class=\"field\">
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td>".aide("myform","McryptKey")."</td>
|
|
|
|
<td><label for='mcryptkey'>".$message->getMessage("McryptKey")."</label></td>
|
|
|
|
<td><input id='mcryptkey' type=\"text\" name=\"McryptKey\" value=\"".makeMcryptKey(25)."\"/></td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<div class=\"field\">
|
|
|
|
<table>
|
|
|
|
<tr>
|
2020-12-07 13:28:14 +01:00
|
|
|
<td>".aide("myform","ConfPlatformName")."
|
|
|
|
<td><label for='confplatformname'>".$message->getMessage("ConfPlatformName")."</label></td>
|
|
|
|
<td><input id='confplatformname' type=\"text\" name=\"ConfPlatformName\" value=\"Qware\"/></td>
|
2020-12-03 16:35:44 +01:00
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</div>
|
2020-12-07 13:28:14 +01:00
|
|
|
<div class=\"field\">
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td>".aide("myform","ConfPlatformTmplDefault")."
|
|
|
|
<td><label for='confplatformtmpldefault'>".$message->getMessage("ConfPlatformTmplDefault")."</label></td>
|
|
|
|
<td><input id='confplatformtmpldefault' type=\"text\" name=\"ConfPlatformTmplDefault\" value=\"default\"/></td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<div class=\"field\">
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td>".aide("myform","ConfPlatformDescDefault")."
|
|
|
|
<td><label for='confplatformdescdefault'>".$message->getMessage("ConfPlatformDescDefault")."</label></td>
|
|
|
|
<td><input id='confplatformdescdefault' type=\"text\" name=\"ConfPlatformDescDefault\" value=\"Qware Desc\"/></td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
2020-12-03 16:35:44 +01:00
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<input type=\"submit\" name=\"ok\" value=\"".$message->getMessage("Next")."\" class=\"button\"/>
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>";
|
|
|
|
$etat = 0;
|
|
|
|
return $chaine;
|
|
|
|
} else {
|
|
|
|
$chaine = "";
|
|
|
|
if($_POST)
|
|
|
|
{
|
|
|
|
foreach($_POST as $cle=>$val)
|
|
|
|
{
|
2020-12-07 13:28:14 +01:00
|
|
|
if($val=="" && ($cle !="McryptKey" && $cle !="ConfPlatformName" && $cle !="ConfPlatformTmplDefault" && $cle !="ConfPlatformDescDefault"))
|
2020-12-03 16:35:44 +01:00
|
|
|
{
|
|
|
|
$chaine .= $message->getMessage($cle).", ";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if($chaine!="")
|
|
|
|
{
|
|
|
|
$chaine .= $message->getMessage('obligatory');
|
|
|
|
}
|
|
|
|
}
|
2021-04-05 16:07:32 +02:00
|
|
|
|
2020-12-03 16:35:44 +01:00
|
|
|
//Si certains champs sont manquants pour l'inscription
|
|
|
|
if ($chaine != "")
|
|
|
|
{
|
|
|
|
return adapt()."<p class='alert'>".$chaine."</p>";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-04-05 16:07:32 +02:00
|
|
|
// On met à jour le fichier config.system.php pour {_CONF_SYSTEM_KEY_}, {_CONF_DEFAULT_TEMPLATE_}, {_CONF_DEFAULT_TITLE_}, {_CONF_DEFAULT_DESC_}
|
2020-12-07 13:28:14 +01:00
|
|
|
if( updateStringInFile(array( "{_CONF_SYSTEM_KEY_}"=>$_POST['McryptKey'],
|
2021-04-05 16:07:32 +02:00
|
|
|
"{_CONF_DEFAULT_TEMPLATE_}"=>$_POST['ConfPlatformTmplDefault'],
|
|
|
|
"{_CONF_DEFAULT_NAME_}"=>$_POST['ConfPlatformName'],
|
|
|
|
"{_CONF_DEFAULT_DESC_}"=>$_POST['ConfPlatformDescDefault']
|
|
|
|
),
|
|
|
|
$CONF_LIB_PATH.'config/config.system.php.install',
|
|
|
|
$CONF_LIB_PATH.'config/config.system.php') == false)
|
|
|
|
{ redirect("index.php?step=2"); }
|
2020-12-07 13:28:14 +01:00
|
|
|
// On met à jour le fichier config.php pour {_CONF_PLATFORM_NAME_},
|
|
|
|
if ( updateStringInFile(array( "{_CONF_PLATFORM_NAME_}"=>$_POST['ConfPlatformName']
|
2021-04-05 16:07:32 +02:00
|
|
|
),
|
|
|
|
$CONF_LIB_PATH.'config/config.php.install',
|
|
|
|
$CONF_LIB_PATH.'config/config.php') !== false)
|
|
|
|
{ redirect("index.php?step=3"); } else { redirect("index.php?step=2"); }
|
2020-12-03 16:35:44 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
function admin($POST="")
|
|
|
|
{
|
|
|
|
global $message, $etat, $CONF_LIB_PATH;
|
2021-04-05 16:07:32 +02:00
|
|
|
|
2020-12-03 16:35:44 +01:00
|
|
|
if($POST=="")
|
|
|
|
{
|
|
|
|
$chaine = "
|
|
|
|
<form id=\"myform\" action=\"index.php?step=3\" method=\"post\">
|
|
|
|
<div class='main'>
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<td><strong>".$message->getMessage("Title")." (*)</strong></td>
|
|
|
|
<td align='center'>".$message->getMessage("mr")."<input class='checkbox' type=\"radio\" name=\"Title\" value=\"0\" checked=\"checked\"/>
|
|
|
|
<td align='center'>".$message->getMessage("mrs")."<input class='checkbox' type=\"radio\" name=\"Title\" value=\"1\"/>
|
|
|
|
<td align='center'>".$message->getMessage("miss")."<input class='checkbox' type=\"radio\" name=\"Title\" value=\"2\"/></td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
<table>
|
|
|
|
<div>
|
2021-09-23 00:46:07 +02:00
|
|
|
<tr><td><div class=\"field\"><label for='nom'>".$message->getMessage("FirstName")." (*)</label><input type=\"text\" id='nom' name=\"FirstName\" value=\"_FIRSTNAME_\"/></div></td></tr>
|
|
|
|
<tr><td><div class=\"field\"><label for='prenom'>".$message->getMessage("LastName")." (*)</label><input type=\"text\" id='prenom' name=\"LastName\" value=\"_LASTNAME_\"/></div></td></tr>
|
|
|
|
<tr><td><div class=\"field\"><label for='email'>".$message->getMessage("Mail")." (*)</label><input type=\"text\" id='email' name=\"Mail\" value=\"_MAIL_\"/></div></td></tr>
|
|
|
|
<tr><td><div class=\"field\"><label for='log'>".$message->getMessage("Login")." (*)</label><input type=\"text\" id='log' name=\"Login\" value=\"_USERNAME_\"/></div></td></tr>
|
|
|
|
<tr><td><div class=\"field\"><label for='pwd'>".$message->getMessage("Password")." (*)</label><input type=\"password\" id='pwd' name=\"Password\" value=\"_PASSWORD_\"/></div></td></tr>
|
|
|
|
<tr><td><div class=\"field\"><label for='pwdbis'>".$message->getMessage("RePassword")." (*)</label><input type=\"password\" id='pwdbis' name=\"Password2\" value=\"_PASSWORD\"/></div></td></tr>
|
2020-12-03 16:35:44 +01:00
|
|
|
<hr class=\"clean\" />
|
|
|
|
<tr><td><div class=\"field\"> (*) : ".$message->getMessage("obligatory")."</div></td></tr>
|
|
|
|
<tr><td>
|
|
|
|
<input type=\"submit\" name=\"ok\" value=\"".$message->getMessage("Next")."\" class=\"button\"/>
|
|
|
|
</td></tr>
|
|
|
|
</div>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
";
|
|
|
|
$etat = 0;
|
|
|
|
return $chaine;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$chaine = "";
|
|
|
|
if($_POST)
|
|
|
|
{
|
|
|
|
foreach($_POST as $cle=>$val)
|
|
|
|
{
|
2020-12-07 13:28:14 +01:00
|
|
|
if($val=="" && ($cle !="FirstName" && $cle !="LastName" && $cle !="Mail" && $cle !="Login" && $cle !="Password" && $cle !="Password2"))
|
2020-12-03 16:35:44 +01:00
|
|
|
{
|
|
|
|
$chaine .= $message->getMessage($cle).", ";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if($chaine!="")
|
|
|
|
{
|
|
|
|
$chaine .= $message->getMessage('obligatory');
|
|
|
|
}
|
|
|
|
}
|
2021-04-05 16:07:32 +02:00
|
|
|
|
2020-12-03 16:35:44 +01:00
|
|
|
//Si certains champs sont manquants pour l'inscription
|
|
|
|
if ($chaine != "")
|
|
|
|
{
|
|
|
|
return admin()."<p class='alert'>".$chaine."</p>";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if($_POST["Password"]!=$_POST["Password2"])
|
|
|
|
{
|
|
|
|
return admin()."<p class='alert'>".$message->getMessage('Passworderror')."</p>";
|
|
|
|
}
|
2021-04-05 16:07:32 +02:00
|
|
|
|
2020-12-03 16:35:44 +01:00
|
|
|
include($CONF_LIB_PATH.'lib/system/system_control/systemcontrol.php');
|
|
|
|
/* Création des ressources */
|
|
|
|
$var=SystemControl::includeFiles($CONF_LIB_PATH."config/", "config");
|
|
|
|
$GLOBALS["CONF_LIB_PATH"]="../";
|
|
|
|
$var=SystemControl::MakeSystemConn();
|
2021-04-05 16:07:32 +02:00
|
|
|
|
2020-12-03 16:35:44 +01:00
|
|
|
/* Création du Manager Utilisateur */
|
|
|
|
$GLOBALS["SYSTEM_MANAGER"]["USER"]=UserManagerFactory::createInstance( DATA_ACCES_MANAGER_USER );
|
|
|
|
/* Création du Manager Utilisateur */
|
2021-04-05 16:07:32 +02:00
|
|
|
|
2020-12-03 16:35:44 +01:00
|
|
|
$User=new User();
|
|
|
|
$User->setId($GLOBALS['SYSTEM_DEFAULT_USER_ADMIN']);
|
|
|
|
$User->setPassword($_POST['Password']);
|
|
|
|
$User->setTitle($_POST['Title']);
|
|
|
|
$User->setFirstName($_POST['FirstName']);
|
|
|
|
$User->setLastName($_POST['LastName']);
|
|
|
|
$User->setLogin($_POST['Login']);
|
|
|
|
$User->setMail($_POST['Mail']);
|
2020-12-07 14:24:48 +01:00
|
|
|
$User->SetAccountActive(1);
|
2020-12-03 16:35:44 +01:00
|
|
|
|
|
|
|
$User=$GLOBALS["SYSTEM_MANAGER"]["USER"]->updateInstance($User);
|
|
|
|
|
2020-12-07 16:34:24 +01:00
|
|
|
// Création du répertoire de stockage des packages disponible sur la plateforme
|
|
|
|
// Nécessaire pour l'outil installmanager.
|
|
|
|
if( !file_exists($GLOBALS["CONF_LIB_PATH"]."data/upload/install/packagesrc") )
|
2021-04-05 16:07:32 +02:00
|
|
|
createDirectory($GLOBALS["CONF_LIB_PATH"]."data/upload/install/packagesrc", 700);
|
|
|
|
|
|
|
|
// Création du répertoire de stockage des packages disponible sur la plateforme
|
|
|
|
// Nécessaire pour l'outil installmanager.
|
|
|
|
if( !file_exists($GLOBALS["CONF_LIB_PATH"]."data/template/cache") )
|
|
|
|
createDirectory($GLOBALS["CONF_LIB_PATH"]."data/template/cache", 700);
|
|
|
|
|
2020-12-07 13:28:14 +01:00
|
|
|
if ( updateStringInFile(array(
|
2021-04-05 16:07:32 +02:00
|
|
|
"{_CONF_ADMIN_MAIL_}"=>$_POST['Mail']),
|
|
|
|
$CONF_LIB_PATH.'config/config.php',
|
|
|
|
$CONF_LIB_PATH.'config/config.php') == false)
|
|
|
|
{ redirect("index.php?step=3"); }
|
|
|
|
|
|
|
|
if ( updateStringInFile(array(
|
|
|
|
"{_CONF_ADMIN_MAIL_}"=>$_POST['Mail']),
|
|
|
|
$CONF_LIB_PATH.'config/config.mxconf.php.install',
|
|
|
|
$CONF_LIB_PATH.'config/config.mxconf.php') == false)
|
|
|
|
{ redirect("index.php?step=3"); }
|
|
|
|
|
2020-12-07 13:28:14 +01:00
|
|
|
if ( updateStringInFile(array(
|
2021-04-05 16:07:32 +02:00
|
|
|
"{_CONF_SECURE_ALL_}"=>"true"),
|
|
|
|
$CONF_LIB_PATH.'config/config.navigation.php.install',
|
|
|
|
$CONF_LIB_PATH.'config/config.navigation.php') == false)
|
|
|
|
{ redirect("index.php?step=3"); }
|
|
|
|
|
|
|
|
if ( updateStringInFile(array(
|
|
|
|
"{_QWAREINSTALLED_}"=>"true"),
|
|
|
|
$CONF_LIB_PATH.'config/installcontrol.php.install',
|
|
|
|
$CONF_LIB_PATH.'config/installcontrol.php') !== false)
|
|
|
|
{ redirect("index.php?step=4"); }
|
2020-12-03 16:35:44 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-12-07 16:34:24 +01:00
|
|
|
/**
|
|
|
|
* Création d'un répertoire
|
|
|
|
* Gére un path absolu
|
|
|
|
* @access public
|
|
|
|
* @param chemin chemin absolu ou relatif
|
|
|
|
* @param entier droit à attribuer à la création d'un répertoire
|
|
|
|
* @return tableau tableau associatif des états de création des reps
|
|
|
|
*/
|
|
|
|
function createDirectory($chemin, $chmod)
|
|
|
|
{
|
2021-04-05 16:07:32 +02:00
|
|
|
if ( !is_dir($chemin) )
|
|
|
|
{
|
|
|
|
return mkdir($pathTmp,$chmod, true);
|
|
|
|
} else {
|
|
|
|
$return = true;
|
|
|
|
}
|
2020-12-07 16:34:24 +01:00
|
|
|
return $return;
|
|
|
|
}
|
|
|
|
|
2020-12-03 16:35:44 +01:00
|
|
|
/**
|
|
|
|
* Vérifie le droit en écriture sur le répertoire cible
|
|
|
|
*
|
|
|
|
* <P>Retourne true/false</P>
|
|
|
|
*
|
|
|
|
* @author Comendatore <www.comendatore.net|commendatore@comendatore.net>
|
|
|
|
*
|
|
|
|
* @param chaîne chemin absolu du répertoire
|
|
|
|
* @return booléen true/false
|
|
|
|
*/
|
|
|
|
function checkRepWritable($chemin)
|
|
|
|
{
|
|
|
|
if (!is_writable($chemin))
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
} else {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Créé un fichier s'il n'existe pas
|
|
|
|
*
|
|
|
|
* <P>Retourne true/false</P>
|
|
|
|
*
|
|
|
|
* @author Comendatore <www.comendatore.net|commendatore@comendatore.net>
|
|
|
|
*
|
|
|
|
* @param chaîne chemin absolu du répertoire (sans le / de fin)
|
|
|
|
* @param chaîne nom du fichier à créer
|
|
|
|
* @return booléen true/false
|
|
|
|
*/
|
|
|
|
function createFileIfNotExists($chemin,$file)
|
|
|
|
{
|
|
|
|
if (checkRepWritable($chemin) == true)
|
|
|
|
{
|
|
|
|
if ((@fopen($chemin."/",$file,"w")) == true)
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Vérifie le droit en écriture sur le fichier cible
|
|
|
|
*
|
|
|
|
* <P>Retourne true/false</P>
|
|
|
|
*
|
|
|
|
* @author Comendatore <www.comendatore.net|commendatore@comendatore.net>
|
|
|
|
*
|
|
|
|
* @param chaîne chemin absolu du fichier
|
|
|
|
* @return booléen true/false
|
|
|
|
*/
|
|
|
|
function checkFileWritable($chemin)
|
|
|
|
{
|
|
|
|
if (!is_writable($chemin))
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
} else {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|