$_SESSION['EXPIRA']) { return true; session_destroy(); session_unset(); } $_SESSION['time'] = $now; return false; } function check_logged() { include("id.php"); if(is_expired()) return false; if(isset($_SESSION['user']) && $_SESSION['SITEID']==$ID) return true; return false; } function check_admin() { if($_SESSION['modo'] == "-") return true; return false; } function check_visitante() { if($_SESSION['modo'] == "v") return true; return false; } function check_restrito() { if($_SESSION['modo'] == "r") return true; return false; } function horario($timeEntry, $separador = " ") { if(date("w",$timeEntry) == 0) $a = t("Sun"); if(date("w",$timeEntry) == 1) $a = t("Mon"); if(date("w",$timeEntry) == 2) $a = t("Tue"); if(date("w",$timeEntry) == 3) $a = t("Wed"); if(date("w",$timeEntry) == 4) $a = t("Thu"); if(date("w",$timeEntry) == 5) $a = t("Fri"); if(date("w",$timeEntry) == 6) $a = t("Sat"); $t = $a.$separador.date("d-M-Y H:i ",$timeEntry); return $t; } function minhas_reservas() { $n = $_SESSION['reservas']; echo '

'.t("My reservations").'

'; if($n<1) { echo t("No active reservations"); return; } echo ''; } function checa_reservas() { $n = $_SESSION['reservas']; if($n<1) return; $id = $_SESSION['id']; $a = 0; $ut = time(); while($n>0 && $a<=$n) { $a++; $utr = $_SESSION['utime1']; if($utr < ($ut+$_SESSION['DELTA_T_EXPIRA']) && $utr>0) { for($k = 1; $k<$_SESSION["RESERVA"]; $k++) { $l = $k+1; $_SESSION['entry'.$k] = $_SESSION['entry'.$l]; $_SESSION['slot'.$k] = $_SESSION['slot'.$l]; $_SESSION['utime'.$k] = $_SESSION['utime'.$l]; } $_SESSION['entry'.$_SESSION["RESERVA"]] = ''; $_SESSION['slot'.$_SESSION["RESERVA"]] = ''; $_SESSION['utime'.$_SESSION["RESERVA"]] = 0; $n--; } } if($n!=$_SESSION['reservas']) { $file = "passwd.dbf"; $db = dbopen($file,2); if(!$db) { echo '

'.t("Database problems! Try again later.").'

'; exit; } $row = dbread($db,$id); $row['reservas'] = $n; for($k = 1; $k<=$_SESSION["RESERVA"]; $k++) { $row['entry'.$k] = $_SESSION['entry'.$k]; $row['slot'.$k] = $_SESSION['slot'.$k]; } dbreplace($db,$row,$id); dbclose($db,$file); $_SESSION['reservas']=$n; return; } } function error($PAGE,$ERROR) { $f = "user.php"; if(check_admin()) $f = "admin.php"; $string = "Location: ".$f."?page=".$PAGE."&error=".$ERROR; header($string); exit; } function get_id_from_string($string, $posicao) { $caracter = substr($string,$posicao,1); $ascii = intval(ord($caracter)); $id = ascii_to_id($ascii); return $id; } function set_id_to_string(&$string, $posicao, $id) { $ascii = id_to_ascii($id); $caracter = chr($ascii); $string = substr_replace($string, $caracter, $posicao,1); return; } function id_to_ascii($id) { $ascii = 0; $ascii = $id + $_SESSION['ASCII_CODE']; return $ascii; } function ascii_to_id($ascii) { $id = 0; $id = $ascii - $_SESSION['ASCII_CODE']; return $id; } function nome_bancada($index) { $max_sala =$_SESSION['SLOTS']; $Nsala = intval($index/$max_sala) + 1; $bancada = $index%$max_sala; $k = $bancada+1; $nome = $_SESSION['ROOM'.$Nsala].'-'.$_SESSION['SLOT'.$k]; return $nome; } function string_begins_with($string, $search) { return (strncmp($string, $search, strlen($search)) == 0); } function index_bancada($nome) { for($i = 1; $i<=$_SESSION["ROOMS"]; $i++) { if(string_begins_with($nome,$_SESSION['ROOM'.$i])) { $salaId = $i -1; $bancada = substr($nome, strlen($_SESSION['ROOM'.$i]) + 1, 2); for($j = 1; $j<=$_SESSION["SLOTS"]; $j++) { if(string_begins_with($bancada,$_SESSION['SLOT'.$j])) { $index = $salaId*$_SESSION['SLOTS']+$j-1; return $index; } } } } return -1; } function get_week_start($time) { $timeStart = mktime(0,0,0,date("m",$time),date("d",$time)-date("w",$time),date("y",$time)); return $timeStart; } function get_week_end($time) { $timeStart = mktime(0,0,0,date("m",$time),date("d",$time)-date("w",$time)+7,date("y",$time)); return $timeStart; } function get_nextweek_end($time) { $timeStart = mktime(0,0,0,date("m",$time),date("d",$time)-date("w",$time)+14,date("y",$time)); return $timeStart; } function get_group_name($id) { global $_SESSION; $label = 'GR'.$id; return $_SESSION[$label]; } function get_group_prof($name) { global $_SESSION; $label = 'GRPROF'.$name; return $_SESSION[$label]; } function get_group_prof_id($id) { global $_SESSION; $label = 'GRPROFID'.$id; return $_SESSION[$label]; } function get_group_id($name) { global $_SESSION; $label = 'GRID'.$name; return $_SESSION[$label]; } function horarios($todos) { global $_SESSION; if(!check_logged()) { error("principal",""); exit; } $time = time(); $timeStart = get_week_start($time); $timeStop = get_nextweek_end($time); $fileloc = "horarios.dbf"; $db = dbopen($fileloc, 2); if(!$db) { echo '

'.t("Database problems! Try again later.").'

'; exit; } if($todos) echo '

'.t("Show all schedule").'

'; else echo '

'.t("Schedule between").':
'.date("d/m/y",$timeStart).t(" and ").date("d/m/y",$timeStop).'

'; if($db) { $numero = dbrecords($db); $entries = 0; $livres = 0; $fezTabela = false; $MAX = $_SESSION["SLOTS"]*$_SESSION["ROOMS"]; for($i = 1; $i<=$numero; $i++) { $row = dbread($db, $i); $timeEntry = trim($row['utime']); if(($timeEntry>=$timeStart && $timeEntry<=$timeStop) || $todos) { $entries++; if(!$fezTabela) { $fezTabela = true; echo ''; echo ''; echo ''; for($y=1; $y<=$MAX;$y++) echo ''; } echo ''; echo ''; $bancadas = $row['bancadas']; $reservas = $row['reservas']; $status = $row['status']; ////////////////////////////////////////////////////// // checa numero de reservas na sala e decide se a sala // vai ser fechada ou nao. O tempo minimo para fechamento // da sala esta na variavel $_SESSION['DELTA_T_CLOSE'] $liberada = true; $ocupada = 0; for($j = 0; $j<$bancadas; $j++) { $r = get_id_from_string($reservas,$j); if($r>0) $ocupada++; } $deadline = $timeEntry + $_SESSION['DELTA_T_CLOSE']; if($ocupada==0 && $time > $deadline) $liberada = false; ////////////////////////////////////////////////////// for($j = 0; $j<$bancadas; $j++) { $id = get_id_from_string($row['lista'],$j); $label = nome_bancada($id); $r = get_id_from_string($reservas,$j); $flag = get_id_from_string($status,$j); $BGC = $_SESSION['COR_FUNDO_NOVO']; if($r < 1 && ($time+$_SESSION['DELTA_T_EXPIRA']) >= $timeEntry) $BGC = $_SESSION['COR_FUNDO_VELHO']; if($r == $_SESSION['id']) { if(($time+$_SESSION['DELTA_T_EXPIRA'])>= $timeEntry) { $BGC = $_SESSION['COR_RESERVA_FQ']; if($flag == $_SESSION['USO_OK']) $BGC = $_SESSION['COR_RESERVA_OK']; if($flag == $_SESSION['USO_NU']) $BGC = $_SESSION['COR_RESERVA_NU']; } else { $BGC = $_SESSION['COR_RESERVA_NOVA']; if($flag == $_SESSION['USO_OK']) $BGC = $_SESSION['COR_RESERVA_OK']; if($flag == $_SESSION['USO_NU']) $BGC = $_SESSION['COR_RESERVA_NU']; } } elseif($r>0) { if(($time+$_SESSION['DELTA_T_EXPIRA'])>= $timeEntry) { $BGC = $_SESSION['COR_RESERVA_OT_FQ']; if($flag == $_SESSION['USO_OK']) $BGC = $_SESSION['COR_RESERVA_OT_OK']; if($flag == $_SESSION['USO_NU']) $BGC = $_SESSION['COR_RESERVA_OT_NU']; } else { $BGC = $_SESSION['COR_RESERVA_OT_NOVA']; if($flag == $_SESSION['USO_OK']) $BGC = $_SESSION['COR_RESERVA_OT_OK']; if($flag == $_SESSION['USO_NU']) $BGC = $_SESSION['COR_RESERVA_OT_NU']; } } echo ''; } echo ''; } } if($fezTabela) echo '
'.t("Time").'
  '.t("Slot").'  
'; echo horario($timeEntry,"
"); echo '
'; echo ''.$label.''; if($r<1 && $liberada) { $time_tmp1 = $timeEntry + $_SESSION['DELTA_T_RESERVA']; $time_tmp2 = $timeEntry + $_SESSION['DELTA_T_RESERVA_MIN']; // Nao ha restricoes para sabado if(date('l',$timeEntry)=="Saturday") $time_tmp2 = $timeEntry-60*99999999; if($time > $time_tmp2 && $time < $time_tmp1) $livres++; if($time > $time_tmp2 && $time < $time_tmp1 && !check_admin()) { echo '
'; echo ''.t("Book").''; } // aqui o administrador tem até duas horas dentro da reserva para // fazer uma reserva para um grupo qualquer if($time > $time_tmp2 && $time < $time_tmp1 && check_admin()) { echo '
'; echo ''.t("Book").''; } } else { echo '
'; echo get_group_name($r); if(check_admin()) { if($flag<1 && ($time+$_SESSION['DELTA_T_EXPIRA'])>= $timeEntry && $liberada) { echo '
'; echo ''.t("Frequency").''; } else { if($flag==$_SESSION['USO_OK']) echo '
'.t("Ok"); if($flag==$_SESSION['USO_NU']) echo '
'.t("NU"); } } if(($r == $_SESSION['id'] || check_admin()) && $time< ($timeEntry + $_SESSION['DELTA_T_CANCELA']) && $flag < 1) { echo '
'; echo ''.t("Cancel").''; } } echo '
'; echo '
'; echo t("Number of entries in the database").' = '.$numero.'
'; echo t("Number of entries in the database for the dates above").' = '.$entries.'
'; echo t("Number of free slots for reservation").' = '.$livres.'
'; echo '

'.t("Color coding").'

'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo '
'.t("Other groups").'
'.t("This group").'
'.t("Legend").'
  
 
 
'.t("Active reservation").'
  
 
 
'.t("Used reservation and the administrator already added the correct frequency").'
  
 
 
'.t("Non-used reservation and the administrator already added the correct frequency").'
  
 
 
'.t("Non-active reservation without frequency set by the administrator").'
'; dbclose($db,$fileloc); } } function senha() { global $_SESSION; if(!check_logged()) { error("principal",""); exit; } echo '

'.t("Change group password").' '; echo $_SESSION['user']; echo '

'; echo '
'; echo t("Current password").':

'; echo t("New password").':

'; echo t("Repeat new password").':

'; echo ''; echo '    '; echo '
'; echo '
'; return; } function senha_usuario() { global $_SESSION; if(!check_logged()) { error("principal",""); exit; } if(!check_admin()) return; echo '

'.t("Change group password").'

'; echo '
'; echo t("Group").':

'; echo t("New password").':

'; echo t("Repeat new password").':

'; echo ''; echo '    '; echo '
'; echo '
'; return; } function reserva_admin($entry, $timeEntry, $bancada, $slot) { global $_SESSION; if(!check_logged()) { error("principal",""); exit; } if(!check_admin()) return; echo '

'.t("Reservation by the administrator").'

'; echo '