<?php
namespace App\Http\Controller\Api\V2\Analytics;
use App\Infrastructure\Messenger\CommandBus\CommandBusInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/api/v2/analytics/collect", name="api_v2_analytics_collect", methods={"PUT"}, requirements={"id":"[a-f0-9-]+"})
*/
class CollectAnalyticsAction extends AbstractController
{
public function __invoke(
// CreateToastSessionLinkCommand $command,
// CommandBusInterface $commandBus
): JsonResponse {
// $this->denyAccessUnlessGranted(ToastSessionVoter::ACCESS_WITH_COLLABORATORS, $session);
// $command->session = $session->getId();
// $siteParser = new SiteParser($command->url);
// $command->name = $siteParser->getPageTitle();
// $command->icon = $siteParser->getFavicon();
// $commandBus->execute($command);
// $link = $toastSessionLinkRepository->find($command->id);
if ($_SERVER['REQUEST_METHOD'] != 'PUT') {
exit;
}
// helpers
function db_request($request, $db_Name = '')
{
// constants
$host = 'localhost';
$host_user = 'bmrmcbxy_toast';
$host_pass = 'kaphaf-zeXjac-tugge3';
$dbname = 'bmrmcbxy_toast';
// setting time zone
$default_timezone = 'Etc/GMT';
$kyiv_timezone = 'Europe/Kiev';
date_default_timezone_set($default_timezone);
// analytics table data
$analytics_table = 'usage_analytics';
if ($db_Name == '') {
$db_Name = $dbname;
}
$link = mysqli_connect($host, $host_user, $host_pass, $db_Name);
mysqli_set_charset($link, 'utf8');
if (!$link) {
echo "Can't connect to the database. Error code: %s\n".mysqli_connect_error();
exit;
}// if connection error
if ($result = mysqli_query($link, $request)) {
return $result;
} else {
error_log('msqlERROR1:'.mysqli_error($link));
error_log('msqlERRORrequest1: From '.$table_name.' '.$request);
}
/* Close connection */
mysqli_close($link);
}
function buildEventSavingSQLQuery($eventParameters)
{
// constants
$analytics_table = 'usage_analytics';
$autoFilledParameters = [
'id',
'timestamp',
];
$keysPart = 'INSERT INTO `'.$analytics_table.'` (`id`';
$valuesPart = ') VALUES (NULL';
foreach ($eventParameters as $parameter => $value) {
if (!in_array($parameter, $autoFilledParameters)) {
$keysPart .= ', `'.$parameter.'`';
$valuesPart .= ", '".$value."'";
}
}
$sqlString = $keysPart.$valuesPart.');';
return $sqlString;
}
// operating functions
/*
$requestHeaders = [];
foreach (getallheaders() as $name => $value) {
// echo "$name: $value\n";
$requestHeaders[$name] = $value;
};
*/
function saveEvent()
{
$requestJSONBody = file_get_contents('php://input');
$eventParameters = json_decode($requestJSONBody);
// var_dump($eventParameters);
$query = buildEventSavingSQLQuery($eventParameters);
// echo $query;
db_request($query);
}
saveEvent();
return $this->json(['success' => true]);
}
}