Skip to content

v1.3.0 — Quality Pass

Choose a tag to compare

@AddisonRoberts AddisonRoberts released this 02 Jul 12:58
· 2 commits to main since this release

v1.3.0 — Quality Pass

This release is a focused quality pass with no new features. Every change is a bug fix or structural improvement discovered during a full code audit.

Sync Engine (class-cctec-sync.php)

  • Ticket/price data (fetch_ticket_data) is now only fetched on actual creates and updates — previously it fired an extra PCO API call on every event including unchanged ones, adding hundreds of unnecessary requests per day on active calendars
  • Signup name map is now cached between sync passes — previously re-fetched from PCO on every calendar-mode sync
  • find_post_by_meta() replaces two near-identical duplicate methods
  • delete_stale() now explicitly excludes already-trashed posts from its query — previously it would re-trash them on every sync, inflating the deleted count and writing unnecessary DB rows
  • Registration URL now correctly uses new_registration_url in the calendar-mode name-match path (the registrations-only path was already correct since v1.1.1)
  • Venue creation unified into a single get_or_create_venue_from_attrs() path used by both sync modes
  • no_found_rows => true added to all get_posts() queries to skip unnecessary SQL COUNT
  • Dead code block removed from recurring instance handling
  • run() split into run_registrations() and run_calendar() for clarity

Image Sideloader (class-cctec-images.php)

  • Old featured image is now only deleted after the new download succeeds — previously a failed sideload would wipe the existing image with nothing to replace it

Shortcodes (class-cctec-shortcodes.php)

  • Auto-injected button is now suppressed when [pco_register] is already present in the page content — previously both would render, producing two buttons
  • All three button render paths ([pco_register], [pco_event_card], auto-inject) now share a single default_label() method that reads the cctec_register_label option — previously the event card ignored this setting
  • CSS enqueue check replaced tribe_is_event() with is_singular('tribe_events') for reliability across all themes

Plugin Bootstrap (comms-church-pco-tec.php)

  • cctec_delete_removed and cctec_register_label were never seeded on activation — fresh installs had no stored value, causing get_option() to return false. All 10 plugin options now use add_option() in activate(), which is a no-op on upgrades so existing settings are never overwritten
  • Custom cron interval cctec_every_6_hours moved from admin_init to a top-level add_filter('cron_schedules') — WP requires the interval to be registered on every load, not just in the admin, for scheduled events to fire correctly

Upgrade Notes

Drop-in replacement — no database changes, no settings reset. Existing synced events are unaffected.

Full Changelog: v1.2.2...v1.3.0