heimrichhannot / contao-versions
Create versions within contao with ease and prevent entities from being purged by fromTable name. Also usable in frontend.
Installs: 5 958
Dependents: 2
Suggesters: 0
Security: 0
Stars: 0
Watchers: 5
Forks: 1
Open Issues: 0
Type:contao-bundle
Requires
- php: ^7.1||^8.0
- contao/core-bundle: ^4.9
- heimrichhannot/contao-utils-bundle: ^2.51
- symfony/config: ^4.4|^5.0
- symfony/dependency-injection: ^4.4|^5.0
- symfony/http-kernel: ^4.4|^5.0
Replaces
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. Defaultfalse
- additionalData: (
array
|null
) Pass data that should be stored within the log entry. The array keys must be existing database column names. Defaultnull
- instance: (
Version
|null
)Pass a customVersions
instance instead of the default one. Defaultnull
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