Spaces:
No application file
No application file
File size: 2,273 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
<?php
namespace Mautic\CoreBundle\Controller\Api;
use Mautic\ApiBundle\Controller\CommonApiController;
use Mautic\CoreBundle\CoreEvents;
use Mautic\CoreBundle\Event\StatsEvent;
use Mautic\CoreBundle\Helper\InputHelper;
use Mautic\CoreBundle\Helper\UserHelper;
use Symfony\Component\HttpFoundation\Request;
/**
* @extends CommonApiController<object>
*/
class StatsApiController extends CommonApiController
{
/**
* Lists stats for a database table.
*
* @param string $table
* @param string $itemsName
* @param array $order
* @param array $where
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function listAction(Request $request, UserHelper $userHelper, $table = null, $itemsName = 'stats', $order = [], $where = [], $start = 0, $limit = 100)
{
$response = [];
$where = InputHelper::cleanArray(empty($where) ? $request->query->get('where') ?? [] : $where);
$order = InputHelper::cleanArray(empty($order) ? $request->query->get('order') ?? [] : $order);
$start = (int) $request->query->get('start', $start);
$limit = (int) $request->query->get('limit', $limit);
// Ensure internal flag is not spoofed
$this->sanitizeWhereClauseArrayFromRequest($where);
try {
$event = new StatsEvent($table, $start, $limit, $order, $where, $userHelper->getUser());
$this->dispatcher->dispatch($event, CoreEvents::LIST_STATS);
// Return available tables if no result was set
if (!$event->hasResults()) {
$response['availableTables'] = $event->getTables();
$response['tableColumns'] = $event->getTableColumns();
} else {
$results = $event->getResults();
$response['total'] = $results['total'];
$response[$itemsName] = $results['results'];
}
} catch (\Exception $e) {
$response['errors'] = [
[
'message' => $e->getMessage(),
'code' => $e->getCode(),
],
];
}
$view = $this->view($response);
return $this->handleView($view);
}
}
|