]> git.llucax.com Git - z.facultad/75.43/tp1.git/blob - src/lib/file.log.php
Nueva función para validar (muy livianamente) una fecha.
[z.facultad/75.43/tp1.git] / src / lib / file.log.php
1 <?php
2 // vim: set binary noeol et sw=4 sts=4 :
3 // Grupo 10
4 //
5 // Lucarella, Schein, Arena
6 //
7 // Creado: Leandro Lucarella (mar may  3 23:34:43 ART 2005)
8 //
9 // $Id$
10
11 require_once 'lib/file.php';
12
13 /**
14  * Abre el archivo de log.
15  *
16  * @return false si hubo error, el file pointer del archivo si se abrió bien.
17  */
18 function file_log_open($user)
19 {
20     return fopen("data/log.$user.csv", 'r');
21 }
22
23 /**
24  * Obtiene el próximo mensaje del log.
25  *
26  * @return array con (fecha, mensaje) o false si no hay más.
27  */
28 function file_log_next($fp)
29 {
30     return fgetcsv($fp, 4096);
31 }
32
33 /**
34  * Se posiciona en un mensaje de log determinado.
35  *
36  * @return false si hubo error.
37  */
38 function file_log_seek($fp, $pos)
39 {
40     while (!feof($fp) and $pos--) fgetcsv($fp, 4096);
41     return !$pos;
42 }
43
44 /**
45  * Se posiciona en el primer mensaje de log que sea posterior a $fecha_desde.
46  *
47  * @return posición del archivo donde empiezan los mensajes posteriores.
48  */
49 function file_log_seek_fecha($fp, $fecha_desde)
50 {
51     $pos = 0;
52     $seek = ftell($fp);
53     while ($row = fgetcsv($fp, 4096))
54     {
55         if ($row[0] < $fecha_desde)
56         {
57             $seek = ftell($fp);
58             $pos++;
59         }
60         else
61         {
62             fseek($fp, $seek); // Vuelvo al principio del registro.
63             break;
64         }
65     }
66     return $pos;
67 }
68
69 /**
70  * Cierra el archivo de log
71  *
72  * @return false si hay error.
73  */
74 function file_log_close($fp)
75 {
76     return fclose($fp);
77 }
78
79 /**
80  * Obtiene la cantidad de mensajes de log que hay para un usuario.
81  * Si se especifica $fecha_desde, se cuentan sólo los posteriores a esa fecha.
82  *
83  * @return cantidad de mensajes de log.
84  */
85 function file_log_count($user, $fecha_desde = null)
86 {
87     if (($fp = file_log_open($user)) === false) return false; // error
88     if ($fecha_desde) file_log_seek_fecha($fp, $fecha_desde);
89     $count = 0;
90     while ($row = fgetcsv($fp, 4096)) $count++;
91     file_log_close($fp);
92     return $count;
93 }
94
95 /**
96  * Agrega un nuevo mensaje de log.
97  *
98  * @return bool false si hay error.
99  */
100 function file_log_add($user, $msg)
101 {
102     return fappendcsv("data/log.$user.csv", array(time(), $msg));
103 }
104
105 ?>