Search Documentation

Search for pages and headings in the documentation

LicenseUsageController

Der LicenseUsageController ist die zentrale Schnittstelle für das Ressourcen-Management in CrispyCMS. Er ermöglicht Entwicklern und Administratoren, den aktuellen Ressourcenverbrauch (wie Seitenaufrufe, Benutzerkonten oder Datenbankeinträge) zu überwachen und die Einhaltung der lizenzierten Limits sicherzustellen.

Diese Klasse wird typischerweise verwendet, um:

  1. Funktionen zu sperren, wenn Limits erreicht sind (z. B. keine neuen Benutzer registrieren).
  2. Warnungen anzuzeigen, wenn Limits bald ausgeschöpft sind.
  3. Dashboards zu befüllen, um den aktuellen Systemstatus zu visualisieren.

Namespace

Crispy\Controllers\LicenseUsageController

Grundlegende Lizenzprüfung

Bevor spezifische Limits geprüft werden, sollte sichergestellt sein, dass das System über eine gültige Basislizenz verfügt.

licenseAvailable

Diese Methode ist der wichtigste Einstiegspunkt. Sie validiert, ob eine Lizenz hinterlegt und kryptografisch gültig ist. Ohne eine positive Rückmeldung dieser Methode geben fast alle anderen Prüfungen false zurück.

isPluginFeatureEnabled

Prüft spezifisch, ob die aktuelle Lizenz die Installation und Nutzung von Plugins erlaubt. Dies ist nützlich, um Menüpunkte für den Plugin-Manager auszublenden, falls der Tarif dies nicht unterstützt.

Verbrauchsmetriken abrufen

Der Controller bietet diverse Getter-Methoden, um absolute Zahlen zum aktuellen Verbrauch abzurufen. Diese Methoden eignen sich hervorragend für Statistik-Widgets im Admin-Dashboard.

Verfügbare Zähler-Methoden

Die folgenden Methoden geben jeweils einen Integer zurück:

MethodeBeschreibungReset-Intervall
getMonthlyCaptchaCount()Anzahl verbrauchter Captcha-Validierungen.Monatlich
getMonthlyPageViewCount()Gesamtzahl der Seitenaufrufe (Frontend).Monatlich
getActiveUsersCount()Anzahl der aktiven Benutzerkonten.-
getAllPageCount()Anzahl der angelegten CMS-Seiten.-
getAllTemplatesCount()Anzahl der installierten Templates.-
getAllLayoutsCount()Anzahl der definierten Layouts.-
getAllCategoriesCount()Anzahl der Taxonomie-Kategorien.-
getAllRolesCount()Anzahl der Benutzerrollen.-

Beispiel für ein Dashboard-Widget:

<div class="stats-card">
    <h3>Seitenaufrufe (Monat)</h3>
    <div class="text-2xl font-bold">
        {{ LicenseUsageController.getMonthlyPageViewCount() }}
    </div>
</div>

Limit-Validierung (Enforcement)

Um die Einhaltung der Lizenzbedingungen technisch durchzusetzen, bietet der Controller Methoden, die prüfen, ob ein spezifisches Limit überschritten wurde (ExceedLimit). Diese geben einen Boolean zurück: true bedeutet, das Limit ist erreicht oder überschritten (Aktion blockieren), false bedeutet, es sind noch Ressourcen verfügbar.

Kritische Limits

Die folgenden Methoden sollten vor der Erstellung neuer Ressourcen aufgerufen werden:

  • usersExceedLimit()
  • pagesExceedLimit()
  • templatesExceedLimit()
  • layoutsExceedLimit()
  • categoriesExceedLimit()
  • rolesExceedLimit()

Traffic-Limits

Für dynamische Limits wie Seitenaufrufe oder Captchas gibt es spezifische Prüfungen.

  • pageViewsExceedLimit()
  • captchaCountLimitExceeded()
if ($controller->captchaCountLimitExceeded()) {
    // Fallback auf alternative Sicherheitsmethode oder Blockierung
    $form->disableCaptcha();
}

Frühwarnsysteme

Damit Administratoren rechtzeitig reagieren können, bevor ein Dienst eingestellt wird, bietet der Controller Methoden, die bereits bei 80% Auslastung anschlagen.

  • captchaNearlyExceedLimit()
  • pageViewNearlyExceedLimit()

Diese eignen sich ideal, um Warnhinweise im Admin-Bereich einzublenden:

{% if LicenseUsageController.pageViewNearlyExceedLimit() %}
    <Alert variant="warning" class="mb-4">
        <Icon name="alert-triangle" class="size-4" />
        <AlertTitle>Traffic-Warnung</AlertTitle>
        <AlertDescription>
            Sie haben 80% Ihres monatlichen Limits für Seitenaufrufe erreicht. 
            Bitte prüfen Sie ein Upgrade Ihrer Lizenz.
        </AlertDescription>
    </Alert>
{% endif %}