From bd91703ce18d91789f30a75a254dcc9f9feb81f2 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Wed, 4 May 2005 21:48:55 +0000 Subject: [PATCH] =?utf8?q?Bugfix=20y=20se=20hace=20que=20se=20actualicen?= =?utf8?q?=20los=20cr=C3=A9ditos=20en=20el=20login=20s=C3=B3lo=20si=20es?= =?utf8?q?=20necesario.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/lib/Usuario.php | 1 + src/lib/file.creditos.php | 25 ++++++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/lib/Usuario.php b/src/lib/Usuario.php index 550659c..3392ad3 100644 --- a/src/lib/Usuario.php +++ b/src/lib/Usuario.php @@ -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'); } diff --git a/src/lib/file.creditos.php b/src/lib/file.creditos.php index a178911..c07370b 100644 --- a/src/lib/file.creditos.php +++ b/src/lib/file.creditos.php @@ -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); } /** -- 2.43.0