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)); } } }
<?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;