| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- <?php
- namespace Encore\Admin\Grid;
- use Encore\Admin\Grid;
- use Encore\Admin\Grid\Exporters\CsvExporter;
- class Exporter
- {
- /**
- * Export scope constants.
- */
- const SCOPE_ALL = 'all';
- const SCOPE_CURRENT_PAGE = 'page';
- const SCOPE_SELECTED_ROWS = 'selected';
- /**
- * @var Grid
- */
- protected $grid;
- /**
- * Available exporter drivers.
- *
- * @var array
- */
- protected static $drivers = [];
- /**
- * Export query name.
- *
- * @var string
- */
- public static $queryName = '_export_';
- /**
- * Create a new Exporter instance.
- *
- * @param Grid $grid
- */
- public function __construct(Grid $grid)
- {
- $this->grid = $grid;
- $this->grid->model()->usePaginate(false);
- }
- /**
- * Set export query name.
- *
- * @param $name
- */
- public static function setQueryName($name)
- {
- static::$queryName = $name;
- }
- /**
- * Extends new exporter driver.
- *
- * @param $driver
- * @param $extend
- */
- public static function extend($driver, $extend)
- {
- static::$drivers[$driver] = $extend;
- }
- /**
- * Resolve export driver.
- *
- * @param string $driver
- *
- * @return CsvExporter
- */
- public function resolve($driver)
- {
- if ($driver instanceof Grid\Exporters\AbstractExporter) {
- return $driver->setGrid($this->grid);
- }
- return $this->getExporter($driver);
- }
- /**
- * Get export driver.
- *
- * @param string $driver
- *
- * @return CsvExporter
- */
- protected function getExporter($driver)
- {
- if (!array_key_exists($driver, static::$drivers)) {
- return $this->getDefaultExporter();
- }
- return new static::$drivers[$driver]($this->grid);
- }
- /**
- * Get default exporter.
- *
- * @return CsvExporter
- */
- public function getDefaultExporter()
- {
- return new CsvExporter($this->grid);
- }
- /**
- * Format query for export url.
- *
- * @param int $scope
- * @param null $args
- *
- * @return array
- */
- public static function formatExportQuery($scope = '', $args = null)
- {
- $query = '';
- if ($scope == static::SCOPE_ALL) {
- $query = 'all';
- }
- if ($scope == static::SCOPE_CURRENT_PAGE) {
- $query = "page:$args";
- }
- if ($scope == static::SCOPE_SELECTED_ROWS) {
- $query = "selected:$args";
- }
- return [static::$queryName => $query];
- }
- }
|