3 min readAug 11, 2026by jakub
Changelog
Current version: 1.2.0
[1.2.0] - 2026-08-10
Added
- Manufacturer grid toolbar: full-text search, per-column filters, paging, column controls and bookmarks. The listing already declared filters on four columns, but shipped no toolbar to render them, so only the first page of records was reachable.
- Bulk delete for manufacturers, backed by a new
gpsr/manage/massDeletecontroller that removes the selection in a single transaction. - Server-side validation on attachment uploads: extension allowlist (pdf, doc, docx, odt, txt, jpg, jpeg, png), MIME verification against the declared extension, upload-error handling and a 10 MB size cap.
Fixed
ManufacturerRepository::save()converted manufacturers using an interface belonging to an unrelated extension, so every programmatic save failed with a reflection error and the repository could not be used at all.- Removing every attachment from a manufacturer left the last rows in the database, because an empty exclusion list produced
id NOT IN(NULL), which matches nothing. display_typewas effectively dead configuration: only "Product Tab" was offered, and the layout added the block to the product tab group regardless of the setting. "No" and "Below Product Description" are now offered and honoured.ManufacturerRepository::delete()deleted nothing, because the interface getter it relied on read a column that does not exist on the manufacturer table.- The attachments uploader posted to
gpsr/manage/attachment_upload, which resolves to a controller that does not exist; it now targetsgpsr/manage_attachment/upload. - Saving a manufacturer committed the record before its attachments, so an attachment failure left partially written data behind while reporting a failed save. Both are now written in one transaction.
- The attachment save observer raised a TypeError when a row carried an already-stored filename rather than the uploader's array payload.
- A stray character after the first preference in
etc/di.xmlmade the file fail Magento's XSD validation. - Removed SVG from the manufacturer logo allowlist; SVG uploads into public media are a stored cross-site scripting vector.
- Removed imports of two unrelated Qoliber extensions that were not declared as dependencies and are absent on most installations.
- Declared two implicitly nullable constructor parameters explicitly, silencing deprecation notices on PHP 8.4.
Changed
- Breaking (nominal):
ManufacturerInterface::getGprsEntityId()/setGprsEntityId()are renamed togetGpsrEntityId()/setGpsrEntityId(), and theGPRS_ENTITY_IDconstant is nowGPSR_ENTITY_IDand maps to theentity_idcolumn. The previous getter always returnedNULL, so no working integration can depend on it, but callers referencing the old names must be updated.
[1.1.0] - 2025-12-01
- Added configurable tab titles so grids can be tailored per context without XML overrides.
- Refined admin grid rendering and title handling to improve clarity for administrators.
- Refactored tab title generation to a dedicated class for safer, more maintainable behavior.
- General code quality and housekeeping updates.
[1.0.6] - 2025-10-14
- Dropped the dependency on the Magento core uploader, reducing coupling and upgrade risk.
- Internal cleanup aligned with the dependency change.
[1.0.5] - 2025-10-06
- Added and corrected Polish translations.
- Fixed attachment uploads to prevent failures during file handling.
[1.0.4] - 2025-09-02
- Resolved an issue where the logo could appear empty or missing.
[1.0.3] - 2025-06-18
- Hotfix release to align package metadata and distributions.
[1.0.2] - 2025-05-10
- Bug-fix release addressing stability issues reported after initial launch.
[1.0.1] - 2025-05-02
- Minor maintenance adjustments following the initial release.
[1.0.0] - 2025-04-30
- Initial module release.