mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-15 04:27:14 +01:00
71 lines
1.8 KiB
PHP
71 lines
1.8 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Xentral\Modules\Report;
|
||
|
|
||
|
use Xentral\Components\Database\Database;
|
||
|
use Xentral\Components\Util\StringUtil;
|
||
|
use Xentral\Modules\Report\Data\ReportData;
|
||
|
|
||
|
abstract class AbstractReportExportService
|
||
|
{
|
||
|
/** @var string $fileExtension */
|
||
|
protected $fileExtension = '';
|
||
|
|
||
|
/** @var Database $db */
|
||
|
protected $db;
|
||
|
|
||
|
/** @var ReportService $service */
|
||
|
protected $service;
|
||
|
|
||
|
/** @var ReportGateway $gateway */
|
||
|
protected $gateway;
|
||
|
|
||
|
/** @var string */
|
||
|
protected $tempDir;
|
||
|
|
||
|
/**
|
||
|
* @param Database $db
|
||
|
* @param ReportGateway $gateway
|
||
|
* @param ReportService $service
|
||
|
* @param string $tempDir
|
||
|
*/
|
||
|
public function __construct(Database $db, ReportGateway $gateway, ReportService $service, $tempDir)
|
||
|
{
|
||
|
$this->db = $db;
|
||
|
$this->gateway = $gateway;
|
||
|
$this->service = $service;
|
||
|
$this->tempDir = $tempDir;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param ReportData $report
|
||
|
* @param string $filename
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function generateFileName(ReportData $report, $filename = '')
|
||
|
{
|
||
|
if($filename === ''){
|
||
|
$filename = sprintf('Report_{BERICHTNAME}_{TIMESTAMP}.%s', $this->fileExtension);
|
||
|
}
|
||
|
$variables = ['{TIMESTAMP}', '{DATUM}', '{BERICHTNAME}'];
|
||
|
$values = [time(), date('Y-m-d_H-i-s'), $report->getName()];
|
||
|
$filename = str_replace($variables, $values, $filename);
|
||
|
if (substr(strtolower($filename), -strlen($this->fileExtension)) !== strtolower($this->fileExtension)) {
|
||
|
$filename = "{$filename}.{$this->fileExtension}";
|
||
|
}
|
||
|
|
||
|
return StringUtil::toFilename($filename);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string $fileName
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function genereateFilePath($fileName)
|
||
|
{
|
||
|
return sprintf('%s%s', $this->tempDir, $fileName);
|
||
|
}
|
||
|
}
|