# 5. Erweiterung für Entwickler

Das Admin Aktivitätsprotokoll stellt eine öffentliche PHP-Extension-API bereit, mit der Entwickler eigene Entitäten für die Protokollierung registrieren können. Registrierte Entitäten erscheinen automatisch in der Plugin-Konfiguration und werden vollständig in der Protokollierung erfasst.

## Interface implementieren

Erstellen Sie eine Klasse, die `TrackableEntityProviderInterface` implementiert:

```php
use Momocode\MomoAdminActivityLog\Extension\TrackableEntityProviderInterface;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\DataAbstractionLayer\EntityWriteResult;

class MyCustomEntityProvider implements TrackableEntityProviderInterface
{
    public function getEntityName(): string
    {
        // DAL-Entitätsname (entspricht dem Tabellennamen)
        return 'my_custom_entity';
    }

    public function getLabel(): string
    {
        // Lesbarer Name, der in der Plugin-Konfiguration angezeigt wird
        return 'Meine benutzerdefinierte Entität';
    }

    public function resolveDisplayName(string $entityId, EntityWriteResult $writeResult, Context $context): ?string
    {
        // Optional: lesbaren Anzeigenamen für einen Protokolleintrag zurückgeben.
        // Wird aufgerufen, wenn ein Eintrag angelegt wird.
        // Gibt null zurück, wenn kein Name aufgelöst werden kann (Fallback auf die ID).
        return null;
    }

    public function getAdminRoute(): ?string
    {
        // Optional: Vue-Router-Route zur Detailseite der Entität.
        // Wird für Deep-Links in der Protokoll-Listenansicht verwendet.
        // Format: 'sw.my.custom.entity.detail'
        // Gibt null zurück, wenn keine Detailseite vorhanden ist.
        return null;
    }
}
```

## Service registrieren

Registrieren Sie den Provider in Ihrer `services.xml` mit dem Tag `momo.activity_log.entity_provider`:

```xml
<service id="MyVendor\MyPlugin\ActivityLog\MyCustomEntityProvider">
    <tag name="momo.activity_log.entity_provider" entity="my_custom_entity"/>
</service>
```

Das ist alles – der Compiler Pass des Plugins registriert den Provider automatisch. Beim nächsten Container-Build wird die Entität in die Protokollierung aufgenommen.

## Ergebnis

Nach der Registrierung:

* Erscheint die Entität in der Plugin-Konfiguration unter **Überwachte Entitäten** und kann dort aktiviert oder deaktiviert werden
* Werden alle Schreibvorgänge auf diese Entität automatisch protokolliert, sobald sie in der Konfiguration ausgewählt ist
* Werden Anzeigenamen (sofern `resolveDisplayName()` implementiert) in der Listenansicht angezeigt
* Werden Deep-Links (sofern `getAdminRoute()` implementiert) in der Listenansicht als klickbare Links gerendert

## Hinweise

* Die Methoden `resolveDisplayName()` und `getAdminRoute()` sind optional. Wenn sie `null` zurückgeben, zeigt das Plugin die Entitäts-ID als Klartext an.
* Das Interface befindet sich im Namespace `Momocode\MomoAdminActivityLog\Extension`.
* Der Service-Tag `momo.activity_log.entity_provider` muss exakt so geschrieben sein – andernfalls wird der Provider vom Compiler Pass nicht erkannt.
