* Actualiza el archivo de créditos al loguearse.
* Calcula si hay que restar créditos por días sin preguntar.
*
- * @return false si hay error
+ * TODO ver si anda por el tema de las preguntas, que se pueden actualizar los
+ * creditos sin que pregunte. Probablemente haya que agregar una fecha de
+ * último chequeo para diferenciar entragas por login de entradas por
+ * evaluar o preguntas (me parece que con 'dias' no alcanza).
+ *
+ * @return array con los campos escritos.
*/
function file_creditos_login($user)
{
$dias2 %= 30;
if ($dias2 != $dias or $creditos2 != $creditos)
{
- return (bool)file_creditos_write($user, $creditos2, $bonus, $dias2);
+ $ret = file_creditos_write($user, $creditos2, $bonus, $dias2);
+ if ($ret === false) return false;
+ else return array_slice($ret, 1);
}
return true;
}
*/
function file_creditos_preguntar($user)
{
- $row = file_creditos_get($user);
- if (!$row) return false;
+ if (!($row = file_creditos_get($user))) return false;
list($fecha, $creditos, $bonus, $dias) = $row;
return file_creditos_write($user, $creditos - 1, $bonus, 0);
}
*
* @return Array con los nuevos valores de créditos.
*/
-function file_creditos_evaluar($user, $es_bonus = false, $bonus_cant = 5)
+function file_creditos_evaluar($user, $rank, $es_bonus = false, $bonus_cant = 5)
{
- $row = file_creditos_get($user);
- if (!$row) return false;
+ if (!($row = file_creditos_get($user))) return false;
list($fecha, $creditos, $bonus, $dias) = $row;
- if ($es_bonus) $bonus++;
- if ($bonus >= $bonus_cant)
+ $bonus2 = $bonus;
+ $creditos2 = $creditos + $rank;
+ if ($es_bonus) $bonus2++;
+ if ($bonus2 >= $bonus_cant)
{
- $creditos += intval($bonus / $bonus_cant) * $bonus_cant;
- $bonus %= $bonus_cant;
+ $creditos2 += intval($bonus2 / $bonus_cant) * $bonus_cant;
+ $bonus2 %= $bonus_cant;
}
- return file_creditos_write($user, $creditos, $bonus, $dias);
+ if ($bonus2 != $bonus or $creditos2 != $creditos)
+ {
+ return (bool)file_creditos_write($user, $creditos2, $bonus2, $dias);
+ }
+ return true;
}
/**
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.
+ * @return array con los campos escritos.
*/
function file_creditos_write($user, $creditos, $bonus, $dias)
{