Ejemplo n.º 1
0
/**
 * Gestore amichevole degli errori
 * @see http://www.php.net/manual/en/function.set-error-handler.php
 */
function gestore_errori($livello, $messaggio, $file = 'Nessun file specificato', $linea = 0, $contesto = [])
{
    global $_id_richiesta, $me, $sessione, $conf;
    // Carica MErrore anche se l'autoloading e' stato disabilitato
    _gaia_autoloader('MErrore');
    // Ignora gli errori poco importanti
    if ($livello > ERRORIAMICHEVOLI_MINIMO) {
        return true;
    }
    try {
        $e = new MErrore();
    } catch (Exception $e) {
        // Non riuscito, fallback alla modalita' classica...
        gestione_errori_fallback($livello, $messaggio, $file, $linea, $contesto);
        return true;
    }
    // Genera ID richiesta
    if (!$_id_richiesta) {
        $_id_richiesta = md5(microtime() . rand(500, 999));
    }
    $codice = sha1(microtime() . rand(10000, 99999));
    $e->update(['codice' => $codice, 'richiesta' => $_id_richiesta, 'livello' => $livello, 'timestamp' => (int) time(), 'messaggio' => $messaggio, 'file' => $file, 'linea' => (int) $linea, 'ambiente' => ['server' => $_SERVER, 'get' => $_GET, 'post' => $_POST], 'sessione' => $sessione->id, 'utente' => $me->id]);
    // Salta redirect nel caso di modalita' debug
    if ($conf['debug']) {
        return false;
    }
    // Eventualmente redirige alla pagina errore fatale
    if ($livello == E_ERROR || $livello == E_USER_ERROR) {
        redirect("errore.fatale&errore={$e}");
    }
    return true;
}
Ejemplo n.º 2
0
function cronjobGiornaliero()
{
    global $log, $db, $cache;
    $ok = true;
    /* === 0. PERSISTE LA CACHE SU DISCO */
    cronjobEsegui("Persistere la cache di Redis su disco", function () use($cache) {
        if ($cache) {
            $cache->save();
        }
        return true;
    }, $log, $ok);
    cronjobEsegui("Cancellare file scaduti da disco e database", function () {
        $n = 0;
        foreach (File::scaduti() as $f) {
            $f->cancella();
            $n++;
        }
        return "Cancellati {$n} file scaduti";
    }, $log, $ok);
    cronjobEsegui("Autorizzare estensioni dopo 30gg, con notifica ai volontari", function () {
        $n = 0;
        foreach (Estensione::daAutorizzare() as $e) {
            $e->auto();
            $n++;
        }
        return "Concesse {$n} estensioni";
    }, $log, $ok);
    cronjobEsegui("Terminare estensioni", function () {
        $n = 0;
        foreach (Estensione::daChiudere() as $e) {
            $e->termina();
            $n++;
        }
        return "Chiuse {$n} estensioni";
    }, $log, $ok);
    cronjobEsegui("Autorizzare trasferimenti dopo 30gg, notifica e chiusura sospesi e turni", function () {
        $n = 0;
        foreach (Trasferimento::daAutorizzare() as $t) {
            $t->auto();
            $n++;
        }
        return "Autorizzati {$n} trasferimenti";
    }, $log, $ok);
    cronjobEsegui("Autorizzare riserve dopo 30gg", function () {
        $n = 0;
        foreach (Riserva::daAutorizzare() as $r) {
            $r->auto();
            $n++;
        }
        return "Autorizzate {$n} riserve";
    }, $log, $ok);
    cronjobEsegui("Pulitura e fix delle attività", function () {
        $n = 0;
        $n = Attivita::pulizia();
        return "Fix di {$n} attività";
    }, $log, $ok);
    cronjobEsegui("Rigenerazione albero dei comitati", function () {
        GeoPolitica::rigeneraAlbero();
        return true;
    }, $log, $ok);
    cronjobEsegui("Chiusura validazioni scadute", function () {
        Validazione::chiudi();
        return true;
    }, $log, $ok);
    cronjobEsegui("Rimozione errori vecchi di una settimana", function () {
        $n = MErrore::pulisci();
        return "Cancellati log di {$n} errori in database";
    }, $log, $ok);
    /****************************************************
     * MODULO FORMAZIONE
     ****************************************************/
    // Creo i certificati per i corsi superati
    cronjobEsegui("Cerca i corsi in stato da elaborare e genera i relativi certificati", function () {
        $n = Corso::chiudiCorsi();
        return "Generati ({$n}) certificati";
    }, $log, $ok);
    return $ok;
}
Ejemplo n.º 3
0
 /**
  * Cronjob: Cancella gli errori piu' vecchi di una settimana
  * @return int Numero di errori cancellati
  */
 public static function pulisci()
 {
     $limite = strtotime('-1 weeks');
     return MErrore::remove(['$or' => [['timestamp' => ['$exists' => false]], ['timestamp' => ['$lte' => $limite]]]])['n'];
 }
Ejemplo n.º 4
0
<?php

/**
 * (c)2014 Croce Rossa Italiana
 */
paginaAdmin();
$minimo = !empty($_GET['minimo']) ? (int) $_GET['minimo'] : 1;
$massimo = !empty($_GET['massimo']) ? (int) $_GET['massimo'] : ERRORIAMICHEVOLI_MINIMO;
$limite = !empty($_GET['limite']) ? (int) $_GET['limite'] : 500;
if (!empty($_GET['ricErr'])) {
    //ricerca su tutti gli errori appartenenti ad una richieste o sessione
    $errori = MErrore::find(['livello' => ['$gte' => $minimo, '$lte' => $massimo], '$or' => [['sessione' => $_GET['ricErr']], ['richiesta' => $_GET['ricErr']]]])->sort(['_id' => -1])->limit($limite);
} else {
    //ricerca su tutti gli errori
    $errori = MErrore::find(['livello' => ['$gte' => $minimo, '$lte' => $massimo]])->sort(['_id' => -1])->limit($limite);
}
?>

<div class="row-fluid">
	<div class="span7">

		<h3><i class="icon-list"></i> Log degli ultimi errori su Gaia</h3>
	</div>
	<div class="span5">
		<form action="index.php" method="GET">
			<input type="hidden" name="p" value="admin.errori.dettagli" />
			<div class="input-append">
				<input type="text" name="id" placeholder="Codice errore..." class="input-medium" required />
				<button type="submit" class="btn">
					<i class="icon-search"></i> Cerca per id o codice
				</button>
Ejemplo n.º 5
0
<?php

/**
 * (c)2014 Croce Rossa Italiana
 */
paginaAdmin();
try {
    $id = new MongoId($_GET['id']);
} catch (Exception $e) {
    $id = "unacosachenonesiste";
}
try {
    $errore = MErrore::findOne(['$or' => [['_id' => $id], ['codice' => $_GET['id']]]]);
} catch (Exception $e) {
    die("Non nel formato corretto.");
}
if (!$errore) {
    die("Errore non trovato.");
}
?>

<div class="row-fluid">
	<div class="span8">
		<h3><i class="icon-info-sign"></i> Dettagli del singolo errore</h3>
	</div>
	<div class="span4">
		<a class="btn btn-large btn-block" href="?p=admin.errori">
			<i class="icon-reply"></i> Torna indietro
		</a>
	</div>
</div>