segundo commit para testar
[LogadorPet.git] / index.php
blob21bedf608e044e7f5738d3e787981a24199b3099
1 <?php
2 header ("Pragma: no-cache"); // sempre carregar página (não vai ser armazenada no cache http 1,0
3 header("Cache-Control: no-cache, must-revalidate"); // idem http 1,1
4 include("Pessoa.class.php");
5 include("ListaPessoas.class.php");
6 require_once("Globals.php");
8 ?>
9 <?php
10 $starttime = microtime();
11 $startarray = explode(" ", $starttime);
12 $starttime = $startarray[1] + $startarray[0];
14 <!-- Programa Principal do Logador (index.php)
15 1. Mostra a tabela com os dados de todos os usuários (logados ou não)
16 2. Permite o link para submissão de pendentes
17 3. Permite o link para entrar na área do administrador
18 4. Permite links para Login/Logout e Esqueci Logado
19 -->
21 <?php
23 // inclui as funções necessárias para o trabalho com o logador
24 include("calctemp.php");
26 // verifica se o acesso atual encontra-se em uma nova semana petiana
27 // caso estiver, atualiza dado referente ao início da semana e atualiza o banco de dados
28 atualiza_semana();
30 // verifica se o acesso atual encontra-se em um novo mês petiano
31 // caso estiver, atualiza dado referente ao início do mês e atualiza o banco de dados
32 verifica_mesmo_mes();
37 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
38 <html>
39 <head>
40 <title>Logador PET - Computação</title>
41 <link rel="stylesheet" type="text/css" href="estilo.css">
42 <script type="text/javascript">setTimeout("location.href = 'index.php';", 30000);</script>
43 <script>
44 function mostra(evt, url, nome){
45 if(navigator.appName == 'Netscape'){ x =(evt.layerX); y=(evt.layerY);}
46 else { x = (evt.x); y = (evt.y);}
47 var obj = document.getElementById('title');
48 var obj2 = document.getElementById('title2');
50 if(obj != undefined){
51 obj.style.visibility = 'visible';
52 obj.style.top = 50;
53 obj.style.left = 20;
54 obj.innerHTML = "<img src='"+url+"' name='image' width=100% height=100%>";
56 if(obj2 != undefined){
57 obj2.style.visibility = 'visible';
58 obj2.style.top = 0;
59 obj2.style.left = 20;
60 obj2.innerHTML = "<h5 align=center>"+nome+"</h5>";
64 function tira(){
65 var obj = document.getElementById('title');
66 var obj2 = document.getElementById('title2');
68 if(obj != undefined){
69 obj.style.visibility = 'visible';
70 obj.style.top = 50;
71 obj.style.left = 20;
72 obj.innerHTML = "<img src='fotos/pet.jpg' name='image' width=100% height=100%>";
74 if(obj2 != undefined){
75 obj2.style.visibility = 'visible';
76 obj2.style.top = 0;
77 obj2.style.left = 20;
78 obj2.innerHTML = "<h5 align=center>PET</h5>";
80 obj.style.visibility = 'hidden';
84 function petianomes(url,nome){
85 var obj = document.getElementById('petiano');
86 var obj2 = document.getElementById('petiano2');
88 if(obj != undefined){
89 //obj.style.visibility = 'visible';
90 //obj.style.top = 50;
91 obj.style.left = document.body.offsetWidth - 220;
92 obj.innerHTML = "<img src='"+url+"' name='image' width=100% height=100%>";
95 if(obj2 != undefined){
96 //obj2.style.visibility = 'visible';
97 obj2.style.top = -10;
98 obj2.style.left = (document.body.offsetWidth - 220) + 'px';
99 obj2.innerHTML = "<h5 align=center>PETIANO (OU NÃO) do Mês - "+nome+"</h5>";
104 function popup(link)
106 window.open(link,'page','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=500,height=300');
107 return false;
109 </script>
110 <style>
111 #title {
112 overflow: auto;
113 width: 200;
114 height: 150;
115 position: absolute;
116 visibility: hidden;
117 /* background: #FFFF99;
118 color: #000000; */
119 border: 1px #0000FF;
122 #title2 {
123 overflow: auto;
124 width: 200;
125 height: 300;
126 position: absolute;
127 visibility: hidden;
128 /* background: #FFFF99;
129 color: #000000; */
130 border: 1px #0000FF;
132 #petiano {
133 overflow: auto;
134 width: 200;
135 height: 150;
136 top: 50;
137 position: absolute;
138 border: 1px #0000FF;
141 #petiano2 {
142 overflow: auto;
143 width: 200;
144 height: 300;
145 position: absolute;
146 border: 1px #0000FF;
148 </style>
150 </head>
152 <?php
154 // abre conexão com banco de dados
155 conecta();
157 $mes_inicio = getInicioMes();
158 $prox_mes = getProxMes();
159 $mes_anterior = getInicioMesAnterior();
160 $semana_inicio = getInicioSemana();
162 $sql ="SELECT
163 usuario.id_user as userId,
164 usuario.login AS nome,
165 dados.foto AS foto
167 FROM
169 (SELECT id_user, sec_to_time(sum(time_to_sec(timediff(fim, inicio)))) AS tempoMes FROM `historico`
170 WHERE fim is not NULL
171 AND (
172 ( (inicio > FROM_UNIXTIME(". $mes_anterior .")) AND (inicio < FROM_UNIXTIME(". $mes_inicio .")) )
174 ( (fim < FROM_UNIXTIME(". $mes_inicio .")) AND (fim > FROM_UNIXTIME(". $mes_anterior .")) )
176 GROUP BY id_user
177 ORDER BY tempoMes DESC
178 LIMIT 1) AS petianoMes
179 LEFT JOIN
181 dados
182 LEFT JOIN
183 usuario
184 ON (dados.id = usuario.id_user)
186 ON (dados.id = petianoMes.id_user)
190 $pesq_petiano_mes = mysql_query($sql) or die(mysql_error());
191 $linha_petiano_mes = mysql_fetch_array($pesq_petiano_mes);
194 <body onLoad="tira(); petianomes('<?php echo PATH_FOTO.$linha_petiano_mes['foto']."','".$linha_petiano_mes['nome']."'";?>)" onResize="petianomes('<?php echo PATH_FOTO.$linha_petiano_mes['foto']."','".$linha_petiano_mes['nome']."'";?>)">
195 <div id='petiano2'></div>
196 <div id='petiano'></div>
197 <div id='title2'></div>
198 <div id='title'></div>
200 <center>
201 <h1>
202 LOGADOR PET
203 </h1>
204 <h2>
205 <a href="http://pet-server:8000/trac">!- TRAC -!</a>
206 </h2>
208 </center>
210 <table align="center" border=1 class="bordasimples">
211 <tr bgcolor="#990033" style="color: #fff;" align="center">
212 <td width="200" align="left">Nome</td>
213 <td width="80">Horas</td>
214 <td width="80">Semana</td>
215 <td width="80">Mês</td>
216 <td width="70">Pendentes</td>
217 <td width="50">Login</td>
218 <td>Esqueci Logado</td>
219 <td>Faltas</td>
220 </tr>
222 <?php
223 $before_time = microtime();
224 $before_array = explode(" ", $before_time);
225 $before_time = $before_array[1] + $before_array[0];
228 $sql = "SELECT id_user AS userId,
229 login AS nome,
230 foto,
231 faltas,
232 IF( mensagensNaoLidas.id_to is NULL, FALSE, TRUE) AS hasUnreadMessage,
233 IF( mensagensLidas.id_to is NULL, FALSE, TRUE) AS hasMessage,
234 IF( tempoPendentes is NOT NULL, TIME_FORMAT(tempoPendentes, '%Hh %imin'), tempoPendentes) AS pendentes,
235 IF( isLogado is NULL, 0, isLogado) AS isLogado,
236 IF( tempoLogado is NULL, '00h 00min', TIME_FORMAT(tempoLogado, '%Hh %imin')) AS atual_logado,
237 IF( tempoSem is NULL, '00h 00min', TIME_FORMAT(tempoSem, '%Hh %imin')) AS semana_logado,
238 IF( tempoMes is NULL, '00h 00min', TIME_FORMAT(tempoMes, '%Hh %imin')) AS mes_logado
239 FROM
242 (SELECT usuario.id_user, dados.foto, usuario.faltas, usuario.login
243 FROM
244 usuario LEFT JOIN dados ON (usuario.id_user = dados.id)
245 ) AS dados
246 LEFT JOIN
248 SELECT DISTINCT id_to FROM mensagem WHERE lido = 0
249 ) AS mensagensNaoLidas
250 ON (dados.id_user = mensagensNaoLidas.id_to)
251 LEFT JOIN
253 SELECT DISTINCT id_to FROM mensagem WHERE lido = 1
254 ) AS mensagensLidas
255 ON (dados.id_user = mensagensLidas.id_to)
257 LEFT JOIN
263 (SELECT id_user, sec_to_time(SUM(secTempoMes)) AS tempoMes, SUM(isLogado) AS isLogado
264 FROM
265 ((SELECT id_user, sum(time_to_sec(timediff(fim, inicio))) AS secTempoMes, FALSE AS isLogado FROM `historico`
266 WHERE fim is not NULL
267 AND (
268 ( (inicio >= FROM_UNIXTIME(". $mes_inicio .")) AND (inicio < FROM_UNIXTIME(". $prox_mes .")) )
270 ( (fim < FROM_UNIXTIME(". $prox_mes .")) AND (fim > FROM_UNIXTIME(". $mes_inicio .")) )
272 GROUP BY id_user)
273 UNION
274 (SELECT id_user, sum(time_to_sec(timediff(NOW(), inicio))) AS secTempoMes, TRUE AS isLogado FROM `historico`
275 WHERE fim is NULL
276 GROUP BY id_user)) AS tableHorasMes
277 GROUP BY id_user) AS tableHorasMes
278 LEFT JOIN
279 (SELECT id_user, sec_to_time(SUM(secTempoSem)) AS tempoSem, SUM(isLogado) AS isLogado
280 FROM
281 ((SELECT id_user, sum(time_to_sec(timediff(fim, inicio))) AS secTempoSem, FALSE AS isLogado FROM `historico`
282 WHERE fim is not NULL
283 AND (
284 ( (inicio >= FROM_UNIXTIME(". $semana_inicio .")) AND (inicio < FROM_UNIXTIME(". $semana_inicio ."+". UMA_SEMANA_SEC .")) )
286 ( (fim < FROM_UNIXTIME(". $semana_inicio ."+". UMA_SEMANA_SEC .")) AND (fim > FROM_UNIXTIME(". $semana_inicio .")) )
288 GROUP BY id_user)
289 UNION
290 (SELECT id_user, sum(time_to_sec(timediff(NOW(), inicio))) AS secTempoSem, TRUE AS isLogado FROM `historico`
291 WHERE fim is NULL
292 GROUP BY id_user)) AS tableHorasSem
293 GROUP BY id_user) AS tableHorasSem
294 USING (id_user, isLogado)
296 ) RIGHT JOIN (SELECT id_user FROM usuario) AS allUsers
297 USING (id_user)
298 LEFT JOIN
299 (SELECT id_user, sec_to_time(tempoPendentes) AS tempoPendentes
300 FROM
301 (SELECT id_user, sum(time_to_sec(timediff(fim, inicio))) AS tempoPendentes
302 FROM pendentes
303 GROUP BY id_user) AS tablePendentes
304 ) AS tablePendentes
305 USING (id_user)
307 LEFT JOIN
308 (SELECT id_user, timediff(NOW(), inicio) AS tempoLogado FROM `historico`
309 WHERE fim is NULL
310 ) AS tableLogado
311 USING (id_user)
313 USING (id_user)
316 ORDER BY login";
317 //echo $sql;
318 $pesq_usuario = mysql_query($sql) or die("<br><br><br><br>erro ao procurar pelos usuarios<br>".mysql_error());
320 $Listagem = new ListaPessoas();
322 while ($usuario = mysql_fetch_array($pesq_usuario))
324 $pessoa = new Pessoa;
325 $pessoa->setId($usuario['userId']);
326 $pessoa->setNome($usuario['nome']);
327 $pessoa->setFoto(PATH_FOTO.$usuario['foto']);
329 $pessoa->setLogado($usuario['isLogado']);
331 $atual_logado = ($usuario['isLogado']) ? $usuario['atual_logado'] : '';
332 $pessoa->setNow($atual_logado);
333 $pessoa->setSemana($usuario['semana_logado']);
334 $pessoa->setMes($usuario['mes_logado']);
336 $faltas = ($usuario['faltas']==0) ? '' : $usuario['faltas'];
337 $pessoa->setFaltas($faltas);
339 $pendentes = ($usuario['pendentes']==NULL) ? '' : $usuario['pendentes'];
340 $pessoa->setPendente($pendentes);
342 if($usuario['hasUnreadMessage'])
344 $pessoa->setUnreadMessage();
346 if($usuario['hasMessage'])
348 $pessoa->setMessage();
350 $Listagem->addPerson($pessoa);
353 $Listagem->printList();
355 </table>
356 <br><br>
357 <center>
359 <table border="2" class='bordasimples' align="center">
360 <tr class='tbrow'>
361 <td>
362 <a href="submeter_p.php" id="formulario">
363 Submeter Pendente
364 </a>
365 </td>
366 </tr>
367 <tr class='tbrow'>
368 <td>
369 <a href="enviar_mensagem.php">
370 Enviar Mensagem
371 </a>
372 </td>
373 </tr>
374 <tr class='tbrow'>
375 <td>
376 <a href="admin.php">
377 Área do Administrador
378 </a>
379 </td>
380 </tr>
381 </table>
382 </center>
383 </body>
384 </html>