Zum Inhalt springen
365CMS

Admin – Abo-System & Einstellungen

Version 3.4.00 (Changelog bis 3.4.08)Status StableStand 2026-10-02
Auf dieser Seite
  1. English (summary)
  2. Deutsch
  3. Bausteine
  4. Einstellungen auf /admin/subscription-settings
  5. Core-Module der Aboverwaltung
  6. Laufzeit-API (SubscriptionManager::instance())
  7. Hinweise
  8. Verwandte Dokumente

English (summary)

The subscription system consists of CMS\SubscriptionManager (CMS/core/SubscriptionManager.php), the tables cms_subscription_plans, cms_user_subscriptions, cms_subscription_usage, cms_orders, group plans via cms_user_groups.plan_id, and a set of core modules (subscriptions, subscription_limits, subscription_member_area, subscription_ordering, subscription_public_pricing, plus the three admin page modules). The settings page /admin/subscription-settings (SubscriptionSettingsModule) stores the master switches and the default plan; those switches are the legacy settings behind the core modules.

Resolution order of a user's plan: active direct subscription → plan of an active group → first plan in the table (fallback "free").

Deutsch

Bausteine

Baustein Datei / Tabelle
Laufzeit-API CMS/core/SubscriptionManager.php
Pakete cms_subscription_plans (PACKAGES.md)
Abos der Benutzer cms_user_subscriptions (status: active, cancelled, expired, trial, suspended; billing_cycle: monthly, yearly, lifetime; start_date, end_date, next_billing_date, cancelled_at)
Ressourcen-Nutzung cms_subscription_usage
Gruppen-Pakete cms_user_groups.plan_id (../users-groups/GROUPS.md)
Bestellungen cms_orders (ORDERS.md)
Mitgliederansicht /member/subscription (CMS/member/subscription.php)
Checkout CMS/orders.php

Einstellungen auf /admin/subscription-settings

Feld Option Standard Wirkung
Limits & Zugriffsgates subscription_limits_enabled an Plugin-Freigaben und Ressourcenlimits werden durchgesetzt
Member-Abo-Bereich subscription_member_area_enabled an /member/subscription sichtbar
Bestellungen & Upgrades subscription_ordering_enabled an Checkout /orders.php erlaubt
Öffentliche Preise subscription_public_pricing_enabled an Paketübersicht für Besucher
Standardpaket subscription_default_plan_id 0 (keins) Wird neuen Benutzern zugewiesen (assignConfiguredDefaultPlan())
Hinweis bei deaktivierter Aboverwaltung subscription_disabled_notice „Die Aboverwaltung ist derzeit deaktiviert. Es gelten aktuell keine Limits.“ Text im Member-Bereich

Diese Schalter sind die Legacy-Settings der gleichnamigen Core-Module. Der Modul-Manager (/admin/modules) zeigt denselben Zustand; ein Modul ist nur aktiv, wenn auch seine Abhängigkeit subscriptions aktiv ist.

Core-Module der Aboverwaltung

Modul Label Abhängigkeit Legacy-Setting
subscriptions Aboverwaltung Core – subscription_enabled
subscription_admin_packages Pakete & Abo-Einstellungen (/admin/packages) subscriptions –
subscription_admin_orders Bestellungen & Zuweisung (/admin/orders) subscriptions –
subscription_admin_settings Abo-Einstellungen (/admin/subscription-settings) subscriptions –
subscription_limits Paketlimits & Zugriffsgates subscriptions subscription_limits_enabled
subscription_member_area Member-Abo-Bereich subscriptions subscription_member_area_enabled
subscription_ordering Bestell- & Upgrade-Prozesse subscriptions subscription_ordering_enabled
subscription_public_pricing Öffentliche Paketkommunikation subscriptions subscription_public_pricing_enabled

Laufzeit-API (SubscriptionManager::instance())

Methode Zweck
getUserSubscription(int $userId) Aktives Paket ermitteln: direktes Abo (active, end_date leer oder in der Zukunft) → Paket einer aktiven Gruppe (teuerstes zuerst) → erster Paket-Datensatz als Fallback
isLimitEnforcementEnabled() Modul subscription_limits aktiv?
canAccessPlugin($userId, $slug) Prüft plugin_<slug> des Pakets (z. B. plugin_events); ohne Limitdurchsetzung immer true
checkLimit($userId, $resource) Liest limit_<resource> des Pakets (experts, companies, events, speakers, storage_mb) und vergleicht mit der aktuellen Nutzung: -1 = unbegrenzt, 0 = gesperrt, sonst Nutzung < Limit
getCurrentUsage() / updateUsage() Zähler in cms_subscription_usage lesen/schreiben
assignSubscription($userId, $planId, $cycle) Neues aktives Abo, bisheriges wird cancelled
assignConfiguredDefaultPlan($userId) Standardpaket zuweisen
getRenewalSettings(), getSubscriptionRenewalNotice(), getRenewalOverview() Verlängerungs- und Ablaufhinweise (Kulanzzeit, Erinnerung vor Ablauf)
getAllPlans(), getPlan(), seedDefaultPlans() Paketverwaltung

Plugins nutzen diese API, um Funktionen paketabhängig freizuschalten:

$subs = \CMS\SubscriptionManager::instance();
if (!$subs->canAccessPlugin($userId, 'events') || !$subs->checkLimit($userId, 'events')) {
    // Upgrade-Hinweis anzeigen
}

Hinweise

  • Ist die Limitdurchsetzung aus, gelten keine Paketgrenzen – auch nicht für Free-Benutzer.
  • Der Fallback „erster Paket-Datensatz“ setzt voraus, dass das kostenlose Paket zuerst angelegt wurde (bei seed_defaults der Fall).
  • Zahlungseingänge werden nicht automatisch verbucht; siehe ORDERS.md.

Verwandte Dokumente

README.md · PACKAGES.md · ORDERS.md · ../system-settings/README.md

Bereit für ein CMS, das mitdenkt?

Installieren Sie 365CMS auf Ihrem Server und legen Sie in wenigen Minuten los.