<?php

date_default_timezone_set('Pacific/Honolulu');
include "models/dailyseed.php";
$start = isset($_GET['start']) ? $_GET['start'] : null;
$length = isset($_GET['length']) ? intval($_GET['length']) : 1000;
$start = DateTime::createFromFormat("Ymd", $start);
if (!$start) {
    $start = DateTime::createFromFormat("Ymd", "20151031");
}
$length = min(800, max(1, $length));
$today = new DateTime((new DateTime())->format('Y-m-d'));
$dailies = array();
for ($i = 0; $i < $length; $i++) {
    $daily = DailyConfig::GenerateDaily($start);
    $r = array();
    if ($start->compare($today)->isBeforeOrEqual()) {
        $r['char'] = $daily->CharAsText();
        $r['end'] = $daily->EndAsText();
        $r['mega'] = $daily->IsMegaSatan;
        $r['hard'] = $daily->Difficulty;
    }
    if ($start < $today) {
        $r['seed'] = DailyConfig::SeedToString($daily->Seed);
    }
    $dailies[$start->format('Ymd')] = $r;
    $start = $start->add(new DateInterval("P1D"));
}
echo json_encode($dailies);
function updateDailyObjectives($date = 0)
{
    global $db;
    if ($date == 0) {
        $stmt = $db->query("\n            SELECT date\n              FROM dates\n             WHERE done = 1\n             ORDER BY date DESC\n             LIMIT 1");
    } else {
        $stmt = $db->prepare("\n            SELECT date\n              FROM dates\n             WHERE date = :date");
        $stmt->execute(array(':date' => $date));
    }
    $date = new DateTime($stmt->fetch()[0]);
    $daily = DailyConfig::GenerateDaily($date);
    $stmt = $db->prepare("\n        UPDATE dates\n           SET char_id = :char,\n               endlevel = :floor,\n               megasatan = :mega,\n               hard = :hard\n         WHERE date = :date");
    $stmt->execute(array(':char' => $daily->Character, ':floor' => $daily->EndLevel, ':mega' => $daily->IsMegaSatan, ':hard' => $daily->Difficulty, ':date' => $date->format('Y-m-d')));
    return $daily;
}