48 lines
1.5 KiB
PHP
48 lines
1.5 KiB
PHP
<?php
|
|
namespace Espo\Custom\Hooks\CAdvowareAkten;
|
|
|
|
use Espo\ORM\Entity;
|
|
use Espo\Core\Hook\Hook\AfterRelate;
|
|
|
|
/**
|
|
* Hook: Setzt Dokument-Sync-Status auf "new" beim Verknüpfen und
|
|
* globalen syncStatus auf "unclean"
|
|
*/
|
|
class DokumenteSyncStatus implements AfterRelate
|
|
{
|
|
public function __construct(
|
|
private \Espo\ORM\EntityManager $entityManager
|
|
) {}
|
|
|
|
public function afterRelate(
|
|
Entity $entity,
|
|
string $relationName,
|
|
Entity $foreignEntity,
|
|
array $columnData,
|
|
\Espo\ORM\Repository\Option\RelateOptions $options
|
|
): void {
|
|
// Nur für dokumentes-Beziehung
|
|
if ($relationName !== 'dokumentes') {
|
|
return;
|
|
}
|
|
|
|
// Setze Sync-Status des Dokuments in der Junction-Tabelle auf "new"
|
|
$repository = $this->entityManager->getRDBRepository('CAdvowareAkten');
|
|
|
|
try {
|
|
$repository->getRelation($entity, 'dokumentes')->updateColumns(
|
|
$foreignEntity,
|
|
['syncstatus' => 'new']
|
|
);
|
|
|
|
// Setze globalen syncStatus auf "unclean"
|
|
$entity->set('syncStatus', 'unclean');
|
|
$this->entityManager->saveEntity($entity, ['silent' => true, 'skipHooks' => true]);
|
|
|
|
} catch (\Exception $e) {
|
|
// Fehler loggen, aber nicht werfen (um Verknüpfung nicht zu blockieren)
|
|
$GLOBALS['log']->error('CAdvowareAkten DokumenteSyncStatus Hook Error: ' . $e->getMessage());
|
|
}
|
|
}
|
|
}
|