This release includes 2 breaking changes for platform teams planning a safe upgrade.
Published 6mo
Productivity & Wikis
✓ No known CVEs patched
✓ No known CVEs patched in this version
Topics
cms
linked-data
php
Affected surfaces
auth
breaking_upgrade
Summary
AI summaryMinimum PHP version raised to 8.1 and support added for PHP 8.4.
Full changelog
Compatibility
- The new minimum required version of PHP is 8.1
- PHP 8.4 is now officially supported
Bugs Fixed
- New version notifications were not being shown correctly for the core
- The confirmation message warning users that they made changes which would be lost if not saved could trigger improperly on the site navigation admin page when no changes were actually made
- An error that could arise when viewing the system information page with no subfolders yet under the "files" folder (#2196, fix contributed by Andreas Warnaar)
- Custom thumbnails for primary media were not used when getting the thumbnail for a parent resource
- The media show page could show an Edit button even if the current user did not have permission to edit the media
- An error happened preventing the proper response when performing a REST DELETE operation when
@reversewas enabled in the API - Event listening did not work properly for some forms
- Public "front page" cross-site advanced searches were broken
- Users with the editor role couldn't select media for a resource value
- An empty
<link>element was improperly rendered when a custom favicon was not selected - Files were not deleted properly when assets were deleted
- Users with a multibyte character at the beginning of their name resulted in a garbled section in the user selection sidebar (#2359, fix contributed by @rish314)
Improvements
- Many accessibility improvements and changes to labeling, color contrast, click target sizes, and more (includes contributions from @rish314 and @Trott)
- Item stubs: create simple new items when editing another item without leaving the page
- Improved the efficiency and speed of many pages and operations by avoiding unnecessary extra queries
- New batch edit feature for converting values between different data types
- Dropdowns and sidebar selectors now sort their values according to the translated labels when a non-default locale is active
- oEmbed blocks now allow updating the oEmbed URL
- oEmbed endpoints now also register the actual oEmbed URL for each site, allowing oEmbed to work even when the passed page doesn't include the oEmbed discovery link
- Updated the list of pre-configured oEmbed endpoints
- The single "default to private" setting for resources is now divided into separate settings for default visibility of items, sets, sites, and pages
- New IIIF image and IIIF presentation page blocks for including IIIF media without adding it to an item
- Site-level configuration options have been added for the bundled Mirador IIIF viewer
- PDF thumbnails will use the "CropBox" by default, fixing some files that would include large blank areas in their generated thumbnails (this is controlled by the new
pdfUseCropBoxthumbnailer option) - Garbage collection of sessions is turned on by default even for servers that otherwise disable it (setting
['session']['allow_no_gc']to true in local config can keep GC disabled if desired) - Filtering in sidebar selectors no longer closes the selector subsections
- New batch chunk size setting for controlling how many resources will be operated on in a single chunk during a batch update or delete
- New page layout setting for setting a body class for the page (#2250, contributed by @Daniel-KM)
- New "has/does not have data type" advanced search options for values
- Filtering for "used" vocabulary members like properties and classes is correctly calculated for usage in item sets when viewing the item set search page
- Added IDs for styling/targeting advanced search fields
- Added additional details and linking in "details" sidebars of admin resources (#2346, contributed by @Daniel-KM)
- Logger config now allows setting the log path to streams or files that don't yet exist
- Job logging now catches PHP throwable errors instead of just exceptions, improving error reporting and detection
Changes
- The admin site browse now only shows sites that the current user has some role in by default
- The default admin sort is now by ID instead of date; for most sites and usages these are the same, but ID is more efficient
- An empty
<dl>element is no longer rendered when a resource has no values - Rendered values on a page now include a class to indicate their data type
- Images Omeka can make thumbnails of but that browsers can't natively display (e.g. TIFF, JPEG2000) are now supported in the lightbox gallery by displaying their "large" thumbnail
- The "linked resources" display for resources now loads and updates its contents asynchronously instead of reloading the whole page when paginating or filtering the linked resources
- REST API usage in the admin interface now uses the
api-localendpoint, delivering correct and complete results according to the current user's permissions (#2276, contributed by @Daniel-KM)
For Developers
- Modules can now provide page templates and block templates (#2200, contributed by @Daniel-KM)
- Themes can now provide resource page block layouts
- The attachments form helper for page blocks now accepts a
maxAttachmentsparameter to limit the number of allowed attachments - The "debug" locale sometimes used to check that strings are translatable previously could cause an issue with PHP's
intland formatting dates; this is now fixed displayValues()for resource representations now accepts new optionspropertiesandexcludePropertiesto limit which properties to show values for- Themes can now override the
js/lg-itemfiles-config.jsstatic asset to change lightGallery configuration - API requests can pass the option
'countQuery' => falseto skip running a second query to count the total results, and the count will also be skipped if the query gets all results with no pagination or limitation; the returned total count for these will just be the count of the results array - New PSR-3-style
Omeka\Stdlib\PsrMessageclass, likeOmeka\Stdlib\Messagebut using PSR-3 interpolation on the message instead of sprintf - PSR-3 logger:
Omeka\PsrLoggerservice,psrLogger()controller plugin, interpolation support in log messages - New
Omeka\Db\QueryBuilderextending Doctrine's DQL query builder for better handling of the counter used when minting unique names for named parameters and table aliases. createNamedParameter and createAlias methods that were previously on the API adapter classes are directly on this builder class. The old-style adapter ones can still be used, but the new builder is preferred - Doctrine's query and metadata caches are now kept as separate structures
getIdentityMapanddetachAllNewEntitiesare now public, available methods on API adapter classes, useful for detaching entities from Doctrine's EntityManager during batch processes- Trying to get the URL for a resource that doesn't define its controller now returns null instead of throwing an error
- New events
setting.update,setting.insert,setting.delete - The
user.logoutevent now is passed the User entity that logged out - The
rep.resource.display_valuesevent now has access to the options passed todisplayValues
Breaking Changes
- Minimum required PHP version increased to 8.1
- PHP 8.4 officially supported as a new minimum/maximum runtime
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Omeka S
Next-generation web publishing platform for institutions interested in connecting digital cultural heritage collections with other resources online.
Related context
Related tools
Beta — feedback welcome: [email protected]