Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
namespace Xentral\Modules\Report;
|
||||
|
||||
use Exception;
|
||||
use Xentral\Modules\Report\Data\ReportData;
|
||||
use Xentral\Modules\Report\Exception\JsonExportException;
|
||||
|
||||
final class ReportJsonExportService extends AbstractReportExportService
|
||||
{
|
||||
/** @var string $fileExtension */
|
||||
protected $fileExtension = 'json';
|
||||
|
||||
/**
|
||||
* @param ReportData $report
|
||||
* @param string $filename
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function createJsonFileFromReport(ReportData $report, $filename = '')
|
||||
{
|
||||
$filename = $this->generateFileName($report, $filename);
|
||||
$filePath = $this->genereateFilePath($filename);
|
||||
$data = $this->generateJsonStructure($report);
|
||||
$jsonString = json_encode($data, JSON_PRETTY_PRINT);
|
||||
try {
|
||||
$resource = fopen($filePath, 'x+b');
|
||||
fwrite($resource, $jsonString);
|
||||
fclose($resource);
|
||||
} catch (Exception $e) {
|
||||
throw new JsonExportException(sprintf('JSON export failed: %s', $e->getMessage()), $e->getCode(), $e);
|
||||
}
|
||||
|
||||
return $filePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ReportData $report
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function generateJsonStructure(ReportData $report)
|
||||
{
|
||||
$id = $report->getId();
|
||||
$data = $report->jsonSerialize();
|
||||
$share = $this->gateway->findShareArrayByReportId($id);
|
||||
$data['share'] = null;
|
||||
if ($share === null || count($share) === 0) {
|
||||
return $data;
|
||||
}
|
||||
$share['chart_public'] = ($share['chart_public'] === 1);
|
||||
$share['file_public'] = ($share['file_public'] === 1);
|
||||
$share['file_pdf_enabled'] = ($share['file_pdf_enabled'] === 1);
|
||||
$share['file_csv_enabled'] = ($share['file_csv_enabled'] === 1);
|
||||
$share['file_xls_enabled'] = ($share['file_xls_enabled'] === 1);
|
||||
$share['menu_public'] = ($share['menu_public'] === 1);
|
||||
$share['tab_public'] = ($share['tab_public'] === 1);
|
||||
unset($share['id'], $share['report_id']);
|
||||
|
||||
$data['share'] = $share;
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user