OpenXE/classes/Modules/Report/AbstractReportExportService.php

71 lines
1.8 KiB
PHP
Raw Normal View History

2021-05-21 08:49:41 +02:00
<?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);
}
}