Initial commit: CloudOps infrastructure platform

This commit is contained in:
root
2026-04-09 19:58:57 +02:00
commit 1166a52f26
7762 changed files with 839452 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\IntegrationsBundle\Sync\DAO\Mapping\MappingManualDAO;
use Mautic\IntegrationsBundle\Sync\DAO\Sync\InputOptionsDAO;
use Mautic\IntegrationsBundle\Sync\DAO\Sync\Order\OrderResultsDAO;
use Symfony\Contracts\EventDispatcher\Event;
class CompletedSyncIterationEvent extends Event
{
public function __construct(
private OrderResultsDAO $orderResultsDAO,
private int $iteration,
private InputOptionsDAO $inputOptionsDAO,
private MappingManualDAO $mappingManualDAO,
) {
}
public function getIntegration(): string
{
return $this->mappingManualDAO->getIntegration();
}
public function getOrderResults(): OrderResultsDAO
{
return $this->orderResultsDAO;
}
public function getIteration(): int
{
return $this->iteration;
}
public function getInputOptions(): InputOptionsDAO
{
return $this->inputOptionsDAO;
}
public function getMappingManual(): MappingManualDAO
{
return $this->mappingManualDAO;
}
}

View File

@@ -0,0 +1,35 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\PluginBundle\Entity\Integration;
use Symfony\Contracts\EventDispatcher\Event;
final class ConfigAuthUrlEvent extends Event
{
public function __construct(private Integration $integrationConfiguration, private string $authUrl)
{
}
public function getIntegrationConfiguration(): Integration
{
return $this->integrationConfiguration;
}
public function getIntegration(): string
{
return $this->integrationConfiguration->getName();
}
public function getAuthUrl(): string
{
return $this->authUrl;
}
public function setAuthUrl(string $authUrl): void
{
$this->authUrl = $authUrl;
}
}

View File

@@ -0,0 +1,26 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\PluginBundle\Entity\Integration;
use Symfony\Contracts\EventDispatcher\Event;
class ConfigSaveEvent extends Event
{
public function __construct(
private Integration $integrationConfiguration,
) {
}
public function getIntegrationConfiguration(): Integration
{
return $this->integrationConfiguration;
}
public function getIntegration(): string
{
return $this->integrationConfiguration->getName();
}
}

View File

@@ -0,0 +1,26 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\PluginBundle\Entity\Integration;
use Symfony\Contracts\EventDispatcher\Event;
class FormLoadEvent extends Event
{
public function __construct(
private Integration $integrationConfiguration,
) {
}
public function getIntegrationConfiguration(): Integration
{
return $this->integrationConfiguration;
}
public function getIntegration(): string
{
return $this->integrationConfiguration->getName();
}
}

View File

@@ -0,0 +1,27 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\LeadBundle\Entity\Company;
use Symfony\Contracts\EventDispatcher\Event;
final class InternalCompanyEvent extends Event
{
public function __construct(
private string $integrationName,
private Company $company,
) {
}
public function getIntegrationName(): string
{
return $this->integrationName;
}
public function getCompany(): Company
{
return $this->company;
}
}

View File

@@ -0,0 +1,27 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\LeadBundle\Entity\Lead;
use Symfony\Contracts\EventDispatcher\Event;
final class InternalContactEvent extends Event
{
public function __construct(
private string $integrationName,
private Lead $contact,
) {
}
public function getIntegrationName(): string
{
return $this->integrationName;
}
public function getContact(): Lead
{
return $this->contact;
}
}

View File

@@ -0,0 +1,49 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\IntegrationsBundle\Entity\ObjectMapping;
use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\Object\ObjectInterface;
use Symfony\Contracts\EventDispatcher\Event;
class InternalObjectCreateEvent extends Event
{
/**
* @var ObjectMapping[]
*/
private array $objectMappings = [];
public function __construct(
private ObjectInterface $object,
private array $createObjects,
) {
}
public function getObject(): ObjectInterface
{
return $this->object;
}
public function getCreateObjects(): array
{
return $this->createObjects;
}
/**
* @return ObjectMapping[]
*/
public function getObjectMappings(): array
{
return $this->objectMappings;
}
/**
* @param ObjectMapping[] $objectMappings
*/
public function setObjectMappings(array $objectMappings): void
{
$this->objectMappings = $objectMappings;
}
}

View File

@@ -0,0 +1,26 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\Object\ObjectInterface;
use Symfony\Contracts\EventDispatcher\Event;
class InternalObjectEvent extends Event
{
private array $objects = [];
public function addObject(ObjectInterface $object): void
{
$this->objects[] = $object;
}
/**
* @return ObjectInterface[]
*/
public function getObjects(): array
{
return $this->objects;
}
}

View File

@@ -0,0 +1,45 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\Object\ObjectInterface;
use Symfony\Contracts\EventDispatcher\Event;
final class InternalObjectFindByIdEvent extends Event
{
private ?int $id = null;
private ?object $entity = null;
public function __construct(
private ObjectInterface $object,
) {
}
public function getObject(): ObjectInterface
{
return $this->object;
}
public function getId(): ?int
{
return $this->id;
}
public function setId(int $id): void
{
$this->id = $id;
}
public function getEntity(): ?object
{
return $this->entity;
}
public function setEntity(object $entity): void
{
$this->entity = $entity;
}
}

View File

@@ -0,0 +1,103 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\IntegrationsBundle\Sync\DAO\DateRange;
use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\Object\ObjectInterface;
use Symfony\Contracts\EventDispatcher\Event;
class InternalObjectFindEvent extends Event
{
/**
* @var int[]
*/
private array $ids = [];
private array $foundObjects = [];
private ?DateRange $dateRange = null;
private ?int $start = null;
private ?int $limit = null;
private array $fieldValues = [];
public function __construct(
private ObjectInterface $object,
) {
}
public function getObject(): ObjectInterface
{
return $this->object;
}
/**
* @return int[]
*/
public function getIds(): array
{
return $this->ids;
}
/**
* @param int[]|string[] $ids
*/
public function setIds(array $ids): void
{
$this->ids = $ids;
}
public function getFoundObjects(): array
{
return $this->foundObjects;
}
public function setFoundObjects(array $foundObjects): void
{
$this->foundObjects = $foundObjects;
}
public function getDateRange(): ?DateRange
{
return $this->dateRange;
}
public function setDateRange(?DateRange $dateRange): void
{
$this->dateRange = $dateRange;
}
public function getStart(): ?int
{
return $this->start;
}
public function setStart(?int $start): void
{
$this->start = $start;
}
public function getLimit(): ?int
{
return $this->limit;
}
public function setLimit(?int $limit): void
{
$this->limit = $limit;
}
public function getFieldValues(): array
{
return $this->fieldValues;
}
public function setFieldValues(array $fieldValues): void
{
$this->fieldValues = $fieldValues;
}
}

View File

@@ -0,0 +1,48 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\Object\ObjectInterface;
use Symfony\Contracts\EventDispatcher\Event;
class InternalObjectOwnerEvent extends Event
{
/**
* Format: [object_id => owner_id].
*/
private array $owners = [];
/**
* @param int[] $objectIds
*/
public function __construct(
private ObjectInterface $object,
private array $objectIds,
) {
}
public function getObject(): ObjectInterface
{
return $this->object;
}
/**
* @return int[]
*/
public function getObjectIds(): array
{
return $this->objectIds;
}
public function getOwners(): array
{
return $this->owners;
}
public function setOwners(array $owners): void
{
$this->owners = $owners;
}
}

View File

@@ -0,0 +1,39 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\Object\ObjectInterface;
use Symfony\Contracts\EventDispatcher\Event;
class InternalObjectRouteEvent extends Event
{
private ?string $route = null;
public function __construct(
private ObjectInterface $object,
private int $id,
) {
}
public function getObject(): ObjectInterface
{
return $this->object;
}
public function getId(): int
{
return $this->id;
}
public function getRoute(): ?string
{
return $this->route;
}
public function setRoute(?string $route): void
{
$this->route = $route;
}
}

View File

@@ -0,0 +1,62 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\IntegrationsBundle\Sync\DAO\Mapping\UpdatedObjectMappingDAO;
use Mautic\IntegrationsBundle\Sync\DAO\Sync\Order\ObjectChangeDAO;
use Mautic\IntegrationsBundle\Sync\SyncDataExchange\Internal\Object\ObjectInterface;
use Symfony\Contracts\EventDispatcher\Event;
class InternalObjectUpdateEvent extends Event
{
/**
* @var UpdatedObjectMappingDAO[]
*/
private array $updatedObjectMappings = [];
public function __construct(
private ObjectInterface $object,
private array $identifiedObjectIds,
/**
* @var ObjectChangeDAO[]
*/
private array $updateObjects,
) {
}
public function getObject(): ObjectInterface
{
return $this->object;
}
public function getIdentifiedObjectIds(): array
{
return $this->identifiedObjectIds;
}
/**
* @return ObjectChangeDAO[]
*/
public function getUpdateObjects(): array
{
return $this->updateObjects;
}
/**
* @return UpdatedObjectMappingDAO[]
*/
public function getUpdatedObjectMappings(): array
{
return $this->updatedObjectMappings;
}
/**
* @param UpdatedObjectMappingDAO[] $updatedObjectMappings
*/
public function setUpdatedObjectMappings(array $updatedObjectMappings): void
{
$this->updatedObjectMappings = $updatedObjectMappings;
}
}

View File

@@ -0,0 +1,32 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\PluginBundle\Entity\Integration;
use Symfony\Contracts\EventDispatcher\Event;
class KeysDecryptionEvent extends Event
{
public function __construct(
private Integration $integrationConfiguration,
private array $keys,
) {
}
public function getIntegrationConfiguration(): Integration
{
return $this->integrationConfiguration;
}
public function getKeys(): array
{
return $this->keys;
}
public function setKeys(array $keys): void
{
$this->keys = $keys;
}
}

View File

@@ -0,0 +1,32 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\PluginBundle\Entity\Integration;
use Symfony\Contracts\EventDispatcher\Event;
class KeysEncryptionEvent extends Event
{
public function __construct(
private Integration $integrationConfiguration,
private array $keys,
) {
}
public function getIntegrationConfiguration(): Integration
{
return $this->integrationConfiguration;
}
public function getKeys(): array
{
return $this->keys;
}
public function setKeys(array $keys): void
{
$this->keys = $keys;
}
}

View File

@@ -0,0 +1,45 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\PluginBundle\Entity\Integration;
use Symfony\Contracts\EventDispatcher\Event;
final class KeysSaveEvent extends Event
{
/**
* @var array<string,string>
*/
private array $newKeys;
/**
* @param array<string,string> $oldKeys
*/
public function __construct(private Integration $integrationConfiguration, private array $oldKeys)
{
$this->newKeys = $integrationConfiguration->getApiKeys();
}
public function getIntegrationConfiguration(): Integration
{
return $this->integrationConfiguration;
}
/**
* @return array<string,string>
*/
public function getOldKeys(): array
{
return $this->oldKeys;
}
/**
* @return array<string,string>
*/
public function getNewKeys(): array
{
return $this->newKeys;
}
}

View File

@@ -0,0 +1,62 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\CoreBundle\Event\CommonEvent;
/**
* This event is dispatched to allow plugins to provide tokens which create links
* to any synced integration objects they may provide.
*/
class MappedIntegrationObjectTokenEvent extends CommonEvent
{
private array $tokens = [];
/**
* Add a new mapped integration object token.
*
* @param string $integrationName - The name of the integration
* @param $objectName - The name of the object in sync_object_mapping table
* @param $objectLink - The base_url to direct users to the object on the integration site
* @param string $title - The title of the token in the token select dropdown
* @param string $linkText - The link text used for the url provided in $objectLink
* @param string $default - The default value to show when the token value isnt found
*/
public function addToken(
$integrationName,
$objectName,
$objectLink,
$title = '',
$linkText = 'Link Text',
$default = 'Default Value',
): void {
$this->tokens[$integrationName][$objectName] = [
'base_url' => $objectLink,
'token_title' => $title,
'link_text' => $linkText,
'default' => $default,
];
}
/**
* @return array
*/
public function getTokens()
{
return $this->tokens;
}
/**
* Get only the tokens provided by a particular integration.
*
* @param string $integrationName
*
* @return array
*/
public function getTokensByIntegration($integrationName)
{
return $this->tokens[$integrationName] ?? [];
}
}

View File

@@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Symfony\Contracts\EventDispatcher\Event;
class MauticSyncFieldsLoadEvent extends Event
{
public function __construct(
private string $objectName,
private array $fields,
) {
}
public function getFields(): array
{
return $this->fields;
}
public function addField(string $key, string $name): void
{
$this->fields[$key] = $name;
}
public function getObjectName(): string
{
return $this->objectName;
}
}

View File

@@ -0,0 +1,41 @@
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Event;
use Mautic\IntegrationsBundle\Sync\DAO\Sync\InputOptionsDAO;
use Symfony\Contracts\EventDispatcher\Event;
class SyncEvent extends Event
{
public function __construct(
private InputOptionsDAO $inputOptionsDAO,
) {
}
public function getIntegrationName(): string
{
return $this->inputOptionsDAO->getIntegration();
}
public function isIntegration(string $integrationName): bool
{
return $this->getIntegrationName() === $integrationName;
}
public function getFromDateTime(): ?\DateTimeInterface
{
return $this->inputOptionsDAO->getStartDateTime();
}
public function getToDateTime(): ?\DateTimeInterface
{
return $this->inputOptionsDAO->getEndDateTime();
}
public function getInputOptions(): InputOptionsDAO
{
return $this->inputOptionsDAO;
}
}