Appearance
<div style="display: none;" hidden="true" aria-hidden="true">Are you an LLM? You can read better optimized documentation at /changelog/Changelog.4.98.md for this page in Markdown format</div>
Version 4
version 4.98
- [4.98.7] config(database): make persistent connections configurable via env vars
- Add
APP_DB_DEFAULT_PCONNECTandAPP_INTERMEDIATE_DB_DEFAULT_PCONNECTenv vars (defaultfalse) - When enabled, PHP-FPM workers reuse existing TCP connections to MaxScale across requests instead of opening a new one per request — reduces per-query round-trip latency
- Document both vars in
.env.examplealongside their sibling*_DEBUGvars
- Add
- [4.98.7] perf(product-parser): batch price tracking, category and tag queries
- Replace N+1 per-product queries with single batched
WHERE INqueries for categories, tags, and price tracking - Add
AdvPriceTrackingModel::productPriceChangesBulk()to fetch all price changes in one query - Add
AdvPriceTrackingGraphs::productPricesBulk()for bulk price graph computation - Refactor
getProductsCategories()andgetProductTags()to useGROUP BY + WHERE IN
- Replace N+1 per-product queries with single batched
- [4.98.7] feat: Add relation between blog article and slider
- [4.98.6] ci(pipelines): Enhance pipeline Docker tag generation by introducing
ECOMMERCEN_CLIENToverride and a new partial client tag format. - [4.98.6] refactor(store): export store instance for composition API compatibility
Now the store instance is explicitly named and exported in two ways:- the default export for backward compatibility
useStorefunction for Composition API usage
- [4.98.6] refactor(useLazyFetch): move
useLazyFetch,useLocalization,useToastto shared composables directory - [4.98.6] fix(theme): Fix in case of product with no images
- [4.98.5] fix(contactpigeon): updated contact pigeon xml generation to use resizeImageOnTheFly with filterExpr
- [4.98.5] refactor: deprecated the use of resizeImageOnTheFly2 in mediastream_proxy helper
- [4.98.4] deps(composer): Bumped
ecommercen/media-streamto 3.0.0! - [4.98.4] feat(Acs): Acs drop support for the following links (ACS_VOUCHER_URI, ACS_PRINT_MASS_URI) in 20/02/2026, use the API_BASE_URI instead
- Function creation inside Acs:
getPickUpListPdf(instead ofpickUpListLink)getVoucherPdf(instead ofvoucherLink)
- [4.98.3] refactor(update-wiki): enhance changelog processing with deduplication and custom migration formatting
- Implemented commit deduplication based on summaries to prevent redundant entries.
- Added custom formatting for migration actions to list specific filenames under a single action header.
- Updated action command to
php migrator.php migrate. - Optimized notes section to prevent duplicate command and override entries.
- [4.98.3] chore(database): remove debug statement from migration
- Remove
var_dump($this->fullTextIndexes)fromConvertDbMb3ToMb4migration
- Remove
- [4.98.2] deps: bumped ecommercen/media-stream to 2.3.2
- [4.98.1] ref: Refactor the custom metatags admin controller and model
- [4.98.1] feat(database): add migration to convert database to utf8mb4
- Create
ConvertDbMb3ToMb4migration using Phinx - Implement automated conversion for database, table defaults, and individual column definitions
- Handle full-text index preservation by dropping and recreating them during the conversion process
- Update character sets and collations for all text-based fields while preserving existing nullability and default values
- Create
- [4.98.1] fix(admin/blog): correct variable references in update view
- [4.98.1] feat: In can delete the product category add check if the category has products
- [4.98.1] chore: Change the connection in the job model before update
- [4.98.1] feat: Minimize the use of the memory in the track prices script
- [4.98.1] deps(composer): Bumped ecommercen/media-stream to 2.3.0 in order to customize di cache path
- [4.98.1] fix: Roll back the change of the product id param
- [4.98.0] feat(image-fetch): allow configurable HTTP status codes for ProxyCurl job (
ecommercen/media-streambumped to2.2.0) - [4.98.0] feat(api): Add NotEmpty filter support for REST API
- Implement robust filtering for empty/non-empty fields across all Domain Services
- Add
NotEmptySpecificationFactorywith support for master tables, translations, and nested relations - Introduce
HandlesNotEmptyFilterstrait for streamlined service integration, eliminating ~130 lines of boilerplate per service - Enhance
GenerateListRequestto support both prefixed (notEmptyField) and non-prefixed filter keys - Update OpenAPI documentation for
BlogArticle,BlogCategory, andPagewith new filter parameters
- [4.98.0] refactor(blog): modernize blog administration logic and view templates
- Replace dynamic variable concatenation with structured
$recordCaptionsaccess inupdate.php - Standardize multi-language form validation in
Adv_blog_admincontroller - Move file upload logic to a dedicated
uploadFilemethod usingadvuploader - Implement
beforeAddRecordandbeforeEditRecordhooks for cleaner extension points
- Replace dynamic variable concatenation with structured
- [4.98.0] refactor(media): centralize and improve YouTube ID extraction logic
- Refactor
extractYouTubeIdinmedia_helper.phpwith improved regex patterns - Remove redundant
extractYoutubeIdmethod fromAdv_slide_admincontroller - Update slider administration logic to use the centralized helper function
- Refactor
- [4.98.0] chore: Remove the extra space from the Easy mail
- [4.98.0] fix(form-validation): improve multi-language support in set_rules_mui
- Support an array of language abbreviations in addition to a single string
- Update method signature with proper type hinting for field, label, and rules
Notes
[4.98.7] Persistent DB connections are opt-in and disabled by default — no action required. To enable, set
APP_DB_DEFAULT_PCONNECT=truein your environment. EnsuremaxUserConnectionson the DB user is ≥ your PHP-FPMpm.max_childrenvalue before enabling.[4.98.7] Check for overrides:
AdvPriceTrackingGraphs::productPrices(logic extracted into new protectedproductPricesFromChanges()— override signature unchanged but internal call chain changed)Adv_product_parser_model::getProductsCategories(reimplemented as bulk query — no longer iterates per product)Adv_product_parser_model::getProductTags(same as above)Adv_product_parser_model::setPriceTracking(removed — price tracking is now bulk-prefetched before the product loop and assigned directly via$product->priceTracking)
[4.98.7] Need
npm run admin-production[4.98.7] UI Update:
application/views/blog/blogs/create.phpAdded the slider select boxapplication/views/blog/blogs/update.phpAdded the slider select boxapplication/views/main/layouts/blog/blog_post.phpAdded the slider component
[4.98.7] Check for overrides:
Blog::construct(Load 'sliders/sliders_model')Blog::blogArticle(Removed the main article and the articles variable in client add call in blogArticleExtras method if the client use them in the view)Blog_admin::construct(Load 'sliders/sliders_model')Blog_admin::getPost(Add the slider_id in the return array)Blog_tags_admin::delete(Use the $this->blog_tags_model->deleteTag($id) instead of $this->blog_tags_model->deleteBlogTag($id))Blog_tags_model(Refactor of all model methods)Sliders_model::deleteImage(Add scope and exit from method in the deleteImage in case of error before update the master table)
[4.98.6] For clients with pipelines enabled please configure
ECOMMERCEN_CLIENTin pipeline variables[4.98.6] Composables Migration - Verification Guide Three composables were relocated from
assets/admin/js/productBundles/composables/toassets/main/js/composables/. Search for any remaining old imports If any old import appears, those files need to be updated to use the new path:assets/main/js/composables/Commits involved in the migration:
- useLazyFetch (commit 6ebca1e)
- useLocalization (commit c10255b)
- useToast (commit 32ff66e)
[4.98.6] Need
npm run all-production[4.98.4] Need
composer i[4.98.4] Check for overrides:
main_theme_helper::transformProductForJson
[4.98.4] this release bumps
ecommercen/mediastreamto3.0.0. This is a breaking change and client's configuration needs to be updated. For clients that have changed to S3, you will have to uncomment the "remote/s3" commented lines intenants.yamlfrom master, and comment the "local" ones. For more information related to mediastream's configuration you can read the docs/Configuration.md guide as well as Migration 2.x -> 3.x Guide[4.98.4] Check for overrides:
PrintVoucher::printAcsVoucherPrintVoucher::printBatchAcsVoucherOrders_admin::getPickupListsOrders_admin::printAcsPrickUpList
[4.98.2] Needs
composer i[4.98.1] Needs
composer i[4.98.1] Actions:
php migrator.php migrate- 20260210120630_convert_db_mb_3_to_mb_4.php
[4.98.1] Check for overrides:
ecommercen/job/models/AdvJobsModel.php(Jobs_model::update)ecommercen/eshop/controllers/Adv_product_categories_admin.php(search, add, edit, delete methods)ecommercen/eshop/models/Adv_product_category_model.php(canDeleteRecord, hasChildren)TrackPrices::executeCommandecommercen/seo/controllers/Adv_custom_metatags.phpecommercen/seo/models/Adv_custom_metatags_model.phpFront_c::customMetaTags
[4.98.0] For clients using the
ProxyCurlImageFetchJobin media-stream, please review the updated configuration options for handling HTTP status codes.[4.98.0] NotEmpty Filter Infrastructure Overrides:
- Check for changes in
BaseRepository.phpandGenerateListRequest.php - Review new specification classes in
src/Domains/Support/Repository/Specification/ - Verify
HandlesNotEmptyFilterstrait integration in Domain Services
- Check for changes in
[4.98.0] Check for overrides:
application/libraries/MY_Form_validation.phpecommercen/blog/controllers/Adv_blog_admin.phpecommercen/sliders/controllers/Adv_slide_admin.phpsrc/Transporters/EasyMail/EasyMail.phpsrc/Rest/Cms/Controllers/BlogArticle.phpsrc/Rest/Cms/Controllers/BlogCategory.phpsrc/Rest/Cms/Controllers/Page.php