* 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;
}
/**
/**
* 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);
}
/**