ArrayExporter.php in Loft Data Grids 7.2
File
vendor/aklump/loft_data_grids/src/AKlump/LoftDataGrids/ArrayExporter.php
View source
<?php
namespace AKlump\LoftDataGrids;
class ArrayExporter extends Exporter implements ExporterInterface {
protected $extension = '.php';
public function getInfo() {
$info = parent::getInfo();
$info = array(
'name' => 'Php Array Format',
'shortname' => 'Array',
'description' => 'Export data in PHP array format.',
) + $info;
return $info;
}
public function compile($page_id = null) {
$data = $this
->getDataAsTransformedArray();
if (!is_null($page_id) && array_key_exists($page_id, $data)) {
$data = array(
$data[$page_id],
);
}
if ($this
->getSettings()->prune) {
if (count($data) === 1) {
$data = reset($data);
}
if (count($data) === 1) {
$data = reset($data);
}
}
$this->output = $data;
return $this;
}
public function saveFile($directory, $filename = null, $page_id = null) {
$filename = $filename ? $this
->setFilename($filename) : $this
->getFilename();
if (!is_writable($directory)) {
throw new \RuntimeException("{$directory} is not writable; cannot save {$filename}.");
}
$path = $directory . '/' . $filename;
$contents = $this
->compile($page_id)
->export();
$contents = "<?php" . PHP_EOL . var_export($contents, true) . ';' . PHP_EOL;
file_put_contents($path, $contents);
return $path;
}
protected function setSettingsDefault() {
parent::setSettingsDefault();
$this->settings->prune = false;
return $this;
}
}