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:
- Funktionen zu sperren, wenn Limits erreicht sind (z. B. keine neuen Benutzer registrieren).
- Warnungen anzuzeigen, wenn Limits bald ausgeschöpft sind.
- 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.
{% if LicenseUsageController.licenseAvailable() %}
<p>Lizenz ist verfügbar</p>
{% else %}
<p>Keine gültige Lizenz gefunden</p>
{% endif %}$controller = new LicenseUsageController();
if (!$controller->licenseAvailable()) {
// System in den Wartungsmodus versetzen oder Admin benachrichtigen
System::enterMaintenanceMode();
}
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.
{% if LicenseUsageController.isPluginFeatureEnabled() %}
<div class="plugin-section">
<!-- Plugin-Bereiche anzeigen -->
</div>
{% endif %}if ($controller->isPluginFeatureEnabled()) {
$menu->add('Plugins', '/admin/plugins');
}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.
Einige Zähler, wie getActiveUsersCount, nutzen ein Caching-System. Falls keine aktuellen Cache-Daten vorliegen, führt der Aufruf dieser Methoden zu einer Live-Zählung in der Datenbank, was die Antwortzeit geringfügig beeinflussen kann.
Verfügbare Zähler-Methoden
Die folgenden Methoden geben jeweils einen Integer zurück:
| Methode | Beschreibung | Reset-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()
// Beispiel: Neuen Benutzer anlegen
if ($controller->usersExceedLimit()) {
throw new LimitExceededException("Benutzerlimit Ihrer Lizenz erreicht.");
}
// Fortfahren mit der Erstellung
$user->create();{% if LicenseUsageController.rolesExceedLimit() %}
<div class="alert alert-danger">
Rollen-Limit überschritten!
</div>
{% endif %}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 %}