Spaces:
No application file
No application file
| 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); | |
| } | |
| } | |