public static function fromTimestamp($ts, $tz = null) { $dt = new DT('@' . $ts); if ($tz == null) { $tz = new DateTimeZone(Config::get('intl.timezone')); } $dt->setTimezone($tz); return $dt; }
public static function fetch_url($url, $cache = true, $cache_fn = false, $reset = false) { if ($cache) { if ($cache === true && $cache_fn === false) { $cache_fn = 'public://cache/'; } else { $cache_fn = $cache; } if (DT::endsWith($cache_fn, '/')) { $cache_path = $cache_fn; $cache_fn = $cache_path . DT::sanitize($url); } else { $cache_path = dirname($cache_fn) . '/'; } file_prepare_directory($cache_path, FILE_CREATE_DIRECTORY); if (!file_exists($cache_fn) || $reset) { $data = DT::_fetch_url_data($url); file_put_contents($cache_fn, $data); } else { $data = file_get_contents($cache_fn); } } else { $data = DT::_fetch_url_data($url); } return $data; }
/** * Se il tesseramento è aperto e la data attuale è superiore a quella di fine * posso iniziare a scacciare i non paganti * @return bool True se accetta, false altrimenti */ public function siPuoDimettereTutti() { if ($this->aperto() && $this->fine() < DT::daTimestamp(time())) { return true; } return false; }
public function toJSON() { global $conf; if ($this->utente) { $u = $this->utente()->toJSON(); } else { $u = false; } return ['id' => $this->id, 'identificato' => (bool) $u, 'utente' => $u, 'scadenza' => DT::daTimestamp($this->azione + $conf['sessioni']['durata'])->toJSON()]; }
public function formatDataFromDb($data) { if (strlen($data) == 10 && preg_match('/^\\d{4}-\\d{2}-\\d{2}$/', $data) > 0) { // Data is probably coming from database $dt = DT::createFromFormat('Y-m-d', $data); if ($dt != null) { $data = $dt->date(); } } return $data; }
public function register() { $action = Request::get(1, VAR_URI); $min_year = date('Y') - 110; $max_year = date('Y') - 8; $countries = CmsTools::getCountries(); $options = $this->getFieldValidation($countries, $min_year, $max_year); $this->enableClientFormValidation($options); $this->breadcrumb->add('Registrieren'); $this->header(); if (Me::get()->loggedIn()) { CmsPage::error('Sie sind bereits registriert!'); } else { // Don't validate the captcha via ajax as the session would end if (Config::get('captcha.enable')) { Core::loadClass('Core.Security.ReCaptcha'); $options['recaptcha_response_field'] = array(Validator::MESSAGE => 'Der Sicherheitscode wurde nicht korrekt eingegeben.', Validator::CALLBACK => 'cb_captcha_check'); } $error = array(); $data = array_fill_keys(array_keys($options), ''); if ($action == 'send') { extract(Validator::checkRequest($options)); if (count($error) > 0) { CmsPage::error($error); } else { // Insert data $dt = new DT(); $dt->setDate($data['birthyear'], $data['birthmonth'], $data['birthday']); $data['birth'] = $dt->dbDate(); $data['pw1'] = Hash::generate($data['pw1']); $data['group_id'] = UserPages::DEFAULT_MEMBER_GID; $data['regdate'] = time(); if (Config::get('security.validate_registered_email') == 1) { $data['active'] = 0; $data['verification'] = Hash::getRandom(); } else { $data['active'] = 1; $data['verification'] = ''; } $db = Database::getObject(); $db->query("\n\t\t\t\t\t\tINSERT INTO <p>user\n\t\t\t\t\t\t(forename, surname, pw, group_id, email, gender, birth, city, country, regdate, active, verification)\n\t\t\t\t\t\tVALUES\n\t\t\t\t\t\t(<forename>, <surname>, <pw1>, <group_id:int>, <email>, <gender>, <birth>, <city>, <country>, <regdate:int>, <active:int>, <verification>)\n\t\t\t\t\t", $data); $mid = $db->insertID(); $tpl = Response::getObject()->getTemplate('Cms/mails/register' . iif(!$data['active'], '_confirm')); $tpl->assign('mid', $mid, false); $tpl->assign('name', UserUtils::getSalutation($data['gender'], $data['forename'], $data['surname']), false); $tpl->assign('data', $data, false); CmsTools::sendMail($data['email'], 'Betätigung der Anmeldung bei ' . Config::get('general.title'), $tpl->parse()); CmsPage::ok("Sie haben sich erfolgreich registriert." . iif(!$data['active'], ' Bitte aktivieren Sie Ihren Account, in dem Sie auf den Link klicken, der Ihnen an Ihre E-Mail-Adresse geschickt wurde.'), URI::build('Cms/user/login')); } } if ($action != 'send' || count($error) > 0) { $tpl = Response::getObject()->appendTemplate('Cms/user/register'); $tpl->assign('data', $data); $tpl->assign('r_birthday', range(1, 31)); $tpl->assign('r_birthmonth', range(1, 12)); $tpl->assign('r_birthyear', range($min_year, $max_year)); $tpl->assign('countries', $countries); if (Config::get('captcha.enable')) { $tpl->assign('captcha', recaptcha_get_html(Config::get('captcha.public_key')), false); } $tpl->output(); } } $this->footer(); }
/** * Ottiene quando apposto il like * @return DT */ public function timestamp() { return DT::daTimestamp($this->timestamp); }
<?php /* * ©2014 Croce Rossa Italiana */ paginaPrivata(); paginaPresidenziale(); controllaParametri(['comitato', 'inputDataInizio'], 'formazione.corsibase&err'); $comitato = $_POST['comitato']; $comitato = GeoPolitica::daOid($comitato); proteggiClasse($comitato, $me); $data = DT::daFormato($_POST['inputDataInizio'], 'd/m/Y H:i'); if (!$data) { redirect('formazione.corsibase&err'); } if ($data->getTimestamp() < time() && !$me->admin()) { redirect('formazione.corsibase&err'); } $corsoBase = new CorsoBase(); $corsoBase->stato = CORSO_S_DACOMPLETARE; $corsoBase->organizzatore = $comitato->oid(); $corsoBase->inizio = $data->getTimestamp(); $corsoBase->tEsame = (int) $corsoBase->inizio + MESE; $corsoBase->anno = $data->format('Y'); $corsoBase->aggiornamento = time(); $corsoBase->assegnaProgressivo(); redirect('formazione.corsibase.direttore&id=' . $corsoBase->id);
/** * Ottiene elenco dei potenziali soci del comitato in un dato anno, al solo uso di * successiva verifica del pagamento della quota o meno nell'anno - NESSUN altro uso! * @param int $anno Opzionale. Anno di riferimento. Default anno attuale. * @ * @return array(Utente) */ public function potenzialiSoci($anno = false, $stato = MEMBRO_VOLONTARIO) { global $conf; $anno = $anno ? (int) $anno : (int) date('Y'); $minimo = DT::createFromFormat('d/m/Y H:i', "1/1/{$anno} 00:00"); $minimo = $minimo->getTimestamp(); $massimo = DT::createFromFormat('d/m/Y H:i', "31/12/{$anno} 23:59"); $massimo = $massimo->getTimestamp(); if (!is_array($stato)) { if (array_key_exists($stato, $conf['appartenenze_posteri'])) { $stato = $conf['appartenenze_posteri'][$stato]; } else { $stato = [$stato]; } } foreach ($stato as &$s) { $s = (int) $s; } $stato = implode(', ', $stato); $query = "\n SELECT anagrafica.id\n FROM appartenenza, anagrafica\n WHERE appartenenza.comitato = :comitato\n AND anagrafica.id = appartenenza.volontario \n AND appartenenza.stato IN ({$stato})\n AND appartenenza.inizio <= :massimo\n AND (\n appartenenza.fine IS NULL\n OR appartenenza.fine = 0\n OR appartenenza.fine > :minimo\n )\n "; $q = $this->db->prepare($query); $q->bindParam(':comitato', $this->id, PDO::PARAM_INT); $q->bindParam(':minimo', $minimo, PDO::PARAM_INT); $q->bindParam(':massimo', $massimo, PDO::PARAM_INT); $q->execute(); $r = []; while ($k = $q->fetch(PDO::FETCH_NUM)) { $r[] = Utente::id($k[0]); } return $r; }
$p->stato = VOLONTARIO; $p->consenso = true; /* * Normalizzazione dei dati */ $cell = normalizzaNome($_POST['inputCellulare']); $cells = normalizzaNome(@$_POST['inputCellulareServizio']); $p->email = $email; $p->cellulare = $cell; $p->cellulareServizio = $cells; $gia = Appartenenza::filtra([['volontario', $p->id], ['comitato', $comitato->id]]); if (!$gia) { $a = new Appartenenza(); $a->volontario = $p->id; $a->comitato = $comitato; $inizio = DT::createFromFormat('d/m/Y', $_POST['inputDataIngresso']); $inizio = $inizio->getTimestamp(); $a->inizio = $inizio; $a->fine = PROSSIMA_SCADENZA; $a->timestamp = time(); $a->stato = MEMBRO_VOLONTARIO; $a->conferma = $me; } /* * Non si può far parte di IV e CM contemporaneamente */ if (!(isset($_POST['inputIV']) && isset($_POST['inputCM']))) { if ($p->sesso == DONNA) { $p->iv = $_POST['inputIV']; } $p->cm = $_POST['inputCM'];
/** * Ottiene la data di inserimento della richiesta * @return DT */ public function data() { return DT::daTimestamp($this->data); }
public function dataAnnullo() { return DT::daTimestamp($this->tAnnullata); }
/** * Ritorna la data della convocazione della commissione esaminatrice * Ritorna null se data assente * @return DT */ public function dataConvocazione() { if ($this->dataAttivazione) { return DT::daTimestamp($this->dataConvocazione)->format('d/m/Y'); } else { return null; } }
foreach ($errori as $e) { ?> <tr class="<?php echo errore_ottieni_classe($e['livello']); ?> "> <td><i class="<?php echo errore_ottieni_icona($e['livello']); ?> "></i> <?php echo errore_ottieni_testo($e['livello']); ?> </td> <td><?php echo DT::daTimestamp($e['_id']->getTimestamp())->inTesto(); ?> </td> <td style="font-size: x-small;"><?php echo $e['messaggio']; ?> </td> <td><?php if ($u = $e['utente']) { ?> <a href="?p=presidente.utente.visualizza&id=<?php echo $u; ?> "> #<?php echo $u;
<div class="controls"> <button type="submit" class="btn btn-large btn-success"> <i class="icon-ok"></i> Cambia stato! </button> </div> </div> </form> </div> </div> <?php } else { $data = DT::createFromFormat('d/m/Y', $_POST['inputDataTaglio']); ?> <pre> <code> <?php echo '<br><strong>Avviata procedura di cambio stato con taglio a ' . $data->getTimeStamp() . '<br><br>'; $v = Volontario::elenco(); $totale = 0; foreach ($v as $_v) { $appartenenze = $_v->numAppartenenzeTotali(MEMBRO_DIMESSO); if ($appartenenze == 0 && $_v->stato == VOLONTARIO && $_v->timestamp > $data->getTimeStamp()) { $totale++; echo 'Anagrafica ID:[' . $_v->id . '] ' . $_v->codiceFiscale . ' ' . $_v->nome . ' ' . $_v->cognome . ' ' . $_v->timestamp . ' -> nuovo stato: Aspirante<br>'; $_v->stato = ASPIRANTE; } }
} $p = Persona::by('codiceFiscale', $codiceFiscale); if ($p) { redirect('us.ordinario.nuovo&gia'); } else { $p = new Utente(); $p->codiceFiscale = $codiceFiscale; } /* * Normalizzazione dei dati */ $id = $p->id; $nome = normalizzaNome($_POST['inputNome']); $cognome = normalizzaNome($_POST['inputCognome']); $sesso = $_POST['inputSesso']; $dnascita = DT::createFromFormat('d/m/Y', $_POST['inputDataNascita']); $dnascita = $dnascita->getTimestamp(); $prnascita = maiuscolo($_POST['inputProvinciaNascita']); $conascita = normalizzaNome($_POST['inputComuneNascita']); $coresidenza = normalizzaNome($_POST['inputComuneResidenza']); $caresidenza = normalizzaNome($_POST['inputCAPResidenza']); $prresidenza = maiuscolo($_POST['inputProvinciaResidenza']); $indirizzo = normalizzaNome($_POST['inputIndirizzo']); $civico = maiuscolo($_POST['inputCivico']); /* * Registrazione vera e propria... */ $p->nome = $nome; $p->cognome = $cognome; $p->sesso = $sesso; $p->dataNascita = $dnascita;
} ?> </tbody> </table> <p class="alert alert-info"> <i class="icon-info-sign"></i> Questa tabella può avere contenuti molto tecnici ed elenca le ultime contribuzioni degli sviluppatori al codice di Gaia (non sono visualizzate le contribuzioni che non sono sono state ancora rilasciate). </p> <table class="table table-striped"> <tbody> <?php $elenco = ottieniCommit(); foreach ($elenco as $commit) { $data = new DT($commit->commit->author->date); $messaggio = nl2br(str_replace("\n\n", "\n", $commit->commit->message)); ?> <tr class=""> <td class="span3"> <strong><i class="icon-time icon-large"></i> <?php echo $data->inTesto(true); ?> </strong><br /> <a href="<?php echo $commit->author->url_html; ?> " target="_blank"> <img src="<?php echo $commit->author->avatar_url;
$c = null; try { $c = Corso::id(intval($_POST['id'])); // controllare che l'utente attuale sia il direttore del corso $size = $c->numeroDiscenti(); if (empty($c) || !is_array($idoneitaDisc) || !is_array($affiancamentiDisc) || sizeof($idoneitaDisc) != $size || sizeof($affiancamentiDisc) != $size || array_keys($affiancamentiDisc) != array_keys($idoneitaDisc)) { throw new Exception('Manomissione'); } if (!$c->concluso()) { redirect('formazione.corsi.riepilogo&id=' . $c->id . '&err=' . CORSO_ERRORE_NON_ANCORA_CONCLUSO); } } catch (Exception $e) { die($e->getMessage()); redirect('admin.corsi.crea&err'); } $now = new DT(); $docenti = $c->docenti(); $idDocenti = array(); foreach ($docenti as $i) { $idDocenti[] = $i->volontario; } unset($docenti); foreach ($idoneitaDisc as $volontario => $risultato) { $r = new RisultatoCorso(); $r->corso = $c->id; $r->volontario = intval($volontario); $r->idoneita = intval($risultato); $r->affiancamenti = $r->idoneita >= CORSO_RISULTATO_IDONEO ? intval($affiancamenti[$volontario]) : 0; if (!empty($segnalazioniDisc[$volontario]) && is_array($segnalazioniDisc[$volontario])) { $size = sizeof($segnalazioniDisc[$volontario]); for ($idx = 0; $idx < $size; ++$idx) {
/** * Ritorna l'elenco di appartenenze passibili al pagamento di una quota in un dato anno * Se il volontario e' dimesso o non passibile al pagamento della quota, ritorna array vuoto * * @param int $anno (Opzionale) Anno di riferimento. Default = Anno attuale * @return array(Appartenenza) Lista di appartenenze. Se non passibile, lista vuota. */ public function appartenenzePassibiliQuota($anno = false) { global $conf; $anno = $anno ? (int) $anno : (int) date('Y'); $minimo = DT::createFromFormat('d/m/Y H:i', "1/1/{$anno} 00:00"); $massimo = DT::createFromFormat('d/m/Y H:i', "31/12/{$anno} 23:59"); $r = []; // Applica algoritmo pubblicato su // https://github.com/CroceRossaCatania/gaia/issues/1218#issuecomment-69459905 foreach ($this->storico() as $appartenenza) { // Se appartenenza fuori contesto temporale, termina esecuzione if (!$appartenenza->validoTra($minimo, $massimo)) { continue; } // Se non appartenenza valida, ignora if (in_array($appartenenza->stato, $conf['membro_invalido'])) { continue; } // Se non appartenenza valida scopo quota, ignora if (in_array($appartenenza->stato, $conf['membro_nonquota'])) { continue; } // Se appartenenza terminata con dimissione, termina esecuzione if (in_array($appartenenza->stato, $conf['membro_dimesso'])) { continue; } // In tutti gli altri casi, appartenenza legittima, passibile a pagamento quota per l'A.A. $r[] = $appartenenza; // Se ho registrato una quota per questa appartenenza, le appartenenze // precedenti non sono passibili di quota. if (Quota::conta([['appartenenza', $appartenenza->id], ['anno', $anno], ['pAnnullata', false, OP_NULL]])) { break; } } return $r; }
public function quando() { return DT::daTimestamp($this->tCommenta); }
public function prenotazione() { return DT::daTimestamp($this->prenotazione); }
public function fine() { return DT::daTimestamp($this->fine); }
/* * ©2014 Croce Rossa Italiana */ caricaSelettore(); controllaParametri(['id']); $corso = CorsoBase::id($_GET['id']); if (!$corso->modificabileDa($me)) { redirect("formazione.corsibase.scheda&id={$_GET['id']}"); } $admin = $me->admin(); $lezioni = $_POST['lezioni']; foreach ($lezioni as $lezione) { $lezione = Lezione::id($lezione); $lezione->nome = normalizzaNome($_POST["nome_{$lezione}"]); $inizio = DT::createFromFormat('d/m/Y H:i', $_POST["inizio_{$lezione}"]); $fine = DT::createFromFormat('d/m/Y H:i', $_POST["fine_{$lezione}"]); if ($admin && $inizio < $fine) { $lezione->inizio = $inizio->getTimestamp(); $lezione->fine = $fine->getTimestamp(); } if ($inizio->getTimestamp() != $lezione->inizio) { if ($inizio < $fine && $inizio->getTimestamp() > time()) { $lezione->inizio = $inizio->getTimestamp(); } else { redirect("formazione.corsibase.lezioni&id={$_GET['id']}&date&in"); } } if ($fine->getTimestamp() != $lezione->fine) { if ($inizio < $fine && $fine->getTimestamp() > time()) { $lezione->fine = $fine->getTimestamp(); } else {
$id = $_GET['id']; if (isset($_GET['presa'])) { $r = PatentiRichieste::id($id); $r->stato = PATENTE_ATTESA_VISITA; $r->tCarico = time(); $r->pCarico = $me; } elseif (isset($_GET['visita'])) { $r = PatentiRichieste::id($id); $r->stato = PATENTE_ATTESA_STAMPA; $time = DT::createFromFormat('d/m/Y', $_POST['inputData']); $time = $time->getTimestamp(); $r->tVisita = $time; $r->pVisita = $me; } elseif (isset($_GET['stampa'])) { $r = PatentiRichieste::id($id); $r->stato = PATENTE_ATTESA_CONSEGNA; $time = DT::createFromFormat('d/m/Y', $_POST['inputData']); $time = $time->getTimestamp(); $r->tStampa = $time; $r->pStampa = $me; } elseif (isset($_GET['consegna'])) { $r = PatentiRichieste::id($id); $r->stato = PATENTE_CONSEGNATA; $time = DT::createFromFormat('d/m/Y', $_POST['inputData']); $time = $time->getTimestamp(); $r->tConsegna = $time; $r->pConsegna = $me; } else { redirect('patenti.dash&err'); } redirect('patenti.richieste');
/* * ©2015 Croce Rossa Italiana */ //paginaAdmin(); paginaPresidenziale(null, null, APP_OBIETTIVO, OBIETTIVO_1); 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();
foreach ($c->membriGiovani() 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("Volontari giovani {$c->nome}.xls"); } elseif (isset($_GET['eleatt'])) { $time = $_GET['time']; $time = DT::daTimestamp($time); foreach ($c->elettoriAttivi($time) 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("Elettorato attivo {$c->nome}.xls"); } elseif (isset($_GET['elepass'])) { $time = $_GET['time']; $time = DT::daTimestamp($time); foreach ($c->elettoriPassivi($time) 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("Elettorato passivo {$c->nome}.xls"); } elseif (isset($_GET['quoteno'])) { $questanno = $anno = date('Y'); if (!isset($_GET['anno'])) { $anno = $questanno; } else { $anno = $_GET['anno']; if ($anno < 2005 || $anno > (int) $questanno) { redirect('us.quoteNo'); } }
public function dataUltimaLavorazione() { return DT::daTimestamp($this->timestamp); }
$corso->descrizione = $_POST['inputDescrizione']; $corso->aggiornamento = time(); } if (isset($_POST['inputDataInizio']) && (!$corso->iniziato() || $me->admin())) { $data = DT::daFormato($_POST['inputDataInizio'], 'd/m/Y H:i'); if ($data && $data < $corso->fine()) { $corso->inizio = $data->getTimestamp(); $corso->aggiornamento = time(); } } if (isset($_POST['inputDataEsame']) && (!$corso->finito() || $me->admin())) { $data = DT::daFormato($_POST['inputDataEsame'], 'd/m/Y H:i'); if ($data && $data > $corso->inizio()) { $corso->tEsame = $data->getTimestamp(); $corso->aggiornamento = time(); } } if ($_POST['inputDataattivazione'] && (!$corso->finito() || $me->admin())) { $data = DT::daFormato($_POST['inputDataattivazione'], 'd/m/Y'); $corso->dataAttivazione = $data->getTimestamp(); $corso->opAttivazione = $_POST['inputOpattivazione']; } if ($_POST['inputDataconvocazione'] && (!$corso->finito() || $me->admin())) { $data = DT::daFormato($_POST['inputDataconvocazione'], 'd/m/Y'); $corso->dataConvocazione = $data->getTimestamp(); $corso->opConvocazione = $_POST['inputOpconvocazione']; } if ($_POST['inputInvioEmail']) { redirect('formazione.corsibase.email.aspiranti&id=' . $corso->id); } redirect('formazione.corsibase.scheda&id=' . $corso->id);
<?php /* * ©2013 Croce Rossa Italiana */ paginaPrivata(); controllaParametri(array('id'), 'gruppi.dash&err'); $id = $_GET['id']; $v = Volontario::id($id); $inizio = DT::createFromFormat('d/m/Y', $_POST['datainizio']); $fine = DT::createFromFormat('d/m/Y', $_POST['datafine']); $inizio = $inizio->getTimestamp(); $fine = $fine->getTimestamp(); $excel = new Excel(); $excel->intestazione(['Nome', 'Cognome', 'Data nascita', 'Comitato', 'Attività', 'Obiettivo', 'Turno', 'Inizio', 'Fine']); $partecipazioni = $v->partecipazioni(); foreach ($partecipazioni as $part) { $auts = $part->autorizzazioni(); if (!$auts) { continue; } if ($part->turno()->inizio <= $inizio || $part->turno()->fine >= $fine) { continue; } $excel->aggiungiRiga([$v->nome, $v->cognome, date('d/m/Y', $v->dataNascita), $v->unComitato()->nomeCompleto(), $part->attivita()->nome, $part->attivita()->area()->obiettivo, $part->turno()->nome, date('d/m/Y H:i', $part->turno()->inizio), date('d/m/Y H:i', $part->turno()->fine)]); } $excel->genera('Report turni volontario.xls'); $excel->download();
public function dataRichiesta() { return DT::daTimestamp($this->protData); }