The activator class was only loaded during plugin activation, on admin_init when the DB version differed, and in a few explicit admin handlers. Twilio webhook callbacks (voicemail in particular, but also any non-admin caller of TWP_Activator::force_table_updates() / ::ensure_tables_exist()) hit the public REST endpoint where none of those load paths fire, so the static call fataled. Load class-twp-activator.php in TWP_Core::load_dependencies() so every plugin context — webhook, REST, cron, admin — has the class available. The activator file is a pure class definition with no load-time side effects. This single change covers all 9 runtime call sites (webhook, scheduler, and six admin sites) that previously assumed the class would already be loaded. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
23 KiB
23 KiB