Initial commit: CloudOps infrastructure platform
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
<?php
|
||||
|
||||
namespace Mautic\ReportBundle\Helper;
|
||||
|
||||
use Mautic\ReportBundle\Event\ColumnCollectEvent;
|
||||
use Mautic\ReportBundle\ReportEvents;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
final class ReportHelper
|
||||
{
|
||||
public function __construct(
|
||||
private EventDispatcherInterface $dispatcher,
|
||||
) {
|
||||
}
|
||||
|
||||
public function getName(): string
|
||||
{
|
||||
return 'report';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getReportBuilderFieldType($type)
|
||||
{
|
||||
return match ($type) {
|
||||
'number' => 'int',
|
||||
'lookup', 'text', 'url', 'email', 'tel', 'region', 'country', 'locale' => 'string',
|
||||
default => $type,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns standard form fields such as id, name, publish_up, etc.
|
||||
*
|
||||
* @param string[] $removeColumns
|
||||
*
|
||||
* @return array<string,array<string,string>>
|
||||
*/
|
||||
public function getStandardColumns(string $prefix, array $removeColumns = [], string $idLink = ''): array
|
||||
{
|
||||
$aliasPrefix = str_replace('.', '_', $prefix);
|
||||
$columns = [
|
||||
$prefix.'id' => [
|
||||
'label' => 'mautic.core.id',
|
||||
'type' => 'int',
|
||||
'link' => $idLink,
|
||||
'alias' => "{$aliasPrefix}id",
|
||||
],
|
||||
$prefix.'name' => [
|
||||
'label' => 'mautic.core.name',
|
||||
'type' => 'string',
|
||||
'alias' => "{$aliasPrefix}name",
|
||||
],
|
||||
$prefix.'created_by_user' => [
|
||||
'label' => 'mautic.core.createdby',
|
||||
'type' => 'string',
|
||||
'alias' => "{$aliasPrefix}created_by_user",
|
||||
],
|
||||
$prefix.'date_added' => [
|
||||
'label' => 'mautic.report.field.date_added',
|
||||
'type' => 'datetime',
|
||||
'alias' => "{$aliasPrefix}date_added",
|
||||
],
|
||||
$prefix.'modified_by_user' => [
|
||||
'label' => 'mautic.report.field.modified_by_user',
|
||||
'type' => 'string',
|
||||
'alias' => "{$aliasPrefix}modified_by_user",
|
||||
],
|
||||
$prefix.'date_modified' => [
|
||||
'label' => 'mautic.report.field.date_modified',
|
||||
'type' => 'datetime',
|
||||
'alias' => "{$aliasPrefix}date_modified",
|
||||
],
|
||||
$prefix.'description' => [
|
||||
'label' => 'mautic.core.description',
|
||||
'type' => 'string',
|
||||
'alias' => "{$aliasPrefix}description",
|
||||
],
|
||||
$prefix.'publish_up' => [
|
||||
'label' => 'mautic.report.field.publish_up',
|
||||
'type' => 'datetime',
|
||||
'alias' => "{$aliasPrefix}publish_up",
|
||||
],
|
||||
$prefix.'publish_down' => [
|
||||
'label' => 'mautic.report.field.publish_down',
|
||||
'type' => 'datetime',
|
||||
'alias' => "{$aliasPrefix}publish_down",
|
||||
],
|
||||
$prefix.'is_published' => [
|
||||
'label' => 'mautic.report.field.is_published',
|
||||
'type' => 'bool',
|
||||
'alias' => "{$aliasPrefix}is_published",
|
||||
],
|
||||
];
|
||||
|
||||
if (empty($idLink)) {
|
||||
unset($columns[$prefix.'id']['link']);
|
||||
}
|
||||
|
||||
foreach ($removeColumns as $c) {
|
||||
if (isset($columns[$prefix.$c])) {
|
||||
unset($columns[$prefix.$c]);
|
||||
}
|
||||
}
|
||||
|
||||
return $columns;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $properties
|
||||
*
|
||||
* @return array<string, array<string, mixed>>
|
||||
*/
|
||||
public function getMappedObjectColumns(string $object, array $properties = []): array
|
||||
{
|
||||
$event = new ColumnCollectEvent($object, $properties);
|
||||
$this->dispatcher->dispatch($event, ReportEvents::REPORT_ON_COLUMN_COLLECT);
|
||||
|
||||
return array_map(
|
||||
function ($item) {
|
||||
if (isset($item['type'])) {
|
||||
$item['type'] = $this->getReportBuilderFieldType($item['type']);
|
||||
}
|
||||
|
||||
return $item;
|
||||
},
|
||||
$event->getColumns()
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user