PHPackages                             heimrichhannot/contao-email\_voting - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. heimrichhannot/contao-email\_voting

ActiveContao-module[Utility &amp; Helpers](/categories/utility)

heimrichhannot/contao-email\_voting
===================================

Email-based voting system using efg forms

2.0.1(9y ago)136LGPL-3.0+PHP

Since Aug 11Pushed 9y ago8 watchersCompare

[ Source](https://github.com/heimrichhannot/contao-email_voting)[ Packagist](https://packagist.org/packages/heimrichhannot/contao-email_voting)[ Docs](https://github.com/heimrichhannot/contao-email_voting)[ RSS](/packages/heimrichhannot-contao-email-voting/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (3)Versions (5)Used By (0)

Contao E-Mail Voting
====================

[](#contao-e-mail-voting)

The module offers functionality for using an EFG form to be a voting form.

In order to offer a certain amount of protection against fake votes, every vote needs to be confirmed via email.

Only one vote per email is possible.

Technical instruction
---------------------

[](#technical-instruction)

### Step 1

[](#step-1)

Add the necessary fields to a new EFG form:

[![alt myModulePreview](docs/formfields.png)](docs/formfields.png)

### Step 2

[](#step-2)

Activate "Save formdata (efg)" in the form configuration (alias field could be email).

### Step 3

[](#step-3)

After adding the necessary fields, link them in the form's config:

[![alt myModulePreview](docs/form.png)](docs/form.png)

In order to confirm the voting, an email has to be sent:

[![alt myModulePreview](docs/form_email.png)](docs/form_email.png)

### Step 4

[](#step-4)

The activation site needs to contain an activation module:

[![alt myModulePreview](docs/article.png)](docs/article.png)

*The module doesn't need any further configuration*

Features
--------

[](#features)

### Modules

[](#modules)

NameDescriptionModuleEmailVotingActivationA module taking a token in the GET parameter to activate the voting.### Hooks

[](#hooks)

NameArgumentsDescriptionprocessEfgFormData -&gt; generateTokenLink$objTemplate, $arrItem, $objModuleAdds a token link in order to use it in the confirmation email after a votingvalidateFormField -&gt; validateVotingEmailFormField$objWidget, $intIdChecks for existing votings for a certain email address

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity66

Established project with proven stability

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

Every ~175 days

Total

4

Last Release

3399d ago

Major Versions

1.0.1 → 2.0.02017-01-13

### Community

Maintainers

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

---

Tags

contaovoting

### Embed Badge

![Health badge](/badges/heimrichhannot-contao-email-voting/health.svg)

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

PHPackages © 2026

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