]> git.llucax.com Git - z.facultad/75.43/tp1.git/commitdiff
Bugfix y se hace que se actualicen los créditos en el login sólo si es
authorLeandro Lucarella <llucax@gmail.com>
Wed, 4 May 2005 21:48:55 +0000 (21:48 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Wed, 4 May 2005 21:48:55 +0000 (21:48 +0000)
necesario.

src/lib/Usuario.php
src/lib/file.creditos.php

index 550659c895579fb1f52517c214601299e56c04ec..3392ad3f8bde4288ae06d39e15a7675775c7607d 100644 (file)
@@ -39,6 +39,7 @@ class Usuario
         else                   $d = file_int_get($id);
         $this->_nombre = $d[1];
         $this->_apellido = $d[2];
+        file_creditos_login($id); // Actualizamos créditos
         file_log_add($id, 'Ingreso al sistema');
     }
 
index a178911e6783ecc24ccfe5a3e8048c312124c598..c07370bf86cf5c2a3f163cb6485bbd46b1e6d8f9 100644 (file)
@@ -14,16 +14,20 @@ require_once 'lib/file.php';
  * Actualiza el archivo de créditos al loguearse.
  * Calcula si hay que restar créditos por días sin preguntar.
  *
- * @return Array con los nuevos valores de crétigos.
+ * @return false si hay error
  */
 function file_creditos_login($user)
 {
-    $row = file_creditos_get($user);
-    if (!$row) return false;
+    if (!($row = file_creditos_get($user))) return false;
     list($fecha, $creditos, $bonus, $dias) = $row;
-    $dias = $dias + secs2dias(time() - $fecha);
-    return file_creditos_write($user, $creditos - intval($dias / 30), $bonus,
-        $dias % 30);
+    $dias2 = $dias + secs2dias(time() - $fecha);
+    $creditos2 = $creditos - intval($dias2 / 30);
+    $dias2 %= 30;
+    if ($dias2 != $dias or $creditos2 != $creditos)
+    {
+        return (bool)file_creditos_write($user, $creditos2, $bonus, $dias2);
+    }
+    return true;
 }
 
 /**
@@ -76,17 +80,20 @@ function file_creditos_get($user)
 
 /**
  * Escribe una nueva entrada en el archivo de créditos (actualiza el 'índice').
+ *
+ * @returns array con los campos escritos.
  */
 function file_creditos_write($user, $creditos, $bonus, $dias)
 {
-    if (($f = fopen("data/creditos.$user.csv", 'a+')) === false) return false;
+    if (($f = fopen("data/creditos.$user.csv", 'r+')) === false) return false;
+    fseek($f, 0, SEEK_END);
     $seek = ftell($f);
     $fecha = time();
     fputcsv($f, array($fecha, $creditos, $bonus, $dias));
-    fseek($f, 0);
+    rewind($f);
     fwrite($f, sprintf("%010d\n", $seek), 11);
     fclose($f);
-    return true;
+    return array($fecha, $creditos, $bonus, $dias);
 }
 
 /**