= $bonus_cant) { $creditos2 += intval($bonus2 / $bonus_cant) * $bonus_cant; $bonus2 %= $bonus_cant; } if ($bonus2 != $bonus or $creditos2 != $creditos) { return (bool)file_creditos_write($user, $creditos2, $bonus2, $dias); } return true; } /** * Obtiene los datos de la última entrada del archivo de créditos. */ function file_creditos_get($user) { if (($f = fopen("data/creditos.$user.csv", 'r')) === false) return false; $seek = intval(trim(fgets($f, 11))); fseek($f, $seek); $row = fgetcsv($f, 4096); fclose($f); return $row; } /** * Agrega $n créditos al usuario $user (false si hay error). */ function file_creditos_add($user, $n) { if (!($row = file_creditos_get($user))) return false; list($fecha, $creditos, $bonus, $dias) = $row; $creditos += $n; return (bool)file_creditos_write($user, $creditos, $bonus, $dias); } /** * 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", 'r+')) === false) return false; fseek($f, 0, SEEK_END); $seek = ftell($f); $fecha = time(); fputcsv($f, array($fecha, $creditos, $bonus, $dias)); rewind($f); fwrite($f, sprintf("%010d\n", $seek), 11); fclose($f); return array($fecha, $creditos, $bonus, $dias); } /** * Crea el archivo de créditos para el usuario. */ function file_creditos_crear($user) { if (($f = fopen("data/creditos.$user.csv", 'w')) === false) return false; fwrite($f, sprintf("%010d\n", 11), 11); fputcsv($f, array(time(), 1, 0, 0)); fclose($f); return true; } /** * Convierte segundos a días. */ function secs2dias($secs) { return intval($secs / 86400); } ?>