PHPackages                             heimrichhannot/contao-privacy-protocol-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. heimrichhannot/contao-privacy-protocol-bundle

ActiveContao-bundle[Validation &amp; Sanitization](/categories/validation)

heimrichhannot/contao-privacy-protocol-bundle
=============================================

This bundle add a privacy logging entity to contao as required by the General Data Protection Regulation.

2.0.0(1y ago)0137LGPL-3.0-or-laterPHPPHP ^8.1

Since Feb 11Pushed 1y ago5 watchersCompare

[ Source](https://github.com/heimrichhannot/contao-privacy-protocol-bundle)[ Packagist](https://packagist.org/packages/heimrichhannot/contao-privacy-protocol-bundle)[ RSS](/packages/heimrichhannot-contao-privacy-protocol-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (13)Versions (2)Used By (0)

Contao Privacy Protocol Bundle
==============================

[](#contao-privacy-protocol-bundle)

This bundle add a privacy logging entity to contao as required by the European Union's "General Data Protection Regulation" ( GDPR, in German: "Datenschutz-Grundverordnung", DSGVO).

Note

**Legal disclaimer**

Use this bundle at your own risk. Although we as the developer try our best to design this bundle to fulfill the legal requirements we **CAN'T GUARANTEE** anything in terms completeness and correctness. Also we don't offer any legal consulting. We strongly encourage you to consult a lawyer if you have any questions or concerns.

Usage
-----

[](#usage)

1. Install with composer or contao manager: `composer require heimrichhannot/contao-privacy-protocol-bundle`
2. Update database
3. Find a new menu entry "Protocol" within the section "Privacy" in the contao backend menu
4. Create a new protocol archive and configure it

Add logs from your code
-----------------------

[](#add-logs-from-your-code)

```
use HeimrichHannot\PrivacyProtocolBundle\Protocol\PrivacyProtocolLogger;
use HeimrichHannot\PrivacyProtocolBundle\Protocol\ProtocolEntry;
use HeimrichHannot\PrivacyProtocolBundle\Protocol\ProtocolType;

class ExampleController
{
    public function __construct(
        private readonly PrivacyProtocolLogger $logger,
    ) {}

    public function __invoke()
    {
        // create a new protocol entry
        $entry = new ProtocolEntry(
            person: ['email' => 'someone@example.org',],
            target: ['dataContainer' => 'tl_mailing_list', 'id' => 43,],
            type: ProtocolType::FIRST_OPT_IN,
            archiveId: 2,
            packageName: 'vendor/example-bundle',
        );

        // add an optional description
        $entry->description = 'someone@example.org has subscribed to the mailing list with ID 43.';

        $this->logger->log($entry);

    }
}
```

Explanation:

- The ProtocolEntry parameters:
    - `person (array)`: An array containing the personal data of the person that is affected by the action, e.g. an email address, a name, etc.
    - `target (array)`: An array containing information about the target (e.g. a mailing list, subscription list, ...) of the action, e.g. the data container, the id, etc.
    - `type (ProtocolType)`: The type of the protocol entry, e.g. first opt-in, opt-in, opt-out, etc.
    - `archiveId (int)`: The protocol archive id
    - `packageName (string)`: The package name of the bundle that triggers the protocol entry

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance42

Moderate activity, may be stable

Popularity12

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

462d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/28ad3224d8727b622ebd229840eea6b9dbcb83eb0bd609e6ce65b614830ff538?d=identicon)[digitales@heimrich-hannot.de](/maintainers/digitales@heimrich-hannot.de)

---

Top Contributors

[![koertho](https://avatars.githubusercontent.com/u/12064642?v=4)](https://github.com/koertho "koertho (24 commits)")

###  Code Quality

Static AnalysisPHPStan, Rector

Code StyleECS

Type Coverage Yes

### Embed Badge

![Health badge](/badges/heimrichhannot-contao-privacy-protocol-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/heimrichhannot-contao-privacy-protocol-bundle/health.svg)](https://phpackages.com/packages/heimrichhannot-contao-privacy-protocol-bundle)
```

###  Alternatives

[symfony/security-bundle

Provides a tight integration of the Security component into the Symfony full-stack framework

2.5k172.9M1.8k](/packages/symfony-security-bundle)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
