2004-10-20 00:24:10 +02:00
< ? php
2016-02-22 18:45:00 +01:00
/* Copyright ( C ) 2004 - 2007 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
* Copyright ( C ) 2004 - 2012 Laurent Destailleur < eldy @ users . sourceforge . net >
* Copyright ( C ) 2004 Benoit Mortier < benoit . mortier @ opensides . be >
* Copyright ( C ) 2004 Sebastien Di Cintio < sdicintio @ ressource - toi . org >
* Copyright ( C ) 2005 - 2011 Regis Houssin < regis . houssin @ capnetworks . com >
* Copyright ( C ) 2015 - 2016 Raphaël Doursenaud < rdoursenaud @ gpcsolutions . fr >
2004-02-02 02:41:33 +01:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
2013-01-16 15:36:08 +01:00
* the Free Software Foundation ; either version 3 of the License , or
2004-02-02 02:41:33 +01:00
* ( at your option ) any later version .
*
* 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 . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
2011-08-01 01:24:38 +02:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2004-02-02 02:41:33 +01:00
*/
2004-02-12 15:47:09 +01:00
2004-12-04 16:30:14 +01:00
/**
2015-07-06 15:29:58 +02:00
* \file htdocs / install / step1 . php
2009-11-27 22:29:24 +01:00
* \ingroup install
* \brief Build conf file on disk
*/
2004-08-25 22:12:02 +02:00
2010-05-10 08:15:17 +02:00
define ( 'DONOTLOADCONF' , 1 ); // To avoid loading conf by file inc.php
2007-04-18 19:38:55 +02:00
2012-08-23 02:46:16 +02:00
include 'inc.php' ;
2011-06-08 15:18:15 +02:00
2016-02-22 18:45:00 +01:00
global $langs ;
2012-10-09 09:34:12 +02:00
$action = GETPOST ( 'action' , 'alpha' );
2012-10-09 11:56:39 +02:00
$setuplang = ( GETPOST ( 'selectlang' , '' , 3 ) ? GETPOST ( 'selectlang' , '' , 3 ) : 'auto' );
2005-10-30 02:07:00 +01:00
$langs -> setDefaultLang ( $setuplang );
2005-02-13 17:47:32 +01:00
$langs -> load ( " admin " );
2005-02-12 22:25:39 +01:00
$langs -> load ( " install " );
2011-11-24 09:16:21 +01:00
$langs -> load ( " errors " );
2005-02-12 22:25:39 +01:00
2016-02-22 18:45:00 +01:00
// Dolibarr pages directory
$main_dir = GETPOST ( 'main_dir' );
// Directory for generated documents (invoices, orders, ecm, etc...)
$main_data_dir = GETPOST ( 'main_data_dir' ) ? GETPOST ( 'main_data_dir' ) : $main_dir . '/documents' ;
// Dolibarr root URL
$main_url = GETPOST ( 'main_url' );
// Database login informations
2012-10-09 09:34:12 +02:00
$userroot = GETPOST ( 'db_user_root' );
$passroot = GETPOST ( 'db_pass_root' );
// Database server
$db_type = GETPOST ( 'db_type' , 'alpha' );
$db_host = GETPOST ( 'db_host' , 'alpha' );
$db_name = GETPOST ( 'db_name' , 'alpha' );
$db_user = GETPOST ( 'db_user' , 'alpha' );
$db_pass = GETPOST ( 'db_pass' );
$db_port = GETPOST ( 'db_port' , 'int' );
$db_prefix = GETPOST ( 'db_prefix' , 'alpha' );
2016-02-22 18:45:00 +01:00
$db_create_database = GETPOST ( 'db_create_database' );
$db_create_user = GETPOST ( 'db_create_user' );
// Force https
$main_force_https = (( GETPOST ( " main_force_https " ) && ( GETPOST ( " main_force_https " ) == " on " || GETPOST ( " main_force_https " ) == 1 )) ? '1' : '0' );
// Use alternative directory
$main_use_alt_dir = (( GETPOST ( " main_use_alt_dir " ) && ( GETPOST ( " main_use_alt_dir " ) == " on " || GETPOST ( " main_use_alt_dir " ) == 1 )) ? '' : '//' );
// Alternative root directory name
$main_alt_dir_name = (( GETPOST ( " main_alt_dir_name " ) && GETPOST ( " main_alt_dir_name " ) != '' ) ? GETPOST ( " main_alt_dir_name " ) : 'custom' );
2011-09-07 20:08:08 +02:00
2016-10-26 10:40:03 +02:00
session_start (); // To be able to keep info into session (used for not losing password during navigation. The password must not transit through parameters)
2012-11-20 11:22:57 +01:00
// Save a flag to tell to restore input value if we do back
2012-12-01 15:45:05 +01:00
$_SESSION [ 'dol_save_pass' ] = $db_pass ;
//$_SESSION['dol_save_passroot']=$passroot;
2012-11-20 11:22:57 +01:00
2012-04-08 23:18:36 +02:00
// Now we load forced value from install.forced.php file.
2011-07-30 16:56:11 +02:00
$useforcedwizard = false ;
2012-04-08 23:18:36 +02:00
$forcedfile = " ./install.forced.php " ;
if ( $conffile == " /etc/dolibarr/conf.php " ) $forcedfile = " /etc/dolibarr/install.forced.php " ;
2016-02-22 18:45:00 +01:00
if ( @ file_exists ( $forcedfile )) {
$useforcedwizard = true ;
include_once $forcedfile ;
// If forced install is enabled, let's replace post values. These are empty because form fields are disabled.
if ( $force_install_noedit ) {
$main_dir = detect_dolibarr_main_document_root ();
if ( ! empty ( $force_install_main_data_root )) {
$main_data_dir = $force_install_main_data_root ;
} else {
$main_data_dir = detect_dolibarr_main_data_root ( $main_dir );
}
$main_url = detect_dolibarr_main_url_root ();
if ( ! empty ( $force_install_databaserootlogin )) {
$userroot = parse_database_login ( $force_install_databaserootlogin );
}
if ( ! empty ( $force_install_databaserootpass )) {
$passroot = parse_database_pass ( $force_install_databaserootpass );
}
}
if ( $force_install_noedit == 2 ) {
if ( ! empty ( $force_install_type )) {
$db_type = $force_install_type ;
}
if ( ! empty ( $force_install_dbserver )) {
$db_host = $force_install_dbserver ;
}
if ( ! empty ( $force_install_database )) {
$db_name = $force_install_database ;
}
if ( ! empty ( $force_install_databaselogin )) {
$db_user = $force_install_databaselogin ;
}
if ( ! empty ( $force_install_databasepass )) {
$db_pass = $force_install_databasepass ;
}
if ( ! empty ( $force_install_port )) {
$db_port = $force_install_port ;
}
if ( ! empty ( $force_install_prefix )) {
$db_prefix = $force_install_prefix ;
}
if ( ! empty ( $force_install_createdatabase )) {
$db_create_database = $force_install_createdatabase ;
}
if ( ! empty ( $force_install_createuser )) {
$db_create_user = $force_install_createuser ;
}
if ( ! empty ( $force_install_mainforcehttps )) {
$main_force_https = $force_install_mainforcehttps ;
}
}
}
2008-04-21 09:21:13 +02:00
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " --- step1: entering step1.php page " );
2007-05-10 20:58:52 +02:00
2011-09-07 20:08:08 +02:00
$error = 0 ;
2007-05-10 20:58:52 +02:00
2008-04-21 09:21:13 +02:00
/*
2010-02-02 19:07:43 +01:00
* View
*/
2008-04-21 09:21:13 +02:00
2011-09-07 20:08:08 +02:00
2015-07-06 15:29:58 +02:00
pHeader ( $langs -> trans ( " ConfigurationFile " ), " step2 " );
2004-02-12 15:47:09 +01:00
2010-09-29 10:09:17 +02:00
// Test if we can run a first install process
if ( ! is_writable ( $conffile ))
{
2011-07-30 12:23:24 +02:00
print $langs -> trans ( " ConfFileIsNotWritable " , $conffiletoshow );
2010-09-29 10:09:17 +02:00
pFooter ( 1 , $setuplang , 'jscheckparam' );
exit ;
}
2005-11-04 00:16:41 +01:00
2011-09-07 20:08:08 +02:00
// Check parameters
2015-03-05 17:35:37 +01:00
$is_sqlite = false ;
2012-10-09 09:34:12 +02:00
if ( empty ( $db_type ))
2011-09-07 20:08:08 +02:00
{
2011-09-29 22:21:57 +02:00
print '<div class="error">' . $langs -> trans ( " ErrorFieldRequired " , $langs -> transnoentities ( " DatabaseType " )) . '</div>' ;
$error ++ ;
2015-03-05 17:35:37 +01:00
} else {
$is_sqlite = ( $db_type === 'sqlite' || $db_type === 'sqlite3' );
2011-09-07 20:08:08 +02:00
}
2015-03-05 17:35:37 +01:00
if ( empty ( $db_host ) && ! $is_sqlite )
2011-09-07 20:08:08 +02:00
{
2011-09-29 22:21:57 +02:00
print '<div class="error">' . $langs -> trans ( " ErrorFieldRequired " , $langs -> transnoentities ( " Server " )) . '</div>' ;
$error ++ ;
2011-09-07 20:08:08 +02:00
}
2012-10-09 09:34:12 +02:00
if ( empty ( $db_name ))
2011-09-07 20:08:08 +02:00
{
2011-09-29 22:21:57 +02:00
print '<div class="error">' . $langs -> trans ( " ErrorFieldRequired " , $langs -> transnoentities ( " DatabaseName " )) . '</div>' ;
$error ++ ;
2011-09-07 20:08:08 +02:00
}
2015-03-05 17:35:37 +01:00
if ( empty ( $db_user ) && ! $is_sqlite )
2011-09-07 20:08:08 +02:00
{
2011-09-29 22:21:57 +02:00
print '<div class="error">' . $langs -> trans ( " ErrorFieldRequired " , $langs -> transnoentities ( " Login " )) . '</div>' ;
$error ++ ;
2011-09-07 20:08:08 +02:00
}
2012-10-09 09:34:12 +02:00
if ( ! empty ( $db_port ) && ! is_numeric ( $db_port ))
2011-09-07 20:08:08 +02:00
{
2012-10-09 09:34:12 +02:00
print '<div class="error">' . $langs -> trans ( " ErrorBadValueForParameter " , $db_port , $langs -> transnoentities ( " Port " )) . '</div>' ;
2011-09-07 20:08:08 +02:00
$error ++ ;
2011-11-24 08:58:52 +01:00
}
2012-10-09 09:34:12 +02:00
if ( ! empty ( $db_prefix ) && ! preg_match ( '/^[a-z0-9]+_$/i' , $db_prefix ))
2011-11-24 08:58:52 +01:00
{
2012-10-09 09:34:12 +02:00
print '<div class="error">' . $langs -> trans ( " ErrorBadValueForParameter " , $db_prefix , $langs -> transnoentities ( " DatabasePrefix " )) . '</div>' ;
2011-11-24 08:58:52 +01:00
$error ++ ;
2011-09-07 20:08:08 +02:00
}
2005-09-24 01:36:48 +02:00
2011-08-04 15:19:26 +02:00
// Remove last / into dans main_dir
2010-08-24 16:42:18 +02:00
if ( substr ( $main_dir , dol_strlen ( $main_dir ) - 1 ) == " / " )
2005-09-24 01:36:48 +02:00
{
2011-09-29 22:21:57 +02:00
$main_dir = substr ( $main_dir , 0 , dol_strlen ( $main_dir ) - 1 );
2005-09-24 01:36:48 +02:00
}
2011-08-04 15:19:26 +02:00
// Remove last / into dans main_url
2012-10-09 09:34:12 +02:00
if ( ! empty ( $main_url ) && substr ( $main_url , dol_strlen ( $main_url ) - 1 ) == " / " )
2005-09-24 01:36:48 +02:00
{
2012-10-09 09:34:12 +02:00
$main_url = substr ( $main_url , 0 , dol_strlen ( $main_url ) - 1 );
2005-09-24 01:36:48 +02:00
}
2004-08-27 02:23:30 +02:00
2016-02-22 18:45:00 +01:00
// Test database connection
if ( ! $error ) {
2012-10-09 09:34:12 +02:00
$result =@ include_once $main_dir . " /core/db/ " . $db_type . '.class.php' ;
2011-09-29 22:21:57 +02:00
if ( $result )
{
2011-12-19 21:11:43 +01:00
// If we ask database or user creation we need to connect as root, so we need root login
2016-02-22 18:45:00 +01:00
if ( ! empty ( $db_create_database ) && ! $userroot ) {
2012-10-09 09:34:12 +02:00
print '<div class="error">' . $langs -> trans ( " YouAskDatabaseCreationSoDolibarrNeedToConnect " , $db_name ) . '</div>' ;
2011-09-29 22:21:57 +02:00
print '<br>' ;
2011-12-19 21:11:43 +01:00
print $langs -> trans ( " BecauseConnectionFailedParametersMayBeWrong " ) . '<br><br>' ;
2011-09-29 22:21:57 +02:00
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " );
$error ++ ;
}
2016-02-22 18:45:00 +01:00
if ( ! empty ( $db_create_user ) && ! $userroot ) {
2012-10-09 09:34:12 +02:00
print '<div class="error">' . $langs -> trans ( " YouAskLoginCreationSoDolibarrNeedToConnect " , $db_user ) . '</div>' ;
2011-09-29 22:21:57 +02:00
print '<br>' ;
2011-12-19 21:11:43 +01:00
print $langs -> trans ( " BecauseConnectionFailedParametersMayBeWrong " ) . '<br><br>' ;
2011-09-29 22:21:57 +02:00
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " );
$error ++ ;
}
// If we need root access
2016-02-22 18:45:00 +01:00
if ( ! $error && ( ! empty ( $db_create_database ) || ! empty ( $db_create_user ))) {
2012-10-09 09:34:12 +02:00
$databasefortest = $db_name ;
2016-02-22 18:45:00 +01:00
if ( ! empty ( $db_create_database )) {
2012-10-09 09:34:12 +02:00
if ( $db_type == 'mysql' || $db_type == 'mysqli' )
2011-09-29 22:21:57 +02:00
{
$databasefortest = 'mysql' ;
}
2012-10-09 09:34:12 +02:00
elseif ( $db_type == 'pgsql' )
2011-09-29 22:21:57 +02:00
{
$databasefortest = 'postgres' ;
}
else
{
2015-02-14 16:27:00 +01:00
$databasefortest = 'master' ;
2011-09-29 22:21:57 +02:00
}
}
//print $_POST["db_type"].",".$_POST["db_host"].",$userroot,$passroot,$databasefortest,".$_POST["db_port"];
2011-09-28 16:26:49 +02:00
2012-10-09 09:34:12 +02:00
$db = getDoliDBInstance ( $db_type , $db_host , $userroot , $passroot , $databasefortest , $db_port );
2011-09-07 20:08:08 +02:00
2015-07-06 16:33:45 +02:00
dol_syslog ( " databasefortest= " . $databasefortest . " connected= " . $db -> connected . " database_selected= " . $db -> database_selected , LOG_DEBUG );
2012-01-28 16:04:48 +01:00
//print "databasefortest=".$databasefortest." connected=".$db->connected." database_selected=".$db->database_selected;
2011-09-29 22:21:57 +02:00
2016-12-10 23:12:03 +01:00
if ( empty ( $db_create_database ) && $db -> connected && ! $db -> database_selected ) {
2012-10-09 09:34:12 +02:00
print '<div class="error">' . $langs -> trans ( " ErrorConnectedButDatabaseNotFound " , $db_name ) . '</div>' ;
2011-09-29 22:21:57 +02:00
print '<br>' ;
if ( ! $db -> connected ) print $langs -> trans ( " IfDatabaseNotExistsGoBackAndUncheckCreate " ) . '<br><br>' ;
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " );
$error ++ ;
2016-12-10 23:12:03 +01:00
} elseif ( $db -> error && ! ( ! empty ( $db_create_database ) && $db -> connected )) {
2012-10-22 21:25:14 +02:00
// Note: you may experience error here with message "No such file or directory" when mysql was installed for the first time but not yet launched.
2013-04-24 16:16:41 +02:00
if ( $db -> error == " No such file or directory " ) print '<div class="error">' . $langs -> trans ( " ErrorToConnectToMysqlCheckInstance " ) . '</div>' ;
else print '<div class="error">' . $db -> error . '</div>' ;
2011-09-29 22:21:57 +02:00
if ( ! $db -> connected ) print $langs -> trans ( " BecauseConnectionFailedParametersMayBeWrong " ) . '<br><br>' ;
2012-07-04 10:21:39 +02:00
//print '<a href="#" onClick="javascript: history.back();">';
2011-09-29 22:21:57 +02:00
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " );
2012-07-04 10:21:39 +02:00
//print '</a>';
2011-09-29 22:21:57 +02:00
$error ++ ;
}
}
// If we need simple access
2016-02-22 18:45:00 +01:00
if ( ! $error && ( empty ( $db_create_database ) && empty ( $db_create_user ))) {
2012-10-09 09:34:12 +02:00
$db = getDoliDBInstance ( $db_type , $db_host , $db_user , $db_pass , $db_name , $db_port );
2011-09-28 19:41:08 +02:00
if ( $db -> error )
2011-09-29 22:21:57 +02:00
{
print '<div class="error">' . $db -> error . '</div>' ;
if ( ! $db -> connected ) print $langs -> trans ( " BecauseConnectionFailedParametersMayBeWrong " ) . '<br><br>' ;
2014-10-09 13:47:40 +02:00
//print '<a href="#" onClick="javascript: history.back();">';
2011-09-29 22:21:57 +02:00
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " );
2014-10-09 13:47:40 +02:00
//print '</a>';
2011-09-29 22:21:57 +02:00
$error ++ ;
}
}
}
else
{
2012-10-09 09:34:12 +02:00
print " <br> \n Failed to include_once( \" " . $main_dir . " /core/db/ " . $db_type . " .class.php \" )<br> \n " ;
2011-09-29 22:21:57 +02:00
print '<div class="error">' . $langs -> trans ( " ErrorWrongValueForParameter " , $langs -> transnoentities ( " WebPagesDirectory " )) . '</div>' ;
2014-10-09 13:47:40 +02:00
//print '<a href="#" onClick="javascript: history.back();">';
2011-09-29 22:21:57 +02:00
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " );
2014-10-09 13:47:40 +02:00
//print '</a>';
2011-09-29 22:21:57 +02:00
$error ++ ;
}
2011-09-07 20:08:08 +02:00
}
else
{
2011-09-29 22:21:57 +02:00
if ( isset ( $db )) print $db -> lasterror ();
if ( isset ( $db ) && ! $db -> connected ) print '<br>' . $langs -> trans ( " BecauseConnectionFailedParametersMayBeWrong " ) . '<br><br>' ;
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " );
$error ++ ;
2011-09-07 20:08:08 +02:00
}
if ( ! $error && $db -> connected )
{
2016-02-22 18:45:00 +01:00
if ( ! empty ( $db_create_database )) {
2012-10-09 09:34:12 +02:00
$result = $db -> select_db ( $db_name );
2011-09-29 22:21:57 +02:00
if ( $result )
{
2012-10-09 09:34:12 +02:00
print '<div class="error">' . $langs -> trans ( " ErrorDatabaseAlreadyExists " , $db_name ) . '</div>' ;
2011-09-29 22:21:57 +02:00
print $langs -> trans ( " IfDatabaseExistsGoBackAndCheckCreate " ) . '<br><br>' ;
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " );
$error ++ ;
}
}
2011-09-07 20:08:08 +02:00
}
2012-11-20 11:27:50 +01:00
// Define $defaultCharacterSet and $defaultDBSortingCollation
2011-09-07 20:08:08 +02:00
if ( ! $error && $db -> connected )
{
2016-02-22 18:45:00 +01:00
if ( ! empty ( $db_create_database )) { // If we create database, we force default value
2013-01-28 11:43:49 +01:00
$defaultCharacterSet = $db -> forcecharset ;
$defaultDBSortingCollation = $db -> forcecollate ;
2011-09-29 22:21:57 +02:00
}
else // If already created, we take current value
{
$defaultCharacterSet = $db -> getDefaultCharacterSetDatabase ();
2012-11-20 11:27:50 +01:00
$defaultDBSortingCollation = $db -> getDefaultCollationDatabase ();
2011-09-29 22:21:57 +02:00
}
print '<input type="hidden" name="dolibarr_main_db_character_set" value="' . $defaultCharacterSet . '">' ;
2012-11-20 11:27:50 +01:00
print '<input type="hidden" name="dolibarr_main_db_collation" value="' . $defaultDBSortingCollation . '">' ;
2012-10-13 13:56:37 +02:00
$db_character_set = $defaultCharacterSet ;
2012-11-20 11:27:50 +01:00
$db_collation = $defaultDBSortingCollation ;
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: db_character_set= " . $db_character_set . " db_collation= " . $db_collation );
2011-09-07 20:08:08 +02:00
}
// Create config file
if ( ! $error && $db -> connected && $action == " set " )
2004-01-27 15:36:40 +01:00
{
2011-09-29 22:21:57 +02:00
umask ( 0 );
2012-10-09 09:34:12 +02:00
foreach ( $_POST as $key => $value )
2011-09-29 22:21:57 +02:00
{
2015-07-06 16:33:45 +02:00
if ( ! preg_match ( '/^db_pass/i' , $key )) {
dolibarr_install_syslog ( " step1: choice for " . $key . " = " . $value );
}
2011-09-29 22:21:57 +02:00
}
// Show title of step
print '<h3>' . $langs -> trans ( " ConfigurationFile " ) . '</h3>' ;
print '<table cellspacing="0" width="100%" cellpadding="1" border="0">' ;
// Check parameter main_dir
if ( ! $error )
{
if ( ! is_dir ( $main_dir ))
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: directory ' " . $main_dir . " ' is unavailable or can't be accessed " );
2011-09-29 22:21:57 +02:00
print " <tr><td> " ;
print $langs -> trans ( " ErrorDirDoesNotExists " , $main_dir ) . '<br>' ;
print $langs -> trans ( " ErrorWrongValueForParameter " , $langs -> trans ( " WebPagesDirectory " )) . '<br>' ;
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " ) . '<br><br>' ;
print '</td><td>' ;
print $langs -> trans ( " Error " );
print " </td></tr> " ;
$error ++ ;
}
}
if ( ! $error )
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: directory ' " . $main_dir . " ' exists " );
2011-09-29 22:21:57 +02:00
}
// Create subdirectory main_data_dir
if ( ! $error )
{
// Create directory for documents
if ( ! is_dir ( $main_data_dir ))
{
dol_mkdir ( $main_data_dir );
}
if ( ! is_dir ( $main_data_dir ))
{
print " <tr><td> " . $langs -> trans ( " ErrorDirDoesNotExists " , $main_data_dir );
print ' ' . $langs -> trans ( " YouMustCreateItAndAllowServerToWrite " );
print '</td><td>' ;
print '<font class="error">' . $langs -> trans ( " Error " ) . '</font>' ;
print " </td></tr> " ;
print '<tr><td colspan="2"><br>' . $langs -> trans ( " CorrectProblemAndReloadPage " , $_SERVER [ 'PHP_SELF' ] . '?testget=ok' ) . '</td></tr>' ;
$error ++ ;
}
else
{
// Create .htaccess file in document directory
$pathhtaccess = $main_data_dir . '/.htaccess' ;
if ( ! file_exists ( $pathhtaccess ))
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: .htaccess file did not exist, we created it in ' " . $main_data_dir . " ' " );
2011-09-29 22:21:57 +02:00
$handlehtaccess =@ fopen ( $pathhtaccess , 'w' );
if ( $handlehtaccess )
{
fwrite ( $handlehtaccess , 'Order allow,deny' . " \n " );
fwrite ( $handlehtaccess , 'Deny from all' . " \n " );
fclose ( $handlehtaccess );
2015-07-06 15:29:58 +02:00
dolibarr_install_syslog ( " step1: .htaccess file created " );
2011-09-29 22:21:57 +02:00
}
}
// Les documents sont en dehors de htdocs car ne doivent pas pouvoir etre telecharges en passant outre l'authentification
$dir [ 0 ] = $main_data_dir . " /mycompany " ;
$dir [ 1 ] = $main_data_dir . " /users " ;
$dir [ 2 ] = $main_data_dir . " /custom " ;
$dir [ 3 ] = $main_data_dir . " /facture " ;
$dir [ 4 ] = $main_data_dir . " /propale " ;
$dir [ 5 ] = $main_data_dir . " /ficheinter " ;
$dir [ 6 ] = $main_data_dir . " /produit " ;
2012-08-01 14:42:24 +02:00
$dir [ 7 ] = $main_data_dir . " /doctemplates " ;
2013-07-07 13:17:48 +02:00
$dir [ 7 ] = $main_data_dir . " /extensions " ;
2011-09-29 22:21:57 +02:00
// Boucle sur chaque repertoire de dir[] pour les creer s'ils nexistent pas
$num = count ( $dir );
for ( $i = 0 ; $i < $num ; $i ++ )
{
if ( is_dir ( $dir [ $i ]))
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: directory ' " . $dir [ $i ] . " ' exists " );
2011-09-29 22:21:57 +02:00
}
else
{
2012-02-19 18:34:22 +01:00
if ( dol_mkdir ( $dir [ $i ]) < 0 )
2011-09-29 22:21:57 +02:00
{
print " <tr><td> " ;
print " Failed to create directory: " . $dir [ $i ];
print '</td><td>' ;
print $langs -> trans ( " Error " );
print " </td></tr> " ;
$error ++ ;
}
else
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: directory ' " . $dir [ $i ] . " ' created " );
2011-09-29 22:21:57 +02:00
}
}
}
2012-08-03 18:43:30 +02:00
2011-09-29 22:21:57 +02:00
if ( $error )
{
print " <tr><td> " . $langs -> trans ( " ErrorDirDoesNotExists " , $main_data_dir );
print ' ' . $langs -> trans ( " YouMustCreateItAndAllowServerToWrite " );
print '</td><td>' ;
print '<font class="error">' . $langs -> trans ( " Error " ) . '</font>' ;
print " </td></tr> " ;
print '<tr><td colspan="2"><br>' . $langs -> trans ( " CorrectProblemAndReloadPage " , $_SERVER [ 'PHP_SELF' ] . '?testget=ok' ) . '</td></tr>' ;
}
2012-08-01 14:42:24 +02:00
else
{
//ODT templates
2012-08-22 23:11:24 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php' ;
2012-08-03 18:43:30 +02:00
$srcroot = $main_dir . '/install/doctemplates' ;
2012-08-01 14:42:24 +02:00
$destroot = $main_data_dir . '/doctemplates' ;
2013-09-05 17:00:18 +02:00
$docs = array ( 'thirdparties' => 'thirdparty' , 'proposals' => 'proposal' , 'orders' => 'order' , 'invoices' => 'invoice' , 'projects' => 'project' , 'tasks' => 'task_summary' );
2012-08-03 18:43:30 +02:00
foreach ( $docs as $cursordir => $cursorfile )
2012-08-01 14:42:24 +02:00
{
2012-08-03 18:43:30 +02:00
$src = $srcroot . '/' . $cursordir . '/template_' . $cursorfile . '.odt' ;
$dirodt = $destroot . '/' . $cursordir ;
$dest = $dirodt . '/template_' . $cursorfile . '.odt' ;
2012-08-01 14:42:24 +02:00
dol_mkdir ( $dirodt );
$result = dol_copy ( $src , $dest , 0 , 0 );
if ( $result < 0 )
{
print '<tr><td colspan="2"><br>' . $langs -> trans ( 'ErrorFailToCopyFile' , $src , $dest ) . '</td></tr>' ;
}
}
}
2011-09-29 22:21:57 +02:00
}
}
2011-12-19 21:11:43 +01:00
2011-11-23 23:09:57 +01:00
// Table prefix
2012-10-09 11:56:39 +02:00
$main_db_prefix = ( ! empty ( $db_prefix ) ? $db_prefix : 'llx_' );
2011-09-29 22:21:57 +02:00
// Write conf file on disk
if ( ! $error )
{
// Save old conf file on disk
if ( file_exists ( " $conffile " ))
{
// We must ignore errors as an existing old file may already exists and not be replacable or
// the installer (like for ubuntu) may not have permission to create another file than conf.php.
2012-02-05 19:37:52 +01:00
// Also no other process must be able to read file or we expose the new file, so content with password.
2011-09-29 22:21:57 +02:00
@ dol_copy ( $conffile , $conffile . '.old' , '0400' );
}
$error += write_conf_file ( $conffile );
}
// Write main.inc.php and master.inc.php into documents/custom dir
2016-03-05 00:09:08 +01:00
//$error+=write_main_file($main_data_dir.'/custom/main.inc.php',$main_dir);
//$error+=write_master_file($main_data_dir.'/custom/master.inc.php',$main_dir);
2011-09-29 22:21:57 +02:00
// Create database and admin user database
if ( ! $error )
{
// We reload configuration file
conf ( $dolibarr_main_document_root );
2009-01-15 00:36:51 +01:00
2011-06-08 11:52:06 +02:00
print '<tr><td>' ;
print $langs -> trans ( " ConfFileReload " );
print '</td>' ;
2013-04-21 10:43:34 +02:00
print '<td><img src="../theme/eldy/img/tick.png" alt="Ok"></td></tr>' ;
2011-06-08 11:52:06 +02:00
2011-09-29 22:21:57 +02:00
// Si creation utilisateur admin demandee, on le cree
2016-02-22 18:45:00 +01:00
if ( isset ( $db_create_user ) && $db_create_user == " on " ) {
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: create database user: " . $dolibarr_main_db_user );
2007-05-08 23:54:11 +02:00
2011-09-29 22:21:57 +02:00
//print $conf->db->host." , ".$conf->db->name." , ".$conf->db->user." , ".$conf->db->port;
$databasefortest = $conf -> db -> name ;
if ( $conf -> db -> type == 'mysql' || $conf -> db -> type == 'mysqli' )
{
$databasefortest = 'mysql' ;
}
else if ( $conf -> db -> type == 'pgsql' )
{
$databasefortest = 'postgres' ;
}
else if ( $conf -> db -> type == 'mssql' )
{
2015-02-14 16:27:00 +01:00
$databasefortest = 'master' ;
2011-09-29 22:21:57 +02:00
}
2009-01-15 00:36:51 +01:00
2011-09-29 22:21:57 +02:00
// Creation handler de base, verification du support et connexion
2007-05-23 23:10:11 +02:00
2011-09-28 16:26:49 +02:00
$db = getDoliDBInstance ( $conf -> db -> type , $conf -> db -> host , $userroot , $passroot , $databasefortest , $conf -> db -> port );
2011-09-28 19:41:08 +02:00
if ( $db -> error )
2011-09-29 22:21:57 +02:00
{
print '<div class="error">' . $db -> error . '</div>' ;
$error ++ ;
}
if ( ! $error )
{
if ( $db -> connected )
{
$result = $db -> DDLCreateUser ( $dolibarr_main_db_host , $dolibarr_main_db_user , $dolibarr_main_db_pass , $dolibarr_main_db_name );
if ( $result > 0 )
{
print '<tr><td>' ;
print $langs -> trans ( " UserCreation " ) . ' : ' ;
print $dolibarr_main_db_user ;
print '</td>' ;
2013-04-21 10:43:34 +02:00
print '<td><img src="../theme/eldy/img/tick.png" alt="Ok"></td></tr>' ;
2011-09-29 22:21:57 +02:00
}
else
{
if ( $db -> errno () == 'DB_ERROR_RECORD_ALREADY_EXISTS'
2012-01-28 16:04:48 +01:00
|| $db -> errno () == 'DB_ERROR_KEY_NAME_ALREADY_EXISTS'
|| $db -> errno () == 'DB_ERROR_USER_ALREADY_EXISTS' )
2011-09-29 22:21:57 +02:00
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: user already exists " );
2011-09-29 22:21:57 +02:00
print '<tr><td>' ;
print $langs -> trans ( " UserCreation " ) . ' : ' ;
print $dolibarr_main_db_user ;
print '</td>' ;
print '<td>' . $langs -> trans ( " LoginAlreadyExists " ) . '</td></tr>' ;
}
else
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: failed to create user " , LOG_ERR );
2011-09-29 22:21:57 +02:00
print '<tr><td>' ;
print $langs -> trans ( " UserCreation " ) . ' : ' ;
print $dolibarr_main_db_user ;
print '</td>' ;
2012-01-28 16:04:48 +01:00
print '<td>' . $langs -> trans ( " Error " ) . ': ' . $db -> errno () . ' ' . $db -> error () . " </td></tr> " ;
2011-09-29 22:21:57 +02:00
}
}
$db -> close ();
}
else
{
print '<tr><td>' ;
print $langs -> trans ( " UserCreation " ) . ' : ' ;
print $dolibarr_main_db_user ;
print '</td>' ;
2013-04-21 10:43:34 +02:00
print '<td><img src="../theme/eldy/img/error.png" alt="Error"></td>' ;
2011-09-29 22:21:57 +02:00
print '</tr>' ;
// Affiche aide diagnostique
print '<tr><td colspan="2"><br>' ;
print $langs -> trans ( " YouAskDatabaseCreationSoDolibarrNeedToConnect " , $dolibarr_main_db_user , $dolibarr_main_db_host , $userroot );
print '<br>' ;
print $langs -> trans ( " BecauseConnectionFailedParametersMayBeWrong " ) . '<br><br>' ;
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " ) . '<br><br>' ;
print '</td></tr>' ;
$error ++ ;
}
}
} // Fin si "creation utilisateur"
// If database creation is asked, we create it
2016-02-22 18:45:00 +01:00
if ( ! $error && ( isset ( $db_create_database ) && $db_create_database == " on " )) {
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: create database: " . $dolibarr_main_db_name . " " . $dolibarr_main_db_character_set . " " . $dolibarr_main_db_collation . " " . $dolibarr_main_db_user );
2013-01-28 11:43:49 +01:00
$newdb = getDoliDBInstance ( $conf -> db -> type , $conf -> db -> host , $userroot , $passroot , '' , $conf -> db -> port );
2012-06-04 02:13:59 +02:00
//print 'eee'.$conf->db->type." ".$conf->db->host." ".$userroot." ".$passroot." ".$conf->db->port." ".$newdb->connected." ".$newdb->forcecharset;exit;
2007-05-08 23:54:11 +02:00
2012-06-04 02:13:59 +02:00
if ( $newdb -> connected )
2011-09-29 22:21:57 +02:00
{
2012-06-04 02:13:59 +02:00
$result = $newdb -> DDLCreateDb ( $dolibarr_main_db_name , $dolibarr_main_db_character_set , $dolibarr_main_db_collation , $dolibarr_main_db_user );
2011-09-29 22:21:57 +02:00
if ( $result )
{
print '<tr><td>' ;
print $langs -> trans ( " DatabaseCreation " ) . " ( " . $langs -> trans ( " User " ) . " " . $userroot . " ) : " ;
print $dolibarr_main_db_name ;
print '</td>' ;
2013-04-21 10:43:34 +02:00
print '<td><img src="../theme/eldy/img/tick.png" alt="Ok"></td></tr>' ;
2011-09-29 22:21:57 +02:00
2012-06-04 02:13:59 +02:00
$check1 = $newdb -> getDefaultCharacterSetDatabase ();
$check2 = $newdb -> getDefaultCollationDatabase ();
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( 'step1: note that default server was charset=' . $check1 . ' collation=' . $check2 );
2011-09-29 22:21:57 +02:00
// If values differs, we save conf file again
2015-07-06 16:33:45 +02:00
//if ($check1 != $dolibarr_main_db_character_set) dolibarr_install_syslog('step1: value for character_set is not the one asked for database creation', LOG_WARNING);
//if ($check2 != $dolibarr_main_db_collation) dolibarr_install_syslog('step1: value for collation is not the one asked for database creation', LOG_WARNING);
2011-09-29 22:21:57 +02:00
}
else
{
// Affiche aide diagnostique
print '<tr><td colspan="2"><br>' ;
print $langs -> trans ( " ErrorFailedToCreateDatabase " , $dolibarr_main_db_name ) . '<br>' ;
2012-06-04 02:13:59 +02:00
print $newdb -> lasterror () . '<br>' ;
2011-09-29 22:21:57 +02:00
print $langs -> trans ( " IfDatabaseExistsGoBackAndCheckCreate " );
print '<br>' ;
print '</td></tr>' ;
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( 'step1: failed to create database ' . $dolibarr_main_db_name . ' ' . $newdb -> lasterrno () . ' ' . $newdb -> lasterror (), LOG_ERR );
2011-09-29 22:21:57 +02:00
$error ++ ;
}
2012-06-04 02:13:59 +02:00
$newdb -> close ();
2011-09-29 22:21:57 +02:00
}
else {
print '<tr><td>' ;
print $langs -> trans ( " DatabaseCreation " ) . " ( " . $langs -> trans ( " User " ) . " " . $userroot . " ) : " ;
print $dolibarr_main_db_name ;
print '</td>' ;
2013-04-21 10:43:34 +02:00
print '<td><img src="../theme/eldy/img/error.png" alt="Error"></td>' ;
2011-09-29 22:21:57 +02:00
print '</tr>' ;
// Affiche aide diagnostique
print '<tr><td colspan="2"><br>' ;
print $langs -> trans ( " YouAskDatabaseCreationSoDolibarrNeedToConnect " , $dolibarr_main_db_user , $dolibarr_main_db_host , $userroot );
print '<br>' ;
print $langs -> trans ( " BecauseConnectionFailedParametersMayBeWrong " ) . '<br><br>' ;
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " ) . '<br><br>' ;
print '</td></tr>' ;
$error ++ ;
}
} // Fin si "creation database"
2012-05-06 15:36:53 +02:00
// We test access with dolibarr database user (not admin)
2011-09-29 22:21:57 +02:00
if ( ! $error )
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: connection type= " . $conf -> db -> type . " on host= " . $conf -> db -> host . " port= " . $conf -> db -> port . " user= " . $conf -> db -> user . " name= " . $conf -> db -> name );
2011-09-29 22:21:57 +02:00
//print "connexion de type=".$conf->db->type." sur host=".$conf->db->host." port=".$conf->db->port." user=".$conf->db->user." name=".$conf->db->name;
2007-05-08 23:54:11 +02:00
2011-09-28 16:26:49 +02:00
$db = getDoliDBInstance ( $conf -> db -> type , $conf -> db -> host , $conf -> db -> user , $conf -> db -> pass , $conf -> db -> name , $conf -> db -> port );
2007-05-08 23:54:11 +02:00
2015-05-12 19:01:01 +02:00
if ( $db -> connected )
2011-09-29 22:21:57 +02:00
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: connection to server by user " . $conf -> db -> user . " ok " );
2013-04-21 10:43:34 +02:00
print " <tr><td> " ;
print $langs -> trans ( " ServerConnection " ) . " ( " . $langs -> trans ( " User " ) . " " . $conf -> db -> user . " ) : " ;
print $dolibarr_main_db_host ;
print " </td><td> " ;
print '<img src="../theme/eldy/img/tick.png" alt="Ok">' ;
print " </td></tr> " ;
2011-09-29 22:21:57 +02:00
// si acces serveur ok et acces base ok, tout est ok, on ne va pas plus loin, on a meme pas utilise le compte root.
2015-05-12 19:01:01 +02:00
if ( $db -> database_selected )
2011-09-29 22:21:57 +02:00
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: connection to database " . $conf -> db -> name . " by user " . $conf -> db -> user . " ok " );
2011-09-29 22:21:57 +02:00
print " <tr><td> " ;
print $langs -> trans ( " DatabaseConnection " ) . " ( " . $langs -> trans ( " User " ) . " " . $conf -> db -> user . " ) : " ;
print $dolibarr_main_db_name ;
print " </td><td> " ;
2013-04-21 10:43:34 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Ok">' ;
2011-09-29 22:21:57 +02:00
print " </td></tr> " ;
$error = 0 ;
}
else
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: connection to database " . $conf -> db -> name . " by user " . $conf -> db -> user . " failed " , LOG_ERR );
2011-09-29 22:21:57 +02:00
print " <tr><td> " ;
print $langs -> trans ( " DatabaseConnection " ) . " ( " . $langs -> trans ( " User " ) . " " . $conf -> db -> user . " ) : " ;
print $dolibarr_main_db_name ;
print '</td><td>' ;
2013-04-21 10:43:34 +02:00
print '<img src="../theme/eldy/img/error.png" alt="Error">' ;
2011-09-29 22:21:57 +02:00
print " </td></tr> " ;
// Affiche aide diagnostique
print '<tr><td colspan="2"><br>' ;
print $langs -> trans ( 'CheckThatDatabasenameIsCorrect' , $dolibarr_main_db_name ) . '<br>' ;
print $langs -> trans ( 'IfAlreadyExistsCheckOption' ) . '<br>' ;
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " ) . '<br><br>' ;
print '</td></tr>' ;
$error ++ ;
}
}
else
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " step1: connection to server by user " . $conf -> db -> user . " failed " , LOG_ERR );
2011-09-29 22:21:57 +02:00
print " <tr><td> " ;
print $langs -> trans ( " ServerConnection " ) . " ( " . $langs -> trans ( " User " ) . " " . $conf -> db -> user . " ) : " ;
print $dolibarr_main_db_host ;
print '</td><td>' ;
2013-04-21 10:43:34 +02:00
print '<img src="../theme/eldy/img/error.png" alt="Error">' ;
2011-09-29 22:21:57 +02:00
print " </td></tr> " ;
// Affiche aide diagnostique
print '<tr><td colspan="2"><br>' ;
print $langs -> trans ( " ErrorConnection " , $conf -> db -> host , $conf -> db -> name , $conf -> db -> user );
print $langs -> trans ( 'IfLoginDoesNotExistsCheckCreateUser' ) . '<br>' ;
print $langs -> trans ( " ErrorGoBackAndCorrectParameters " ) . '<br><br>' ;
print '</td></tr>' ;
$error ++ ;
}
}
}
print '</table>' ;
2004-01-27 15:36:40 +01:00
}
2005-03-24 00:27:50 +01:00
2010-02-02 19:07:43 +01:00
?>
2011-11-21 01:34:37 +01:00
< script type = " text/javascript " >
2010-02-02 19:07:43 +01:00
function jsinfo ()
{
ok = true ;
2010-03-16 01:24:52 +01:00
//alert('<?php echo dol_escape_js($langs->transnoentities("NextStepMightLastALongTime")); ?>');
2010-02-02 19:07:43 +01:00
2010-03-16 01:24:52 +01:00
document . getElementById ( 'nextbutton' ) . style . visibility = " hidden " ;
document . getElementById ( 'pleasewait' ) . style . visibility = " visible " ;
2010-03-16 00:54:37 +01:00
2010-03-16 01:24:52 +01:00
return ok ;
2010-02-02 19:07:43 +01:00
}
</ script >
< ? php
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " --- step1: end " );
2011-06-08 13:23:55 +02:00
2015-12-31 12:02:22 +01:00
pFooter ( $error ? 1 : 0 , $setuplang , 'jsinfo' , 1 );
2008-12-21 22:19:49 +01:00
2011-08-14 23:25:25 +02:00
/**
* Create main file . No particular permissions are set by installer .
*
2011-09-29 22:21:57 +02:00
* @ param string $mainfile Full path name of main file to generate / update
* @ param string $main_dir Full path name to main . inc . php file
* @ return void
2011-08-14 23:25:25 +02:00
*/
2011-08-20 11:58:05 +02:00
function write_main_file ( $mainfile , $main_dir )
2011-08-14 23:25:25 +02:00
{
2012-02-09 21:10:06 +01:00
$fp = @ fopen ( " $mainfile " , " w " );
2011-09-29 22:21:57 +02:00
if ( $fp )
{
clearstatcache ();
2011-08-14 23:25:25 +02:00
fputs ( $fp , '<?php' . " \n " );
2012-07-29 15:28:39 +02:00
fputs ( $fp , " // Wrapper to include main into htdocs \n " );
2012-08-26 00:28:04 +02:00
fputs ( $fp , " include_once ' " . $main_dir . " /main.inc.php'; \n " );
2011-09-29 22:21:57 +02:00
fclose ( $fp );
}
2011-08-20 11:58:05 +02:00
}
2011-08-14 23:25:25 +02:00
/**
* Create master file . No particular permissions are set by installer .
*
2011-09-29 22:21:57 +02:00
* @ param string $masterfile Full path name of master file to generate / update
* @ param string $main_dir Full path name to master . inc . php file
* @ return void
2011-08-14 23:25:25 +02:00
*/
function write_master_file ( $masterfile , $main_dir )
{
2012-02-09 21:10:06 +01:00
$fp = @ fopen ( " $masterfile " , " w " );
2011-09-29 22:21:57 +02:00
if ( $fp )
{
clearstatcache ();
2011-08-14 23:25:25 +02:00
fputs ( $fp , '<?php' . " \n " );
2012-07-29 15:28:39 +02:00
fputs ( $fp , " // Wrapper to include master into htdocs \n " );
2012-08-26 00:28:04 +02:00
fputs ( $fp , " include_once ' " . $main_dir . " /master.inc.php'; \n " );
2011-09-29 22:21:57 +02:00
fclose ( $fp );
}
2011-08-14 23:25:25 +02:00
}
2008-12-21 22:19:49 +01:00
/**
2010-09-29 10:09:17 +02:00
* Save configuration file . No particular permissions are set by installer .
2011-08-14 19:17:19 +02:00
*
2011-09-29 22:21:57 +02:00
* @ param string $conffile Path to conf file to generate / update
2015-03-17 00:21:17 +01:00
* @ return integer
2008-12-21 22:19:49 +01:00
*/
function write_conf_file ( $conffile )
{
2011-09-29 22:21:57 +02:00
global $conf , $langs ;
2012-10-13 13:56:37 +02:00
global $main_url , $main_dir , $main_data_dir , $main_force_https , $main_use_alt_dir , $main_alt_dir_name , $main_db_prefix ;
2011-09-29 22:21:57 +02:00
global $dolibarr_main_url_root , $dolibarr_main_document_root , $dolibarr_main_data_root , $dolibarr_main_db_host ;
global $dolibarr_main_db_port , $dolibarr_main_db_name , $dolibarr_main_db_user , $dolibarr_main_db_pass ;
global $dolibarr_main_db_type , $dolibarr_main_db_character_set , $dolibarr_main_db_collation , $dolibarr_main_authentication ;
2012-10-13 13:56:37 +02:00
global $db_host , $db_port , $db_name , $db_user , $db_pass , $db_type , $db_character_set , $db_collation ;
2011-07-30 16:56:11 +02:00
global $conffile , $conffiletoshow , $conffiletoshowshort ;
2011-09-07 19:26:44 +02:00
global $force_dolibarr_lib_ADODB_PATH , $force_dolibarr_lib_NUSOAP_PATH ;
global $force_dolibarr_lib_TCPDF_PATH , $force_dolibarr_lib_FPDI_PATH ;
global $force_dolibarr_lib_PHPEXCEL_PATH , $force_dolibarr_lib_GEOIP_PATH ;
2011-08-14 19:17:19 +02:00
global $force_dolibarr_lib_ODTPHP_PATH , $force_dolibarr_lib_ODTPHP_PATHTOPCLZIP ;
2012-02-18 14:55:41 +01:00
global $force_dolibarr_js_CKEDITOR , $force_dolibarr_js_JQUERY , $force_dolibarr_js_JQUERY_UI , $force_dolibarr_js_JQUERY_FLOT ;
2011-08-14 19:17:19 +02:00
global $force_dolibarr_font_DOL_DEFAULT_TTF , $force_dolibarr_font_DOL_DEFAULT_TTF_BOLD ;
2008-12-21 22:19:49 +01:00
2011-09-29 22:21:57 +02:00
$error = 0 ;
2010-11-16 21:14:29 +01:00
2012-10-13 13:56:37 +02:00
$key = md5 ( uniqid ( mt_rand (), TRUE )); // Generate random hash
2009-01-15 00:36:51 +01:00
2011-09-29 22:21:57 +02:00
$fp = fopen ( " $conffile " , " w " );
if ( $fp )
{
clearstatcache ();
2008-12-21 22:19:49 +01:00
2012-01-07 23:57:42 +01:00
fputs ( $fp , '<?php' . " \n " );
fputs ( $fp , '//' . " \n " );
fputs ( $fp , '// File generated by Dolibarr installer ' . DOL_VERSION . ' on ' . dol_print_date ( dol_now (), '' ) . " \n " );
fputs ( $fp , '//' . " \n " );
fputs ( $fp , '// Take a look at conf.php.example file for an example of ' . $conffiletoshowshort . ' file' . " \n " );
fputs ( $fp , '// and explanations for all possibles parameters.' . " \n " );
fputs ( $fp , '//' . " \n " );
2008-12-21 22:19:49 +01:00
2012-10-09 09:34:12 +02:00
fputs ( $fp , '$dolibarr_main_url_root=\'' . str_replace ( " ' " , " \ ' " ,( $main_url )) . '\';' );
2011-09-29 22:21:57 +02:00
fputs ( $fp , " \n " );
2009-01-15 00:36:51 +01:00
2012-01-02 00:57:24 +01:00
fputs ( $fp , '$dolibarr_main_document_root=\'' . str_replace ( " ' " , " \ ' " ,( $main_dir )) . '\';' );
2011-09-29 22:21:57 +02:00
fputs ( $fp , " \n " );
2011-01-10 00:41:22 +01:00
2013-11-29 17:28:17 +01:00
fputs ( $fp , $main_use_alt_dir . '$dolibarr_main_url_root_alt=\'' . str_replace ( " ' " , " \ ' " ,( " / " . $main_alt_dir_name )) . '\';' );
2011-09-29 22:21:57 +02:00
fputs ( $fp , " \n " );
2011-01-10 00:41:22 +01:00
2012-01-02 00:57:24 +01:00
fputs ( $fp , $main_use_alt_dir . '$dolibarr_main_document_root_alt=\'' . str_replace ( " ' " , " \ ' " ,( $main_dir . " / " . $main_alt_dir_name )) . '\';' );
2010-12-16 19:10:06 +01:00
fputs ( $fp , " \n " );
2009-01-15 00:36:51 +01:00
2012-01-02 00:57:24 +01:00
fputs ( $fp , '$dolibarr_main_data_root=\'' . str_replace ( " ' " , " \ ' " ,( $main_data_dir )) . '\';' );
2008-12-21 22:19:49 +01:00
fputs ( $fp , " \n " );
2009-01-15 00:36:51 +01:00
2012-10-09 09:34:12 +02:00
fputs ( $fp , '$dolibarr_main_db_host=\'' . str_replace ( " ' " , " \ ' " ,( $db_host )) . '\';' );
2008-12-21 22:19:49 +01:00
fputs ( $fp , " \n " );
2009-01-15 00:36:51 +01:00
2012-10-09 09:34:12 +02:00
fputs ( $fp , '$dolibarr_main_db_port=\'' . str_replace ( " ' " , " \ ' " ,( $db_port )) . '\';' );
2008-12-21 22:19:49 +01:00
fputs ( $fp , " \n " );
2012-10-09 09:34:12 +02:00
fputs ( $fp , '$dolibarr_main_db_name=\'' . str_replace ( " ' " , " \ ' " ,( $db_name )) . '\';' );
2008-12-21 22:19:49 +01:00
fputs ( $fp , " \n " );
2011-12-19 21:11:43 +01:00
2012-01-02 00:57:24 +01:00
fputs ( $fp , '$dolibarr_main_db_prefix=\'' . str_replace ( " ' " , " \ ' " ,( $main_db_prefix )) . '\';' );
2011-11-23 23:09:57 +01:00
fputs ( $fp , " \n " );
2009-01-15 00:36:51 +01:00
2012-10-09 09:34:12 +02:00
fputs ( $fp , '$dolibarr_main_db_user=\'' . str_replace ( " ' " , " \ ' " ,( $db_user )) . '\';' );
2008-12-21 22:19:49 +01:00
fputs ( $fp , " \n " );
2012-10-09 09:34:12 +02:00
fputs ( $fp , '$dolibarr_main_db_pass=\'' . str_replace ( " ' " , " \ ' " ,( $db_pass )) . '\';' );
2008-12-21 22:19:49 +01:00
fputs ( $fp , " \n " );
2009-01-15 00:36:51 +01:00
2012-10-09 09:34:12 +02:00
fputs ( $fp , '$dolibarr_main_db_type=\'' . str_replace ( " ' " , " \ ' " ,( $db_type )) . '\';' );
2008-12-21 22:19:49 +01:00
fputs ( $fp , " \n " );
2012-10-13 13:56:37 +02:00
fputs ( $fp , '$dolibarr_main_db_character_set=\'' . str_replace ( " ' " , " \ ' " ,( $db_character_set )) . '\';' );
2008-12-21 22:19:49 +01:00
fputs ( $fp , " \n " );
2009-01-15 00:36:51 +01:00
2012-10-13 13:56:37 +02:00
fputs ( $fp , '$dolibarr_main_db_collation=\'' . str_replace ( " ' " , " \ ' " ,( $db_collation )) . '\';' );
2008-12-21 22:19:49 +01:00
fputs ( $fp , " \n " );
/* Authentication */
2016-06-25 15:16:32 +02:00
fputs ( $fp , '// Authentication settings' );
fputs ( $fp , " \n " );
2010-04-05 01:46:53 +02:00
fputs ( $fp , '$dolibarr_main_authentication=\'dolibarr\';' );
2010-12-27 16:52:58 +01:00
fputs ( $fp , " \n \n " );
2011-01-10 00:41:22 +01:00
2016-03-05 01:38:14 +01:00
fputs ( $fp , '//$dolibarr_main_demo=\'autologin,autopass\';' );
fputs ( $fp , " \n " );
2016-06-25 15:16:32 +02:00
fputs ( $fp , '// Security settings' );
2010-10-03 02:06:20 +02:00
fputs ( $fp , " \n " );
2016-06-25 15:16:32 +02:00
fputs ( $fp , '$dolibarr_main_prod=\'0\';' );
2010-10-03 02:06:20 +02:00
fputs ( $fp , " \n " );
2011-03-04 12:40:10 +01:00
fputs ( $fp , '$dolibarr_main_force_https=\'' . $main_force_https . '\';' );
2010-05-10 08:15:17 +02:00
fputs ( $fp , " \n " );
2010-11-16 21:14:29 +01:00
2016-06-25 15:16:32 +02:00
fputs ( $fp , '$dolibarr_main_restrict_os_commands=\'mysqldump, mysql, pg_dump, pgrestore\';' );
fputs ( $fp , " \n " );
2016-02-22 18:45:00 +01:00
2016-06-25 15:16:32 +02:00
fputs ( $fp , '$dolibarr_nocsrfcheck=\'0\';' );
fputs ( $fp , " \n " );
2010-10-20 16:37:00 +02:00
fputs ( $fp , '$dolibarr_main_cookie_cryptkey=\'' . $key . '\';' );
fputs ( $fp , " \n " );
2011-01-10 00:41:22 +01:00
2010-12-27 16:52:58 +01:00
fputs ( $fp , '$dolibarr_mailing_limit_sendbyweb=\'0\';' );
fputs ( $fp , " \n " );
2008-12-21 22:19:49 +01:00
2011-08-14 19:17:19 +02:00
// Write params to overwrites default lib path
fputs ( $fp , " \n " );
2012-12-05 00:47:20 +01:00
if ( empty ( $force_dolibarr_lib_FPDF_PATH )) { fputs ( $fp , '//' ); $force_dolibarr_lib_FPDF_PATH = '' ; }
fputs ( $fp , '$dolibarr_lib_FPDF_PATH=\'' . $force_dolibarr_lib_FPDF_PATH . '\';' );
fputs ( $fp , " \n " );
2015-03-02 01:38:40 +01:00
if ( empty ( $force_dolibarr_lib_TCPDF_PATH )) { fputs ( $fp , '//' ); $force_dolibarr_lib_TCPDF_PATH = '' ; }
fputs ( $fp , '$dolibarr_lib_TCPDF_PATH=\'' . $force_dolibarr_lib_TCPDF_PATH . '\';' );
fputs ( $fp , " \n " );
2012-12-05 00:47:20 +01:00
if ( empty ( $force_dolibarr_lib_FPDI_PATH )) { fputs ( $fp , '//' ); $force_dolibarr_lib_FPDI_PATH = '' ; }
fputs ( $fp , '$dolibarr_lib_FPDI_PATH=\'' . $force_dolibarr_lib_FPDI_PATH . '\';' );
fputs ( $fp , " \n " );
2015-03-02 01:38:40 +01:00
if ( empty ( $force_dolibarr_lib_TCPDI_PATH )) { fputs ( $fp , '//' ); $force_dolibarr_lib_TCPDI_PATH = '' ; }
fputs ( $fp , '$dolibarr_lib_TCPDI_PATH=\'' . $force_dolibarr_lib_TCPDI_PATH . '\';' );
fputs ( $fp , " \n " );
2012-02-18 14:55:41 +01:00
if ( empty ( $force_dolibarr_lib_ADODB_PATH )) { fputs ( $fp , '//' ); $force_dolibarr_lib_ADODB_PATH = '' ; }
2011-09-07 19:26:44 +02:00
fputs ( $fp , '$dolibarr_lib_ADODB_PATH=\'' . $force_dolibarr_lib_ADODB_PATH . '\';' );
fputs ( $fp , " \n " );
2012-02-18 14:55:41 +01:00
if ( empty ( $force_dolibarr_lib_GEOIP_PATH )) { fputs ( $fp , '//' ); $force_dolibarr_lib_GEOIP_PATH = '' ; }
fputs ( $fp , '$dolibarr_lib_GEOIP_PATH=\'' . $force_dolibarr_lib_GEOIP_PATH . '\';' );
2011-09-07 19:26:44 +02:00
fputs ( $fp , " \n " );
2012-02-18 14:55:41 +01:00
if ( empty ( $force_dolibarr_lib_NUSOAP_PATH )) { fputs ( $fp , '//' ); $force_dolibarr_lib_NUSOAP_PATH = '' ; }
fputs ( $fp , '$dolibarr_lib_NUSOAP_PATH=\'' . $force_dolibarr_lib_NUSOAP_PATH . '\';' );
2011-09-07 19:26:44 +02:00
fputs ( $fp , " \n " );
2012-02-18 14:55:41 +01:00
if ( empty ( $force_dolibarr_lib_PHPEXCEL_PATH )) { fputs ( $fp , '//' ); $force_dolibarr_lib_PHPEXCEL_PATH = '' ; }
2011-09-07 19:26:44 +02:00
fputs ( $fp , '$dolibarr_lib_PHPEXCEL_PATH=\'' . $force_dolibarr_lib_PHPEXCEL_PATH . '\';' );
fputs ( $fp , " \n " );
2012-02-18 14:55:41 +01:00
if ( empty ( $force_dolibarr_lib_ODTPHP_PATH )) { fputs ( $fp , '//' ); $force_dolibarr_lib_ODTPHP_PATH = '' ; }
2011-08-14 19:17:19 +02:00
fputs ( $fp , '$dolibarr_lib_ODTPHP_PATH=\'' . $force_dolibarr_lib_ODTPHP_PATH . '\';' );
fputs ( $fp , " \n " );
2012-02-18 14:55:41 +01:00
if ( empty ( $force_dolibarr_lib_ODTPHP_PATHTOPCLZIP )) { fputs ( $fp , '//' ); $force_dolibarr_lib_ODTPHP_PATHTOPCLZIP = '' ; }
2011-08-14 19:17:19 +02:00
fputs ( $fp , '$dolibarr_lib_ODTPHP_PATHTOPCLZIP=\'' . $force_dolibarr_lib_ODTPHP_PATHTOPCLZIP . '\';' );
fputs ( $fp , " \n " );
2012-02-18 14:55:41 +01:00
if ( empty ( $force_dolibarr_js_CKEDITOR )) { fputs ( $fp , '//' ); $force_dolibarr_js_CKEDITOR = '' ; }
fputs ( $fp , '$dolibarr_js_CKEDITOR=\'' . $force_dolibarr_js_CKEDITOR . '\';' );
fputs ( $fp , " \n " );
if ( empty ( $force_dolibarr_js_JQUERY )) { fputs ( $fp , '//' ); $force_dolibarr_js_JQUERY = '' ; }
fputs ( $fp , '$dolibarr_js_JQUERY=\'' . $force_dolibarr_js_JQUERY . '\';' );
fputs ( $fp , " \n " );
if ( empty ( $force_dolibarr_js_JQUERY_UI )) { fputs ( $fp , '//' ); $force_dolibarr_js_JQUERY_UI = '' ; }
fputs ( $fp , '$dolibarr_js_JQUERY_UI=\'' . $force_dolibarr_js_JQUERY_UI . '\';' );
fputs ( $fp , " \n " );
if ( empty ( $force_dolibarr_js_JQUERY_FLOT )) { fputs ( $fp , '//' ); $force_dolibarr_js_JQUERY_FLOT = '' ; }
fputs ( $fp , '$dolibarr_js_JQUERY_FLOT=\'' . $force_dolibarr_js_JQUERY_FLOT . '\';' );
2012-01-14 02:06:05 +01:00
fputs ( $fp , " \n " );
2011-08-14 19:17:19 +02:00
// Write params to overwrites default font path
fputs ( $fp , " \n " );
2012-04-14 15:36:12 +02:00
if ( empty ( $force_dolibarr_font_DOL_DEFAULT_TTF )) { fputs ( $fp , '//' ); $force_dolibarr_font_DOL_DEFAULT_TTF = '' ; }
2011-08-14 19:17:19 +02:00
fputs ( $fp , '$dolibarr_font_DOL_DEFAULT_TTF=\'' . $force_dolibarr_font_DOL_DEFAULT_TTF . '\';' );
fputs ( $fp , " \n " );
2012-04-14 15:36:12 +02:00
if ( empty ( $force_dolibarr_font_DOL_DEFAULT_TTF_BOLD )) { fputs ( $fp , '//' ); $force_dolibarr_font_DOL_DEFAULT_TTF_BOLD = '' ; }
2011-08-14 19:17:19 +02:00
fputs ( $fp , '$dolibarr_font_DOL_DEFAULT_TTF_BOLD=\'' . $force_dolibarr_font_DOL_DEFAULT_TTF_BOLD . '\';' );
fputs ( $fp , " \n " );
2008-12-21 22:19:49 +01:00
fclose ( $fp );
2009-01-15 00:36:51 +01:00
2008-12-21 22:19:49 +01:00
if ( file_exists ( " $conffile " ))
{
2012-08-23 02:04:35 +02:00
include $conffile ; // On force rechargement. Ne pas mettre include_once !
2008-12-21 22:19:49 +01:00
conf ( $dolibarr_main_document_root );
print " <tr><td> " ;
print $langs -> trans ( " SaveConfigurationFile " );
2011-06-08 11:52:06 +02:00
print ' <strong>' . $conffile . '</strong>' ;
2008-12-21 22:19:49 +01:00
print " </td><td> " ;
2013-04-21 10:43:34 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Ok">' ;
2008-12-21 22:19:49 +01:00
print " </td></tr> " ;
}
else
{
$error ++ ;
}
}
2009-01-15 00:36:51 +01:00
2008-12-21 22:19:49 +01:00
return $error ;
}