Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Xrowmetadata Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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.

  • Abandoned code: no security patches, no PHP 8 compatibility, no dependency updates for roughly eight years.
  • Hidden coupling: datatype bundles typically assume a specific eZ content model, DB schema, and legacy settings (site.ini, content.ini, datatype registration), none of which are documented in-repo.
  • Blast radius: datatypes sit on the content persistence path. A misregistered or broken datatype risks content read failures or silent data loss rather than a degraded UI.
  • Zero external validation: no issue history, no downstream consumers, no visible test suite to gauge correctness.

Key questions for the requester.

  1. Are we actually running eZ Publish 5/legacy anywhere, or was this mis-scoped as a "Laravel package"?
  2. Is there existing stored xrowMetadata content we must read, or is this a greenfield requirement that merely resembles it?
  3. Has xrow published a successor datatype for eZ Platform/Ibexa, and is that supported?
  4. Who currently owns the deployment that depends on this, and what is its decommission date?
  5. What is the actual field schema (names, cardinality, multilingual behaviour) so we can specify a clean reimplementation?

Recommendation: do not adopt. Treat this repository as a specification artifact to mine for field semantics, not as a dependency.

Integration Approach

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:

  • Extract-and-retire (preferred): write a one-off ETL that reads legacy attribute rows (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.
  • Strangler/anti-corruption layer: if eZ5 must stay live, expose metadata via a thin read API on the legacy side and consume it from Laravel through a repository interface, keeping the datatype entirely outside the new codebase.

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.

  1. Confirm whether legacy eZ5 is in scope at all; if not, close as not-applicable.
  2. Recover the datatype contract from the bundle source (field definitions, validation, storage keys) and from live content samples.
  3. Draft the target schema and a Laravel-native field implementation with round-trip tests against legacy fixtures.
  4. Build and rehearse the ETL, including rollback.
  5. Cut over reads, then writes; retire the legacy extension and archive the repo reference.

Operational Impact

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.

  • Fatal errors on PHP 8 from removed legacy APIs, appearing at class-load or content-read time rather than at deploy time.
  • Silent datatype misregistration causing attributes to render empty or fail to persist, with content loss discovered downstream.
  • ETL truncation or encoding drift when moving data_text blobs across charset/collation boundaries — mitigated only by round-trip validation.
  • Dependency-resolution deadlock if the bundle is ever pulled into the Laravel app's Composer graph.

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core