Stats
This commit is contained in:
parent
4716733328
commit
4aacc786d4
4 changed files with 57 additions and 2 deletions
|
@ -119,7 +119,7 @@ class InterfaceControllerProvider implements ControllerProviderInterface
|
||||||
$controllers->get('/images', function (Application $app) {
|
$controllers->get('/images', function (Application $app) {
|
||||||
|
|
||||||
|
|
||||||
$http_origin = $_SERVER['HTTP_ORIGIN'];
|
$http_origin = $_SERVER['HTTP_ORIGIN'] ?? null;
|
||||||
if ($http_origin == "https://emotionhero.com" || $http_origin == "http://emotionhero.com")
|
if ($http_origin == "https://emotionhero.com" || $http_origin == "http://emotionhero.com")
|
||||||
{
|
{
|
||||||
header("Access-Control-Allow-Origin: $http_origin");
|
header("Access-Control-Allow-Origin: $http_origin");
|
||||||
|
|
41
src/Api/StatsControllerProvider.php
Normal file
41
src/Api/StatsControllerProvider.php
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
<?php
|
||||||
|
namespace EmotionHero\Api;
|
||||||
|
|
||||||
|
use EmotionHero\Application as EH;
|
||||||
|
use Silex\Application;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
use Silex\Api\ControllerProviderInterface;
|
||||||
|
use EmotionHero\Models;
|
||||||
|
use EmotionHero\Server\Websockets;
|
||||||
|
|
||||||
|
class StatsControllerProvider implements ControllerProviderInterface
|
||||||
|
{
|
||||||
|
/** @var EH */
|
||||||
|
protected $_eh;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->_eh = EH::getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function connect(Application $app)
|
||||||
|
{
|
||||||
|
// creates a new controller based on the default route
|
||||||
|
$controllers = $app['controllers_factory'];
|
||||||
|
$gamesRepo = $this->_eh->getEm()->getRepository(Models\Game::class);
|
||||||
|
|
||||||
|
$controllers->get('/', function (Application $app) {
|
||||||
|
$stats = [
|
||||||
|
'new_games' => [],
|
||||||
|
'new_users' => [],
|
||||||
|
];
|
||||||
|
|
||||||
|
for ($i=0; $i < 14; $i++) {
|
||||||
|
$day = date('Y-m-d',strtotime("-$i days"));
|
||||||
|
$stats['new_games'] = $gameRepo->getCreatedCountOnDate($day);
|
||||||
|
}
|
||||||
|
return $app['serializer']->serialize($stats, 'json');
|
||||||
|
});
|
||||||
|
}
|
|
@ -44,4 +44,17 @@ class GameRepository extends EntityRepository
|
||||||
]);
|
]);
|
||||||
return $query->getSingleScalarResult();
|
return $query->getSingleScalarResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getCreatedCountOnDate($date) {
|
||||||
|
$query = $this->_em->createQuery(
|
||||||
|
"SELECT COUNT(g.id) FROM ".Game::class." g WHERE DATE(g.createdAt) = :date"
|
||||||
|
)
|
||||||
|
->setParameters([
|
||||||
|
'date'=> $date,
|
||||||
|
]);
|
||||||
|
return (int) $query->getSingleScalarResult();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -71,7 +71,7 @@ $app['serializer.json'] = function () use ($app) {
|
||||||
|
|
||||||
$app['security.firewalls'] = array(
|
$app['security.firewalls'] = array(
|
||||||
'login' => [
|
'login' => [
|
||||||
'pattern' => 'login|register|oauth|token|interface',
|
'pattern' => 'login|register|oauth|token|interface|stats',
|
||||||
'anonymous' => true,
|
'anonymous' => true,
|
||||||
],
|
],
|
||||||
'secured' => array(
|
'secured' => array(
|
||||||
|
@ -176,6 +176,7 @@ $app->get('/api/protected_resource', function() use ($app){
|
||||||
|
|
||||||
$app->mount('/', new EmotionHero\Api\ScoreControllerProvider());
|
$app->mount('/', new EmotionHero\Api\ScoreControllerProvider());
|
||||||
$app->mount('/interface', new EmotionHero\Api\InterfaceControllerProvider());
|
$app->mount('/interface', new EmotionHero\Api\InterfaceControllerProvider());
|
||||||
|
$app->mount('/stats', new EmotionHero\Api\StatsControllerProvider());
|
||||||
|
|
||||||
// middlewares
|
// middlewares
|
||||||
$appStack = new EmotionHero\Api\ThrottleMiddleware($app, ['pdo'=>$eh->getEm()->getConnection()->getWrappedConnection()] );
|
$appStack = new EmotionHero\Api\ThrottleMiddleware($app, ['pdo'=>$eh->getEm()->getConnection()->getWrappedConnection()] );
|
||||||
|
|
Loading…
Reference in a new issue