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.93.md for this page in Markdown format</div>

Home | Changelog

Version 4

version 4.93

  • [4.93.8] fix(di): better RouterDispatcher error handling. exclude controller call_user_func_array methods which should be handled by called controller
  • [4.93.7] fix(di): RouterDispatcher check for path params existence before manipulations
  • [4.93.6] fix: Fix the missing first vendor in the vendors filter of category list
  • [4.93.6] fix(di): RouterDispatcher should check for lang in router to unset lang from data send to controller method
  • [4.93.5] chore(docs): Updated RestApiModules
  • [4.93.5] refactor(domains): Replace BaseModel with Repository & Specification Pattern.
    • This commit completely refactors the data access layer, deprecating the monolithic BaseModel in favor of a more flexible, maintainable, and testable architecture based on the Repository, Specification, and Configurator design patterns.
    • The previous BaseModel was overly complex, difficult to extend with custom queries (e.g., complex joins, aggregates), and tightly coupled the business logic of queries with the data access mechanism.
    • This new architecture solves these problems by:
      1. Introducing the Repository Pattern: Each domain entity (Page, Article, etc.) now has a dedicated Repository class responsible solely for data persistence. A BaseRepository provides common functionality.
      2. Implementing the Specification Pattern: Complex query logic is now encapsulated in small, reusable Specification classes (Filter, Sort, Pagination, FilterByTag, etc.). This decouples query building from the repository and makes creating custom, complex queries simple and clean.
      3. Using a Relation Configurator Pattern: Relationship definitions are now decoupled from the repositories themselves. Each repository is injected with a RelationConfigurator class, which defines its relationships. This allows for easy extension and overriding of relations for client-specific customizations without modifying core code.
      4. Updating DI Containers: All domain service containers have been updated to correctly wire the new repositories and their configurators, ensuring the entire system is managed by dependency injection.
    • This refactoring was applied across all major domains, including Cms (Subcontent, Page, Builder, Document) and its extensive Blog module (Article, Author, Category, Comment, Tag), as well as the Slider and Map domains. All existing functionality, including eager, lazy, and deep recursive relationship loading, has been preserved.
    • More info on usage here
  • [4.93.5] fix(Cronjob): add the change from 1ef4480 to the Cronjob controller
  • [4.93.4] fix(security): upgrade axios to ^1.12 to fix https://security.snyk.io/vuln/SNYK-JS-AXIOS-12613773
  • [4.93.4] feat(rest): TokenProtect helper for Bearer tokens. Input::getBearerToken method
  • [4.93.4] fix: DB_Query_builder::_compile_wh where not in made NOT part of field name
  • [4.93.4] fix: In checkout success change the status to Paid and in the Cronjob after the check of order payment trigger the internal success hook
  • [4.93.4] fix: Fix the missing first vendor in the vendors filter of category list
  • [4.93.3] fix: Fix the duplicate key in registry from the initial seed
  • [4.93.3] fix(domains): filter by mui
    • FilterRequest optional language property
    • ListRequest definitions added language value to mui filters
    • BaseMod el uses language in filter subselects
  • [4.93.2] feat(openapi): use symfony Finder to scan files for openapi. Allows excluding folders / files for client overrides
  • [4.93.1] refactor(rest): convert HandlesRestfulActions from trait to controller
  • [4.93.1] feat: OpenApi docblocks. openapi.json generation with composer run openapi-json. View generated json at api-docs.html
  • [4.93.1] fix(domains): correct mapping for filters based on list requests for
    • Article\ListRequest filter authorId to author
    • Page\ListRequest sorts as in response not db fields
  • [4.93.1] feat: Set site-mode through advisable services panel
  • [4.93.0] feat(domains):
    • add direct access to tags relation from blog category
    • Blog\Article\ListRequest add filter for article title, article slug, category slug and tag ids
    • BaseModel::item fix return type
  • [4.93.0] fix(lang): add missing keys kbitadmin.general.it, kbitadmin.general.es, kbitadmin.general.ru, kbitadmin.general.zh in adv_advisable_lang files
  • [4.93.0] feat: add rename, delete functionality to block builder

Notes

  • [4.93.6] Check for overrides:
    • Product_categories::buildVendorsSideMenu
  • [4.93.5] Need composer i
  • [4.93.5] Check for overrides:
    • Cronjob::handlePendingIrisOrders also check for the OrderForErpHookFireTrait being used at the start of the class
  • [4.93.4] Need
    • composer i
    • npm run all-production
  • [4.93.4] Check for overrides:
    • Checkout::irisResponseSuccess
    • CancelIncompleteOrders::handlePendingIrisOrders In CancelIncompleteOrders class add the extra trait
    • Product_categories::handlePendingIrisOrders also check for the OrderForErpHookFireTrait being used at the start of the class
  • [4.93.1] Need
    • composer i
    • npm ci && npm run admin-production
  • [4.93.1] Check for overrides:
    • Base_c::siteModeGuard
    • Advisable_services::{buildAdvisableServicesJsonState|getEndpoint}
    • custom/Rest controllers for HandlesRestfulActions usage
  • [4.93.0] Check for overrides:
    • Block_builder_listing::{deleteBlock|renameBlock}