class CSVExporter in Loft Data Grids 7.2
Same name and namespace in other branches
- 6.2 vendor/aklump/loft_data_grids/src/AKlump/LoftDataGrids/CSVExporter.php \AKlump\LoftDataGrids\CSVExporter
Class CSVExporter
Hierarchy
- class \AKlump\LoftDataGrids\Exporter implements ExporterInterface
- class \AKlump\LoftDataGrids\CSVExporter implements ExporterInterface
Expanded class hierarchy of CSVExporter
File
- vendor/
aklump/ loft_data_grids/ src/ AKlump/ LoftDataGrids/ CSVExporter.php, line 7
Namespace
AKlump\LoftDataGridsView source
class CSVExporter extends Exporter implements ExporterInterface {
protected $extension = '.csv';
protected $format;
protected $page = null;
/**
* Constructor
*/
public function __construct(ExportDataInterface $data = null, $filename = '') {
parent::__construct($data, $filename);
$this->format = new \stdClass();
$this->format->bol = '';
$this->format->eol = "\r\n";
$this->format->left = '"';
$this->format->right = '"';
$this->format->sep = ',';
$this->format->escape = '"';
$this->format->html = false;
}
public function getInfo() {
$info = parent::getInfo();
$info = array(
'name' => 'Comma-separated Values Format',
'shortname' => 'CSV',
'description' => 'Export data in the .csv file format. Fields are wrapped with double quotes, separated by commas. Lines are separated by \\r\\n',
) + $info;
return $info;
}
public function compile($page_id = null) {
$pages = $this
->getData()
->get();
if ($page_id === null && count($pages) > 1 || !array_key_exists($page_id, $pages)) {
reset($pages);
$page_id = key($pages);
}
$data = $this
->getData()
->getPage($page_id);
$this->output = '';
$this->output .= $this
->collapseRow($this
->getHeader($page_id));
// Format the rows:
foreach ($data as $row) {
$this->output .= $this
->collapseRow($row);
}
return $this;
}
/**
* Collapse a row
*/
protected function collapseRow($row) {
$output = '';
// Check if we're dealing with a simple or complex row
if (isset($row['data'])) {
foreach ($row as $key => $value) {
if ($key == 'data') {
$cells = $value;
}
}
}
else {
$cells = $row;
}
$output = array();
if (count($cells)) {
foreach ($cells as $column => $cell) {
$output[] = $this
->collapseCell($cell, $column);
}
}
$output = $this->format->bol . implode($this->format->sep, $output) . $this->format->eol;
return $output;
}
/**
* Collapse a single cell in a row.
*
* @param array $cell
*
* @return string
*/
protected function collapseCell($cell, $column) {
//compress a complex cell
if (is_array($cell)) {
$cell = isset($cell['data']) ? $cell['data'] : '';
}
if (!$this->format->html) {
$cell = strip_tags($cell);
}
// Escape chars that conflice with delimiters
if (!empty($this->format->escape)) {
$escapeables = array(
$this->format->left,
$this->format->right,
);
$escapeables = array_filter(array_unique($escapeables));
foreach ($escapeables as $find) {
$cell = str_replace($find, $this->format->escape . $find, $cell);
}
}
return $this->format->left . $cell . $this->format->right;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CSVExporter:: |
protected | property | 3 | |
CSVExporter:: |
protected | property | 2 | |
CSVExporter:: |
protected | property | ||
CSVExporter:: |
protected | function | Collapse a single cell in a row. | 1 |
CSVExporter:: |
protected | function | Collapse a row | 1 |
CSVExporter:: |
public | function |
Build the string content of $this->output and return $this for chaining. Overrides ExporterInterface:: |
2 |
CSVExporter:: |
public | function |
Return info about this class Overrides Exporter:: |
3 |
CSVExporter:: |
public | function |
Constructor Overrides Exporter:: |
3 |
Exporter:: |
protected | property | ||
Exporter:: |
protected | property | ||
Exporter:: |
protected | property | ||
Exporter:: |
public | function |
Adds/Updates a single setting by name. Overrides ExporterInterface:: |
|
Exporter:: |
protected | function | ||
Exporter:: |
protected | function | Iterate over all cells and transform data as appropriate. | |
Exporter:: |
public | function |
Export data as a string Overrides ExporterInterface:: |
1 |
Exporter:: |
protected | function | Return a string as a safe filename | |
Exporter:: |
public | function |
Format a single column with format by string Overrides ExporterInterface:: |
1 |
Exporter:: |
public | function |
Return the ExportDataInterface object Overrides ExporterInterface:: |
|
Exporter:: |
protected | function | Convert ExportData to an array transforming every cell. | |
Exporter:: |
public | function |
Get the filename Overrides ExporterInterface:: |
|
Exporter:: |
public | function |
Return an array each of the keys present in the data on a page. Overrides ExporterInterface:: |
|
Exporter:: |
public | function |
Return the settings object. Overrides ExporterInterface:: |
|
Exporter:: |
public | function |
Return the showPageIds. Overrides ExporterInterface:: |
|
Exporter:: |
public | function |
Overrides ExporterInterface:: |
|
Exporter:: |
public | function |
Set the exporter to hide page ids. Overrides ExporterInterface:: |
|
Exporter:: |
public | function |
Stream as a file to the server with headers. Overrides ExporterInterface:: |
1 |
Exporter:: |
public | function |
Compile and and save to a filepath. Overrides ExporterInterface:: |
2 |
Exporter:: |
public | function |
Set the export data object Overrides ExporterInterface:: |
|
Exporter:: |
public | function |
Getter/Setter for the filename Overrides ExporterInterface:: |
|
Exporter:: |
public | function |
Set the settings object. Overrides ExporterInterface:: |
|
Exporter:: |
protected | function | Setup default values on object data. | 4 |
Exporter:: |
public | function |
Set a title for the exported document Overrides ExporterInterface:: |
1 |
Exporter:: |
public | function |
Set the exporter to display page ids. Overrides ExporterInterface:: |