public function calendarioAttivita(DT $inizio, DT $fine) { $t = []; foreach (Attivita::filtra([['pubblica', ATTIVITA_PUBBLICA]]) as $a) { $t[] = $a; } return $t; }
public function genera($attivita, $turno) { $att = Attivita::id($attivita); $turno = Turno::id($turno); $ref = Volontario::id($att->referente); $c = $att->comitato(); $name = '' . date('Ymd_THis', $turno->inizio) . '_' . $turno->id . '_.ics'; /* Strutturo il file */ $this->autore = $sessione->utente; $this->nome = $name; $this->mime = 'text/calendar; charset=utf-8; method=REQUEST'; /* Inserisco le informazioni */ $s = "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//Croce Rossa Italiana//Progetto GAIA//IT\nMETHOD:REQUEST\nBEGIN:VTIMEZONE\nTZID:Europe/Rome\nBEGIN:DAYLIGHT\nTZOFFSETFROM:+0100\nTZOFFSETTO:+0200\nTZNAME:CEST\nDTSTART:19700329T020000\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\nEND:DAYLIGHT\nBEGIN:STANDARD\nTZOFFSETFROM:+0200\nTZOFFSETTO:+0100\nTZNAME:CET\nDTSTART:19701025T030000\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nDTSTAMP:" . date('Ymd\\THis', time()) . "\nDTSTART;TZID=Europe/Rome:" . date('Ymd\\THis', $turno->inizio) . "\nDTEND;TZID=Europe/Rome:" . date('Ymd\\THis', $turno->fine) . "\nSUMMARY:" . $att->nome . ": " . $turno->nome . "\nLOCATION:" . $att->luogo . "\nUID:" . $turno->id . "\nDESCRIPTION:\nTurno organizzato da " . $c->nomeCompleto() . ",\ndettagli: " . strip_tags($att->descrizione) . "\nORGANIZER;CN=\"" . $ref->nomeCompleto() . "\":mailto:" . $ref->email . "\nEND:VEVENT\nEND:VCALENDAR\n"; file_put_contents($this->percorso(), utf8_encode($s)); }
<?php controllaParametri(['id', 'formattato'], 'attivita.gestione&err'); $a = Attivita::id($_POST['id']); paginaAttivita($a); $a->stato = ATT_STATO_OK; $a->luogo = $_POST['formattato']; $a->localizzaStringa($_POST['formattato']); redirect('attivita.modifica&id=' . $a->id);
<?php /* * ©2012 Croce Rossa Italiana */ paginaPrivata(); $id = $_GET['id']; $a = Attivita::id($id); ?> <hr /> <div class="row-fluid"> <div class="span3"> <?php menuVolontario(); ?> </div> <div class="span9"> <div class="row-fluid"> <div class="btn-group"> <a href="?p=attivita" class="btn btn-large"> <i class="icon-reply"></i> </a> <a href="?p=attivita" class="btn btn-large btn-success"> <i class="icon-ok"></i>
<?php /* * ©2014 Croce Rossa Italiana */ paginaAdmin(); controllaParametri(array('input'), 'admin.ricerca.attivita&err'); $attivita = Attivita::by('id', $_POST['input']); if ($attivita) { redirect('attivita.scheda&id=' . $attivita); } if (!$attivita) { $attivita = Attivita::filtra([['nome', "%{$_POST['input']}%", OP_LIKE]]); } if (!$attivita) { redirect('admin.ricerca.utenti&no'); } ?> <div class="row-fluid"> <div class="span12"> <div class="row-fluid"> <h2> <i class="icon-calendar muted"></i> Attività </h2> </div> <div class="row-fluid"> <div class="span12"> <table class="table table-striped table-bordered table-condensed" id="tabellaUtenti"> <thead> <th>Nome</th>
} else { /* Creo la dimissione */ $d = new Dimissione(); $d->volontario = $v->id; $d->appartenenza = $attuale; $d->comitato = $comitato; $d->motivo = $_POST['motivo']; $d->info = $_POST['info']; $d->tConferma = time(); $d->pConferma = $me; /* 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(); }
public static function pulizia() { $attivita = Attivita::elenco(); $eseguiti = 0; $nAttivita = 0; foreach ($attivita as $a) { $comitato = $a->comitato(); if ($comitato) { if (!$a->referente()) { $comitato = $a->comitato(); $presidente = $comitato->primoPresidente(); $a->referente = $presidente; $turni = Turno::filtra([['attivita', $a]]); foreach ($turni as $_t) { $part = Partecipazione::filtra([['turno', $_t]]); foreach ($part as $_p) { $aut = Autorizzazione::filtra([['partecipazione', $_p]]); foreach ($aut as $_a) { $_a->volontario = $presidente; } } } $eseguiti++; continue; } continue; } else { $turni = Turno::filtra([['attivita', $a]]); 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(); } $turno->cancella(); } $a->cancella(); $nAttivita++; } } $t = $eseguiti + $nAttivita; return $t; }
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 */ paginaPrivata(); caricaSelettore(); controllaParametri(array('id')); $a = Attivita::id($_GET['id']); paginaAttivita($a); if (!$a->haPosizione()) { redirect('attivita.localita&id=' . $a->id); } $del = $me->delegazioni(APP_ATTIVITA); $comitati = $me->comitatiDelegazioni(APP_ATTIVITA); $domini = $me->dominiDelegazioni(APP_ATTIVITA); ?> <form action="?p=attivita.modifica.ok" method="POST"> <input type="hidden" name="id" value="<?php echo $a->id; ?> " /> <div class="row-fluid"> <div class="span6"> <h2> <i class="icon-time muted"></i> Giorni e turni dell'attività </h2>
<?php paginaPrivata(); $a = $_GET['id']; $a = Attivita::id($a); ?> <div class="row-fluid"> <div class="span8 offset2"> <h3><i class="icon-warning-sign"></i> Quota non registrata</h3> <p><strong>Siamo spiacenti, non possiamo inoltrare la richiesta di partecipazione a questa attività.</strong></p> <p>Il Presidente del Comitato organizzatore ha scelto di limitare la possibilità partecipazione alle attività dello stesso Comitato ai Volontari aventi una Quota registrata nell'anno. Questo viene generalmente imposto per motivi assicurativi.</p> <p> <strong>Cosa puoi fare?</strong> <ul> <li><a href="javascript:history.go(-1);">Torna alla pagina dell'attività</a>;</li> <li>Se hai pagato la quota e questa non è stata registrata, rivolgiti al tuo Ufficio Soci o al tuo Presidente;</li> <li>Per qualsiasi altro dubbio, <a href="?p=utente.mail.nuova&id=<?php echo $a->comitato()->primoPresidente(); ?> ">contatta il Presidente del Comitato organizzatore</a>.</li> </ul> </p>
</div> <script type="text/javascript"> function initialize() { var opzioni = { zoom: 6, center: new google.maps.LatLng(41.9,12.4833333), mapTypeId: google.maps.MapTypeId.ROADMAP } var map = new google.maps.Map(document.getElementById("laMappa"), opzioni); var messaggio = [], marcatore = []; <?php $i = 0; $elenco = Attivita::elencoMappa(); foreach ($elenco as $a) { ?> messaggio.push(new google.maps.InfoWindow({ content: "<a href='https://gaia.cri.it/?p=attivita.scheda&id=<?php echo $a->id; ?> '><?php echo htmlentities($a->nome); ?> </a><br /><?php echo htmlentities($a->luogo); ?> " })); marcatore.push(new google.maps.Marker({
<?php /* * ©2013 Croce Rossa Italiana */ paginaAdmin(); set_time_limit(0); ?> <h3><i class="icon-wrench muted"></i> Manutenzione attività</h3> <pre> <code>Rimozione attività con dati incompleti: <?php $attivita = Attivita::elenco(); $eseguiti = 0; $nAutorizzazioni = 0; $nPartecipazioni = 0; $nTurni = 0; $nAttivita = 0; echo "Start manutenzione attività:<br/>"; foreach ($attivita as $a) { echo "Controllo attività {$a->id} <br />"; $comitato = $a->comitato(); if ($comitato) { if (!$a->referente()) { echo "Attività rotta: ", $a->nome; $comitato = $a->comitato(); echo " - ", $comitato->nomeCompleto(), " ID:", $comitato->oid(); $presidente = $comitato->primoPresidente(); echo " - Presidente: ", $presidente->nomeCompleto(); $a->referente = $presidente; $turni = Turno::filtra([['attivita', $a]]);
private function api_attivita_dettagli() { $this->richiedi(['id']); $me = $this->richiediLogin(); $a = Attivita::id($this->par['id']); $t = []; foreach ($a->turni() as $turno) { $t[] = $turno->toJSON($me); } array_merge($t, ['luogo' => $a->luogo, 'coordinate' => $a->coordinate(), 'puoPartecipare' => $a->puoPartecipare($me)]); return ['nome' => $a->nome, 'comitato' => $a->comitato()->toJSON(), 'descrizione' => $a->descrizione, 'referente' => ['id' => $a->referente()->id, 'nome' => $a->referente()->nomeCompleto(), 'numero' => $a->referente()->cellulare(), 'email' => $a->referente()->email()], 'luogo' => $a->luogo, 'coordinate' => $a->coordinate(), 'turni' => $t]; }
public function trasferisci($auto = false, $data = false) { if ($data) { $ora = $data; } else { $ora = time(); } $this->tConferma = $ora; if ($auto) { $this->stato = TRASF_AUTO; } else { global $sessione; $this->stato = TRASF_OK; $this->pConferma = $sessione->utente(); } $v = $this->volontario(); $a = $v->appartenenzaAttuale(); $c = $a->comitato(); /* Chiusura delle estensioni in corso*/ $e = Estensione::filtra([['volontario', $v], ['stato', EST_OK]]); foreach ($e as $_e) { $_e->termina(); } /* Chiudo eventuale riserva in corso*/ $r = Riserva::filtra([['volontario', $v], ['stato', RISERVA_OK]]); foreach ($r as $_r) { $_r->fine = $ora; $_r->stato = RISERVA_INT; } /* Chiudo tutto ciò che è legato all'appartenenza attuale */ // chiudo le deleghe su quel comitato $presidente = $c->primoPresidente(); $d = Delegato::filtra([['volontario', $v]]); foreach ($d as $_d) { if ($_d->attuale()) { $_d->fine = $ora; } } // chiudo le attività referenziate $att = Attivita::filtra([['referente', $v->id], ['comitato', $c->id]]); foreach ($att as $_att) { $_att->referente = $presidente->id; } // rimetto al presidente i gruppi $g = Gruppo::filtra([['referente', $v->id], ['comitato', $c->id]]); foreach ($g as $_g) { $_g->referente = $presidente->id; } // chiudo l'appartenenza ad un gruppo $ag = AppartenenzaGruppo::filtra([['volontario', $v->id], ['comitato', $c->id]]); foreach ($ag as $_ag) { $_ag->cancella(); } // chiudo le reperibilità $re = Reperibilita::filtra([['volontario', $v->id], ['comitato', $c->id]]); foreach ($re as $_re) { $_re->cancella(); } // chiudo le partecipazioni $p = Partecipazione::filtra([['volontario', $v->id]]); foreach ($p as $_p) { if ($_p->turno()->futuro()) { $_p->cancella(); } } /* Chiudo eventuale richiesta di tesserini o invalido l'attuale */ $motivo = "Trasferimento presso altro comitato"; $v->invalidaTesserino($motivo); /* Posso chiudere definitivamente la vecchia appartenenza */ $a = Appartenenza::id($a); $a->timestamp = $ora; $a->fine = $ora; $a->stato = MEMBRO_TRASFERITO; /* A questo punto rendo operativa la nuova appartenenza */ $nuovaApp = $this->appartenenza(); $nuovaApp->timestamp = $ora; $nuovaApp->stato = MEMBRO_VOLONTARIO; if (!$auto) { $nuovaApp->conferma = $sessione->utente()->id; } $nuovaApp->inizio = $ora; $nuovaApp->fine = PROSSIMA_SCADENZA; $destinatari = [$v, $presidente, $nuovaApp->comitato()->unPresidente()]; $m = new Email('richiestaTrasferimentook', 'Approvata richiesta trasferimento verso: ' . $nuovaApp->comitato()->nome); if (!$auto) { $m->da = $sessione->utente(); } $m->a = $destinatari; $m->_NOME = $nuovaApp->volontario()->nomeCompleto(); $m->_COMITATO = $nuovaApp->comitato()->nomeCompleto(); $m->_TIME = $this->dataRichiesta()->format('d/m/Y'); $m->accoda(); }
/** * 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(); }
public function termina() { $this->timestamp = time(); $this->stato = EST_CONCLUSA; $app = $this->appartenenza(); $app->stato = MEMBRO_EST_TERMINATA; $app->fine = time(); $c = $app->comitato(); $v = $this->volontario(); // chiudo le deleghe su quel comitato $d = $v->delegazioni(null, $c->id); foreach ($d as $_d) { $_d->fine = $ora; } // chiudo le attività referenziate $a = Attivita::filtra([['referente', $v->id], ['comitato', $c->id]]); $presidente = $c->unPresidente(); foreach ($a as $_a) { $_a->referente = $presidente->id; } // rimetto al presidente i gruppi $g = Gruppo::filtra([['referente', $v->id], ['comitato', $c->id]]); foreach ($g as $_g) { $_g->referente = $presidente->id; } // chiudo l'appartenenza ad un gruppo $ag = AppartenenzaGruppo::filtra([['volontario', $v->id], ['comitato', $c->id]]); foreach ($ag as $_ag) { $_ag->cancella(); } // chiudo le reperibilità $r = Reperibilita::filtra([['volontario', $v->id], ['comitato', $c->id]]); foreach ($r as $_r) { $_r->cancella(); } // chiudo le partecipazioni $p = Partecipazione::filtra([['volontario', $v->id]]); foreach ($p as $_p) { if ($_p->turno()->futuro() && $_p->turno()->attivita()->comitato() == $c->id) { $_p->cancella(); } } // mando email per avvisare dello spiacevole evento :o( $destinatari = [$v, $app->comitato()->unPresidente(), $v->unComitato()->unPresidente()]; $m = new Email('richiestaEstensioneConclusa', 'Termine estensione: ' . $app->comitato()->nome); $m->a = $destinatari; $m->_NOME = $app->volontario()->nomeCompleto(); $m->_COMITATO = $app->comitato()->nomeCompleto(); $m->accoda(); }
/** * Ritorna il dominio di competenza massima nei confronti di un'attivita' * * es. 1: se sono delegato area provinciale e l'attivita' e' locale, ottengo comitato locale * es. 2: se non sono nulla, ritorno false * es. 3: se sono referente attivita, ritorno comitato organizzatore (NON estensione) * @param Attivita $attivita L'attivita in questione * @return GeoPolitica|bool(false) Il dominio risultante o false se non ho superpoteri */ public function dominioCompetenzaAttivita(Attivita $attivita) { if (!$attivita->modificabileDa($this)) { return false; } $pool = []; $organizzatore = $attivita->comitato(); // Referente attivita? if ($attivita->referente == $this->id) { $pool[] = $organizzatore; } // Delegato d'area? foreach ($this->areeDiCompetenza() as $a) { $ac = $a->comitato(); if ($ac->contiene($organizzatore)) { $pool[] = $ac; } } // Comitati di competenza foreach ($this->comitatiDiCompetenza() as $a) { if ($a->contiene($organizzatore)) { $pool[] = $a; } } // Ottiene comitato piu' grande nel pool $massimo = array_reduce($pool, function ($a, $b) { if ($a === null) { return $b; } if ($a::$_ESTENSIONE > $b::$_ESTENSIONE) { return $a; } else { return $b; } }, null); // Il risultato e' il dominio comune tra la visibilita' dell'attivita' // ed il mio potere piu' grande... return $attivita->visibilita()->dominioComune($massimo); }
public function attivita() { return Attivita::id($this->attivita); }
public function attivita($apertura = ATT_APERTA) { return Attivita::filtra([['area', $this->id], ['apertura', $apertura]]); }
<?php /* * ©2013 Croce Rossa Italiana */ paginaPrivata(); paginaAttivita(); controllaParametri(array('id')); $attivita = $_GET['id']; $attivita = Attivita::id($attivita); paginaAttivita($attivita); $g = new Gruppo(); $g->nome = $attivita->nome; $g->comitato = $attivita->comitato()->oid(); $g->obiettivo = $attivita->area()->obiettivo; $g->area = $attivita->area(); $g->referente = $attivita->referente(); $g->attivita = $attivita->id; if ($attivita->comitato()->_estensione() == EST_REGIONALE) { $g->estensione = EST_GRP_REGIONALE; } elseif ($attivita->comitato()->_estensione() == EST_PROVINCIALE) { $g->estensione = EST_GRP_PROVINCIALE; } elseif ($attivita->comitato()->_estensione() == EST_LOCALE) { $g->estensione = EST_GRP_LOCALE; } else { $g->estensione = EST_GRP_UNITA; } redirect('attivita.scheda&gok&id=' . $attivita->id);
public function calendarioAttivitaPrivate() { return Attivita::filtra([['comitato', $this->oid()]]); }