![]() 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/CoreBundle/Event/ |
<?php namespace Mautic\CoreBundle\Event; use Mautic\CoreBundle\Entity\CommonRepository; use Mautic\UserBundle\Entity\User; use Symfony\Contracts\EventDispatcher\Event; /** * Used to get statistical data from subscribed tables. */ class StatsEvent extends Event { /** * Database table containing statistical data available to get the results from. */ protected string $table; /** * Array of columns to fetch. * * @var array|null */ protected $select; /** * The page where to start with. */ protected int $start; /** * The rows per page limit. */ protected int $limit; /** * Database tables which the subscribers already asked for. * * @var array */ protected $tables = []; /** * @var array */ protected $tableColumns = []; /** * Array of where filters. * * @var array */ protected $where = []; /** * Array of the result data. * * @var array */ protected $results = []; /** * Flag if some results were set. * * @var bool */ protected $hasResults = false; /** * Source repository to fetch the results from. * * @var CommonRepository<object> */ protected $repository; /** * @param int $start * @param int $limit */ public function __construct( $table, $start, $limit, protected array $order, array $where, protected User $user ) { $this->table = strtolower(trim(str_replace(MAUTIC_TABLE_PREFIX, '', strip_tags($table)))); $this->start = (int) $start; $this->limit = (int) $limit; $this->where = $where; } /** * Returns if event is for this table. * * @param CommonRepository<object>|null $repository */ public function isLookingForTable($table, CommonRepository $repository = null): bool { $this->tables[] = $table = str_replace(MAUTIC_TABLE_PREFIX, '', $table); if ($repository) { $this->tableColumns[$table] = $repository->getTableColumns(); } return $this->table === $table; } /** * Set the source repository to fetch the results from. * * @param CommonRepository<object> $repository * * @return string */ public function setRepository(CommonRepository $repository, array $permissions = []) { $this->repository = $repository; $this->setResults( $this->repository->getRows( $this->getStart(), $this->getLimit(), $this->getOrder(), $this->getWhere(), $this->getSelect(), $permissions ) ); return $this; } /** * @return array */ public function getSelect() { return $this->select; } /** * @return $this */ public function setSelect(array $select = null) { $this->select = $select; return $this; } /** * Returns the start. */ public function getStart(): int { return $this->start; } /** * Returns the limit. */ public function getLimit(): int { return $this->limit; } /** * Returns the order. * * @return array */ public function getOrder() { return $this->order; } /** * Returns the where. * * @return array */ public function getWhere() { return $this->where; } /** * @return $this */ public function addWhere(array $where) { $this->where[] = $where; return $this; } /** * Add an array of results and if so, stop propagation. */ public function setResults(array $results): void { $this->results = $results; $this->hasResults = true; $this->stopPropagation(); } /** * Returns the results. * * @return array */ public function getResults() { return $this->results; } /** * Returns the subscribed tables untill the match was found. * * @return array */ public function getTables() { sort($this->tables); return $this->tables; } /** * @return mixed */ public function getTableColumns($table = null) { ksort($this->tableColumns); return ($table) ? $this->tableColumns[$table] : $this->tableColumns; } /** * Returns boolean if the results were set or not. * * @return bool */ public function hasResults() { return $this->hasResults; } /** * @return User */ public function getUser() { return $this->user; } }