public function cancella() { foreach (TitoloPersonale::filtra([['titolo', $this->id]]) as $t) { $t->cancella(); } parent::cancella(); }
public static function scadenzame($volontario) { global $db; $q = $db->prepare("\n SELECT \n id \n FROM \n titoliPersonali \n WHERE \n volontario = :volontario \n AND\n titolo BETWEEN :min AND :max\n AND \n fine > :oggi \n AND\n fine <= :limite\n "); $oggi = time(); $limite = strtotime("+15 days"); $pat1 = 2700; $pat2 = 2709; $q->bindParam(':oggi', $oggi, PDO::PARAM_INT); $q->bindParam(':min', $pat1, PDO::PARAM_INT); $q->bindParam(':max', $pat2, PDO::PARAM_INT); $q->bindParam(':limite', $limite, PDO::PARAM_INT); $q->bindParam(':volontario', $volontario, PDO::PARAM_INT); $q->execute(); $t = []; while ($r = $q->fetch(PDO::FETCH_NUM)) { $t[] = TitoloPersonale::id($r[0]); } return $t; }
function cronjobSettimanale() { global $log, $db; $ok = true; cronjobEsegui("Invio reminder patenti CRI in scadenza nei prossimi 15gg", function () { $patenti = TitoloPersonale::inScadenza(2700, 2709, 15); // Minimo id titolo, Massimo id titolo, Giorni $n = 0; $giaInsultati = []; foreach ($patenti as $patente) { $_v = $patente->volontario(); if (in_array($_v->id, $giaInsultati)) { continue; // Il prossimo... } $giaInsultati[] = $_v->id; $m = new Email('patenteScadenza', 'Avviso patente CRI in scadenza'); $m->a = $_v; $m->_NOME = $_v->nome; $m->_SCADENZA = date('d-m-Y', $patente->fine); $m->invia(); $n++; } return "Inviate {$n} notifiche di scadenza patente"; }, $log, $ok); cronjobEsegui("Invio reminder patenti civili in scadenza nei prossimi 15gg", function () { $patenti = TitoloPersonale::inScadenza(70, 77, 15); // Minimo id titolo, Massimo id titolo, Giorni $n = 0; $giaInsultati = []; foreach ($patenti as $patente) { $_v = $patente->volontario(); if (in_array($_v->id, $giaInsultati)) { continue; // Il prossimo... } $giaInsultati[] = $_v->id; $m = new Email('patenteScadenzaCivile', 'Avviso patente Civile in scadenza'); $m->a = $_v; $m->_NOME = $_v->nome; $m->_SCADENZA = date('d-m-Y', $patente->fine); $m->invia(); $n++; } return "Inviate {$n} notifiche di scadenza patente civili"; }, $log, $ok); cronjobEsegui("Invio del riepilogo per i presidenti", function () { $n = 0; foreach (Comitato::elenco() as $comitato) { $a = count($comitato->appartenenzePendenti()); $b = count($comitato->titoliPendenti()); $c = count($comitato->fototesserePendenti()); $z = $a + $b + $c; if ($z == 0) { continue; } foreach ($comitato->volontariPresidenti() as $presidente) { $m = new Email('riepilogoPresidente', "Promemoria: Ci sono {$c} azioni in sospeso"); $m->a = $presidente; $m->_NOME = $presidente->nomeCompleto(); $m->_COMITATO = $comitato->nomeCompleto(); $m->_APPPENDENTI = $a; $m->_TITPENDENTI = $b; $m->_FOTPENDENTI = $c; $m->invia(); $n++; } } return "Inviati {$n} promemoria ai presidenti"; }, $log, $ok); cronjobEsegui("Invio reminder anniversario riserva a breve", function () { $n = 0; foreach (Riserva::inScadenza() as $r) { $n++; $m = new Email('promemoriaScadenzaRiserva', "Promemoria: Riserva in scadenza tra pochi giorni"); $m->a = $r->volontario(); $m->_NOME = $r->volontario()->nome; $m->_SCADENZA = date('d-m-Y', $r->fine); $m->invia(); } return "Notificate {$n} riserve in scadenza"; }, $log, $ok); cronjobEsegui("Invio reminder scadenza estensione a breve", function () { $n = 0; foreach (Estensione::inScadenza() as $e) { $n++; $m = new Email('promemoriaScadenzaEstensione', "Promemoria: Estensione in scadenza tra pochi giorni"); $m->a = $e->volontario(); $m->_NOME = $e->volontario()->nome; $m->_COMITATO = $e->appartenenza()->comitato()->nomeCompleto(); $m->_SCADENZA = date('d-m-Y', $e->appartenenza()->fine); $m->invia(); } return "Notificate {$n} estensioni in scadenza"; }, $log, $ok); cronjobEsegui("Controllo aspiranti, promemoria e cancellazione", function () use($db) { $n = $c = 0; $query = "\n SELECT aspiranti.utente,\n COUNT(corsibase.geo),\n aspiranti.id\n FROM aspiranti, corsibase\n WHERE utente NOT IN (\n SELECT volontario\n FROM partecipazioniBase\n WHERE stato >= 10\n )\n AND ST_DISTANCE( corsibase.geo, aspiranti.geo ) < aspiranti.raggio\n AND corsibase.stato = 30\n AND corsibase.inizio >= UNIX_TIMESTAMP()\n GROUP BY aspiranti.utente\n "; $query = $db->query($query); while ($r = $query->fetch(PDO::FETCH_NUM)) { try { $u = Utente::id($r[0]); } catch (Errore $e) { $c++; $a = Aspirante::id($r[2]); $a->cancella(); continue; } $n++; $m = new Email('promemoriaCorsiBase', "Entra in CRI: Ci sono {$r[1]} Corsi Base vicino a te"); $m->a = $u; $m->_NOME = $u->nome; $m->_NUMERO = $r[1]; $m->accoda(); } return "Inviati {$n} promemoria ad Aspiranti, cancellati {$c} aspiranti invalidi"; }, $log, $ok); return $ok; }
<?php /** * (c)2015 Croce Rossa Italiana */ paginaAdmin(); caricaSelettore(); $t = Titolo::id($_GET['id']); $tp = TitoloPersonale::filtra([['titolo', $t], ['corso', true, OP_NNULL]]); ?> <script type="text/javascript"> function _aggiungicf(codiceFiscale) { $("#rimuovi").val($("#rimuovi").val() + "\n" + codiceFiscale); $("#rimuovi").focus(); } </script> <?php if (isset($_GET['tot'])) { ?> <div class="alert alert-info"> <i class="icon-info-sign"></i> <strong>Sono stati aggiunti o rimossi n. <?php echo (int) $_GET['tot']; ?> elementi.</strong> </div>
<h3><i class="icon-wrench muted"></i> Manutenzione titoli</h3> <pre> <code> Unione titoli doppioni: <?php $titoli = Titolo::elenco(); $eseguiti = 0; $nDoppioni = 0; echo "Start manutenzione titoli:<br/>"; foreach ($titoli as $t) { $ripetuto = Titolo::filtra([['nome', $t->nome]]); if (count($ripetuto) > 1) { $eseguiti++; echo "Titolo doppione {$t->id}: {$t->nome} <br />"; // Prendo il secondo e vedo se esistono titoli personali $personali = TitoloPersonale::filtra([['titolo', $ripetuto[1]]]); foreach ($personali as $personale) { echo "Sostituisco titolo {$ripetuto[1]->id} con {$ripetuto[0]->id} <br />"; $personale->titolo = $ripetuto[0]; } echo "Cancellazione di {$ripetuto[1]->id} <br/>"; $ripetuto[1]->cancella(); } } $fine = time(); ?> Eseguite <strong><?php echo $eseguiti; ?> </strong> riparazioni in <strong><?php echo $fine - $inizio;
<td colspan="7" class="grassetto"> <?php echo $comitato->nomeCompleto(); ?> <span class="label label-warning"> <?php echo count($t); ?> </span> </td> </tr> <?php foreach ($t as $v) { $_v = $v->volontario(); $t = TitoloPersonale::id($v->titolo); $t = Titolo::id($t->titolo()); ?> <tr> <td><?php echo $_v->cognome; ?> </td> <td><?php echo $_v->nome; ?> </td> <td><?php echo $t->nome; ?> </td>
$anno = $_GET['anno']; if ($anno > (int) $questanno) { redirect('us.quoteNo.ordinarii'); } } foreach ($c->quoteNo($anno, MEMBRO_ORDINARIO) as $v) { $i++; $excel->aggiungiRiga([$i, $v->nome, $v->cognome, date('d/m/Y', $v->dataNascita), $v->comuneNascita, $v->provinciaNascita, $v->codiceFiscale, $v->indirizzo, $v->civico, $v->comuneResidenza, $v->CAPResidenza, $v->provinciaResidenza, $v->email, $v->emailServizio, $v->cellulare, $v->cellulareServizio, ($_di = $v->ingresso()) ? $_di->format('d/m/Y') : $nessuna_data]); } $excel->genera("Ordinari quota non pagata {$c->nome}.xls"); } elseif (isset($_GET['mass'])) { $f = $_GET['t']; $f = new Titolo($f); $volontari = $c->ricercaMembriTitoli([$f]); foreach ($volontari as $v) { $titolo = TitoloPersonale::filtra([['volontario', $v], ['titolo', $f]]); $titolo = $titolo[0]; $i++; $excel->aggiungiRiga([$i, $v->nome, $v->cognome, date('d/m/Y', $v->dataNascita), $v->comuneNascita, $v->provinciaNascita, $v->codiceFiscale, $v->email, $v->emailServizio, $v->cellulare, $v->cellulareServizio, $f->nome, $titolo->inizio()->format("d/m/Y"), $titolo->luogo, $titolo->fine()->format("d/m/Y"), $titolo->codice, ($_di = $v->ingresso()) ? $_di->format('d/m/Y') : $nessuna_data]); } $excel->genera("Risultati in {$c->nomeCompleto()}.xls"); } elseif (isset($_GET['riserva'])) { foreach ($c->riserve() as $r) { if ($r->attuale()) { $i++; $excel->aggiungiRiga([$i, $v->nome, $v->cognome, date('d/m/Y', $v->dataNascita), $v->comuneNascita, $v->provinciaNascita, $v->codiceFiscale, $v->indirizzo, $v->civico, $v->comuneResidenza, $v->CAPResidenza, $v->provinciaResidenza, date('d/m/Y', $r->inizio), date('d/m/Y', $r->fine), $r->protNumero, date('d/m/Y', $r->protData), $r->motivo]); } } $excel->genera("Volontari riserva {$c->nome}.xls"); } elseif (isset($_GET['riserveold'])) { foreach ($c->riserve() as $r) {
<?php /* * ©2013 Croce Rossa Italiana */ paginaPrivata(); controllaParametri(array('id')); $id = $_GET['id']; $u = Utente::id($id); $t = TitoloPersonale::filtra([['volontario', $u]]); ?> <!--Visualizzazione e modifica anagrafica utente--> <div class="row-fluid"> <div class="span6"> <!--Visualizzazione e modifica avatar utente--> <div class="span12"> <h2><i class="icon-edit muted"></i> Anagrafica</h2> </div> <div class="span12 allinea-centro"> <img src="<?php echo $u->avatar()->img(20); ?> " class="img-polaroid" /> <br/><br/> </div> <form class="form-horizontal" action="?p=presidente.utente.modifica.ok&t=<?php echo $id; ?> " method="POST"> <hr /> <div class="control-group">
<?php /* * ©2014 Croce Rossa Italiana */ paginaPrivata(); controllaParametri(array('id')); $t = $_GET['id']; $t = TitoloPersonale::id($t); $v = $t->volontario(); $tipo = $t->titolo()->tipo; if ($v->modificabileDa($me) || $me == $v->id) { $t->cancella(); } else { redirect('errore.permessi'); } if (isset($_GET['pre'])) { redirect('presidente.utente.visualizza&id=' . $v->id); } else { redirect('utente.titoli&t=' . $tipo); }
foreach ($me->appartenenzePendenti() as $app) { $attenzione = true; ?> <div class="alert alert-block"> <h4><i class="icon-time"></i> In attesa di conferma</h4> <p>La tua appartenenza a <strong><?php echo $app->comitato()->nomeCompleto(); ?> </strong> attende conferma.</p> <p>Successivamente riceverai una email di notifica e potrai partecipare ai servizi del comitato.</p> </div> <?php } $h = 0; foreach ($patenti = TitoloPersonale::scadenzame($me) as $patente) { if ($h != 1) { ?> <div class="alert alert-error"> <h4><i class="icon-warning-sign"></i> Patente in scadenza</h4> <p>La tua <strong>PATENTE CRI</strong> scadrà il <strong><?php echo date('d-m-Y', $patente->fine); ?> </strong></p> </div> <?php $h = 1; } } /* Utente in riserva */ if ($me->inRiserva()) {
public function cancella() { // 1. Cancella il mio avatar $this->avatar()->cancella(); Avatar::cancellaTutti([['utente', $this->id]]); // 2. Cancella le mie appartenenze ai gruppi Appartenenza::cancellaTutti([['volontario', $this->id]]); // 3. Cancella le mie partecipazioni Partecipazione::cancellaTutti([['volontario', $this->id]]); // 4. Elimina le autorizzazioni che mi sono state chieste Autorizzazione::cancellaTutti([['volontario', $this->id]]); // 5. Elimina tutte le delegazioni che mi sono associate Delegato::cancellaTutti([['volontario', $this->id]]); // 6. Riassegna le Aree al primo presidente a salire l'albero foreach ($this->areeDiResponsabilita() as $a) { $a->responsabile = $a->comitato()->primoPresidente(); } // 7. Commenti lasciati in giro Commento::cancellaTutti([['volontario', $this->id]]); // 8. Gruppi di cui sono referente Gruppo::cancellaTutti([['referente', $this->id]]); // 9. Gruppi di cui faccio parte AppartenenzaGruppo::cancellaTutti([['volontario', $this->id]]); // 10. Estensioni mie Estensione::cancellaTutti([['volontario', $this->id]]); // 10. Mie Riserve Riserva::cancellaTutti([['volontario', $this->id]]); // 11. Mie reperibilita' Reperibilita::cancellaTutti([['volontario', $this->id]]); // 13. Titoli personali TitoloPersonale::cancellaTutti([['volontario', $this->id]]); // 14. PartecipazioniBase PartecipazioneBase::cancellaTutti([['volontario', $this->id]]); // 15. Provvedimenti Provvedimento::cancellaTutti([['volontario', $this->id]]); // 16. Aspirante Aspirante::cancellaTutti([['utente', $this->id]]); // 17. Attivita di cui sono referente foreach (Attivita::filtra([['referente', $this->id]]) as $a) { $a->referente = $a->comitato() ? $a->comitato()->primoPresidente() : null; } // 18. Corsi base cui sono direttore foreach (CorsoBase::filtra([['direttore', $this->id]]) as $c) { $a->direttore = $a->organizzatore() ? $a->organizzatore()->primoPresidente() : null; } // 19. Coturni Coturno::cancellaTutti([['volontario', $this->id]]); // 20. Dimissioni Dimissione::cancellaTutti([['volontario', $this->id]]); // 21. Documenti Documento::cancellaTutti([['volontario', $this->id]]); // 22. Fototessere Fototessera::cancellaTutti([['utente', $this->id]]); // 23. Privacy Privacy::cancellaTutti([['volontario', $this->id]]); // 24. Richiesta tesserino TesserinoRichiesta::cancellaTutti([['volontario', $this->id]]); parent::cancella(); }
/** * Restituisce elenco volontari in possesso di un dato titolo * @param $titoli Array di elementi Titolo */ public function ricercaMembriTitoli($titoli = [], $stato = MEMBRO_ESTESO) { $daFiltrare = $this->membriAttuali($stato); foreach ($titoli as $titolo) { $filtrato = []; foreach ($daFiltrare as $volontario) { if ($t = TitoloPersonale::filtra([['titolo', $titolo->id], ['volontario', $volontario]])) { if ($t[0]->confermato()) { $filtrato[] = $volontario; } } } $daFiltrare = $filtrato; } return $daFiltrare; }
$totale++; echo 'Anagrafica ID:[' . $_v->id . '] senza stato -> provvedo alla rimozione di ' . $_v->codiceFiscale . ' ' . $_v->nome . ' ' . $_v->cognome . '<br>'; $f = TitoloPersonale::filtra([['volontario', $_v->id]]); foreach ($f as $_f) { $_f->cancella(); } $_v->cancella(); } } } if (isset($_GET['contatti'])) { echo '<br><strong>Avviata procedura di pulizia per mancanza contatti</strong><br><br>'; $v = Volontario::elenco(); foreach ($v as $_v) { $appartenenze = $_v->numAppartenenzeTotali(MEMBRO_DIMESSO); if ($appartenenze == 0 && !$_v->email) { $totale++; echo 'Anagrafica ID:[' . $_v->id . '] senza contatti -> provvedo alla rimozione di ' . $_v->codiceFiscale . ' ' . $_v->nome . ' ' . $_v->cognome . '<br>'; $f = TitoloPersonale::filtra([['volontario', $_v->id]]); foreach ($f as $_f) { $_f->cancella(); } $_v->cancella(); } } } echo '<br><strong>Sono state cancellate ' . $totale . ' persone</strong>'; ?> </code> </pre>
continue; } // Ok, aggiungi. $a = new TitoloPersonale(); $a->volontario = $v->id; $a->titolo = $t->id; $a->inizio = strtotime($_POST['inizio']); $a->fine = $_POST['fine'] ? strtotime($_POST['fine']) : null; $a->pConferma = $_POST['pConferma'] ? $_POST['pConferma'] : $me->id; $a->tConferma = time(); $a->luogo = $_POST['luogo']; $a->corso = maiuscolo($_POST['corso']); $tot++; } } else { // Rimozione foreach ($cfs as $cf) { // 1. Controlla che esista la persona $v = Utente::by('codiceFiscale', $cf); if (!$v) { continue; } // 2. Controlla che non abbia gia' il titolo if ($a = TitoloPersonale::filtra([['titolo', $t->id], ['volontario', $v->id]])) { $a = $a[0]; $a->cancella(); $tot++; } } } redirect("admin.titolo.volontari&id={$t->id}&tot={$tot}");
<?php /* * ©2013 Croce Rossa Italiana */ paginaApp([APP_SOCI, APP_PRESIDENTE]); controllaParametri(array('id'), 'presidente.titoli&err'); $id = $_GET['id']; $t = TitoloPersonale::id($id); $v = $t->volontario(); if (!$v->modificabileDa($me)) { redirect('presidente.titoli&err'); } if (isset($_GET['si'])) { $t->tConferma = time(); $t->pConferma = $me->id; $m = new Email('confermatitolo', 'Conferma titolo: ' . $t->titolo()->nome); $m->da = $me; $m->a = $t->volontario(); $m->_NOME = $t->volontario()->nome; $m->_TITOLO = $t->titolo()->nome; $m->invia(); } else { $m = new Email('negazionetitolo', 'Negazione titolo: ' . $t->titolo()->nome); $m->da = $me; $m->a = $t->volontario(); $m->_NOME = $t->volontario()->nome; $m->_TITOLO = $t->titolo()->nome; $m->invia(); $t->cancella(); }