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');
Exemple #3
0
<?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);
Exemple #4
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;
}
<?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');
Exemple #6
0
<?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);
}
Exemple #7
0
 /**
  * Ritorna il Corso collegato alla lezione
  * @return CorsoBase
  */
 public function corso()
 {
     return Corso::id($this->corso);
 }
Exemple #8
0
 /**
  * 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);
 }
Exemple #9
0
<?php

/*
 * ©2013 Croce Rossa Italiana
 */
paginaPrivata();
$corso = Corso::id(205);
$corso->chiudi();
print "Generati {$contatore} certificati";
Exemple #10
0
<?php

/*
 * ©2013 Croce Rossa Italiana
 */
paginaPubblica();
$filter = array();
$corsi = Corso::ricerca($filter);
print_r($corsi);
Exemple #11
0
 public static function chiudiCorsi()
 {
     // Verifico i corsi da chiudere
     $corsi = Corso::corsiDaChiudere();
     $contatore = 0;
     foreach ($corsi as $corso) {
         $contatore += $corso->chiudi();
     }
     return $contatore;
 }
Exemple #12
0
 /**
  * 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];
 }
Exemple #13
0
<?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);
Exemple #14
0
 /**
  * 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}");