Codice PHP:
<?php
/*
se l'ora della casella é uguale a quella dell'ora di apertura la variabile di controllo passa a uno</br>
tutte le celle con la variabile a 1 hanno un id riconoscibile per il css</br>
se l'ora é uguale all'ora di chiusura la variabile passa a 0</br>
per l'ora laterale faccio la stessa cosa</br>
*/
?>
<?php
//creo un array con solo gli orari di apertura presi dalla sessione(un valore l'id e mi crea problemi,devo toglierlo)
$array_orari=$_SESSION['impostazioni'][0];
//tolgo il campo id e id_account perché mi danno problemi quando cerco il valore min nell'array
unset($array_orari['id']);
unset($array_orari['id_account']);
unset($array_orari['fondo_cassa']);
?>
<!-- IMPOSTAZIONI GENERALI -->
<?php
//trovo l'ora pi√∫ alta e la pi√∫ bassa per l'apertura e chiusura
$oraApertura=min($array_orari);
$oraChiusura=max($array_orari);
//massimo di ore di lavoro al giorno
$oreLavoro=$oraChiusura-$oraApertura;
//minuti di lavoro al giorno
$minutiLavoro=$oreLavoro*60;
//imposto il taglio delle ore (30mn,15mn)
$lasso=30;
//calcolo quante righe avr√° la tabella
$orario=$minutiLavoro/$lasso;
//rendo il risultato compatibile con il mio array dei giorni
$giornoSettimanaNum=$config->get_numeroGiornoSettimana() -1;
//recupero il nome dei giorni della settimana senza accenti per chiamare le variabili
$giorni_impostazioni=$config->get_giorniSettimana_impostazioni();
//recupero il nome dei giorni della settimana
$giorni=$config->get_giorniSettimana();
//creo la variabile che faró incrementare con il lasso per calcolare il timestamp
$minuti=0;
?>
<!-- IMPOSTAZIONI ORARIO -->
<?php
//creo l'array per il controllo
$controllo=array();
//riempo l'array
for($i = 1; $i <=7; $i++) :
$controllo[$giorni_impostazioni[$i]]=0;
endfor;
?>
<?php
//in caso non sia stata passata la variabile della settimana imposto quella corrente
if(isset($_REQUEST['data']) && !empty($_REQUEST['data'])) :
$data=$_REQUEST['data'];
else :
$data=$config->get_data();
endif;
//imposto le variabili per navigare nelle settimane
$avanti=$data+604800;
$indietro=$data-604800;
//creo l'array che conterr√° il timestamp di ogni giorno della settimana
$timestampSettimana= array();
//creo la variabile contenente il giorno odierno
$time=$data;
//scorro l'array indietro fino al lunedí della settimana
for($a=$giornoSettimanaNum;$a>=0;$a--) :
$timestampSettimana[$a]=$time;
$time=$time-86400;
endfor;
//riporto la variabile al giorno di oggi
$time=$data+86400;
//scorro larray avanti fino alla domenica della settimana
for($a=$giornoSettimanaNum+1;$a<=6;$a++) :
$timestampSettimana[$a]=$time;
$time=$time+86400;
endfor;
?>
<!-- BARRA NAVIGAZIONE -->
<a href="?s=agenda&show=week&data=<?php echo $indietro ?>"> << </a>
<?php echo date("n/Y",$data) ?>
<a href="?s=agenda&show=week&data=<?php echo $avanti ?>"> >> </a>
<section class='week'>
<table>
<thead>
<tr>
<!-- CASELLA VUOTA,RIMANE SOPRA 'LA COLONNA DELL'ORARIO -->
<th>
</th>
<!-- STAMPO L'INTESTAZIONE CON IL NOME DEI GIORNI DELLA SETTIMANA -->
<?php for($i = 0; $i < count($giorni); $i++) : ?>
<th>
<!-- RENDO IL GIORNO CLICCABILE PER APRIRLO NELLA VISTA GIORNALIERA -->
<a href="?s=agenda&show=day&data=<?php echo mktime(0,0,0,date("n",$data),date("j",$timestampSettimana[$i]),date("Y",$data)); ?> ">
<?php echo mktime(0,0,0,date("n",$data),date("j",$timestampSettimana[$i]),date("Y",$data)); ?>
<?php echo date("j/n/Y",mktime(0,0,0,date("n",$data),date("j",$timestampSettimana[$i]),date("Y",$data))); ?></br>
<!-- STAMPO IL NOME DEL GIORNO CON LA DATA -->
<?php echo $giorni[$i]; ?> (<?php echo date("j/n",$timestampSettimana[$i]); ?>)
</a>
</th>
<?php endfor; ?>
</tr>
</thead>
<tbody>
<!-- ESEGUO UN CICLO FOR PER TUTTE LE RIGHE PRESENTI -->
<?php for($contatore=0;$contatore<=$orario;$contatore++) : ?>
<!-- CREO IL TIMESTAMP,LASCIO INVARIATA L'ORA PARTENDO DALL'APERTURA E AUMENTO SOLO I MINUTI A FINE CICLO -->
<?php $ora=mktime ($oraApertura,$minuti,0,0,0,0); ?>
<!-- RECUPERO LA DATA FORMATTATA DAL TIMESTAMP CREATO IN RECEDENZA -->
<?php $ora=date("G:i",$ora); ?>
<tr>
<td>
<?php echo $ora; ?>
</td>
<!-- CREO IL CICLO FOR PER STAMPARE I GIORNI DELLA SETTIMANA -->
<?php for($i=0;$i<=6;$i++) : ?>
<!--QUI DOVREI METTERE LA STAMPA DEL GIORNO_IMPOSTAZIONI -->
<?php
//trovo il giorno senza accento
$giorni_impostazioni[$i+1];
//trovo il valore di apertura del giorno
$apertura=$array_orari[$giorni_impostazioni[$i+1]."_start"].":00";
//trovo il valore di chiusura del giorno
$chiusura=$array_orari[$giorni_impostazioni[$i+1]."_end"].":00";
//confronto l'apertura con l'ora interessata
if ($apertura==$ora){$controllo[$giorni_impostazioni[$i]]=1;}
if($controllo[$giorni_impostazioni[$i]]==1):
$classe="class='show-cell-agenda";
else:
$classe="class='";
endif;
if ($chiusura==$ora){$controllo[$giorni_impostazioni[$i]]=0;}
?>
<!--CONTROLLO SE LA CASELLA CORRISPONDE AL GIORNO ODIERNO -->
<?php if(date("j/n/Y",$timestampSettimana[$i])==date("j/n/Y",time()) ) : ?>
<?php $classe.=" today'"; ?>
<?php else : ?>
<?php $classe.="'"; ?>
<?php endif; ?>
<td <?php echo $classe; ?> id="<?php echo $giorni[$i]; ?>">
<!-- CONTROLLO SE CI SONO APPUNTAMENTI IN QUEL GIORNO/ORA -->
<?php $query =$config->DB_select("agenda","ora='$ora' AND data='".date("j/n/Y",$timestampSettimana[$i])."'"); ?>
<!-- CONTROLLO SE CI SONO APPUNTAMENTI CON LE CLIENTI FISSE-->
<?php if($config->get_clienti_fisse()==1){ ?>
<?php $query_fissa =$config->DB_select("agenda_fissa","ora='$ora' AND data='".date("N",$timestampSettimana[$i])."'"); ?>
<!-- ESEGUO UN CICLO FOR PER STAMPARE GLI APPUNTAMENTI -->
<?php
for($u=0;$u<count($query_fissa);$u++) :
$id=$query_fissa[$u]['id'];
$nome=$query_fissa[$u]['nome'];
$lavoro=$query_fissa[$u]['lavoro'];
agenda_appuntamento_week($id,$nome,$lavoro);
endfor;
}
for($a=0;$a<count($query);$a++) :
$id=$query[$a]['id'];
$nome=$query[$a]['nome'];
$lavoro=$query[$a]['lavoro'];
agenda_appuntamento_week($id,$nome,$lavoro);
endfor;
?>
<?php endfor; ?>
</tr>
<!-- AUMENTO I MINUTI -->
<?php $minuti=$minuti+$lasso; ?>
<?php endfor ?>
</tbody>
</table>
</section>