<?php namespace Xentral\Widgets\DataTable; use Closure; use Xentral\Components\Database\SqlQuery\SelectQuery; use Xentral\Widgets\DataTable\Column\ColumnCollection; use Xentral\Widgets\DataTable\Options\DataTableOptions; use Xentral\Widgets\DataTable\Feature\FeatureCollection; use Xentral\Widgets\DataTable\Filter\FilterCollection; final class PreparedDataTable implements DataTableInterface { /** @var DataTableBuildConfig $config */ private $config; /** @var SelectQuery $query */ private $query; /** @var DataTableOptions $options */ private $options; /** @var ColumnCollection $columns */ private $columns; /** @var FeatureCollection $features */ private $features; /** @var FilterCollection $filters */ private $filters; /** @var Closure|null $customSearch @todo */ private $customSearch; /** * @param DataTableBuildConfig $config * @param DataTableOptions $options * @param SelectQuery $selectQuery * @param ColumnCollection $columns * @param FeatureCollection $features * @param FilterCollection $filters */ public function __construct( DataTableBuildConfig $config, DataTableOptions $options, SelectQuery $selectQuery, ColumnCollection $columns, FeatureCollection $features, FilterCollection $filters ) { $this->config = $config; $this->options = $options; $this->query = $selectQuery; $this->columns = $columns; $this->features = $features; $this->filters = $filters; } /** * @return DataTableBuildConfig */ public function getConfig() { return $this->config; } /** * @return DataTableOptions */ public function getOptions() { return $this->options; } /** * @return SelectQuery */ public function getBaseQuery() { return $this->query; } /** * @return ColumnCollection */ public function getColumns() { return $this->columns; } /** * @return FeatureCollection */ public function getFeatures() { return $this->features; } /** * @return FilterCollection */ public function getFilters() { return $this->filters; } /** * @return Closure|null @todo */ public function getCustomSearch() { return $this->customSearch; } }