heimrichhannot/contao-versions

Create versions within contao with ease and prevent entities from being purged by fromTable name. Also usable in frontend.

Package info

github.com/heimrichhannot/contao-versions

Type:contao-bundle

pkg:composer/heimrichhannot/contao-versions

Statistics

Installs: 6 990

Dependents: 2

Suggesters: 0

Stars: 0

Open Issues: 0

2.4.2 2025-02-27 14:29 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

LGPL-3.0-or-later 3c87aedea79352c3f4b3f4f034cb8ab985c372e4

contaoversions


README

This bundle enhances the contao version entity with persistent tables options and helper methods.

Features

  • Add fromTable names to huh_versions.persistent_tables that should persist within tl_version forever or a custom time frame.
  • Use the VersionModel to find tl_version models

Register persistent tables

To make your entities from a given fromTable persist add the table name to the huh_versions.persistent_tables within your project configuration (typical config/config.yml).

# config/config.yml
huh_versions:
 persistent_tables:
 - tl_my_custom_entity
 - tl_keep_forever

Create a new version entry

Instead of using the versions class direct, you can use the VersionControl service instead.

use Contao\FrontendUser;
use Contao\Versions;
use HeimrichHannot\VersionsBundle\Version\VersionControl;

class MyCustomEntity 
{
 /** @var VersionControl */
 private $versionControl;

 protected function createVersion(int $id, FrontendUser $member): void
 {
 // Simple call
 $this->versionControl->createVersion('tl_my_custom_entity', $id);
 
 // Pass additional options
 $this->versionControl->createVersion('tl_my_custom_entity', $id, [
 'hideUser' => false,
 'additionalData' => [
 'memberid' => $member->id,
 'memberusername' => $member->username,
 'username' => 'FrontendUser',
 'userid' => 0,
 ],
 'instance' => new Versions('tl_my_custom_entity', $id),
 ]);
 }
}

VersionControl::createVersion options:

  • hideUser: (bool) Don't add user to version log entry. Default false
  • additionalData: (array|null) Pass data that should be stored within the log entry. The array keys must be existing database column names. Default null
  • instance: (Version|null)Pass a custom Versions instance instead of the default one. Default null

Configuration reference

# Default configuration for extension with alias: "huh_versions"
huh_versions:

 # Set table names that should be persist within tl_versions.
 persistent_tables:

 # Examples:
 - tl_content
 - tl_my_custom_entity

 # Set the time period persistent table versions should be kept in version table. Set to 0 for forever.
 persistent_version_period: ~ # Example: 7776000