]> git.llucax.com Git - z.facultad/75.43/tp1.git/blob - src/lib/file.log.php
Deja solo los /n para el fin de linea. Corrige la observacion de luca. Utiliza la...
[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         }
64     }
65     return $pos;
66 }
67
68 /**
69  * Cierra el archivo de log
70  *
71  * @return false si hay error.
72  */
73 function file_log_close($fp)
74 {
75     return fclose($fp);
76 }
77
78 /**
79  * Obtiene la cantidad de mensajes de log que hay para un usuario.
80  * Si se especifica $fecha_desde, se cuentan sólo los posteriores a esa fecha.
81  *
82  * @return cantidad de mensajes de log.
83  */
84 function file_log_count($user, $fecha_desde = null)
85 {
86     if (($fp = file_log_open($user)) === false) return false; // error
87     if ($fecha_desde) file_log_seek_fecha($fp, $fecha_desde);
88     $count = 0;
89     while ($row = fgetcsv($fp, 4096)) $count++;
90     file_log_close($fp);
91     return $count;
92 }
93
94 /**
95  * Agrega un nuevo mensaje de log.
96  *
97  * @return bool false si hay error.
98  */
99 function file_log_add($user, $msg)
100 {
101     return fappendcsv("data/log.$user.csv", array(time(), $msg));
102 }
103
104 ?>