mirror of
https://github.com/devcode-it/openstamanager.git
synced 2024-12-22 21:28:08 +01:00
0a911a877a
Aggiunta di un sistema standard per la gestione degli errori in caso di debug disattivato. Sostituzione di alcuni metodi della classe Database con il corrispettivo Eloquent.
244 lines
9.3 KiB
PHP
244 lines
9.3 KiB
PHP
<?php
|
|
|
|
include_once __DIR__.'/../../core.php';
|
|
|
|
$updateRate = 20;
|
|
$scriptValue = $updateRate * 5;
|
|
|
|
/*
|
|
* Aggiornamento tramite AJAX
|
|
*/
|
|
if (filter('action') == 'do_update') {
|
|
// Aggiornamento in progresso
|
|
if (Update::isUpdateAvailable()) {
|
|
$update = Update::getCurrentUpdate();
|
|
|
|
$result = Update::doUpdate($updateRate);
|
|
|
|
if (!empty($result)) {
|
|
// Aggiunta del messaggio generico riguardante l'aggiornamento
|
|
echo '
|
|
<script>
|
|
addVersion("'.$update['name'].'");
|
|
</script>';
|
|
|
|
if (is_array($result)) {
|
|
// Aggiunta del messaggio riguardante la conclusione dell'aggiornamento del database
|
|
if (!empty($update['sql']) && $result[1] == $result[2]) {
|
|
echo '
|
|
<script>
|
|
$("#progress .info").html($("#progress .info").html() + "<p> <i class=\"fa fa-check\"></i> '.tr('Aggiornamento del database (_FILENAME_)', [
|
|
'_FILENAME_' => '<i>'.$update['filename'].'.sql</i>',
|
|
]).'</p>");
|
|
</script>';
|
|
}
|
|
|
|
$rate = $result[1] - $result[0];
|
|
} elseif (!empty($update['script'])) {
|
|
// Aggiunta del messaggio riguardante la conclusione dello script
|
|
echo '
|
|
<script>
|
|
$("#progress .info").html($("#progress .info").html() + "<p> <i class=\"fa fa-check\"></i> '.tr('Esecuzione dello script di aggiornamento (_FILENAME_)', [
|
|
'_FILENAME_' => '<i>'.$update['filename'].'.php</i>',
|
|
]).'</p>");
|
|
</script>';
|
|
|
|
$rate = $scriptValue;
|
|
}
|
|
|
|
// Aumento della percentuale di completamento totale
|
|
if (!empty($rate)) {
|
|
echo '
|
|
<script>
|
|
addProgress('.$rate.');
|
|
</script>';
|
|
}
|
|
|
|
echo '
|
|
<script>
|
|
$("#result").load("index.php?action=do_update&firstuse='.$_GET['firstuse'].'");
|
|
</script>';
|
|
} else {
|
|
// Fallimento
|
|
echo '
|
|
<div class="alert alert-danger">
|
|
<i class="fa fa-times"></i> '.tr("Errore durante l'esecuzione dell'aggiornamento alla versione _VERSION_", [
|
|
'_VERSION_' => $update['version'],
|
|
]).'
|
|
</div>';
|
|
}
|
|
}
|
|
// Aggiornamento completato
|
|
elseif (Update::isUpdateCompleted()) {
|
|
Update::updateCleanup();
|
|
|
|
echo '
|
|
<p><strong>'.tr('Aggiornamento completato').'</strong> <i class="fa fa-smile-o"></i></p>
|
|
<script>
|
|
setPercent(100);
|
|
</script>';
|
|
|
|
// Istruzioni per la prima installazione
|
|
if ($_GET['firstuse'] == 'true') {
|
|
echo '
|
|
<p class="text-danger">'.tr("E' fortemente consigliato rimuovere i permessi di scrittura dal file _FILE_", [
|
|
'_FILE_' => '<b>config.inc.php</b>',
|
|
]).'.</p>';
|
|
}
|
|
|
|
echo '
|
|
<a class="btn btn-success btn-block" href="'.ROOTDIR.'">
|
|
<i class="fa fa-check"></i> '.tr('Continua').'
|
|
</a>';
|
|
}
|
|
|
|
exit();
|
|
} elseif (Update::isUpdateAvailable()) {
|
|
// Controllo se l'aggiornamento è in esecuzione
|
|
if (Update::isUpdateLocked() && filter('force') === null) {
|
|
$pageTitle = tr('Aggiornamento in corso!');
|
|
|
|
include_once App::filepath('include|custom|', 'top.php');
|
|
|
|
echo '
|
|
<div class="box box-center box-danger box-solid text-center">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title">'.tr('Aggiornamento in corso!').'</h3>
|
|
</div>
|
|
<div class="box-body">
|
|
<p>'.tr("E' attualmente in corso la procedura di aggiornamento del software, e pertanto siete pregati di attendere fino alla sua conclusione").'.</p>
|
|
<p>'.tr("Nel caso il problema persista, rivolgersi all'amministratore o all'assistenza ufficiale").'.</p>
|
|
<a class="btn btn-info" href="'.$rootdir.'/index.php"><i class="fa fa-repeat"></i> '.tr('Riprova').'</a>
|
|
</div>
|
|
</div>';
|
|
|
|
include_once App::filepath('include|custom|', 'bottom.php');
|
|
|
|
exit();
|
|
}
|
|
|
|
$firstuse = !$dbo->isInstalled() ? 'true' : 'false';
|
|
|
|
$button = !$dbo->isInstalled() ? tr('Installa!') : tr('Aggiorna!');
|
|
$pageTitle = !$dbo->isInstalled() ? tr('Installazione') : tr('Aggiornamento');
|
|
|
|
include_once App::filepath('include|custom|', 'top.php');
|
|
|
|
echo '
|
|
<div class="box box-center-large box-warning text-center">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title">'.(!$dbo->isInstalled() ? tr('Installazione') : tr('Aggiornamento')).'</h3>
|
|
</div>
|
|
<div class="box-body">';
|
|
if (!$dbo->isInstalled()) {
|
|
echo '
|
|
<p><strong>'.tr("E' la prima volta che avvii OpenSTAManager e non hai ancora installato il database").'.</strong></p>';
|
|
} else {
|
|
echo '
|
|
<p>'.tr("E' necessario aggiornare il database a una nuova versione").'.</p>';
|
|
}
|
|
echo '
|
|
<p>'.tr("Premi il tasto _BUTTON_ per procedere con l'".(!$dbo->isInstalled() ? tr('installazione') : tr('aggiornamento')).'!', [
|
|
'_BUTTON_' => '<b>"'.$button.'"</b>',
|
|
]).'</p>
|
|
<input type="button" class="btn btn-primary" value="'.$button.'" onclick="continue_update()" id="contine_button">
|
|
|
|
<script>
|
|
function continue_update(){
|
|
swal({
|
|
title: "'.(!$dbo->isInstalled() ? tr('Procedere con l\'installazione?') : tr('Procedere l\'aggiornamento?')).'",
|
|
text: "",
|
|
type: "warning",
|
|
showCancelButton: true,
|
|
confirmButtonClass: "btn btn-lg btn-success",
|
|
confirmButtonText: "'.tr('Procedi').'",
|
|
}).then(
|
|
function(){
|
|
$("#progress").show();
|
|
$("#result").load("index.php?action=do_update&firstuse='.$firstuse.'");
|
|
$("#contine_button").remove();
|
|
}, function(){});
|
|
}
|
|
</script>
|
|
|
|
<div id="progress">
|
|
<div class="progress">
|
|
<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">
|
|
<span>0%</span>
|
|
</div>
|
|
</div>
|
|
<hr>
|
|
<div class="box box-info text-center collapsed-box">
|
|
<div class="box-header with-border">
|
|
<h3 class="box-title"><a class="clickable" data-widget="collapse">'.tr('Log').'</a></h3>
|
|
<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 info text-left"></div>
|
|
</div>
|
|
</div>
|
|
<div id="result"></div>';
|
|
|
|
$total = 0;
|
|
$updates = Update::getTodoUpdates();
|
|
|
|
foreach ($updates as $update) {
|
|
if ($update['sql'] && (!empty($update['done']) || is_null($update['done']))) {
|
|
$queries = readSQLFile(DOCROOT.$update['directory'].$update['filename'].'.sql', ';');
|
|
$total += count($queries);
|
|
|
|
if (intval($update['done']) > 1) {
|
|
$total -= intval($update['done']) - 2;
|
|
}
|
|
}
|
|
|
|
if ($update['script']) {
|
|
$total += $scriptValue;
|
|
}
|
|
}
|
|
|
|
echo '
|
|
<script>
|
|
$(document).ready(function(){
|
|
$(".login-box").fadeOut();
|
|
|
|
count = '.count($updates).';
|
|
current = 0;
|
|
versions = [];
|
|
|
|
progress = 0;
|
|
total = '.$total.';
|
|
});
|
|
|
|
function addProgress(rate){
|
|
progress += rate;
|
|
percent = progress / total * 100;
|
|
percent = Math.round(percent);
|
|
percent = percent > 100 ? 100 : percent;
|
|
|
|
setPercent(percent);
|
|
}
|
|
|
|
function setPercent(percent){
|
|
$("#progress .progress-bar").width(percent + "%");
|
|
$("#progress .progress-bar span").text(percent + "%");
|
|
}
|
|
|
|
function addVersion(version){
|
|
if(versions.indexOf(version) === -1){
|
|
versions.push(version);
|
|
current += 1;
|
|
|
|
$("#progress .info").html($("#progress .info").html() + "<p><strong>'.tr('Aggiornamento _DONE_ di _TODO_ (_VERSION_)', [
|
|
'_DONE_' => '" + current + "',
|
|
'_TODO_' => '" + count + "',
|
|
'_VERSION_' => '" + version + "',
|
|
]).'</strong></p>");
|
|
}
|
|
}
|
|
</script>
|
|
</div>
|
|
</div>';
|
|
}
|