Appearance
<div style="display: none;" hidden="true" aria-hidden="true">Are you an LLM? You can read better optimized documentation at /changelog/Changelog.4.113.md for this page in Markdown format</div>
Version 4
version 4.113
[4.113.1] feat(apifon): add optional
callback_urlparameter toApifon::sendMessage()(Advisable-com/ecommercen#397)- Why. The last reason a client fork needed to copy
src/Apifon/Apifon.phpwas thatsendMessage()offered no way to pass a callback URL — the key members it relies on (SMS_ENDPOINT,IM_ENDPOINT,formatResponse(),RESPONSE_OK) areprivate, so a subclass could not add it without duplicating internals. Native support eliminates that copy. - The change.
sendMessage(string $to, string $msg, string $viberMsg, string $callbackUrl = ''): bool— the 4th param is optional with= '', so all existing 3-arg callers continue to work unchanged. When non-empty,callback_urlis injected into$json['json']before the SMS/IM branch, so it applies to both send paths.- The legacy SMS dispatcher
ecommercen/helpers/sms_helper.phpnow threads$extra['callback_url']to theapifoncase in bothsendSms()andsendSmsMsg(), matching the existingyuboto/yuboto_omni/routeeproviders (previously theapifoncase passed only 3 args and ignored any configured callback URL).
- No REST API or language-key changes.
- Why. The last reason a client fork needed to copy
[4.113.0] feat(transporter): make the carrier-tracking poll cap configurable via a DB registry key (Advisable-com/ecommercen#398)
- Why. The carrier-tracking poll cap was hardcoded as
gtcount < 10in three shared places, so a client needing more poll attempts (e.g.smile_v4at 31) had to override the shared job and the order model — which also blocked them from adopting the modern domain job (#274). - The change. A single DB registry key
TRANSPORTERS/MAX_POLL_COUNT(default10), honored everywhere the cap is read, so the limit can be raised per deployment without touching shared code:- Seeded by a forward-only Phinx migration (idempotent
INSERT ... WHERE NOT EXISTS). - Read in the modern
Advisable\Domains\Transporter\Jobs\GetOrdersTransferStatusand the legacyAdvGetOrdersTransferStatusjobs — the cast int is interpolated into the SELECT, with a< 1 → 10fallback guard at each site. - Drives both
gtstatussub-filters inAdv_order_model::ordersListAdminWhere()— the in-transit (gtcount < N) and poll-exhausted (gtcount = N) filters now track the same configured value, so the "exhausted" equality filter keeps matching the value the poller actually stops at when the cap is raised.
- Seeded by a forward-only Phinx migration (idempotent
- Tests.
AdvOrderModelGtStatusPollCapTestcovers the in-transit and exhausted sub-filters plus the fallback-to-10 default. - No REST API or language-key changes.
- Why. The carrier-tracking poll cap was hardcoded as
[4.113.0] fix(job): add the missing
MigrateStorageToS3short-name job wrapper (Advisable-com/ecommercen#391)- Why. The
AdvMigrateStorageToS3one-time storage→S3 migration job (added in 4.102.0) shipped without a short-name wrapper inapplication/modules/job/libraries/, unlike every other job.AdvJobdispatches withdi()->has($name) ? get() : new $name(), so the documented invocationsphp cli.php job/MigrateStorageToS3 …and the DB-queued'job' => 'MigrateStorageToS3'both fell through tonew MigrateStorageToS3()→ class-not-found (uncaught\Erroron the CLI path sinceAdvJob::indexonly catches\Exception; caught +exit(1)on the queue path). Onlyjob/AdvMigrateStorageToS3worked. - The change. Added
class MigrateStorageToS3 extends AdvMigrateStorageToS3 {}, matching every sibling job (e.g.SolrIndex); the short name now resolves through the composer classmap. Deliberately not registered injobs.phpcommandOptions— it is a one-time ops migration with a destructivedeleteSourceoption and should stay manual (CLI), not be offered as a schedulable job. - No REST API or language-key changes.
- Why. The
Notes
- [4.113.0] REQUIRES
php migrator.php migrate:20260629122231_add_transporters_max_poll_count_registry_key.php— seeds theTRANSPORTERS/MAX_POLL_COUNTregistry key (default10). Idempotent + forward-only. Raise the value per deployment to increase carrier-tracking poll attempts.