- Removed CAIKnowledge localization files for various languages (el_GR, en_GB, en_US, es_ES, es_MX, fa_IR, fr_FR, hr_HR, hu_HU, id_ID, it_IT, ja_JP, lt_LT, lv_LV, nb_NO, nl_NL, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sk_SK, sl_SI, sr_RS, sv_SE, th_TH, tr_TR, uk_UA, ur_IN, vi_VN, zh_CN, zh_TW). - Deleted related layout and metadata files for CAIKnowledge. - Removed references to CAIKnowledge in existing metadata definitions for CDokumente, CMietinkasso, and CVmhRumungsklage. - Updated config and state files to reflect the removal of CAIKnowledge. - Cleaned up unused localization keys in existing JSON files.
68 lines
1.8 KiB
PHP
68 lines
1.8 KiB
PHP
<?php
|
|
namespace Espo\Custom\Hooks\CDokumente;
|
|
|
|
use Espo\ORM\Entity;
|
|
use Espo\ORM\Repository\Option\SaveOptions;
|
|
use Espo\Core\Hook\Hook\AfterSave;
|
|
|
|
/**
|
|
* Hook: Bei Änderung eines Dokuments syncStatus und aiSyncStatus auf "unclean" setzen
|
|
* und die verknüpfte CAkten-Entity aktualisieren.
|
|
*/
|
|
class UpdateJunctionSyncStatus implements AfterSave
|
|
{
|
|
public function __construct(
|
|
private \Espo\ORM\EntityManager $entityManager
|
|
) {}
|
|
|
|
public function afterSave(Entity $entity, SaveOptions $options): void
|
|
{
|
|
if ($entity->isNew()) {
|
|
return;
|
|
}
|
|
|
|
if (!$this->hasRelevantChanges($entity)) {
|
|
return;
|
|
}
|
|
|
|
if (!$entity->get('cAktenId')) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
$entity->set('syncStatus', 'unclean');
|
|
$entity->set('aiSyncStatus', 'unclean');
|
|
$this->entityManager->saveEntity($entity, ['silent' => true, 'skipHooks' => true]);
|
|
|
|
// Akte triggern → BeforeSave-Hook UpdateLastSyncFromDocuments aggregiert Status
|
|
$akte = $this->entityManager->getEntityById('CAkten', $entity->get('cAktenId'));
|
|
if ($akte) {
|
|
$this->entityManager->saveEntity($akte, ['silent' => true]);
|
|
}
|
|
} catch (\Exception $e) {
|
|
$GLOBALS['log']->error('CDokumente UpdateJunctionSyncStatus Hook Error: ' . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
private function hasRelevantChanges(Entity $entity): bool
|
|
{
|
|
$relevantFields = [
|
|
'name',
|
|
'description',
|
|
'dokument',
|
|
'dokumentId',
|
|
'preview',
|
|
'previewId',
|
|
'fileStatus',
|
|
];
|
|
|
|
foreach ($relevantFields as $field) {
|
|
if ($entity->isAttributeChanged($field)) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|