![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/DashboardBundle/Dashboard/ |
<?php namespace Mautic\DashboardBundle\Dashboard; use Mautic\CoreBundle\Helper\UserHelper; use Mautic\DashboardBundle\Model\DashboardModel; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Security\Core\Exception\AccessDeniedException; class Widget { public const FORMAT_HUMAN = 'M j, Y'; public const FORMAT_MYSQL = 'Y-m-d'; public function __construct( private DashboardModel $dashboardModel, private UserHelper $userHelper, private Session $session ) { } /** * Get ready widget to populate in template. * * @return bool|\Mautic\DashboardBundle\Entity\Widget */ public function get(int $widgetId) { /** @var \Mautic\DashboardBundle\Entity\Widget $widget */ $widget = $this->dashboardModel->getEntity($widgetId); if (null === $widget || !$widget->getId()) { throw new NotFoundHttpException('Not found.'); } if ($widget->getCreatedBy() !== $this->userHelper->getUser()->getId()) { // Unauthorized access throw new AccessDeniedException(); } $filter = $this->dashboardModel->getDefaultFilter(); $this->dashboardModel->populateWidgetContent($widget, $filter); return $widget; } /** * Set filter from POST to session. * * @throws \Exception */ public function setFilter(Request $request): void { if (!$request->isMethod(Request::METHOD_POST)) { return; } $dateRangeFilter = $request->get('daterange', []); if (!empty($dateRangeFilter['date_from'])) { $from = new \DateTime($dateRangeFilter['date_from']); $this->session->set('mautic.daterange.form.from', $from->format(self::FORMAT_MYSQL)); } if (!empty($dateRangeFilter['date_to'])) { $to = new \DateTime($dateRangeFilter['date_to']); $this->session->set('mautic.daterange.form.to', $to->format(self::FORMAT_MYSQL)); } $this->dashboardModel->clearDashboardCache(); } }