2005-02-13 16:40:15 +01:00
< ? php
2016-02-22 18:45:00 +01:00
/* Copyright ( C ) 2004 - 2005 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
* Copyright ( C ) 2004 - 2015 Laurent Destailleur < eldy @ users . sourceforge . net >
* Copyright ( C ) 2005 Marc Barilley / Ocebo < marc @ ocebo . com >
* Copyright ( C ) 2005 - 2012 Regis Houssin < regis . houssin @ capnetworks . com >
* Copyright ( C ) 2013 - 2014 Juanjo Menent < jmenent @ 2 byte . es >
2014-05-05 12:24:39 +02:00
* Copyright ( C ) 2014 Marcos GarcÃa < marcosgdf @ gmail . com >
2016-02-22 18:45:00 +01:00
* Copyright ( C ) 2015 - 2016 Raphaël Doursenaud < rdoursenaud @ gpcsolutions . fr >
2005-02-13 16:40:15 +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
2005-02-13 16:40:15 +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 />.
2005-02-13 16:40:15 +01:00
*/
/**
2008-11-14 11:08:57 +01:00
* \file htdocs / install / check . php
* \ingroup install
2010-11-11 00:54:59 +01:00
* \brief Test if file conf can be modified and if does not exists , test if install process can create it
2008-08-28 23:28:59 +02:00
*/
2012-08-23 02:46:16 +02:00
include_once 'inc.php' ;
2005-10-03 03:14:50 +02:00
2016-02-22 18:45:00 +01:00
global $langs ;
2005-04-02 12:06:57 +02:00
$err = 0 ;
2005-10-03 03:14:50 +02:00
$allowinstall = 0 ;
2015-11-22 11:32:31 +01:00
$allowupgrade = false ;
2006-09-09 02:54:59 +02:00
$checksok = 1 ;
2005-02-13 16:40:15 +01:00
2018-02-14 14:50:22 +01:00
$setuplang = GETPOST ( " selectlang " , 'az09' , 3 ) ? GETPOST ( " selectlang " , 'az09' , 3 ) : $langs -> getDefaultLang ();
2005-10-30 02:07:00 +01:00
$langs -> setDefaultLang ( $setuplang );
2005-02-13 16:40:15 +01:00
$langs -> load ( " install " );
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 ;
}
2008-04-20 14:35:28 +02:00
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " --- check: Dolibarr install/upgrade process started " );
2008-04-20 14:35:28 +02:00
2010-11-11 00:54:59 +01:00
2008-04-21 09:21:13 +02:00
/*
2008-08-28 23:28:59 +02:00
* View
*/
2006-06-17 16:13:49 +02:00
2010-11-11 00:54:59 +01:00
pHeader ( '' , '' ); // No next step for navigation buttons. Next step is defined by clik on links.
2009-08-08 18:26:06 +02:00
//print "<br>\n";
//print $langs->trans("InstallEasy")."<br><br>\n";
2006-09-09 02:54:59 +02:00
2018-04-15 11:27:12 +02:00
print '<h3><img class="valigntextbottom" src="../theme/common/octicons/build/svg/gear.svg" width="20" alt="Database"> ' . $langs -> trans ( " MiscellaneousChecks " ) . " :</h3> \n " ;
2006-09-09 02:54:59 +02:00
2012-02-29 19:41:12 +01:00
// Check browser
$useragent = $_SERVER [ 'HTTP_USER_AGENT' ];
if ( ! empty ( $useragent ))
{
2015-02-22 12:35:51 +01:00
$tmp = getBrowserInfo ( $_SERVER [ " HTTP_USER_AGENT " ]);
2012-02-29 19:41:12 +01:00
$browserversion = $tmp [ 'browserversion' ];
$browsername = $tmp [ 'browsername' ];
if ( $browsername == 'ie' && $browserversion < 7 ) print '<img src="../theme/eldy/img/warning.png" alt="Error"> ' . $langs -> trans ( " WarningBrowserTooOld " ) . " <br> \n " ;
}
2007-04-18 19:38:55 +02:00
2006-09-09 02:54:59 +02:00
// Check PHP version
2018-03-16 01:25:34 +01:00
$arrayphpminversionerror = array ( 5 , 4 , 0 );
$arrayphpminversionwarning = array ( 5 , 4 , 0 );
2015-10-18 20:56:10 +02:00
if ( versioncompare ( versionphparray (), $arrayphpminversionerror ) < 0 ) // Minimum to use (error if lower)
2006-09-09 02:54:59 +02:00
{
2016-07-27 16:49:00 +02:00
print '<img src="../theme/eldy/img/error.png" alt="Error"> ' . $langs -> trans ( " ErrorPHPVersionTooLow " , versiontostring ( $arrayphpminversionerror ));
2014-03-21 15:02:27 +01:00
$checksok = 0 ; // 0=error, 1=warning
2006-09-09 02:54:59 +02:00
}
2015-10-18 20:56:10 +02:00
else if ( versioncompare ( versionphparray (), $arrayphpminversionwarning ) < 0 ) // Minimum supported (warning if lower)
2010-10-10 02:15:08 +02:00
{
2016-07-27 16:49:00 +02:00
print '<img src="../theme/eldy/img/warning.png" alt="Error"> ' . $langs -> trans ( " ErrorPHPVersionTooLow " , versiontostring ( $arrayphpminversionwarning ));
2014-03-21 15:02:27 +01:00
$checksok = 0 ; // 0=error, 1=warning
2010-10-10 02:15:08 +02:00
}
2006-09-09 02:54:59 +02:00
else
{
2008-08-28 23:28:59 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs -> trans ( " PHPVersion " ) . " " . versiontostring ( versionphparray ());
2006-09-09 02:54:59 +02:00
}
2008-05-28 00:45:23 +02:00
if ( empty ( $force_install_nophpinfo )) print ' (<a href="phpinfo.php" target="_blank">' . $langs -> trans ( " MoreInformation " ) . '</a>)' ;
2007-04-18 19:38:55 +02:00
print " <br> \n " ;
2006-09-09 02:54:59 +02:00
2007-03-06 19:30:16 +01:00
// Check PHP support for $_POST
if ( ! isset ( $_GET [ " testget " ]) && ! isset ( $_POST [ " testpost " ]))
{
2007-04-10 20:54:34 +02:00
print '<img src="../theme/eldy/img/warning.png" alt="Warning"> ' . $langs -> trans ( " PHPSupportPOSTGETKo " );
print ' (<a href="' . $_SERVER [ " PHP_SELF " ] . '?testget=ok">' . $langs -> trans ( " Recheck " ) . '</a>)' ;
print " <br> \n " ;
2008-08-28 23:28:59 +02:00
$checksok = 0 ;
2007-03-06 19:30:16 +01:00
}
else
{
2008-08-28 23:28:59 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs -> trans ( " PHPSupportPOSTGETOk " ) . " <br> \n " ;
2007-03-06 19:30:16 +01:00
}
2007-04-18 19:38:55 +02:00
// Check if sessions enabled
2006-09-09 02:54:59 +02:00
if ( ! function_exists ( " session_id " ))
{
2008-08-28 23:28:59 +02:00
print '<img src="../theme/eldy/img/error.png" alt="Error"> ' . $langs -> trans ( " ErrorPHPDoesNotSupportSessions " ) . " <br> \n " ;
$checksok = 0 ;
2006-09-09 02:54:59 +02:00
}
else
{
2008-08-28 23:28:59 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs -> trans ( " PHPSupportSessions " ) . " <br> \n " ;
2006-09-09 02:54:59 +02:00
}
2005-02-13 16:40:15 +01:00
2007-09-27 00:23:03 +02:00
2016-08-05 04:45:05 +02:00
// Check if GD supported (we need GD for image conversion)
if ( ! function_exists ( " imagecreate " ))
2007-11-07 18:37:54 +01:00
{
2008-05-26 23:27:50 +02:00
$langs -> load ( " errors " );
2008-08-28 23:28:59 +02:00
print '<img src="../theme/eldy/img/warning.png" alt="Error"> ' . $langs -> trans ( " ErrorPHPDoesNotSupportGD " ) . " <br> \n " ;
// $checksok=0; // If image ko, just warning. So check must still be 1 (otherwise no way to install)
2007-11-07 18:37:54 +01:00
}
else
{
2008-08-28 23:28:59 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs -> trans ( " PHPSupportGD " ) . " <br> \n " ;
2016-08-05 04:45:05 +02:00
}
2016-07-27 16:52:02 +02:00
// Check if Curl supported
if ( ! function_exists ( " curl_init " ))
{
$langs -> load ( " errors " );
print '<img src="../theme/eldy/img/warning.png" alt="Error"> ' . $langs -> trans ( " ErrorPHPDoesNotSupportCurl " ) . " <br> \n " ;
// $checksok=0; // If image ko, just warning. So check must still be 1 (otherwise no way to install)
}
else
{
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs -> trans ( " PHPSupportCurl " ) . " <br> \n " ;
2007-11-07 18:37:54 +01:00
}
2008-11-14 11:08:57 +01:00
// Check if UTF8 supported
if ( ! function_exists ( " utf8_encode " ))
{
$langs -> load ( " errors " );
print '<img src="../theme/eldy/img/warning.png" alt="Error"> ' . $langs -> trans ( " ErrorPHPDoesNotSupportUTF8 " ) . " <br> \n " ;
// $checksok=0; // If image ko, just warning. So check must still be 1 (otherwise no way to install)
}
else
{
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs -> trans ( " PHPSupportUTF8 " ) . " <br> \n " ;
}
2012-05-28 22:39:04 +02:00
2008-11-14 11:08:57 +01:00
2007-09-27 00:23:03 +02:00
// Check memory
2012-09-20 09:13:02 +02:00
$memrequiredorig = '64M' ;
$memrequired = 64 * 1024 * 1024 ;
2007-10-04 01:38:33 +02:00
$memmaxorig =@ ini_get ( " memory_limit " );
$memmax =@ ini_get ( " memory_limit " );
if ( $memmaxorig != '' )
2007-09-27 00:23:03 +02:00
{
2009-10-22 19:56:57 +02:00
preg_match ( '/([0-9]+)([a-zA-Z]*)/i' , $memmax , $reg );
2007-10-04 01:38:33 +02:00
if ( $reg [ 2 ])
{
2014-07-10 15:01:37 +02:00
if ( strtoupper ( $reg [ 2 ]) == 'G' ) $memmax = $reg [ 1 ] * 1024 * 1024 * 1024 ;
2007-10-04 01:38:33 +02:00
if ( strtoupper ( $reg [ 2 ]) == 'M' ) $memmax = $reg [ 1 ] * 1024 * 1024 ;
if ( strtoupper ( $reg [ 2 ]) == 'K' ) $memmax = $reg [ 1 ] * 1024 ;
}
2014-05-16 14:08:23 +02:00
if ( $memmax >= $memrequired || $memmax == - 1 )
2007-10-04 01:38:33 +02:00
{
2008-08-28 23:28:59 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs -> trans ( " PHPMemoryOK " , $memmaxorig , $memrequiredorig ) . " <br> \n " ;
2007-10-04 01:38:33 +02:00
}
else
2008-08-28 23:28:59 +02:00
{
print '<img src="../theme/eldy/img/warning.png" alt="Warning"> ' . $langs -> trans ( " PHPMemoryTooLow " , $memmaxorig , $memrequiredorig ) . " <br> \n " ;
2007-10-04 01:38:33 +02:00
}
2007-09-27 00:23:03 +02:00
}
2007-11-07 18:37:54 +01:00
2015-07-06 16:33:45 +02:00
// If config file present and filled
2005-11-03 19:00:17 +01:00
clearstatcache ();
if ( is_readable ( $conffile ) && filesize ( $conffile ) > 8 )
2005-02-13 16:40:15 +01:00
{
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " check: conf file ' " . $conffile . " ' already defined " );
2008-08-28 23:28:59 +02:00
$confexists = 1 ;
2012-08-23 02:04:35 +02:00
include_once $conffile ;
2008-08-28 23:28:59 +02:00
2010-09-29 10:09:17 +02:00
$databaseok = 1 ;
2009-10-06 01:04:05 +02:00
if ( $databaseok )
{
// Already installed for all parts (config and database). We can propose upgrade.
2015-11-22 11:32:31 +01:00
$allowupgrade = true ;
2009-10-06 01:04:05 +02:00
}
else
{
2015-11-22 11:32:31 +01:00
$allowupgrade = false ;
2009-10-06 01:04:05 +02:00
}
2005-02-13 16:40:15 +01:00
}
else
{
2009-10-06 01:04:05 +02:00
// If not, we create it
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " check: we try to create conf file ' " . $conffile . " ' " );
2008-08-28 23:28:59 +02:00
$confexists = 0 ;
2007-05-10 19:58:57 +02:00
2011-09-20 12:30:56 +02:00
// First we try by copying example
2008-03-17 23:43:58 +01:00
if ( @ copy ( $conffile . " .example " , $conffile ))
2007-05-10 19:58:57 +02:00
{
2011-09-20 12:30:56 +02:00
// Success
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " check: successfully copied file " . $conffile . " .example into " . $conffile );
2007-05-10 19:58:57 +02:00
}
else
{
2011-09-20 12:30:56 +02:00
// If failed, we try to create an empty file
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " check: failed to copy file " . $conffile . " .example into " . $conffile . " . We try to create it. " , LOG_WARNING );
2007-05-10 19:58:57 +02:00
$fp = @ fopen ( $conffile , " w " );
if ( $fp )
{
@ fwrite ( $fp , '<?php' );
@ fputs ( $fp , " \n " );
fclose ( $fp );
}
2015-07-06 16:33:45 +02:00
else dolibarr_install_syslog ( " check: failed to create a new file " . $conffile . " into current dir " . getcwd () . " . Please check permissions. " , LOG_ERR );
2008-08-28 23:28:59 +02:00
}
2007-05-10 19:58:57 +02:00
2014-05-16 14:15:39 +02:00
// First install, we can't upgrade
2015-11-22 11:32:31 +01:00
$allowupgrade = false ;
2005-02-13 16:40:15 +01:00
}
2007-04-18 19:38:55 +02:00
2014-05-16 14:15:39 +02:00
// File is missng and can't be created
2006-09-09 02:54:59 +02:00
if ( ! file_exists ( $conffile ))
2005-02-13 16:40:15 +01:00
{
2011-07-30 12:23:24 +02:00
print '<img src="../theme/eldy/img/error.png" alt="Error"> ' . $langs -> trans ( " ConfFileDoesNotExistsAndCouldNotBeCreated " , $conffiletoshow );
2010-03-16 00:54:37 +01:00
print " <br><br> " ;
2011-07-30 12:23:24 +02:00
print $langs -> trans ( " YouMustCreateWithPermission " , $conffiletoshow );
2010-03-16 00:54:37 +01:00
print " <br><br> " ;
2008-08-28 23:28:59 +02:00
print $langs -> trans ( " CorrectProblemAndReloadPage " , $_SERVER [ 'PHP_SELF' ] . '?testget=ok' );
$err ++ ;
2005-02-13 16:40:15 +01:00
}
else
{
2018-06-05 08:57:04 +02:00
if ( dol_is_dir ( $conffile ))
{
2018-06-05 09:02:50 +02:00
print '<img src="../theme/eldy/img/error.png" alt="Warning"> ' . $langs -> trans ( " ConfFileMustBeAFileNotADir " , $conffiletoshow );
2018-06-05 08:57:04 +02:00
$allowinstall = 0 ;
}
2014-05-16 14:15:39 +02:00
// File exists but can't be modified
2018-06-05 08:57:04 +02:00
elseif ( ! is_writable ( $conffile ))
2008-08-28 23:28:59 +02:00
{
if ( $confexists )
{
2011-07-30 12:23:24 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs -> trans ( " ConfFileExists " , $conffiletoshow );
2008-08-28 23:28:59 +02:00
}
else
{
2011-07-30 12:23:24 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs -> trans ( " ConfFileCouldBeCreated " , $conffiletoshow );
2008-08-28 23:28:59 +02:00
}
2010-03-16 00:54:37 +01:00
print " <br> " ;
2011-07-30 12:23:24 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Warning"> ' . $langs -> trans ( " ConfFileIsNotWritable " , $conffiletoshow );
2010-03-16 00:54:37 +01:00
print " <br> \n " ;
2008-08-28 23:28:59 +02:00
$allowinstall = 0 ;
}
2014-05-16 14:15:39 +02:00
// File exists and can be modified
2008-08-28 23:28:59 +02:00
else
{
if ( $confexists )
{
2011-07-30 12:23:24 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs -> trans ( " ConfFileExists " , $conffiletoshow );
2008-08-28 23:28:59 +02:00
}
else
{
2011-07-30 12:23:24 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs -> trans ( " ConfFileCouldBeCreated " , $conffiletoshow );
2008-08-28 23:28:59 +02:00
}
2010-03-16 00:54:37 +01:00
print " <br> " ;
2011-07-30 12:23:24 +02:00
print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs -> trans ( " ConfFileIsWritable " , $conffiletoshow );
2010-03-16 00:54:37 +01:00
print " <br> \n " ;
2008-08-28 23:28:59 +02:00
$allowinstall = 1 ;
}
2010-03-16 00:54:37 +01:00
print " <br> \n " ;
2008-08-28 23:28:59 +02:00
2014-05-16 14:15:39 +02:00
// Requirements ok, we display the next step button
2006-09-09 02:54:59 +02:00
if ( $checksok )
{
2009-06-16 02:21:51 +02:00
$ok = 0 ;
2014-05-16 14:15:39 +02:00
// Try to create db connection
2009-06-16 02:21:51 +02:00
if ( file_exists ( $conffile ))
{
2012-08-23 02:04:35 +02:00
include_once $conffile ;
2009-07-02 02:19:06 +02:00
if ( ! empty ( $dolibarr_main_db_type ) && ! empty ( $dolibarr_main_document_root ))
2009-06-16 02:21:51 +02:00
{
2011-10-24 11:25:54 +02:00
if ( ! file_exists ( $dolibarr_main_document_root . " /core/lib/admin.lib.php " ))
2009-06-16 02:21:51 +02:00
{
2011-07-30 12:23:24 +02:00
print '<font class="error">A ' . $conffiletoshow . ' file exists with a dolibarr_main_document_root to ' . $dolibarr_main_document_root . ' that seems wrong. Try to fix or remove the ' . $conffiletoshow . ' file.</font><br>' . " \n " ;
2015-07-06 16:33:45 +02:00
dol_syslog ( " A ' " . $conffiletoshow . " ' file exists with a dolibarr_main_document_root to " . $dolibarr_main_document_root . " that seems wrong. Try to fix or remove the ' " . $conffiletoshow . " ' file. " , LOG_WARNING );
2009-06-16 02:21:51 +02:00
}
2010-10-09 13:11:03 +02:00
else
{
2017-09-14 13:52:39 +02:00
require_once $dolibarr_main_document_root . '/core/lib/admin.lib.php' ;
// If password is encoded, we decode it
if ( preg_match ( '/crypted:/i' , $dolibarr_main_db_pass ) || ! empty ( $dolibarr_main_db_encrypted_pass ))
{
require_once $dolibarr_main_document_root . '/core/lib/security.lib.php' ;
if ( preg_match ( '/crypted:/i' , $dolibarr_main_db_pass ))
{
2017-09-14 14:48:44 +02:00
$dolibarr_main_db_encrypted_pass = preg_replace ( '/crypted:/i' , '' , $dolibarr_main_db_pass ); // We need to set this as it is used to know the password was initially crypted
$dolibarr_main_db_pass = dol_decode ( $dolibarr_main_db_encrypted_pass );
2017-09-14 13:52:39 +02:00
}
else $dolibarr_main_db_pass = dol_decode ( $dolibarr_main_db_encrypted_pass );
}
2010-10-09 13:11:03 +02:00
// $conf is already instancied inside inc.php
$conf -> db -> type = $dolibarr_main_db_type ;
$conf -> db -> host = $dolibarr_main_db_host ;
$conf -> db -> port = $dolibarr_main_db_port ;
$conf -> db -> name = $dolibarr_main_db_name ;
$conf -> db -> user = $dolibarr_main_db_user ;
$conf -> db -> pass = $dolibarr_main_db_pass ;
2017-09-14 13:52:39 +02:00
$db = getDoliDBInstance ( $conf -> db -> type , $conf -> db -> host , $conf -> db -> user , $conf -> db -> pass , $conf -> db -> name , $conf -> db -> port );
2015-05-12 19:01:01 +02:00
if ( $db -> connected && $db -> database_selected )
2010-10-09 13:11:03 +02:00
{
2015-05-12 19:01:01 +02:00
$ok = true ;
2010-10-09 13:11:03 +02:00
}
2017-09-14 13:52:39 +02:00
}
2009-06-16 02:21:51 +02:00
}
}
2011-09-20 12:30:56 +02:00
// If a database access is available, we set more variable
2009-06-16 02:21:51 +02:00
if ( $ok )
{
2009-06-30 11:21:29 +02:00
if ( empty ( $dolibarr_main_db_encryption )) $dolibarr_main_db_encryption = 0 ;
$conf -> db -> dolibarr_main_db_encryption = $dolibarr_main_db_encryption ;
2009-07-02 02:19:06 +02:00
if ( empty ( $dolibarr_main_db_cryptkey )) $dolibarr_main_db_cryptkey = '' ;
2009-06-30 11:21:29 +02:00
$conf -> db -> dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey ;
2009-07-02 02:19:06 +02:00
2009-06-16 02:21:51 +02:00
$conf -> setValues ( $db );
2018-02-14 14:50:22 +01:00
// Reset forced setup after the setValues
if ( defined ( 'SYSLOG_FILE' )) $conf -> global -> SYSLOG_FILE = constant ( 'SYSLOG_FILE' );
$conf -> global -> MAIN_ENABLE_LOG_TO_HTML = 1 ;
2009-06-16 02:21:51 +02:00
// Current version is $conf->global->MAIN_VERSION_LAST_UPGRADE
// Version to install is DOL_VERSION
2010-02-04 23:55:39 +01:00
$dolibarrlastupgradeversionarray = preg_split ( '/[\.-]/' , isset ( $conf -> global -> MAIN_VERSION_LAST_UPGRADE ) ? $conf -> global -> MAIN_VERSION_LAST_UPGRADE : ( isset ( $conf -> global -> MAIN_VERSION_LAST_INSTALL ) ? $conf -> global -> MAIN_VERSION_LAST_INSTALL : '' ));
2009-06-16 02:21:51 +02:00
$dolibarrversiontoinstallarray = versiondolibarrarray ();
}
2011-09-20 12:30:56 +02:00
// Show title
2009-12-01 12:19:26 +01:00
if ( ! empty ( $conf -> global -> MAIN_VERSION_LAST_UPGRADE ) || ! empty ( $conf -> global -> MAIN_VERSION_LAST_INSTALL ))
2009-08-04 16:36:29 +02:00
{
2009-12-01 12:19:26 +01:00
print $langs -> trans ( " VersionLastUpgrade " ) . ': <b><font class="ok">' . ( empty ( $conf -> global -> MAIN_VERSION_LAST_UPGRADE ) ? $conf -> global -> MAIN_VERSION_LAST_INSTALL : $conf -> global -> MAIN_VERSION_LAST_UPGRADE ) . '</font></b><br>' ;
2009-08-08 18:26:06 +02:00
print $langs -> trans ( " VersionProgram " ) . ': <b><font class="ok">' . DOL_VERSION . '</font></b>' ;
2009-08-04 16:36:29 +02:00
//print ' '.img_warning($langs->trans("RunningUpdateProcessMayBeRequired"));
print '<br>' ;
print '<br>' ;
}
2010-03-16 00:54:37 +01:00
else print " <br> \n " ;
2009-08-04 16:36:29 +02:00
2009-08-08 18:26:06 +02:00
print $langs -> trans ( " InstallEasy " ) . " " ;
2009-08-04 16:36:29 +02:00
print $langs -> trans ( " ChooseYourSetupMode " );
2017-09-15 23:49:04 +02:00
print '<br><br>' ;
2009-12-04 11:14:51 +01:00
2009-10-29 23:28:03 +01:00
$foundrecommandedchoice = 0 ;
2009-12-04 11:14:51 +01:00
2014-05-05 12:08:19 +02:00
$available_choices = array ();
$notavailable_choices = array ();
2009-08-04 16:36:29 +02:00
2011-09-20 12:30:56 +02:00
// Show first install line
2014-05-05 12:08:19 +02:00
$choice = '<tr class="listofchoices"><td class="listofchoices nowrap" align="center"><b>' . $langs -> trans ( " FreshInstall " ) . '</b>' ;
$choice .= '</td>' ;
2017-04-25 12:57:20 +02:00
$choice .= '<td class="listofchoices listofchoicesdesc">' ;
2014-05-05 12:08:19 +02:00
$choice .= $langs -> trans ( " FreshInstallDesc " );
2009-10-29 23:28:03 +01:00
if ( empty ( $dolibarr_main_db_host )) // This means install process was not run
{
2014-05-05 12:08:19 +02:00
$choice .= '<br>' ;
2009-10-29 23:28:03 +01:00
//print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE);
2014-11-25 20:13:43 +01:00
$choice .= '<div class="center"><div class="ok">' . $langs -> trans ( " InstallChoiceSuggested " ) . '</div></div>' ;
2009-10-29 23:28:03 +01:00
// <img src="../theme/eldy/img/tick.png" alt="Ok"> ';
$foundrecommandedchoice = 1 ; // To show only once
}
2014-05-05 12:08:19 +02:00
$choice .= '</td>' ;
$choice .= '<td class="listofchoices" align="center">' ;
2009-08-04 16:36:29 +02:00
if ( $allowinstall )
{
2014-05-05 12:08:19 +02:00
$choice .= '<a class="button" href="fileconf.php?selectlang=' . $setuplang . '">' . $langs -> trans ( " Start " ) . '</a>' ;
2009-08-04 16:36:29 +02:00
}
else
{
2014-05-05 12:08:19 +02:00
$choice .= $langs -> trans ( " InstallNotAllowed " );
2009-08-04 16:36:29 +02:00
}
2014-05-05 12:08:19 +02:00
$choice .= '</td>' ;
$choice .= '</tr>' . " \n " ;
2009-08-04 16:36:29 +02:00
2014-05-05 12:08:19 +02:00
if ( $allowinstall ) {
$available_choices [] = $choice ;
} else {
$notavailable_choices [] = $choice ;
}
2009-08-04 16:36:29 +02:00
2011-09-20 12:30:56 +02:00
// Show upgrade lines
2009-08-04 16:36:29 +02:00
$allowupgrade = true ;
2009-10-29 23:28:03 +01:00
if ( empty ( $dolibarr_main_db_host )) // This means install process was not run
{
$allowupgrade = false ;
}
2009-08-08 18:26:06 +02:00
if ( defined ( " MAIN_NOT_INSTALLED " )) $allowupgrade = false ;
2015-11-22 11:32:31 +01:00
if ( GETPOST ( 'allowupgrade' )) $allowupgrade = true ;
2014-12-03 17:06:44 +01:00
$migrationscript = array ( array ( 'from' => '3.0.0' , 'to' => '3.1.0' ),
2012-04-11 16:52:55 +02:00
array ( 'from' => '3.1.0' , 'to' => '3.2.0' ),
2013-01-12 14:34:16 +01:00
array ( 'from' => '3.2.0' , 'to' => '3.3.0' ),
2013-05-04 01:22:09 +02:00
array ( 'from' => '3.3.0' , 'to' => '3.4.0' ),
2013-12-15 00:05:04 +01:00
array ( 'from' => '3.4.0' , 'to' => '3.5.0' ),
2014-07-04 12:27:53 +02:00
array ( 'from' => '3.5.0' , 'to' => '3.6.0' ),
2014-12-03 17:06:44 +01:00
array ( 'from' => '3.6.0' , 'to' => '3.7.0' ),
2015-09-07 13:24:52 +02:00
array ( 'from' => '3.7.0' , 'to' => '3.8.0' ),
2018-01-28 10:57:12 +01:00
array ( 'from' => '3.8.0' , 'to' => '3.9.0' ),
array ( 'from' => '3.9.0' , 'to' => '4.0.0' ),
array ( 'from' => '4.0.0' , 'to' => '5.0.0' ),
array ( 'from' => '5.0.0' , 'to' => '6.0.0' ),
array ( 'from' => '6.0.0' , 'to' => '7.0.0' ),
array ( 'from' => '7.0.0' , 'to' => '8.0.0' )
2013-12-15 00:05:04 +01:00
);
2009-08-04 16:36:29 +02:00
2009-08-14 02:30:43 +02:00
$count = 0 ;
2008-08-28 23:28:59 +02:00
foreach ( $migrationscript as $migarray )
{
2014-05-05 12:08:19 +02:00
$choice = '' ;
2009-08-14 02:30:43 +02:00
$count ++ ;
2014-05-05 12:08:19 +02:00
$recommended_choice = false ;
2014-02-10 16:09:21 +01:00
$version = DOL_VERSION ;
2014-02-08 14:55:27 +01:00
$versionfrom = $migarray [ 'from' ];
2011-07-12 22:48:08 +02:00
$versionto = $migarray [ 'to' ];
2014-02-08 14:55:27 +01:00
$versionarray = preg_split ( '/[\.-]/' , $version );
2011-07-12 22:48:08 +02:00
$dolibarrversionfromarray = preg_split ( '/[\.-]/' , $versionfrom );
$dolibarrversiontoarray = preg_split ( '/[\.-]/' , $versionto );
2014-02-08 14:55:27 +01:00
// Define string newversionxxx that are used for text to show
$newversionfrom = preg_replace ( '/(\.[0-9]+)$/i' , '.*' , $versionfrom );
$newversionto = preg_replace ( '/(\.[0-9]+)$/i' , '.*' , $versionto );
2011-07-12 22:48:08 +02:00
$newversionfrombis = '' ;
2014-02-10 16:09:21 +01:00
if ( versioncompare ( $dolibarrversiontoarray , $versionarray ) < - 2 ) // From x.y.z -> x.y.z+1
2014-02-08 14:55:27 +01:00
{
$newversionfrombis = ' ' . $langs -> trans ( " or " ) . ' ' . $versionto ;
}
2014-05-05 12:08:19 +02:00
if ( $ok )
{
if ( count ( $dolibarrlastupgradeversionarray ) >= 2 ) // If a database access is available and last upgrade version is known
{
// Now we check if this is the first qualified choice
if ( $allowupgrade && empty ( $foundrecommandedchoice ) &&
( versioncompare ( $dolibarrversiontoarray , $dolibarrlastupgradeversionarray ) > 0 || versioncompare ( $dolibarrversiontoarray , $versionarray ) < - 2 )
)
{
$foundrecommandedchoice = 1 ; // To show only once
$recommended_choice = true ;
}
}
else {
// We can not recommand a choice.
// A version of install may be known, but we need last upgrade.
}
}
2014-08-03 11:18:32 +02:00
$choice .= '<tr class="listofchoices ' . ( $recommended_choice ? 'choiceselected' : '' ) . '">' ;
2014-05-05 12:08:19 +02:00
$choice .= '<td class="listofchoices nowrap" align="center"><b>' . $langs -> trans ( " Upgrade " ) . '<br>' . $newversionfrom . $newversionfrombis . ' -> ' . $newversionto . '</b></td>' ;
2017-04-25 12:57:20 +02:00
$choice .= '<td class="listofchoices listofchoicesdesc">' ;
2014-05-05 12:08:19 +02:00
$choice .= $langs -> trans ( " UpgradeDesc " );
2014-05-29 18:11:14 +02:00
if ( $recommended_choice )
{
2014-05-05 12:08:19 +02:00
$choice .= '<br>' ;
//print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE);
2014-11-25 20:13:43 +01:00
$choice .= '<div class="center"><div class="ok">' . $langs -> trans ( " InstallChoiceSuggested " ) . '</div>' ;
2014-05-05 12:08:19 +02:00
if ( $count < count ( $migarray )) // There is other choices after
{
print $langs -> trans ( " MigrateIsDoneStepByStep " , DOL_VERSION );
}
2014-11-25 20:13:43 +01:00
$choice .= '</div>' ;
2014-05-05 12:08:19 +02:00
}
$choice .= '</td>' ;
$choice .= '<td class="listofchoices" align="center">' ;
2008-08-28 23:28:59 +02:00
if ( $allowupgrade )
{
2017-03-20 19:21:26 +01:00
$disabled = false ;
if ( $foundrecommandedchoice == 2 )
{
$disabled = true ;
}
if ( $foundrecommandedchoice == 1 )
{
$foundrecommandedchoice = 2 ;
}
if ( $disabled ) $choice .= '<span class="buttonDisable runupgrade"' . ( $disabled ? ' disabled="disabled"' : '' ) . ' href="#">' . $langs -> trans ( " NotAvailable " ) . '</span>' ;
else $choice .= '<a class="button runupgrade"' . ( $disabled ? ' disabled="disabled"' : '' ) . ' href="upgrade.php?action=upgrade' . ( $count < count ( $migrationscript ) ? '_' . $versionto : '' ) . '&selectlang=' . $setuplang . '&versionfrom=' . $versionfrom . '&versionto=' . $versionto . '">' . $langs -> trans ( " Start " ) . '</a>' ;
2008-08-28 23:28:59 +02:00
}
else
{
2014-05-05 12:08:19 +02:00
$choice .= $langs -> trans ( " NotAvailable " );
2008-08-28 23:28:59 +02:00
}
2014-05-05 12:08:19 +02:00
$choice .= '</td>' ;
$choice .= '</tr>' . " \n " ;
if ( $allowupgrade ) {
$available_choices [] = $choice ;
} else {
$notavailable_choices [] = $choice ;
}
2008-08-28 23:28:59 +02:00
}
2009-06-16 02:21:51 +02:00
2014-05-29 18:11:14 +02:00
// If there is no choice at all, we show all of them.
if ( empty ( $available_choices ))
{
$available_choices = $notavailable_choices ;
$notavailable_choices = array ();
}
2014-05-05 12:08:19 +02:00
// Array of install choices
print '<table width="100%" class="listofchoices">' ;
foreach ( $available_choices as $choice ) {
print $choice ;
}
print '</table>' ;
if ( count ( $notavailable_choices )) {
2017-09-15 23:49:04 +02:00
print '<br>' ;
2014-05-05 12:08:19 +02:00
print '<div id="AShowChoices">' ;
print '<img src="../theme/eldy/img/1downarrow.png"> <a href="#">' . $langs -> trans ( 'ShowNotAvailableOptions' ) . '</a>' ;
print '</div>' ;
print '<div id="navail_choices" style="display:none">' ;
2017-09-15 23:49:04 +02:00
print '<br>' ;
2014-05-05 12:08:19 +02:00
print '<table width="100%" class="listofchoices">' ;
foreach ( $notavailable_choices as $choice ) {
print $choice ;
}
print '</table>' ;
print '</div>' ;
}
2006-09-09 02:54:59 +02:00
}
2005-10-03 03:14:50 +02:00
2005-02-13 16:40:15 +01:00
}
2014-05-05 12:08:19 +02:00
print ' < script type = " text/javascript " >
$ ( " div#AShowChoices a " ) . click ( function () {
$ ( " div#navail_choices " ) . toggle ();
if ( $ ( " div#navail_choices " ) . css ( " display " ) == " none " ) {
$ ( this ) . text ( " '. $langs->trans ('ShowNotAvailableOptions').' " );
$ ( this ) . parent () . children ( " img " ) . attr ( " src " , " ../theme/eldy/img/1downarrow.png " );
} else {
$ ( this ) . text ( " '. $langs->trans ('HideNotAvailableOptions').' " );
$ ( this ) . parent () . children ( " img " ) . attr ( " src " , " ../theme/eldy/img/1uparrow.png " );
}
});
2005-10-03 03:14:50 +02:00
2015-02-14 12:24:16 +01:00
/*
2015-01-25 22:29:36 +01:00
$ ( " .runupgrade " ) . click ( function () {
return confirm ( " '.dol_escape_js( $langs->transnoentitiesnoconv ( " WarningUpgrade " ), 0, 1).' " );
});
2015-02-14 12:24:16 +01:00
*/
2015-01-25 22:29:36 +01:00
2014-05-05 12:08:19 +02:00
</ script > ' ;
2007-04-18 19:38:55 +02:00
2015-07-06 16:33:45 +02:00
dolibarr_install_syslog ( " --- check: end " );
2015-12-31 12:02:22 +01:00
pFooter ( 1 ); // Never display next button
2005-02-13 16:40:15 +01:00