xrow/xrowmetadata-bundle
A Symfony bundle from XROW for working with content metadata, providing reusable services and configuration to attach, manage, and expose metadata across your application. Suitable for projects that need a structured, framework-integrated metadata layer.
Architecture fit: none for Laravel. The package is a Symfony bundle targeting eZ Publish 5 (legacy kernel + new stack), not a Laravel package. Laravel has no bundle registry, no eZ legacy extension autoloader, and no concept of an ezpublish-legacy-extension datatype. The only reusable asset is the domain logic that defines and serialises the xrowMetadata datatype (field definitions, validation, storage/toHash/fromHash behaviour, view templates). That logic is bound to legacy eZ interfaces (eZDataType, eZContentObjectAttribute) and would need to be reimplemented as an Eloquent cast, a JSON column contract, or a custom field package before it is usable in a Laravel application.
Integration feasibility: low. With 0 stars, 0 dependents, and a last release in May 2017, there is no evidence of production usage outside xrow's own historic deployments. The package is explicitly marked [deprecated] in its own description. Composer install would surface PHP constraint conflicts on any modern runtime (this code predates PHP 7.2/8.x), and the underlying eZ Publish 5 branch is itself end-of-life and superseded by eZ Platform / Ibexa.
Technical risk: high.
site.ini, content.ini, datatype registration), none of which are documented in-repo.Key questions for the requester.
xrowMetadata content we must read, or is this a greenfield requirement that merely resembles it?Recommendation: do not adopt. Treat this repository as a specification artifact to mine for field semantics, not as a dependency.
Stack fit. A Laravel application should model xrowMetadata as first-class application data: a JSON/TEXT column with a typed cast, or a small dedicated table if the fields are relational and queryable. Validation moves to FormRequests or a dedicated MetadataRules value object; rendering moves to Blade components. Nothing from the bundle's Symfony/eZ wiring should be carried over.
Migration path. Two options, chosen by whether the legacy system still runs:
ezcontentobject_attribute for the datatype's data_type_string), maps data_text/data_int into the new schema, and validates round-trip fidelity on a sample before cutover. This is the only option if the legacy stack is being shut down.Compatibility. Verify the PHP constraint in the bundle's composer.json against the target runtime; expect it to cap at PHP 5.6/7.0. If any install is attempted, do it in a sealed legacy container only — never in the Laravel app's dependency graph, where its Symfony 2/3 components would collide with Laravel's own Symfony versions.
Sequencing.
Maintenance. As a dependency this is unmaintainable: no upstream releases, no compatible transitive dependency updates, and no realistic path to running on a supported PHP version. If installed, it must be vendored as a private fork, which transfers the entire maintenance burden to us for a deprecated datatype — a poor trade against a few days of reimplementation.
Support. There is no support channel. Deprecation is declared publicly by the author, meaning questions will go unanswered and any security finding lands on our team by default. Documentation is limited to what is inferable from the repository.
Scaling. The datatype logic itself is not a scaling bottleneck, but the surrounding eZ Publish 5 legacy kernel is heavy (full framework bootstrap, cache/INI dependency, large object model). Keeping it alive to serve one datatype imposes that footprint on the deployment and pins the runtime to an old PHP, which constrains the whole estate — including any Laravel services sharing that host or pipeline.
Failure modes.
data_text blobs across charset/collation boundaries — mitigated only by round-trip validation.Ramp-up. High and specialised. Effective work requires eZ Publish 5 legacy internals — datatype registration, eZDataType lifecycle, INI configuration, and the legacy/new-stack bridge — a skill set that is scarce and shrinking. Budget for an engineer familiar with eZ legacy for the assessment and ETL, and expect at least a week of archaeology to fully recover the field contract from a repository with no README-level specification and no test coverage.
How can I help you explore Laravel packages today?