2017-08-04 16:28:16 +02:00
< ? php
2020-09-07 15:04:06 +02:00
/*
* OpenSTAManager : il software gestionale open source per l ' assistenza tecnica e la fatturazione
2021-01-20 15:08:51 +01:00
* Copyright ( C ) DevCode s . r . l .
2020-09-07 15:04:06 +02: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
* the Free Software Foundation , either version 3 of the License , or
* ( 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
* along with this program . If not , see < https :// www . gnu . org / licenses />.
*/
2017-08-04 16:28:16 +02:00
2018-07-03 11:12:32 +02:00
include_once __DIR__ . '/../../core.php' ;
2017-08-04 16:28:16 +02:00
$valid_config = isset ( $db_host ) && isset ( $db_name ) && isset ( $db_username ) && isset ( $db_password );
// Gestione del file di configurazione
if ( file_exists ( 'config.inc.php' ) && $valid_config && $dbo -> isConnected ()) {
return ;
}
2017-09-04 12:02:29 +02:00
$pageTitle = tr ( 'Configurazione' );
2017-08-04 16:28:16 +02:00
2018-06-26 09:41:43 +02:00
include_once App :: filepath ( 'include|custom|' , 'top.php' );
2017-08-04 16:28:16 +02:00
// Controllo sull'esistenza di nuovi parametri di configurazione
if ( post ( 'db_host' ) !== null ) {
2018-02-22 09:34:46 +01:00
$db_host = $_POST [ 'db_host' ]; // Fix per evitare la conversione in numero
2017-08-04 16:28:16 +02:00
$db_name = post ( 'db_name' );
$db_username = post ( 'db_username' );
$db_password = post ( 'db_password' );
$valid_config = isset ( $db_host ) && isset ( $db_name ) && isset ( $db_username ) && isset ( $db_password );
// Generazione di una nuova connessione al database
2019-01-06 14:52:13 +01:00
try {
$dbo = Database :: getConnection ( true , [
'db_host' => $db_host ,
'db_name' => $db_name ,
'db_username' => $db_username ,
'db_password' => $db_password ,
]);
} catch ( Exception $e ) {
}
2017-08-04 16:28:16 +02:00
2017-08-28 16:53:14 +02:00
// Test della configurazione
if ( post ( 'test' ) !== null ) {
ob_end_clean ();
if ( $dbo -> isConnected ()) {
$requirements = [
'SELECT' ,
'INSERT' ,
'UPDATE' ,
'CREATE' ,
'ALTER' ,
'DROP' ,
];
$db_host = str_replace ( '_' , '\_' , $db_name );
$db_name = str_replace ( '_' , '\_' , $db_name );
$db_username = str_replace ( '_' , '\_' , $db_name );
$results = $dbo -> fetchArray ( 'SHOW GRANTS FOR CURRENT_USER' );
foreach ( $results as $result ) {
2018-01-17 15:47:00 +01:00
$privileges = current ( $result );
2017-08-28 16:53:14 +02:00
if (
2024-01-15 15:30:45 +01:00
string_contains ( $privileges , ' ON `' . $db_name . '`.*' )
|| string_contains ( $privileges , ' ON *.*' )
2017-08-28 16:53:14 +02:00
) {
2018-01-17 15:47:00 +01:00
$pieces = explode ( ', ' , explode ( ' ON ' , str_replace ( 'GRANT ' , '' , $privileges ))[ 0 ]);
2017-08-28 16:53:14 +02:00
2018-01-30 20:05:12 +01:00
// Permessi generici sul database
2017-08-28 16:53:14 +02:00
if ( in_array ( 'ALL' , $pieces ) || in_array ( 'ALL PRIVILEGES' , $pieces )) {
2018-01-30 20:05:12 +01:00
$requirements = [];
2017-08-28 16:53:14 +02:00
break ;
}
2018-01-30 20:05:12 +01:00
// Permessi specifici sul database
2017-08-28 16:53:14 +02:00
foreach ( $requirements as $key => $value ) {
2018-01-30 20:05:12 +01:00
if ( in_array ( $value , $pieces )) {
2017-08-28 16:53:14 +02:00
unset ( $requirements [ $key ]);
}
}
}
}
2018-01-30 20:05:12 +01:00
// Permessi insufficienti
if ( ! empty ( $requirements )) {
$state = 1 ;
}
// Permessi completi
else {
$state = 2 ;
}
}
// Connessione fallita
else {
2017-08-28 16:53:14 +02:00
$state = 0 ;
}
echo $state ;
2024-01-15 15:30:45 +01:00
exit ;
2017-08-28 16:53:14 +02:00
}
// Creazione della configurazione
2017-08-04 16:28:16 +02:00
if ( $dbo -> isConnected ()) {
2020-09-23 13:36:37 +02:00
$new_config = file_get_contents ( base_dir () . '/config.example.php' );
2017-08-04 16:28:16 +02:00
2019-08-02 13:21:21 +02:00
$decimals = post ( 'decimal_separator' );
$thousands = post ( 'thousand_separator' );
$decimals = $decimals == 'dot' ? '.' : ',' ;
$thousands = $thousands == 'dot' ? '.' : $thousands ;
$thousands = $thousands == 'comma' ? ',' : $thousands ;
2017-08-04 16:28:16 +02:00
$values = [
'|host|' => $db_host ,
'|username|' => $db_username ,
'|password|' => $db_password ,
'|database|' => $db_name ,
2019-08-02 13:21:21 +02:00
'|lang|' => post ( 'lang' ),
'|timestamp|' => post ( 'timestamp_format' ),
'|date|' => post ( 'date_format' ),
'|time|' => post ( 'time_format' ),
'|decimals|' => $decimals ,
'|thousands|' => $thousands ,
2017-08-04 16:28:16 +02:00
];
$new_config = str_replace ( array_keys ( $values ), $values , $new_config );
// Controlla che la scrittura del file di configurazione sia andata a buon fine
$creation = file_put_contents ( 'config.inc.php' , $new_config );
if ( ! $creation ) {
echo '
< div class = " box box-center box-danger box-solid text-center " >
< div class = " box-header with-border " >
2017-09-04 12:02:29 +02:00
< h3 class = " box-title " > '.tr(' Permessi di scrittura mancanti ').' </ h3 >
2017-08-04 16:28:16 +02:00
</ div >
< div class = " box-body " >
2017-09-10 14:35:41 +02:00
< p > '.tr(' Sembra che non ci siano i permessi di scrittura sul file _FILE_ ' , [
'_FILE_' => '<b>config.inc.php</b>' ,
]) . ' </ p >
2020-09-23 17:53:19 +02:00
< form action = " '.base_path().'/index.php?action=updateconfig&firstuse=true " method = " post " >
2017-08-04 16:28:16 +02:00
< div class = " hide " >
< input type = " hidden " name = " db_name " value = " '. $db_name .' " >
< input type = " hidden " name = " db_password " value = " '. $db_password .' " >
< input type = " hidden " name = " db_username " value = " '. $db_username .' " > ;
< input type = " hidden " name = " db_host " value = " '. $db_host .' " >
</ div >
2020-09-23 17:53:19 +02:00
< a class = " btn btn-warning " href = " '.base_path().'/index.php " >< i class = " fa fa-arrow-left " ></ i > '.tr(' Torna indietro ').' </ a >
2017-09-04 12:02:29 +02:00
< button class = " btn btn-info " >< i class = " fa fa-repeat " ></ i > '.tr(' Riprova ').' </ button >
2017-08-04 16:28:16 +02:00
</ form >
< hr >
< div class = " box box-default collapsed-box " >
< div class = " box-header with-border " >
2017-09-04 12:02:29 +02:00
< h4 class = " box-title " >< a class = " clickable " data - widget = " collapse " > '.tr(' Creazione manuale ').' ...</ a ></ h4 >
2017-08-04 16:28:16 +02:00
< div class = " box-tools pull-right " >
< button type = " button " class = " btn btn-box-tool " data - widget = " collapse " >< i class = " fa fa-plus " ></ i ></ button >
</ div >
</ div >
< div class = " box-body " >
2017-09-10 14:35:41 +02:00
< p > '.tr(' Inserire il seguente testo nel file _FILE_ ' , [
'_FILE_' => '<b>config.inc.php</b>' ,
]) . ' </ p >
2017-08-04 16:28:16 +02:00
< pre class = " text-left " > '.htmlentities($new_config).' </ pre >
</ div >
</ div >
</ div >
</ div > ' ;
}
// Continua con l'esecuzione delle operazioni previste
else {
2022-11-28 19:37:24 +01:00
// Creazione manifest.json
include_once App :: filepath ( 'include/init' , 'manifest.php' );
2020-09-23 17:53:19 +02:00
redirect ( base_path () . '/index.php' );
2024-01-15 15:30:45 +01:00
exit ;
2017-08-04 16:28:16 +02:00
}
}
}
// Controlla che i parametri di configurazione permettano l'accesso al database
if (( file_exists ( 'config.inc.php' ) || $valid_config ) && ! $dbo -> isConnected ()) {
echo '
< div class = " box box-center box-danger box-solid text-center " >
< div class = " box-header with-border " >
2017-09-04 12:02:29 +02:00
< h3 class = " box-title " > '.tr(' Impossibile connettersi al database ').' </ h3 >
2017-08-04 16:28:16 +02:00
</ div >
< div class = " box-body " >
2023-08-04 14:54:28 +02:00
< p > '.tr(' Si è verificato un errore durante la connessione al database ').' .</ p >
2017-09-04 12:02:29 +02:00
< p > '.tr(' Controllare di aver inserito correttamente i dati di accesso , e che il database atto ad ospitare i dati del gestionale sia esistente ').' .</ p >
2020-09-23 17:53:19 +02:00
< a class = " btn btn-info " href = " '.base_path().'/index.php " >< i class = " fa fa-repeat " ></ i > '.tr(' Riprova ').' </ a >
2017-08-04 16:28:16 +02:00
</ div >
</ div > ' ;
}
2018-02-21 19:34:03 +01:00
$img = App :: getPaths ()[ 'img' ];
2017-08-04 16:28:16 +02:00
// Visualizzazione dell'interfaccia di impostazione iniziale, nel caso il file di configurazione sia mancante oppure i paramentri non siano sufficienti
if ( empty ( $creation ) && ( ! file_exists ( 'config.inc.php' ) || ! $valid_config )) {
if ( file_exists ( 'config.inc.php' )) {
echo '
< div class = " box box-center box-danger box-solid text-center " >
< div class = " box-header with-border " >
2017-09-04 12:02:29 +02:00
< h3 class = " box-title " > '.tr(' Parametri non sufficienti ! ').' </ h3 >
2017-08-04 16:28:16 +02:00
</ div >
< div class = " box-body " >
2017-09-04 12:02:29 +02:00
< p > '.tr("L' avvio del software è fallito a causa dell 'assenza di alcuni paramentri nella configurazione di base").' .</ p >
2017-09-10 14:35:41 +02:00
< p > '.tr("Si prega di controllare che il file _FILE_ contenga tutti i dati inseriti durante la configurazione iniziale (con l' eccezione di password e indirizzo email amministrativi ) " , [
'_FILE_' => '<b>config.inc.php</b>' ,
]) . ' .</ p >
2017-09-04 12:02:29 +02:00
< p > '.tr("Nel caso il problema persista, rivolgersi all' assistenza ufficiale " ).'.</p>
2020-09-23 17:53:19 +02:00
< a class = " btn btn-info " href = " '.base_path().'/index.php " >< i class = " fa fa-repeat " ></ i > '.tr(' Riprova ').' </ a >
2017-08-04 16:28:16 +02:00
</ div >
</ div > ' ;
}
// Controlli per essere sicuro che l'utente abbia letto la licenza
echo '
< script >
$ ( document ) . ready ( function (){
$ ( " #smartwizard " ) . smartWizard ({
useURLhash : false ,
showStepURLhash : false ,
theme : " default " ,
transitionEffect : " slideLeft " ,
lang : {
2017-09-04 12:02:29 +02:00
next : " '.tr('Successivo').' " ,
previous : " '.tr('Precedente').' " ,
2017-08-04 16:28:16 +02:00
}
});
$ ( " #smartwizard " ) . on ( " leaveStep " , function ( e , anchorObject , stepNumber , stepDirection ) {
result = true ;
if ( stepDirection == " forward " && $ ( " #step- " + ( stepNumber + 1 ) + " form " ) . length ){
result = $ ( " #step- " + ( stepNumber + 1 ) + " form " ) . parsley () . validate ();
}
if ( ! result ){
2017-09-04 12:02:29 +02:00
swal ( " '.tr('Impossibile procedere').' " , " '.tr('Prima di proseguire devi completare i campi obbligatori!').' " , " error " );
2017-08-04 16:28:16 +02:00
}
$ ( " html, body " ) . animate ({ scrollTop : $ ( " #steps " ) . offset () . top }, 500 );
return result ;
});
2018-06-26 09:41:43 +02:00
2018-05-23 00:28:32 +02:00
$ ( " #install " ) . on ( " click " , function (){
if ( $ ( this ) . closest ( " form " ) . parsley () . validate ()){
prev_html = $ ( " #install " ) . html ();
2019-08-02 13:21:21 +02:00
$ ( " #install " ) . html ( " <i class= \ 'fa fa-spinner fa-pulse fa-fw \ '></i> '.tr('Attendere').'... " );
$ ( " #install " ) . prop ( " disabled " , true );
$ ( " #test " ) . prop ( " disabled " , true );
2018-06-26 09:41:43 +02:00
2018-07-03 11:12:32 +02:00
$ ( " #config-form " ) . submit ();
2018-05-23 00:28:32 +02:00
}
});
2017-08-28 16:53:14 +02:00
$ ( " #test " ) . on ( " click " , function (){
if ( $ ( this ) . closest ( " form " ) . parsley () . validate ()){
2018-04-03 12:10:58 +02:00
prev_html = $ ( " #test " ) . html ();
2019-08-02 13:21:21 +02:00
$ ( " #test " ) . html ( " <i class= \ 'fa fa-spinner fa-pulse fa-fw \ '></i> '.tr('Attendere').'... " );
$ ( " #test " ) . prop ( " disabled " , true );
$ ( " #install " ) . prop ( " disabled " , true );
2017-09-13 17:08:27 +02:00
$ ( this ) . closest ( " form " ) . ajaxSubmit ({
2020-09-23 17:53:19 +02:00
url : " '.base_path().'/index.php " ,
2017-09-13 17:08:27 +02:00
data : {
test : 1 ,
},
2018-06-26 09:41:43 +02:00
type : " post " ,
2017-09-13 17:08:27 +02:00
success : function ( data ){
2017-08-28 16:53:14 +02:00
data = parseFloat ( data . trim ());
2018-06-26 09:41:43 +02:00
2018-04-03 12:10:58 +02:00
$ ( " #test " ) . html ( prev_html );
2019-08-02 13:21:21 +02:00
$ ( " #test " ) . prop ( " disabled " , false );
$ ( " #install " ) . prop ( " disabled " , false );
2018-06-26 09:41:43 +02:00
2017-08-28 16:53:14 +02:00
if ( data == 0 ){
2017-09-13 17:08:27 +02:00
swal ( " '.tr('Errore della configurazione').' " , " '.tr('La configurazione non è corretta').'. " , " error " );
2017-08-28 16:53:14 +02:00
} else if ( data == 1 ){
2018-05-11 12:35:05 +02:00
swal ( " '.tr('Permessi insufficienti').' " , " '.tr( " L 'utente non possiede permessi sufficienti per il testing della connessione. Potresti rilevare problemi in fase di installazione.").' . " , " error " );
2017-09-13 17:08:27 +02:00
} else {
2019-08-02 13:21:21 +02:00
swal ( " '.tr('Configurazione corretta').' " , " '.tr('Ti sei connesso con successo al database').'. '.tr('Clicca su _BTN_ per proseguire', [
'_BTN_' => " ' " . tr ( 'Installa' ) . " ' " ,
]) . ' . " , " success " );
2017-08-28 16:53:14 +02:00
}
2017-09-13 17:08:27 +02:00
},
error : function ( data ) {
alert ( " '.tr('Errore').': " + data );
2017-08-28 16:53:14 +02:00
}
});
}
});
2017-08-04 16:28:16 +02:00
});
</ script > ' ;
echo '
< div class = " box box-center-large box-warning " >
< div class = " box-header with-border text-center " >
2021-08-06 10:41:53 +02:00
< img src = " '. $img .'/logo_completo.png " width = " 300 " alt = " '.tr('OSM Logo').' " >
2017-08-04 16:28:16 +02:00
</ div >
2019-08-02 13:21:21 +02:00
< div class = " box-body " id = " smartwizard " >
< span class = " pull-right col-md-4 " >
< select class = " form-control hide " id = " language " required = " 1 " > ' ;
$languages = [
2019-08-02 15:58:31 +02:00
'it_IT' => [
2019-08-02 13:21:21 +02:00
'title' => tr ( 'Italiano' ),
'flag' => 'IT' ,
],
2019-08-02 15:58:31 +02:00
'en_GB' => [
2019-08-02 13:21:21 +02:00
'title' => tr ( 'Inglese' ),
'flag' => 'GB' ,
],
];
$current = trans () -> getCurrentLocale ();
foreach ( $languages as $code => $language ) {
echo '
< option data - country = " '. $language['flag'] .' " value = " '. $code .' " '.($code == $current ? ' selected ' : ' ').' > '.$language[' title '].' </ option > ' ;
}
2017-08-04 16:28:16 +02:00
echo '
2019-08-02 13:21:21 +02:00
</ select >
< script >
2022-11-28 19:02:37 +01:00
var flag_link = " '. $img .'/flags/|flag|.svg " ;
2019-08-02 13:21:21 +02:00
$ ( document ) . ready ( function () {
$ . ajax ({
url : flag_link . replace ( " |flag| " , " it " ),
success : function (){
initLanguage ( true );
},
error : function (){
initLanguage ( false );
},
timeout : 500
});
});
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
function initLanguage ( flag ) {
$ ( " #language " ) . removeClass ( " hide " );
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
$ ( " #language " ) . select2 ({
theme : " bootstrap " ,
templateResult : function ( item ) {
if ( ! item . id || ! flag ) {
return item . text ;
}
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
var element = $ ( item . element );
var img = $ ( " <img> " , {
class : " img-flag " ,
width : 26 ,
src : flag_link . replace ( " |flag| " , element . data ( " country " ) . toLowerCase ()),
});
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
var span = $ ( " <span> " , {
text : " " + item . text
});
span . prepend ( img );
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
return span ;
}
});
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
$ ( " #language " ) . on ( " change " , function (){
if ( $ ( this ) . val ()) {
var location = window . location ;
var url = location . protocol + " // " + location . host + " " + location . pathname ;
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
var parameters = getUrlVars ();
parameters . lang = $ ( this ) . val ();
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
redirect ( url , parameters );
}
});
}
</ script >
</ span >
2017-08-04 16:28:16 +02:00
< ul >
< li >< a href = " #step-1 " >
2017-09-04 12:02:29 +02:00
< h3 > '.tr(' Requisiti ').' </ h3 >
2017-08-04 16:28:16 +02:00
</ a ></ li >
< li >< a href = " #step-2 " >
2017-09-04 12:02:29 +02:00
< h3 > '.tr(' Licenza ').' </ h3 >
2017-08-04 16:28:16 +02:00
</ a ></ li >
< li >< a href = " #step-3 " >
2017-09-04 12:02:29 +02:00
< h3 > '.tr(' Configurazione ').' </ h3 >
2017-08-04 16:28:16 +02:00
</ a ></ li >
</ ul >
< div id = " steps " >
2018-06-27 14:25:19 +02:00
< div id = " step-1 " > ' ;
2017-08-04 16:28:16 +02:00
2018-10-05 11:53:11 +02:00
// Introduzione
echo '
< p > '.tr(' Benvenuto in _NAME_ ! ' , [
'_NAME_' => '<strong>OpenSTAManager</strong>' ,
]) . ' </ p >
< p > '.tr("Prima di procedere alla configurazione e all' installazione del software , sono necessari alcuni accorgimenti per garantire il corretto funzionamento del gestionale " ).'.</p>
< br >
< p > '.tr(' Le estensioni e impostazioni PHP possono essere personalizzate nel file di configurazione _FILE_ ' , [
'_FILE_' => '<b>php.ini</b>' ,
]) . ' .</ p >
< hr > ' ;
2018-06-27 14:25:19 +02:00
// REQUISITI PER IL CORRETTO FUNZIONAMENTO
include __DIR__ . '/requirements.php' ;
2017-08-04 16:28:16 +02:00
echo '
</ div > ' ;
// LICENZA
echo '
< div id = " step-2 " >
2017-09-10 14:35:41 +02:00
< p > '.tr(' OpenSTAManager è tutelato dalla licenza _LICENSE_ ! ' , [
'_LICENSE_' => 'GPL 3.0' ,
]) . ' </ p >
2017-08-04 16:28:16 +02:00
< div class = " row " >
2018-02-20 16:46:23 +01:00
< div class = " col-md-8 " >
2019-08-02 13:21:21 +02:00
< span class = " pull-left " title = " '.tr('Visiona e accetta la licenza per proseguire').' " > '.tr(' Accetti la licenza GPLv3 di OpenSTAManager ? ').' *</ span >
2017-08-04 16:28:16 +02:00
</ div >
2018-02-20 16:46:23 +01:00
< form class = " col-md-4 " >
2017-08-04 16:28:16 +02:00
< input type = " checkbox " id = " agree " name = " agree " data - parsley - required = " true " >
2017-09-04 12:02:29 +02:00
< label for = " agree " > '.tr(' Ho visionato e accetto ').' .</ label >
2017-08-04 16:28:16 +02:00
</ form >
</ div >
< hr >
< textarea class = " form-control autosize " rows = " 15 " readonly > '.file_get_contents(' LICENSE ').' </ textarea >< br >
2017-09-04 12:02:29 +02:00
< a class = " pull-left " href = " https://www.gnu.org/licenses/translations.en.html#GPL " target = " _blank " > [ '.tr(' Versioni tradotte ').' ] </ a >< br >< br >
2017-08-04 16:28:16 +02:00
</ div > ' ;
$host = ! empty ( $db_host ) ? $db_host : '' ;
$username = ! empty ( $db_username ) ? $db_username : '' ;
$password = ! empty ( $db_password ) ? $db_password : '' ;
$name = ! empty ( $db_name ) ? $db_name : '' ;
// PARAMETRI
echo '
< div id = " step-3 " >
2021-01-05 17:59:22 +01:00
< a href = " https://www.openstamanager.com/contattaci/ " target = " _blank " >< img class = " pull-right " width = " 32 " src = " '. $img .'/help.png " alt = " '.tr('Aiuto').' " title = " '.tr('Contatta il nostro help-desk').' " /></ a >
2017-08-04 16:28:16 +02:00
2017-09-04 12:02:29 +02:00
< p > '.tr(' Non hai ancora configurato OpenSTAManager ').' .</ p >
2017-09-10 14:35:41 +02:00
< p >< small class = " help-block " > '.tr(' Configura correttamente il software con i seguenti parametri ( modificabili successivamente dal file _FILE_ ) ' , [
'_FILE_' => '<b>config.inc.php</b>' ,
2019-08-02 13:21:21 +02:00
]) . ' </ small ></ p >
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
< hr > ' ;
2017-08-04 16:28:16 +02:00
// Form dei parametri
echo '
2018-07-03 11:12:32 +02:00
< form action = " ?action=updateconfig&firstuse=true " method = " post " id = " config-form " >
2019-08-02 13:21:21 +02:00
< input type = " hidden " name = " lang " value = " '.trans()->getCurrentLocale().' " >
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
< h4 > '.tr(' Formato date ').' </ h4 >
< div class = " row " >
< div class = " col-md-4 " >
{[ " type " : " text " , " label " : " '.tr('Formato data lunga').' " , " name " : " timestamp_format " , " value " : " d/m/Y H:i " , " required " : 1 ]}
</ div >
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
< div class = " col-md-4 " >
{[ " type " : " text " , " label " : " '.tr('Formato data corta').' " , " name " : " date_format " , " value " : " d/m/Y " , " required " : 1 ]}
</ div >
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
< div class = " col-md-4 " >
{[ " type " : " text " , " label " : " '.tr('Formato orario').' " , " name " : " time_format " , " value " : " H:i " , " required " : 1 ]}
</ div >
</ div >
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
< small > '.tr(' I formati sono impostabili attraverso lo standard previsto da PHP : _LINK_ ' , [
'_LINK_' => '<a href="https://www.php.net/manual/en/function.date.php#refsect1-function.date-parameters">https://www.php.net/manual/en/function.date.php#refsect1-function.date-parameters</a>' ,
]) . ' .</ small >
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
< hr > ' ;
2019-09-27 13:14:32 +02:00
if ( ! extension_loaded ( 'intl' )) {
2019-08-02 13:21:21 +02:00
$list = [
[
'id' => 'comma' ,
'text' => tr ( 'Virgola' ),
],
[
'id' => 'dot' ,
'text' => tr ( 'Punto' ),
],
];
echo '
< h4 > '.tr(' Formato numeri ').' </ h4 >
< div class = " row " >
< div class = " col-md-6 " >
{[ " type " : " select " , " label " : " '.tr('Separatore dei decimali').' " , " name " : " decimal_separator " , " value " : " comma " , " values " : '.json_encode($list).' , " required " : 1 ]}
</ div >
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
< div class = " col-md-6 " >
{[ " type " : " select " , " label " : " '.tr('Separatore delle migliaia').' " , " name " : " thousand_separator " , " value " : " dot " , " values " : '.json_encode($list).' ]}
</ div >
</ div >
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
< small > '.tr("Si consiglia l' abilitazione dell ' estensione _EXT_ di PHP " , [
'_EXT_' => 'intl' ,
]) . ' .</ small >
2020-09-07 15:04:06 +02:00
2019-08-02 13:21:21 +02:00
< hr > ' ;
}
echo '
< h4 > '.tr(' Database ').' </ h4 >
2017-08-04 16:28:16 +02:00
< div class = " row " > ' ;
// db_host
echo '
2018-02-22 09:44:26 +01:00
< div class = " col-md-12 " >
2019-08-02 13:21:21 +02:00
{[ " type " : " text " , " label " : " '.tr('Host del database').' " , " name " : " db_host " , " placeholder " : " '.tr('Host').' " , " value " : " '. $host .' " , " help " : " '.tr('Esempio').': localhost " , " show-help " : 0 , " required " : 1 ]}
2017-08-04 16:28:16 +02:00
</ div >
</ div >
< div class = " row " > ' ;
// db_username
echo '
2018-02-20 16:46:23 +01:00
< div class = " col-md-4 " >
2019-08-02 13:21:21 +02:00
{[ " type " : " text " , " label " : " '.tr( " Username dell 'utente MySQL").' " , " name " : " db_username " , " placeholder " : " '.tr(' Username ').' " , " value " : " '.$username.' " , " help " : " '.tr(' Esempio ').' : root " , " show - help " : 0, " required " : 1 ]}
2017-08-04 16:28:16 +02:00
</ div > ' ;
// db_password
echo '
2018-02-20 16:46:23 +01:00
< div class = " col-md-4 " >
2019-08-02 13:21:21 +02:00
{[ " type " : " password " , " label " : " '.tr( " Password dell 'utente MySQL").' " , " name " : " db_password " , " placeholder " : " '.tr(' Password ').' " , " value " : " '.$password.' " , " help " : " '.tr(' Esempio ').' : mysql " , " show - help " : 0 ]}
2017-08-04 16:28:16 +02:00
</ div > ' ;
// db_name
echo '
2018-02-20 16:46:23 +01:00
< div class = " col-md-4 " >
2019-08-02 13:21:21 +02:00
{[ " type " : " text " , " label " : " '.tr('Nome del database').' " , " name " : " db_name " , " placeholder " : " '.tr('Database').' " , " value " : " '. $name .' " , " help " : " '.tr('Esempio').': openstamanager " , " show-help " : 0 , " required " : 1 ]}
2017-08-04 16:28:16 +02:00
</ div >
</ div > ' ;
echo '
<!-- PULSANTI -->
< div class = " row " >
< div class = " col-md-4 " >
2017-09-04 12:02:29 +02:00
< span >*< small >< small > '.tr(' Campi obbligatori ').' </ small ></ small ></ span >
2017-08-04 16:28:16 +02:00
</ div >
2017-08-28 16:53:14 +02:00
< div class = " col-md-4 text-right " >
< button type = " button " id = " test " class = " btn btn-warning btn-block " >
2017-09-04 12:02:29 +02:00
< i class = " fa fa-file-text " ></ i > '.tr(' Testa il database ').'
2017-08-28 16:53:14 +02:00
</ button >
</ div >
< div class = " col-md-4 text-right " >
2018-06-27 18:58:50 +02:00
< button type = " submit " id = " install " class = " btn btn-success btn-block " >
2017-09-04 12:02:29 +02:00
< i class = " fa fa-check " ></ i > '.tr(' Installa ').'
2017-08-04 16:28:16 +02:00
</ button >
</ div >
</ div >
</ form >
</ div >
</ div >
</ div >
</ div > ' ;
}
2018-06-26 09:41:43 +02:00
include_once App :: filepath ( 'include|custom|' , 'bottom.php' );
2017-08-04 16:28:16 +02:00
2024-01-15 15:30:45 +01:00
exit ;