Example #1
0
function statistic_getContent()
{
    global $db, $template;
    $template->setFile('statistic.tmpl');
    foreach ($GLOBALS['unitTypeList'] as $value) {
        if (!$value->nodocumentation) {
            $UnitFieldsName[$value->dbFieldName] = $value->name;
        }
    }
    asort($UnitFieldsName);
    foreach ($GLOBALS['scienceTypeList'] as $value) {
        $ScienceFieldsName[$value->dbFieldName] = $value->name;
    }
    $sql = $db->prepare("SELECT * FROM " . STATISTIC_TABLE);
    if (!$sql->execute()) {
        return;
    }
    $StatsData = array();
    while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {
        $StatsData[$row['type']][$row['name']] = $row['value'];
    }
    if (!sizeof($StatsData)) {
        return;
    }
    /*
     * Game stats
     */
    // Online in der letzten Std:
    $time = time() - 1800;
    $lastActionTime = gmdate("Y-m-d H:i:s", $time);
    $sql = $db->prepare("SELECT count(*) as count\n                       FROM " . SESSION_TABLE . "\n                       WHERE lastAction > :lastAction");
    $sql->bindValue('lastAction', $lastActionTime, PDO::PARAM_INT);
    if (!$sql->execute()) {
        return;
    }
    $userOnline = $sql->fetch(PDO::FETCH_ASSOC);
    $sql->closeCursor();
    // erstelle Accounts
    $sql = $db->prepare("SELECT count(*) as count FROM " . PLAYER_TABLE);
    if (!$sql->execute()) {
        return;
    }
    $accounts = $sql->fetch(PDO::FETCH_ASSOC);
    $sql->closeCursor();
    $template->addVars(array('user_online' => $userOnline['count'], 'accounts_all' => $accounts['count'], 'accounts_free' => 508 - $accounts['count']));
    /*
     * print god stats
     */
    $GodStatsList = array();
    $GodStats = $StatsData[GOD_STATS];
    ksort($GodStats);
    foreach ($GodStats as $God => $value) {
        $GodStatsList[] = array("name" => $ScienceFieldsName[$God], "value" => array_pop(unserialize($value)));
    }
    $template->addVars(array('GodStats' => $GodStatsList));
    /*
     * print god halfgod stats
     */
    $HalfGodStatsList = array();
    $HalfGodStats = $StatsData[HALFGOD_STATS];
    ksort($HalfGodStats);
    foreach ($HalfGodStats as $HalfGod => $value) {
        if (!isset($ScienceFieldsName[$HalfGod])) {
            continue;
        }
        $HalfGodStatsList[] = array("name" => $ScienceFieldsName[$HalfGod], "value" => array_pop(unserialize($value)));
    }
    $template->addVars(array('HalfGodStats' => $HalfGodStatsList));
    /*
     * print storage stats
     */
    $StorageStatsList = array();
    $StorageStats = $StatsData[STORAGE_STATS];
    ksort($StorageStats);
    foreach ($StorageStats as $Storage => $value) {
        $StorageStatsList[] = array("name" => $Storage, "value" => array_pop(unserialize($value)));
    }
    $template->addVars(array('StorageStats' => $StorageStatsList));
    /*
     * print wonder stats
     */
    $WonderStatsList = array();
    if (isset($StatsData[WONDER_STATS]) && !empty($StatsData[WONDER_STATS])) {
        init_Wonders();
        $WonderStats = $StatsData[WONDER_STATS];
        ksort($WonderStats);
        foreach ($WonderStats as $wonder => $value) {
            $value = json_decode($value, true);
            $WonderStatsList[] = array('name' => $GLOBALS['wonderTypeList'][$wonder]->name, 'success' => $value['success'], 'fail' => $value['fail']);
        }
    }
    $template->addVars(array('WonderStats' => $WonderStatsList));
    /*
     * get Unit stats
     */
    $sql = $db->prepare("SELECT * FROM " . STATISTIC_UNIT_TABLE . " ORDER BY type_sub DESC");
    if (!$sql->execute()) {
        return;
    }
    $StatsData = array();
    while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {
        $UnitStats[$row['type']][$row['type_sub']] = $row;
    }
    /*
     * print Unit stats
     */
    $Units = array();
    $UnitAll = 0;
    $LastUnitStats = array_pop($UnitStats[STATS_HOUR]);
    foreach ($UnitFieldsName as $Unit => $Name) {
        if (!isset($LastUnitStats[$Unit])) {
            continue;
        }
        $UnitAll = $UnitAll + $LastUnitStats[$Unit];
        $Units[] = array('unit' => $Unit, 'name' => $Name, 'value' => $LastUnitStats[$Unit]);
    }
    $Units[] = array('unit' => 'all', 'name' => 'Insgesamt:', 'value' => $UnitAll);
    $template->addVars(array('Units' => $Units));
    unset($Name, $Unit, $Units, $UnitAll, $LastUnitStats);
    /*
     * show unit details
     */
    $show = Request::getVar('show', '');
    $Unit = Request::getVar('unit', '');
    if ($show == "unit_detail" && !empty($Unit) && $Unit != "all") {
        $template->addVars(array('showUnitDetails' => true, 'unitName' => $UnitFieldsName[$Unit]));
        /*
         * get hour stats
         */
        foreach ($UnitStats[STATS_HOUR] as $id => $data) {
            $UnitHourStats[$id] = array('time' => $data['time'], 'value' => $data[$Unit]);
        }
        unset($data, $id);
        $GraphDataHour = array();
        $i = 0;
        krsort($UnitHourStats);
        foreach ($UnitHourStats as $id => $data) {
            $GraphDataHour[] = array('id' => $i++, 'name' => substr($data['time'], 11, -3), 'value' => $data['value']);
        }
        unset($data, $id);
        $template->addVars(array('GraphDataHour' => $GraphDataHour));
        /*
         * get day stats
         */
        if (isset($UnitStats[STATS_DAY]) && sizeof($UnitStats[STATS_DAY])) {
            foreach ($UnitStats[STATS_DAY] as $id => $data) {
                $UnitDayStats[$id] = array('time' => $data['time'], 'value' => $data[$Unit]);
            }
            unset($data, $id);
            $GraphDataDay = array();
            $i = 0;
            krsort($UnitDayStats);
            foreach ($UnitDayStats as $id => $data) {
                $GraphDataDay[] = array('id' => $i++, 'name' => substr($data['time'], 5, -3), 'value' => $data['value']);
            }
            unset($data, $id);
            $template->addVars(array('GraphDataDay' => $GraphDataDay));
        }
    }
}
Example #2
0
<?php

init_Wonders();
function wonder_getActiveWondersForCaveID($caveID, $db)
{
    $query = "SELECT *,  " . "DATE_FORMAT(end, '%d.%m.%Y %H:%i:%s') AS end_time " . "FROM ActiveWonder " . "WHERE caveID = '{$caveID}' " . "ORDER BY end";
    if (!($result = $db->query($query)) || $result->isEmpty()) {
        return;
    }
    $wonders = array();
    while ($row = $result->nextRow(MYSQL_ASSOC)) {
        array_push($wonders, $row);
    }
    return $wonders;
}
function wonder_recalc($caveID, $db)
{
    global $effectTypeList;
    $fields = array();
    foreach ($effectTypeList as $effectID => $data) {
        array_push($fields, "SUM(" . $data->dbFieldName . ") AS " . $data->dbFieldName);
    }
    $select = implode(", ", $fields);
    $query = "SELECT {$fields} " . "FROM ActiveWonder " . "WHERE caveID = '{$caveID}'";
    if (!($result = $db->query($query))) {
        echo "Error: Couldn't get ActiveWonder entries for the specified cave.";
        exit - 1;
    }
    if (!($row = $result->nextRow())) {
        echo "Error: Result was empty when trying to get event.";
        exit - 1;