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; }
<?php /* * ©2013 Croce Rossa Italiana */ paginaApp([APP_SOCI, APP_PRESIDENTE]); $parametri = array('id', 'numprotocollo', 'dataprotocollo'); controllaParametri($parametri, 'presidente.trasferimento&err'); $t = $_POST['id']; $a = Trasferimento::id($t); $v = $a->volontario(); if (!$v->modificabileDa($me)) { redirect('errore.permessi&cattivo'); } if ($a->protData && $a->protNumero) { redirect('presidente.trasferimento&giaprot'); } $a->protNumero = $_POST['numprotocollo']; $protData = @DateTime::createFromFormat('d/m/Y', $_POST['dataprotocollo']); $protData = @$protData->getTimestamp(); $a->protData = $protData; try { $m = new Email('richiestaTrasferimentoprot', 'Richiesta trasferimento Protocollata: ' . $a->comitato()->nome); $m->a = $a->volontario(); $m->_NOME = $a->volontario()->nome; $m->_COMITATO = $a->comitato()->nomeCompleto(); $m->_TIME = $a->dataRichiesta()->format('d/m/Y'); $m->_NUM = $a->protNumero; $m->invia(); } catch (Exception $e) { }
?> <?php if (isset($_GET['comitato'])) { ?> <div class="alert alert-danger"> <i class="icon-ban-circle"></i> <strong>Errore date</strong>. Le date e gli orari inseriti non sono nel formato corretto. </div> <?php } ?> <?php $i = 0; foreach ($me->storico() as $app) { if ($app->attuale()) { $trasferimento = Trasferimento::by('appartenenza', $app->id); if ($app->stato == MEMBRO_PENDENTE) { redirect('errore.comitato'); $i = 1; } elseif ($trasferimento && $trasferimento->stato == TRASF_INCORSO) { ?> <div class="row-fluid"> <h2><i class="icon-warning-sign muted"></i> Impossibile inserire la propria disponiblità</h2> <div class="alert alert-error"> <div class="row-fluid"> <span class="span12"> <p>Ci dispiace ma non puoi inserire la tua disponibilità finchè il tuo trasferimento è pendente.</p> </span> </div> </div> </div>
foreach ($delegati as $delegato) { $delegato->fine = time(); } if ($estensione == EST_UNITA) { /* Estensioni dal comitato */ $est = Estensione::filtra([['cProvenienza', $t], ['stato', EST_INCORSO]]); foreach ($est as $este) { $este->nega($motivo); } /* Estensioni verso il comitato */ $appest = Appartenenza::filtra([['comitato', $t], ['stato', MEMBRO_EST_PENDENTE]]); foreach ($appest as $apest) { $apest->estensione()->nega($motivo); } /* Trasferimenti dal comitato */ $trasf = Trasferimento::filtra([['cProvenienza', $t], ['stato', TRASF_INCORSO]]); foreach ($trasf as $trasfe) { $trasfe->nega($motivo); } /* Trasferimenti verso il comitato */ $apptrasf = Appartenenza::filtra([['comitato', $t], ['stato', MEMBRO_TRASF_IN_CORSO]]); foreach ($apptrasf as $aptrasf) { $aptrasf->trasferimento()->nega($motivo); } $riserve = Riserva::filtra([['comitato', $t], ['stato', RISERVA_INCORSO]]); foreach ($riserve as $riserva) { $riserva->nega($motivo); } $t->principale = 0; $t->locale = $c; } elseif ($estensione == EST_LOCALE) {
foreach ($f as $_f) { if ($_f->stato == EST_OK || $_f->stato == EST_AUTO) { $_f->termina(); } elseif ($_f->stato == EST_INCORSO) { $_f->nega($motivo); } } $f = Riserva::filtra([['volontario', $v]]); foreach ($f as $_f) { if ($_f->stato == RISERVA_OK || $_f->stato == RISERVA_AUTO) { $_f->termina(); } elseif ($_f->stato == RISERVA_INCORSO) { $_f->nega($motivo); } } $f = Trasferimento::filtra([['volontario', $v]]); foreach ($f as $_f) { if ($_f->stato == TRASF_INCORSO) { $_f->nega($motivo); } } $p = Partecipazione::filtra([['volontario', $v]]); foreach ($p as $_p) { if ($_p->turno()->futuro() && $_p->turno()->attivita()->comitato() == $c->id) { $_p->cancella(); } } $f = Delegato::filtra([['volontario', $v]]); foreach ($f as $_f) { $_f->fine = $fine; }
public static function daAutorizzare() { $t = Trasferimento::filtra([['stato', TRASF_INCORSO]]); $r = []; $unmesefa = time() - MESE; foreach ($t as $_t) { if ($_t->appartenenza()->inizio < $unmesefa) { $r[] = $_t; } } return $r; }
/** * Dimette un volontario * @param $motivo, motivazione di dimissione * @param $info default NULL, informazioni aggiuntive sulla dimissione */ public function dimettiVolontario($motivo, $info = NULL, $chi) { $quando = time(); $v = $this->volontario(); $attuale = $v->appartenenzaAttuale(); $comitato = $attuale->comitato(); $motivazione = $conf['dimissioni'][$motivo]; $fine = time(); /* Avviso il volontario */ $m = new Email('dimissionevolontario', 'Dimissione Volontario: ' . $v->nomeCompleto()); $m->da = $chi; $m->a = $v; $m->_NOME = $v->nome; $m->_MOTIVO = $motivazione; $m->_INFO = $info; $m->invia(); /* Creo la dimissione */ $d = new Dimissione(); $d->volontario = $v->id; $d->appartenenza = $attuale; $d->comitato = $comitato; $d->motivo = $motivo; $d->info = $info; $d->tConferma = time(); $d->pConferma = $chi; /* Evitiamo di lasciare compiti a chi non è più in CRI */ $f = Area::filtra([['responsabile', $v]]); foreach ($f as $_f) { $_f->dimettiReferente(); } $f = Attivita::filtra([['referente', $v]]); foreach ($f as $_f) { $_f->referente = $comitato->unPresidente(); } $f = Autorizzazione::filtra([['volontario', $v]]); foreach ($f as $_f) { $_f->volontario = $comitato->unPresidente(); } $f = Gruppo::filtra([['referente', $v]]); foreach ($f as $_f) { $_f->referente = $comitato->unPresidente(); } $f = AppartenenzaGruppo::filtra([['volontario', $v]]); foreach ($f as $_f) { $_f->cancella(); } $f = Reperibilita::filtra([['volontario', $v]]); foreach ($f as $_f) { $_f->fine = $fine; } $f = Estensione::filtra([['volontario', $v]]); foreach ($f as $_f) { if ($_f->stato == EST_OK || $_f->stato == EST_AUTO) { $_f->termina(); } elseif ($_f->stato == EST_INCORSO) { $_f->nega($motivazione); } } $f = Riserva::filtra([['volontario', $v]]); foreach ($f as $_f) { if ($_f->stato == RISERVA_OK || $_f->stato == RISERVA_AUTO) { $_f->termina(); } elseif ($_f->stato == RISERVA_INCORSO) { $_f->nega($motivazione); } } $f = Trasferimento::filtra([['volontario', $v]]); foreach ($f as $_f) { if ($_f->stato == TRASF_INCORSO) { $_f->nega($motivazione); } } $p = Partecipazione::filtra([['volontario', $v]]); foreach ($p as $_p) { if ($_p->turno()->futuro() && $_p->turno()->attivita()->comitato() == $c->id) { $_p->cancella(); } } $f = Delegato::filtra([['volontario', $v]]); foreach ($f as $_f) { $_f->fine = $fine; } /* Chiudo l'appartenenza e declasso a persona */ $attuale->fine = $fine; $attuale->stato = MEMBRO_DIMESSO; $v->stato = PERSONA; $v->admin = null; return; }
<?php /* * ©2013 Croce Rossa Italiana */ paginaAdmin(); controllaParametri(array('a')); $a = $_GET['a']; $app = Appartenenza::id($a); $v = $app->volontario; foreach (Coturno::filtra([['appartenenza', $app]]) as $coturno) { $coturno->cancella(); } foreach (Dimissione::filtra([['appartenenza', $app]]) as $dimissioni) { $dimissioni->cancella(); } foreach (Estensione::filtra([['appartenenza', $app]]) as $estensione) { $estensione->cancella(); } foreach (Quota::filtra([['appartenenza', $app]]) as $quote) { $quote->cancella(); } foreach (Trasferimento::filtra([['appartenenza', $app]]) as $trasferimento) { $trasferimento->cancella(); } foreach (Riserva::filtra([['appartenenza', $app]]) as $riserva) { $riserva->cancella(); } $app->cancella(); redirect('presidente.utente.visualizza&id=' . $v);
/** * Cancella il comitato con tutte le sue dipendenze * @param comitato */ public function cancella() { /* Cancello aree e responsabili */ $aree = Area::filtra([['comitato', $this]]); foreach ($aree as $area) { $area->cancella(); } /* Cancello le attività */ $attivita = Attivita::filtra([['comitato', $this]]); foreach ($attivita as $att) { $turni = Turno::filtra([['attivita', $att]]); foreach ($turni as $turno) { $partecipazioni = Partecipazione::filtra([['turno', $turno]]); foreach ($partecipazioni as $partecipazione) { $autorizzazioni = Autorizzazione::filtra([['partecipazione', $partecipazione]]); foreach ($autorizzazioni as $autorizzazione) { $autorizzazione->cancella(); } $partecipazione->cancella(); } $coturni = Coturno::filtra([['turno', $turno]]); foreach ($coturni as $coturno) { $coturno->cancella(); } $turno->cancella(); } $mipiaci = Like::filtra([['oggetto', $att->oid()]]); foreach ($mipiaci as $mipiace) { $mipiace->cancella(); } $att->cancella(); } /* Cancello le dimissioni */ $dimissioni = Dimissione::filtra([['comitato', $this]]); foreach ($dimissioni as $dimissione) { try { $appartenenza = $dimissione->appartenenza(); $appartenenza->cancella(); } catch (Exception $e) { } $dimissione->cancella(); } /* Cancello le dimissioni */ $estensioni = Estensione::filtra([['cProvenienza', $this]]); foreach ($estensioni as $estensione) { try { $appartenenza = $estensione->appartenenza(); $appartenenza->cancella(); } catch (Exception $e) { } $estensione->cancella(); } /* Cancello i gruppi personali */ $appgruppi = AppartenenzaGruppo::filtra([['comitato', $this]]); foreach ($appgruppi as $appgruppo) { $appgruppo->cancella(); } /* Cancello reperibilità */ $reperibilita = Reperibilita::filtra([['comitato', $t]]); foreach ($reperibilita as $reperibile) { $reperibile->cancella(); } /* Cancello appartenenze */ $appartenenze = Appartenenza::filtra([['comitato', $this]]); foreach ($appartenenze as $appa) { $riserve = Riserva::filtra([['appartenenza', $appa]]); foreach ($riserve as $riserva) { $riserva->cancella(); } $estensioni = Estensione::filtra([['appartenenza', $appa]]); foreach ($estensioni as $estensione) { $estensione->cancella(); } $trasferimenti = Trasferimento::filtra([['appartenenza', $appa]]); foreach ($trasferimenti as $trasferimento) { $trasferimento->cancella(); } $appa->cancella(); } parent::cancella(); }
<?php /* * ©2013 Croce Rossa Italiana */ paginaPrivata(); controllaParametri(array('id'), 'presidente.trasferimento&err'); $f = $_GET['id']; $t = Trasferimento::id($f); $cin = $t->comitato(); $cout = Comitato::id($t->cProvenienza); $app = $me->appartenenzaAttuale(); /* Modificando questo, modificare anche utente.trasferimento.ok */ $p = new PDF('trasferimento', 'Trasferimento.pdf'); $p->_COMITATOOUT = $cout->locale()->nomeCompleto(); $p->_COMITATOIN = $cin->nomeCompleto(); $p->_COMITATOC = $cout->nomeCompleto(); $p->_NOME = $t->volontario()->nome; $p->_COGNOME = $t->volontario()->cognome; $p->_LUOGO = $t->volontario()->comuneNascita; $p->_DATA = date('d/m/Y', $t->volontario()->dataNascita); $p->_ANNOCRI = $t->volontario()->ingresso()->format('d/m/Y'); $p->_MOTIVO = $t->motivo; $p->_TIME = date('d/m/Y', $t->timestamp); $f = $p->salvaFile(); if ($sessione->inGenerazioneTrasferimento) { $sessione->inGenerazioneTrasferimento = null; try { /* Richiesta all'utente */ $m = new Email('richiestaTrasferimento', 'Richiesta trasferimento: ' . $t->comitato()->nome); $m->a = $me;
<?php /* * ©2013 Croce Rossa Italiana */ paginaPrivata(); richiediComitato(); $parametri = array('inputComitato', 'inputMotivo'); controllaParametri($parametri); $c = $_POST['inputComitato']; $gia = Trasferimento::filtra([['volontario', $me], ['stato', TRASF_INCORSO]]); if (!$c) { redirect('utente.trasferimento'); } if ($gia) { redirect('utente.trasferimento&gia'); } $m = $_POST['inputMotivo']; /* Cerco appartenenze al comitato specificato */ $f = Appartenenza::filtra([['volontario', $me], ['comitato', $c], ['stato', MEMBRO_VOLONTARIO]]); /* Se sono già appartenente *ora*, * restituisco errore */ foreach ($f as $app) { if ($app->attuale()) { redirect('utente.trasferimento&e'); break; } } /*Se non sono appartenente allora avvio la procedura*/ foreach ($me->storico() as $app) {
/** * Ritorna l'oggetto trasferimento relativo all'appartenenza * @return Trasferimento */ public function trasferimento() { return Trasferimento::by('appartenenza', $this); }
</div> <hr /> <table class="table table-striped table-bordered" id="tabellaUtenti"> <thead> <th>Nome</th> <th>Cognome</th> <th>Codice Fiscale</th> <th>Data Richiesta</th> <th>Comitato destinazione</th> <th>Azione</th> </thead> <?php $comitati = $me->comitatiApp([APP_SOCI, APP_PRESIDENTE]); foreach ($comitati as $comitato) { $t = Trasferimento::filtra([['stato', TRASF_INCORSO], ['cProvenienza', $comitato->id]]); foreach ($t as $_t) { $v = $_t->volontario(); ?> <tr> <td><?php echo $v->nome; ?> </td> <td><?php echo $v->cognome; ?> </td> <td><?php echo $v->codiceFiscale; ?>