Skip to content

2.1.4: fix(extension): "active" requires source on disk, not just DB flag

Choose a tag to compare

@gp247net gp247net released this 26 Aug 10:02
· 31 commits to master since this release
An admin_config record can say a plugin/template is active while its
source is gone (DB migrated from another environment, folder removed,
incomplete deploy). gp247_extension_check_active() trusted the DB alone,
so front pages embedding the plugin crashed with 500 "No hint path
defined" (real case: Plugins/LoginSocial on the customer login page).

- Add gp247_extension_source_exists(): single predicate for "code is
  present" (app/GP247/<type>/<key>/AppConfig.php, same signal as
  gp247_extension_get_all_local), memoized per request.
- gp247_extension_check_active(): DB active AND source present for
  Plugins/Templates; on drift soft-degrade to false + gp247_report()
  (deduped once per request) — never mutates DB on the read path.
- gp247_extension_get_via_code(): skip orphaned plugins + gp247_report(),
  preventing fatals at checkout for Payment/Shipping/Total plugins.
- check_installed/get_installed stay DB-only by design (reinstall and
  cleanup flows must still see orphaned records).

AI-DLC: US-PLG-active-requires-source, ADR
plugin-manager_active-check-source-presence, modification 20260826T153139.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>