mirror of
https://github.com/SophiaAtkinson/steamwidgets-web.git
synced 2025-06-27 03:57:41 -07:00
Stats
This commit is contained in:
@ -28,6 +28,9 @@ class ApiController extends BaseController {
|
||||
|
||||
$data = SteamApp::querySteamData($appid, $language);
|
||||
|
||||
//Save hit
|
||||
HitsModel::addHit(HitsModel::HITTYPE_MODULE_APP);
|
||||
|
||||
return json(array('code' => 200, 'appid' => $appid, 'lang' => $language, 'data' => $data));
|
||||
} catch (\Exception $e) {
|
||||
return json(array('code' => 500, 'msg' => $e->getMessage()));
|
||||
@ -47,6 +50,9 @@ class ApiController extends BaseController {
|
||||
|
||||
$data = SteamServer::querySteamData(env('STEAM_API_KEY'), $addr);
|
||||
|
||||
//Save hit
|
||||
HitsModel::addHit(HitsModel::HITTYPE_MODULE_SERVER);
|
||||
|
||||
return json(array('code' => 200, 'addr' => $addr, 'data' => $data));
|
||||
} catch (\Exception $e) {
|
||||
return json(array('code' => 500, 'msg' => $e->getMessage()));
|
||||
@ -66,6 +72,9 @@ class ApiController extends BaseController {
|
||||
|
||||
$data = SteamUser::querySteamData(env('STEAM_API_KEY'), $steamid);
|
||||
|
||||
//Save hit
|
||||
HitsModel::addHit(HitsModel::HITTYPE_MODULE_USER);
|
||||
|
||||
return json(array('code' => 200, 'steamid' => $steamid, 'data' => $data));
|
||||
} catch (\Exception $e) {
|
||||
return json(array('code' => 500, 'msg' => $e->getMessage()));
|
||||
|
114
app/controller/stats.php
Normal file
114
app/controller/stats.php
Normal file
@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Stats controller
|
||||
*/
|
||||
class StatsController extends BaseController
|
||||
{
|
||||
const INDEX_LAYOUT = 'layout';
|
||||
|
||||
/**
|
||||
* Perform base initialization
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(self::INDEX_LAYOUT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles URL: /stats/{pw}
|
||||
*
|
||||
* @param Asatru\Controller\ControllerArg $request
|
||||
* @return Asatru\View\ViewHandler
|
||||
*/
|
||||
public function index($request)
|
||||
{
|
||||
if ($request->arg('pw') !== env('APP_STATSPASSWORD')) {
|
||||
throw new Exception('Invalid password');
|
||||
}
|
||||
|
||||
$start = date('Y-m-d', strtotime('-30 days'));
|
||||
$end = date('Y-m-d', strtotime('-1 day'));
|
||||
|
||||
$predefined_dates = [
|
||||
'Last week' => date('Y-m-d', strtotime('-7 days')),
|
||||
'Last two weeks' => date('Y-m-d', strtotime('-14 days')),
|
||||
'Last month' => date('Y-m-d', strtotime('-1 month')),
|
||||
'Last three months' => date('Y-m-d', strtotime('-3 months')),
|
||||
'Last year' => date('Y-m-d', strtotime('-1 year')),
|
||||
'Lifetime' => date('Y-m-d', strtotime(HitsModel::getInitialStartDate()))
|
||||
];
|
||||
|
||||
return parent::view([
|
||||
['content', 'stats'],
|
||||
], [
|
||||
'render_stats_to' => 'hits-stats',
|
||||
'render_stats_start' => $start,
|
||||
'render_stats_end' => $end,
|
||||
'render_stats_pw' => $request->arg('pw'),
|
||||
'predefined_dates' => $predefined_dates
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles URL: /stats/query/{pw}
|
||||
*
|
||||
* @param Asatru\Controller\ControllerArg $request
|
||||
* @return Asatru\View\JsonHandler
|
||||
*/
|
||||
public function query($request)
|
||||
{
|
||||
try {
|
||||
if ($request->arg('pw') !== env('APP_STATSPASSWORD')) {
|
||||
throw new Exception('Invalid password');
|
||||
}
|
||||
|
||||
$start = $request->params()->query('start', '');
|
||||
if ($start === '') {
|
||||
$start = date('Y-m-d', strtotime('-30 days'));
|
||||
}
|
||||
|
||||
$end = $request->params()->query('end', '');
|
||||
if ($end === '') {
|
||||
$end = date('Y-m-d', strtotime('-1 day'));
|
||||
}
|
||||
|
||||
$data = [];
|
||||
$data[HitsModel::HITTYPE_MODULE_APP] = [];
|
||||
$data[HitsModel::HITTYPE_MODULE_SERVER] = [];
|
||||
$data[HitsModel::HITTYPE_MODULE_USER] = [];
|
||||
|
||||
$hits = HitsModel::getHitsPerDay($start, $end);
|
||||
|
||||
$dayDiff = (new DateTime($end))->diff((new DateTime($start)))->format('%a');
|
||||
|
||||
$count_total = [];
|
||||
$count_total[HitsModel::HITTYPE_MODULE_APP] = 0;
|
||||
$count_total[HitsModel::HITTYPE_MODULE_SERVER] = 0;
|
||||
$count_total[HitsModel::HITTYPE_MODULE_USER] = 0;
|
||||
|
||||
for ($i = 0; $i < $hits->count(); $i++) {
|
||||
$count_total[$hits->get($i)->get('hittype')] += $hits->get($i)->get('count');
|
||||
|
||||
$data[$hits->get($i)->get('hittype')][$hits->get($i)->get('created_at')][] = $hits->get($i)->get('count');
|
||||
}
|
||||
|
||||
return json([
|
||||
'code' => 200,
|
||||
'data' => $data,
|
||||
'counts' => $count_total,
|
||||
'count_total' => $count_total[HitsModel::HITTYPE_MODULE_APP] + $count_total[HitsModel::HITTYPE_MODULE_SERVER] + $count_total[HitsModel::HITTYPE_MODULE_USER],
|
||||
'start' => $start,
|
||||
'end' => $end,
|
||||
'day_diff' => $dayDiff
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
return json([
|
||||
'code' => 500,
|
||||
'msg' => $e->getMessage()
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user