$ show omeka/omeka-s
Omeka S is a full-stack web application for publishing digital cultural heritage collections. Built on the Laminas (Zend) MVC framework with Doctrine ORM, it provides a comprehensive admin interface for managing items, media, item sets, vocabularies, and sites, along with a RESTful JSON-LD API. The system supports linked data (RDF/OWL), IIIF viewers, full-text search, and a plugin/theme architecture for extensibility. It is a mature, well-structured codebase with clear separation of concerns (MVC, adapters, representations, services) but shows signs of technical drift from its Laminas foundation and outdated frontend dependencies like jQuery and CKEditor 4.
The LLM identified 4 files worth highlighting for reuse:
A small, self-contained PHP trait that implements PSR-3 log message interpolation. It replaces placeholders like `{key}` with context array values, respecting type safety. Easily reusable in any PHP project requiring structured log messages without a full PSR-3 implementation.
A reusable trait for sorting select element option arrays using ICU Collator for locale-aware alphabetical ordering. Provides deterministic fallback to `strcmp` when ext-intl is unavailable. Can be extracted to any PHP form library that needs consistent, locale-safe select menu sorting.
Implements a hierarchical settings lookup (global > site > user) via an array of `SettingsInterface` sources. Decouples settings retrieval from storage and supports caching. The pattern is extraction-ready for any application requiring scoped or overrideable configuration.
A Doctrine SQL filter that transparently restricts resource visibility in queries based on user roles and ownership. Integrates with ACL assertions to apply WHERE clauses for 'public only' or 'own resources'. The pattern can be extracted for any Doctrine-based app needing row-level access control without manual query modifications.