Qware_core/install/lib_install.php

814 lines
24 KiB
PHP
Raw Normal View History

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 &copy; 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\">
<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)
{
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']);
$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;
}
}
?>