controllaParametri(['inizio', 'partecipanti', 'luogo', 'tipo', 'organizzatore'], 'formazione.corsi.crea&err'); if (!DT::controlloDataOra($_POST['inizio'])) { redirect('formazione.corsi.crea&err=' . CORSO_ERRORE_DATA_NON_CORRETTA); } $organizzatore = intval($_POST['organizzatore']); $partecipanti = intval($_POST['partecipanti']); $descrizione = $_POST['descrizione']; $luogo = $_POST['luogo']; $tipocorsoId = (int) intval($_POST['tipo']); $comitato = Comitato::id($organizzatore)->oid(); $inizio = DT::createFromFormat('d/m/Y H:i', $_POST['inizio']); $_POST['id'] = intval(@$_POST['id']); if (empty($_POST['id'])) { $c = new Corso(); } else { $c = Corso::id($_POST['id']); if (!$c->modificabile()) { redirect('formazione.corsi.riepilogo&id=' . $c->id . '&err=' . CORSO_ERRORE_CORSO_NON_MODIFICABILE); die; } } $c->tipo = $tipocorsoId; $c->organizzatore = $comitato; $c->responsabile = $me->id; $c->luogo = $luogo; $c->inizio = $inizio->getTimeStamp(); $c->anno = $inizio->format('Y'); $c->partecipanti = $partecipanti; $c->descrizione = $descrizione; $c->stato = CORSO_S_DACOMPLETARE; $tipoCorso = TipoCorso::id($c->tipo);
<?php /* * ©2015 Croce Rossa Italiana */ //paginaAdmin(); paginaPrivata(); $id = intval($_POST['id']); if (empty($id) || empty($me)) { redirect('formazione.corsi.iscriviti&id=' . $id . '&err'); die; } $c = null; try { $c = Corso::id($id); if (empty($c) || empty($me)) { throw new Exception('Manomissione'); } $c->inviaRichiestaIscrizione($me, $_POST); } catch (Exception $e) { redirect('formazione.corsi.iscriviti&id=' . $id . '&err'); die; } redirect('formazione.corsi.iscriviti&id=' . $id . '&ok');
<?php $p = PartecipazioneCorso::id(63); $p->md5 = PartecipazioneCorso::md5($p->id); $c = Corso::id($p->corso); $v = $p->volontario(); $r = $p->inviaInvito(Corso::id($p->corso), $v);
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 /* * ©2015 Croce Rossa Italiana */ paginaPresidenziale(null, null, APP_OBIETTIVO, OBIETTIVO_1); controllaParametri(['id', 'direttori'], 'admin.corsi.crea&err'); $c = $direttore = null; try { $c = Corso::id(intval($_POST['id'])); if (!$c->modificabile()) { redirect('formazione.corsi.riepilogo&id=' . $c->id . '&err=1'); } $direttore = Volontario::id(intval($_POST['direttori'])); if (empty($c) || empty($direttore)) { throw new Exception('Manomissione'); } } catch (Exception $e) { redirect('admin.corsi.crea&err'); } $c->direttore = $direttore->id; $c->aggiornaStato(); $partecipazione = new PartecipazioneCorso(); $partecipazione->aggiungi($c, $direttore, CORSO_RUOLO_DIRETTORE); if (!empty($_POST['wizard'])) { $tipoCorso = TipoCorso::id($c->tipo); if ($tipoCorso->giorni > 1) { redirect('formazione.corsi.lezioni&id=' . $c->id . '&wizard=1'); die; } else { redirect('formazione.corsi.docenti&id=' . $c->id . '&wizard=1');
<?php /* * ©2013 Croce Rossa Italiana */ set_time_limit(0); paginaAnonimo(); caricaSelettore(); controllaParametri(array('id')); error_reporting(E_ALL); ini_set('display_errors', true); try { $corso = Corso::id(intval($_GET['id'])); } catch (Exception $e) { die($e->getMessage()); redirect('admin.corsi.crea&err' . CORSO_ERRORE_CORSO_NON_TROVATO); } $puoPartecipare = false; //if ($corso->postiLiberi() > 0 && $corso->puoPartecipare($me)) { $puoPartecipare = true; //} $anonimo = false; if ($me instanceof Anonimo) { $anonimo = true; } $geoComitato = GeoPolitica::daOid($corso->organizzatore); $modificabile = $corso->modificabileDa($me); /* if ($modificabile) { $dominio = $me->dominioCompetenzaCorso($corso); }
/** * Ritorna il Corso collegato alla lezione * @return CorsoBase */ public function corso() { return Corso::id($this->corso); }
/** * Ritorna il dominio di competenza massima nei confronti di un corso' * * 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 deel corso, ritorno comitato organizzatore (NON estensione) * @param Corso $corso Il corso in questione * @return GeoPolitica|bool(false) Il dominio risultante o false se non ho superpoteri */ public function dominioCompetenzaCorso(Corso $corso) { if (!$corso->modificabileDa($this)) { return false; } $pool = []; $organizzatore = $corso->organizzatore(); // Referente corso? if ($corso->referente == $this->id) { $pool[] = $organizzatore; } // Delegato d'area? foreach ($this->areeDiCompetenza() as $a) { $ac = $a->organizzatore(); 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' del corso' // ed il mio potere piu' grande... return $corso->visibilita()->dominioComune($massimo); }
<?php /* * ©2013 Croce Rossa Italiana */ paginaPrivata(); $corso = Corso::id(205); $corso->chiudi(); print "Generati {$contatore} certificati";
<?php /* * ©2013 Croce Rossa Italiana */ paginaPubblica(); $filter = array(); $corsi = Corso::ricerca($filter); print_r($corsi);
public static function chiudiCorsi() { // Verifico i corsi da chiudere $corsi = Corso::corsiDaChiudere(); $contatore = 0; foreach ($corsi as $corso) { $contatore += $corso->chiudi(); } return $contatore; }
/** * Elenco corsi nel tempo */ private function api_miei_corsi_in_gestione() { /*TODO*/ global $conf; $filter = $this->par; $corsi = Corso::ricerca($filter); $list = array(); foreach ($corsi as $corso) { $inizio = DT::daTimestamp($corso->inizio); $fine = DT::daTimestamp($corso->inizio); $tmp = ['corso' => ['id' => $corso->id, 'nome' => $corso->luogo], 'inizio' => $inizio->toJSON(), 'fine' => $fine->toJSON(), 'type' => $corso->certificato, 'provincia' => $corso->provincia, 'latitude' => $latitude_value[$i % 3], 'longitude' => $longitude_value[$i % 3], 'organizzatore' => $corso->organizzatore, 'colore' => Utility::colorByStato($corso->stato), 'url' => '/?p=formazione.corsi.riepilogo&id=' . $corso->id]; array_push($list, $tmp); } return ['corsi' => $list]; }
<?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ $list = Corso::elenco(); print "<pre>"; print_r($list);
/** * Conferma la presenza al corso * @return bool false se la prenotazione non è confermata, altrimenti true */ public function conferma() { global $sessione; if ($this->stato != PARTECIPAZIONE_ACCETTATA) { return false; } if (!$this->modificabile()) { return false; } try { $c = Corso::id($this->corso); } catch (Exception $e) { return false; } if (!$c->finito()) { return false; } if ($sessione->utente()->id != $c->direttore) { return false; } $this->stato = PARTECIPAZIONE_CONFERMATA; return true; }
} catch (Exception $e) { redirect('admin.corsi.crea&err'); } if (!empty($_GET['err']) && is_int($_GET['err'])) { if (!empty($conf['errori_corsi'][$_GET['err']])) { $err = $conf['errori_corsi'][$_GET['err']]; } else { $err = 'errore sconosciuto'; } } global $db; $db->beginTransaction(); try { $l = new GiornataCorso(); $l->corso = $id; $l->nome = normalizzaNome($_POST['nome']); $data = DT::createFromFormat('d/m/Y H:i', $_POST["data"]); $l->data = $data->getTimestamp(); $l->luogo = normalizzaNome($_POST['luogo']); $l->note = addslashes($_POST['note']); $l->docente = intval($_POST['docenti'][0]); $docente = Volontario::id(intval($_POST['docenti'][0])); $part = new PartecipazioneCorso(); $part->aggiungi(Corso::id($id), $docente, CORSO_RUOLO_DOCENTE); $db->commit(); } catch (Exception $e) { $db->rollBack(); redirect("formazione.corsi.lezioni&id={$id}&err"); die; } redirect("formazione.corsi.lezioni&id={$id}");