WP Manifestindependent plugin directory
manifest / integrations / churchtools-suite

ChurchTools Integration Suite WP Registry grade D+. High-severity findings · 3 findingsWP RegistryHigh-severity findings · 3 findingsOpen the reportD+

Professionelle WordPress-Integration für ChurchTools.

★ 6stars
330release downloads
v1.3.0.14latest · 1mo ago

Install

Download churchtools-suite-posts-sync-0.1.7.zip From the v1.3.0.14 release on GitHub, Aug 31, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/feg-aschaffenburg/churchtools-suite/releases/download/v1.3.0.14/churchtools-suite-posts-sync-0.1.7.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Repository fuer das WordPress-Hauptplugin ChurchTools Integration Suite. Die Addons werden in eigenen Repositories entwickelt und veroeffentlicht.

Repository-Status

Stand: 2026-08-28

Diese README ist die zentrale Dokumentation des aktuellen technischen Stands. Historische Details werden in der Git-Historie bewahrt.

Enthaltene Plugins

Paket Typ Version Einstiegspunkt Status
ChurchTools Integration Suite Hauptplugin 1.3.0.11 churchtools-suite.php aktiv entwickelt
Elementor Integration Addon 1.0.0.3 eigenes Repository eigenständiges Plugin
Posts Sync Addon Addon 0.2.0.3 eigenes Repository eigenständiges Plugin
Presentations Addon Addon 0.1.3 eigenes Repository eigenständiges Plugin
ChurchTools Suite Demo optionales Plugin 1.1.4.1 separat nur Dokumentation/Demo

Abhaengigkeiten

  • Hauptplugin: WordPress >= 6.0, PHP >= 8.2
  • Elementor-Addon: ChurchTools Integration Suite >= 1.3.0.6, Elementor, WordPress >= 6.0, PHP >= 8.2
  • Posts-Sync-Addon: ChurchTools Integration Suite >= 1.3.0.6, WordPress >= 5.0, PHP >= 8.2
  • Presentations-Addon: ChurchTools Integration Suite, WordPress >= 6.0, PHP >= 8.0

Das Demo-Plugin und das Demo-Theme sind nicht Bestandteil des Hauptplugins und werden für Produktivinstallationen nicht benötigt.

Letzter Plugin-Check

Der technische Basis-Check wurde lokal mit PHP 8.2.29 ausgefuehrt.

Bereich Gepruefte PHP-Dateien Ergebnis
Hauptplugin 119 OK
Elementor-Addon 5 OK
Posts-Sync-Addon 5 OK

Gepruefte Punkte:

  • PHP-CLI unter Laragon laeuft lokal fehlerfrei
  • PHP-Syntaxpruefung ueber Hauptplugin und beide Addons erfolgreich
  • VS-Code-Workspace ist auf den lokalen PHP-Interpreter konfiguriert
  • Lokale SSH-Hosts fuer Deployment und Server-Tests sind vorhanden

Aktueller Arbeitsstand

Im Arbeitsbaum liegen aktuell uncommittete Aenderungen. Der Schwerpunkt liegt momentan auf zwei Bereichen:

  1. Frontend-Filter fuer Event-Listen in Hauptplugin und Elementor-Integration
  2. Sync-Bereinigung fuer geloeschte Events/Appointments im Hauptplugin

Zusaetzlich wurden alte Backup-Templates unter templates-backup-20260222-211402/ aus dem Arbeitsbaum entfernt.

Betroffene Bereiche im aktuellen Worktree

  • Frontend-Assets: assets/css/, assets/js/
  • Block- und Shortcode-Logik: includes/class-churchtools-suite-blocks.php, includes/class-churchtools-suite-shortcodes.php
  • Event-Sync und Repository: includes/repositories/, includes/services/
  • Elementor-Widget: separates Repository churchtools-suite-elementor
  • Aktive List-Templates: templates/views/event-list/

Entwicklung lokal und auf Servern

  • Lokaler PHP-Pfad in Local: C:\Users\KasseFeg\AppData\Roaming\Local\lightning-services\php-8.2.29+0\bin\win64\php.exe
  • Deployment-Skripte nutzen lokale SSH-Host-Aliase aus der Benutzerkonfiguration
  • Standardziel der Deploy-Skripte fuer Testsysteme ist plugin-test

Empfohlene naechste Schritte

  1. Frontend-Filter in WordPress manuell mit echten Event-Daten pruefen
  2. Sync-Cleanup mit einem Vollsync gegen ein Testsystem verifizieren
  3. Danach Readme/Changelog pro Release fortschreiben und Release-ZIPs bauen

Aktuelle Funktionen

  • Kalender-, Termin-, Dienst-, Gruppen- und Gruppenpost-Synchronisation
  • Shortcodes und Gutenberg-Views für Liste, Grid, Kalender, Countdown und Carousel
  • Kalenderfilter über calendar, calendars und calendar_ids
  • Custom CSS pro Shortcode, Preset und Block-Instanz
  • CSS wird je Ausgabe über eine stabile Instanz-ID begrenzt
  • Custom CSS kann im Shortcode-Manager und über die Block-/Shortcode-API verwendet werden
  • Standalone-Addons für Elementor, Posts Sync und Presentations
  • Automatische Synchronisation über WordPress-Cron
  • Der Auto-Updater installiert ausschließlich geprüfte WordPress-Release-ZIPs.

Releases

Newest 25 of 60 recorded releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v1.3.0.14 latest
Aug 31, 2026 1mo ago
churchtools-suite-elementor-0.6.28.zip +3 assets
7
churchtools-suite-elementor-0.6.28.zip3
churchtools-suite-posts-sync-0.1.7.zip2
churchtools-suite-presentations-0.1.0.zip2
churchtools-suite-1.3.0.14.zip0
Aug 28, 2026 1mo ago
churchtools-suite-1.3.0.13.zip
6
Aug 28, 2026 1mo ago
churchtools-suite-1.3.0.12.zip
2
Aug 28, 2026 1mo ago
churchtools-suite-1.3.0.11.zip
0
Aug 28, 2026 1mo ago
churchtools-suite-1.3.0.10.zip
1
Aug 28, 2026 1mo ago
churchtools-suite-1.3.0.9.zip
6
Aug 27, 2026 1mo ago
churchtools-suite-1.3.0.8.zip
3
Aug 25, 2026 1mo ago
churchtools-suite-1.3.0.7.zip
9
Aug 25, 2026 1mo ago
churchtools-suite-1.3.0.6.zip
3
Aug 25, 2026 1mo ago
churchtools-suite-1.3.0.5.zip
2
Aug 25, 2026 1mo ago
churchtools-suite-1.3.0.4.zip
2
Aug 24, 2026 1mo ago
churchtools-suite-1.3.0.3.zip
7
Aug 24, 2026 1mo ago
churchtools-suite-1.3.0.2.zip
2
Aug 24, 2026 1mo ago
churchtools-transition-1.3.0.1.zip
2
Aug 24, 2026 1mo ago
churchtools-suite-1.3.0.0.zip +2 assets
13
churchtools-suite-1.3.0.0.zip8
churchtools-suite-posts-sync-0.2.0.0.zip3
churchtools-suite-elementor-1.0.0.0.zip2
Aug 24, 2026 1mo ago
churchtools-suite-1.2.3.9.clean.zip +1 asset
2
churchtools-suite-1.2.3.9.clean.zip1
churchtools-suite-posts-sync-0.1.12.zip1
Apr 26, 2026 5mo ago
churchtools-suite-1.2.0.17.zip +3 assets
5
churchtools-suite-1.2.0.17.zip2
churchtools-suite-elementor-0.6.18.zip1
churchtools-suite-presentations-0.1.0.zip1
churchtools-suite-posts-sync-0.1.4.zip1
Apr 26, 2026 5mo ago
churchtools-suite-1.2.0.16.zip +3 assets
5
churchtools-suite-1.2.0.16.zip2
churchtools-suite-posts-sync-0.1.4.zip1
churchtools-suite-elementor-0.6.17.zip1
churchtools-suite-presentations-0.1.0.zip1
Apr 26, 2026 5mo ago
churchtools-suite-1.2.0.15.zip +3 assets
6
churchtools-suite-1.2.0.15.zip2
churchtools-suite-elementor-0.6.17.zip2
churchtools-suite-posts-sync-0.1.4.zip1
churchtools-suite-presentations-0.1.0.zip1
Apr 19, 2026 6mo ago
churchtools-suite-1.2.0.14.zip +3 assets
12
churchtools-suite-1.2.0.14.zip6
churchtools-suite-elementor-0.6.16.zip3
churchtools-suite-presentations-0.1.0.zip2
churchtools-suite-posts-sync-0.1.4.zip1
Apr 18, 2026 6mo ago
churchtools-suite-1.2.0.13.zip
3
Apr 18, 2026 6mo ago
churchtools-suite-1.2.0.12.zip
1
Apr 18, 2026 6mo ago
churchtools-suite-presentations-0.1.0.zip +3 assets
8
churchtools-suite-presentations-0.1.0.zip2
churchtools-suite-1.2.0.11.zip2
churchtools-suite-elementor-0.6.15.zip2
churchtools-suite-posts-sync-0.1.4.zip2
Apr 15, 2026 6mo ago
churchtools-suite-1.2.0.10.zip +2 assets
8
churchtools-suite-1.2.0.10.zip5
churchtools-suite-posts-sync-0.1.4.zip2
churchtools-suite-elementor-0.6.15.zip1
Apr 14, 2026 6mo ago
churchtools-suite-1.2.0.9.zip +2 assets
5
churchtools-suite-1.2.0.9.zip2
churchtools-suite-elementor-0.6.15.zip2
churchtools-suite-posts-sync-0.1.4.zip1
All releases on GitHub →
D+ grade

Security

ChurchTools Integration Suite 1.3.0.14 · audited by WP Registry

High-severity findings.

1 high 2 medium
Audited release
1.3.0.14
Findings
3
Worst severity
high
Content hash
2f7a48442763598d4812f4a7…

Findings

  • high Public event modal stores and executes unsanitized ChurchTools HTML via jQuery.html()

    xss_stored

    wp_ajax_nopriv_cts_get_event_details is reachable by anyone with the churchtools_suite_public nonce, which enqueue_public_assets localizes on every front-end page. The handler loads cts_events by sequential integer id and returns event_description/appointment_description after wpautop() only — no wp_kses_post / esc_html. churchtools-suite-public.js then calls jQuery.html() on those strings (and concatenates unsanitized address_name, location_name, address_street, zip, and city into $('#cts-modal-location-value').html()). jQuery.html() executes <script> and inline event handlers, unlike native innerHTML. Write path: ChurchTools_Suite_Event_Sync_Service copies $event['note'] / appointment note into those columns with no sanitization. Single-event PHP templates already wrap the same fields in wp_kses_post(), so this is an omitted sanitizer on the AJAX/modal path rather than intentional raw HTML. Anyone who can edit a ChurchTools appointment note (typically many church staff, not WordPress admins) can XSS every visitor who opens the modal. Location/address fields are the same sink even if notes are plain text.

    admin/class-churchtools-suite-admin.php:2324-2451

    Recommendation

    Sanitize on output the same way single-event templates already do: wp_kses_post() (or wp_kses with an explicit allowlist) before returning descriptions, and escape location/address fragments as text (or build them with $().text()). Prefer textContent / jQuery.text() in the modal JS; if HTML is required, insert only after server-side kses. Strip or kses notes at sync time as defense in depth.

  • medium Unauthenticated event-details AJAX enumerates volunteer names and addresses without calendar ACL

    information_disclosure

    The same nopriv handler (and nopriv cts_load_calendar_month) is the public event API. get_by_id($event_id) has no check that the event's calendar is_selected, that a shortcode on the referring page allowed that calendar, or that the block's show_services flag is on. The JSON always includes services[].person_name plus street/zip/city. Event ids are autoincrement integers, and the public nonce is on every page (assets always enqueue), so an unauthenticated visitor can enumerate /wp-admin/admin-ajax.php?action=cts_get_event_details without a published calendar widget. Shortcode/block show_services=false only hides names in the DOM; the AJAX response still returns them. Calendar-filtered shortcodes similarly do not bind the AJAX read path, so events synced for a members-only view remain globally readable.

    admin/class-churchtools-suite-admin.php:2324-2451

    Recommendation

    Treat the AJAX read as an access-controlled public API: only return events whose calendar is_selected (or that match an allow-listed calendar_ids argument that the shortcode actually used). Omit services/person_name unless the caller passes a signed/show_services flag that matches the published widget. Avoid sequential id disclosure or require a non-guessable appointment token. Do not localize the public nonce on pages that do not render a ChurchTools view if the endpoint should not be site-wide.

  • medium ChurchTools password stored in plaintext and all API traffic disables TLS verification

    insecure_config

    Settings save writes churchtools_suite_ct_password via update_option(sanitize_text_field) with no ChurchTools_Suite_Secret_Storage::encrypt, and the settings form echoes that password back in the HTML value attribute. Tokens are encrypted (and migrated from plaintext on next CT client construct), so password storage is an omitted use of the existing helper. Independently, ChurchTools_Suite_CT_Client::login(), test_connection()/whoami, and api_request() all set sslverify => false, so the plaintext password and Authorization/X-ChurchTools-Token headers are sent without validating the peer certificate. A network MITM (captive portal, compromised resolver, broken middlebox) recovers credentials that typically unlock the church's ChurchTools member/calendar database. Session cookies are also stored in option churchtools_suite_ct_cookies. Tenant URL is constrained to https://{tenant}.church.tools, which limits SSRF but does not restore TLS authentication to that host.

    includes/class-churchtools-suite-ct-client.php:51-114

    Recommendation

    Remove sslverify => false (leave WordPress defaults). Encrypt the password with Secret_Storage the same way tokens are encrypted; do not echo it back into the password input (placeholder only). Encrypt or avoid persisting ChurchTools session cookies in options. Call encrypt() at save time for both token and password rather than relying on lazy migration.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.