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

Share Buttons Bundle Laravel Package

ezsystems/share-buttons-bundle

Symfony bundle that adds social share buttons (Facebook Like/Recommend, Twitter, LinkedIn, Google+, Xing) to applications, including eZ Publish 5.x and eZ Platform. Install via Composer, enable in the kernel, and configure providers per siteaccess in config.yml with default or custom templates.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The first thing to flag is a category mismatch: despite the "Laravel/PHP package" framing, ezsystems/share-buttons-bundle is a Symfony bundle, not a Laravel package. It has no ServiceProvider, no publishable config/assets, no facade, and no Laravel-style package discovery. It is registered by manually adding new EzSystems\ShareButtonsBundle\EzSystemsShareButtonsBundle() to AppKernel.php — an entry point that has not existed in Symfony since 4.4 and never existed in Laravel. Its configuration model (ez_share_buttons.system.<siteaccess>) is derived from eZ Publish/eZ Platform's siteaccess concept, which only makes sense inside an eZ-based Symfony application. For a Laravel codebase, architectural fit is effectively zero; for a legacy Symfony 2.x/3.x or eZ Platform application, it fits the conventions of that era but not modern ones.

Integration feasibility. Composer installation would succeed only inside a permissive legacy dependency tree. The bundle targets Symfony ≥2.6 with PHP 5.x-era constraints, and its default template instructs the integrator to use the {% stylesheets %} Assetic tag — an extension removed in Symfony 4.0. So even on a Symfony 3.x app, the documented asset path is already on a deprecation cliff. There are zero dependent repositories and five stars, meaning there is no observable production usage to borrow an integration pattern from; we would be the first integrator in years.

Technical risk. High and mostly non-technical in nature:

  • Abandonment: archived repository, single release (2018-02-14), no maintenance path. Any defect becomes our defect.
  • Licensing: NOASSERTION is not a license. eZ Systems historically shipped under GPL-2.0, which for a PHP application can carry copyleft implications for distribution. This requires legal review before any code enters the tree — a multi-day gate on a component whose functional value is a few dozen lines of Twig.
  • Privacy/compliance: social share widgets typically pull third-party JavaScript and, for share counts, make outbound calls that leak the visited URL to providers. That is a GDPR/ePrivacy and consent-management conversation, not a template concern.
  • Security surface: unmaintained third-party embeds, no Subresource Integrity hashes, no CSP guidance, and no CVE response channel.

Key questions for the requester.

  1. Is the target application actually Laravel, Symfony, or eZ Platform? The answer changes this from "reimplement in a day" to "vendor a fork."
  2. What is the pinned Symfony and PHP version, and is there a framework upgrade on the roadmap within 12 months?
  3. Is the requirement genuinely share buttons (static links + optional counts), or is it analytics on sharing? The latter is a different, larger product requirement this bundle does not address.
  4. Will legal accept a NOASSERTION dependency, and is GPL-2.0 acceptable for our distribution model?
  5. Has privacy/consent sign-off been obtained for third-party social embeds?

Recommendation: do not adopt. The functional scope is small enough to reimplement natively (a Blade component or Twig partial plus a config array), which removes the licensing question, the framework-version risk, and the abandonment risk simultaneously.

Integration Approach

Stack fit. Two viable paths, and they should be chosen explicitly rather than by default:

  • If the stack is Laravel (as stated): the package is not usable as-is. The correct integration is a native reimplementation — a Blade component (<x-share-buttons>) or a small view composer, a config/share-buttons.php file listing enabled providers and URL templates, and a publishable CSS asset. Estimated effort: half a day to one day including tests. This preserves the only real value the bundle offers (a curated provider list and URL-encoding logic) while discarding the Symfony packaging.
  • If the stack is legacy Symfony/eZ: treat the bundle as a frozen source of truth to vendor, not a Composer dependency. Fork into a private VCS, replace the Assetic {% stylesheets %} block with asset() calls, pin the PHP/Symfony constraints, and own it. Budget a maintenance line item rather than assuming upstream fixes.

Migration path. There is no upgrade path through this package. Because it is archived and pre-Symfony-4, it is a dead end: adopting it now guarantees a removal task at the next framework upgrade. The lower-risk sequence is to skip adoption entirely and build the replacement first, so no migration debt is created. If a stakeholder insists on the package for a legacy app, scope it as an explicitly temporary shim with a removal ticket filed at the same time.

Compatibility. Assume the following and verify before committing: Symfony 2.6–3.4 range, PHP 5.5–7.x, Assetic templating, eZ siteaccess configuration semantics. It is not compatible with Symfony 5/6/7, PHP 8.x, Symfony Flex, or Laravel of any version. Provider URL schemes are also frozen at 2018: several networks have since deprecated or changed their share endpoints and share-count APIs (notably Facebook's share-count endpoint and Twitter's transition to X), so even the working parts may produce broken links or blank counters.

Sequencing.

  1. Confirm target framework and whether eZ Platform is in the stack (blocks everything else).
  2. Legal review of NOASSERTION — run in parallel, not as a gate on design.
  3. Privacy/consent review of third-party embeds — determines whether counts are in scope at all.
  4. Build the native component (Laravel) or vendor the fork (Symfony legacy), with provider list driven by configuration so networks can be added/removed without a deploy.
  5. Add CSP directives and consent gating before first release, not after.
  6. Add a lightweight rendering smoke test per provider so silent breakage is caught in CI.

Do not sequence this behind a framework upgrade; it is small enough to be a standalone ticket and should not become a dependency of a larger migration.

Operational Impact

Maintenance. Effectively infinite and entirely ours. Upstream is archived, so "maintenance" means owning a fork or owning an in-house replacement. The bundle's surface area is small (templates, a provider list, URL builders), which caps the effort — but it also means the maintenance cost is disproportionate to the value delivered. A native reimplementation of comparable size is easier to maintain than a vendored fork, because it lives in our conventions and our test suite.

Support. None. The repository is read-only; issues cannot be filed, patches cannot be upstreamed, and there is no maintainer to escalate a security report to. Any incident response is internal, with a cold-start cost because nobody on the team will have prior familiarity with the code. This is the dominant operational risk: an unmaintained dependency with no CVE channel is a standing audit finding.

Scaling. Server-side cost is negligible — rendering is static HTML plus provider URLs, so it caches and horizontal-scales like any other template fragment. The real scaling considerations are client-side and third-party: outbound requests to provider CDNs and share-count endpoints, provider rate limiting, and the risk that a blocked or slow provider script degrades page performance or layout. If share counts are ever computed server-side (the bundle does not do this, but stakeholders often assume it does), you inherit a cache-invalidation problem and third-party latency on the critical path. Keep counts client-side or omit them.

Failure modes. Ranked by likelihood:

  1. Silent widget breakage — a provider changes its endpoint or deprecates a script; the button renders but does nothing, or the counter shows 0. No upstream fix will arrive, and there is no alerting by default.
  2. Asset pipeline failure — the documented Assetic tag does not resolve on modern Symfony, producing an unstyled or exception-throwing page.
  3. CSP / ad-blocker suppression — third-party scripts blocked by policy or by user tooling; degrades to invisible or dead controls. Mitigate by rendering real anchors as the baseline behavior.
  4. Compliance exposure — third-party calls firing before consent, surfacing as a privacy incident rather than a bug.
  5. Licensing challenge — discovered late, typically during M&A diligence or a distribution review, when remediation is expensive.

Ramp-up. Near zero technically — any Symfony or Laravel developer reads this codebase in under an hour, and the Twig/Blade work is junior-level. The non-obvious ramp-up is around eZ siteaccess configuration for the Symfony path, and around consent/CSP policy for either path. Net: cheap to learn, expensive to own — the classic profile of a package that should be replaced by a small piece of first-party code.

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.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings