Skip to content

<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>

Home | Changelog

Version 4

version 4.98

  • [4.98.7] config(database): make persistent connections configurable via env vars
    • Add APP_DB_DEFAULT_PCONNECT and APP_INTERMEDIATE_DB_DEFAULT_PCONNECT env vars (default false)
    • 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.example alongside their sibling *_DEBUG vars
  • [4.98.7] perf(product-parser): batch price tracking, category and tag queries
    • Replace N+1 per-product queries with single batched WHERE IN queries 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() and getProductTags() to use GROUP BY + WHERE IN
  • [4.98.7] feat: Add relation between blog article and slider
  • [4.98.6] ci(pipelines): Enhance pipeline Docker tag generation by introducing ECOMMERCEN_CLIENT override 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
    • useStore function 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-stream to 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 of pickUpListLink)
    • getVoucherPdf (instead of voucherLink)
  • [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) from ConvertDbMb3ToMb4 migration
  • [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 ConvertDbMb3ToMb4 migration 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
  • [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-stream bumped to 2.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 NotEmptySpecificationFactory with support for master tables, translations, and nested relations
    • Introduce HandlesNotEmptyFilters trait for streamlined service integration, eliminating ~130 lines of boilerplate per service
    • Enhance GenerateListRequest to support both prefixed (notEmptyField) and non-prefixed filter keys
    • Update OpenAPI documentation for BlogArticle, BlogCategory, and Page with new filter parameters
  • [4.98.0] refactor(blog): modernize blog administration logic and view templates
    • Replace dynamic variable concatenation with structured $recordCaptions access in update.php
    • Standardize multi-language form validation in Adv_blog_admin controller
    • Move file upload logic to a dedicated uploadFile method using advuploader
    • Implement beforeAddRecord and beforeEditRecord hooks for cleaner extension points
  • [4.98.0] refactor(media): centralize and improve YouTube ID extraction logic
    • Refactor extractYouTubeId in media_helper.php with improved regex patterns
    • Remove redundant extractYoutubeId method from Adv_slide_admin controller
    • Update slider administration logic to use the centralized helper function
  • [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=true in your environment. Ensure maxUserConnections on the DB user is ≥ your PHP-FPM pm.max_children value before enabling.

  • [4.98.7] Check for overrides:

    • AdvPriceTrackingGraphs::productPrices (logic extracted into new protected productPricesFromChanges() — 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.php Added the slider select box
    • application/views/blog/blogs/update.php Added the slider select box
    • application/views/main/layouts/blog/blog_post.php Added 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_CLIENT in pipeline variables

  • [4.98.6] Composables Migration - Verification Guide Three composables were relocated from assets/admin/js/productBundles/composables/ to assets/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/mediastream to 3.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 in tenants.yaml from 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::printAcsVoucher
    • PrintVoucher::printBatchAcsVoucher
    • Orders_admin::getPickupLists
    • Orders_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::executeCommand
    • ecommercen/seo/controllers/Adv_custom_metatags.php
    • ecommercen/seo/models/Adv_custom_metatags_model.php
    • Front_c::customMetaTags
  • [4.98.0] For clients using the ProxyCurlImageFetchJob in 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.php and GenerateListRequest.php
    • Review new specification classes in src/Domains/Support/Repository/Specification/
    • Verify HandlesNotEmptyFilters trait integration in Domain Services
  • [4.98.0] Check for overrides:

    • application/libraries/MY_Form_validation.php
    • ecommercen/blog/controllers/Adv_blog_admin.php
    • ecommercen/sliders/controllers/Adv_slide_admin.php
    • src/Transporters/EasyMail/EasyMail.php
    • src/Rest/Cms/Controllers/BlogArticle.php
    • src/Rest/Cms/Controllers/BlogCategory.php
    • src/Rest/Cms/Controllers/Page.php