SMS File Layout
The SMS subsystem was restructured to one-class-per-file (2026-07-03). Old
monoliths (jethro-sms/src/sms.php, sms_cellcast.php, sms_smsbroadcast.php,
templater.php) are BC loaders only.
Source directories
| Directory | What's there |
|---|---|
jethro-sms/src/ | Pure layer: SmsProvider, SmsCapability, SmsStatus, decorators, value objects, HTTP, Result monad, statusline maths |
jethro-sms/src/Providers/ | Concrete providers: FiveCentSmsV5Provider, CellcastSmsProvider, SmsBroadcastSmsProvider, FiveCentSmsV4Provider, TemplateSmsProvider |
include/Jethro/Sms/ | Bridge value objects: JethroSmsRecipient, JethroSmsDelivery, JethroSmsDeliveryBatch, SmsRequestRecipients, SessionSmsCache, SmsStatusIcon |
include/Jethro/Sms/Providers/ | Bridge decorators: DbLoggingSmsProvider, LocalBalanceSmsProvider |
include/jethro_sms.php | Bridge functions: getSmsProvider() factory, send pipeline, request parsing, UI rendering |
calls/call_sms*.class.php | AJAX handlers: Call_SMS, Call_SMS_Info, Call_SMS_Cancel, Call_SMS_Balance, Call_SMS_SenderNum, Call_SMS_Statusline, Call_Admin_Statuspanel_Sms |
resources/js/jethro-sms.js | Send flow, delivery polling, message-history filters |
scripts/sms.php | CLI for all SMS operations |
jethro-sms/tests/ | Pure-layer unit tests |
tests/sms/ | Bridge-layer tests |
Loading include/jethro_sms.php brings in everything — it requires all other
bridge files.