diff --git a/src/flextype/Tokens/Fields/Fields/CreatedAtField.php b/src/flextype/Tokens/Fields/Fields/CreatedAtField.php new file mode 100644 index 00000000..363ac198 --- /dev/null +++ b/src/flextype/Tokens/Fields/Fields/CreatedAtField.php @@ -0,0 +1,34 @@ +addListener('onTokensFetchSingleHasResult', static function (): void { + + if (! registry()->get('flextype.settings.entries.tokens.fields.created_at.enabled')) { + return; + } + + if (tokens()->registry()->get('fetch.data.created_at') === null) { + tokens()->registry()->set('fetch.data.created_at', (int) filesystem()->file(tokens()->getFileLocation(tokens()->registry()->get('fetch.id')))->lastModified()); + } else { + tokens()->registry()->set('fetch.data.created_at', (int) strtotime((string) tokens()->registry()->get('fetch.data.created_at'))); + } +}); + +emitter()->addListener('onTokensCreate', static function (): void { + + if (! registry()->get('flextype.settings.entries.tokens.fields.created_at.enabled')) { + return; + } + + if (tokens()->registry()->get('create.data.created_at') !== null) { + return; + } + + tokens()->registry()->set('create.data.created_at', date(registry()->get('flextype.settings.date_format'), time())); +}); diff --git a/src/flextype/Tokens/Fields/Fields/CreatedByField.php b/src/flextype/Tokens/Fields/Fields/CreatedByField.php new file mode 100644 index 00000000..40001e09 --- /dev/null +++ b/src/flextype/Tokens/Fields/Fields/CreatedByField.php @@ -0,0 +1,21 @@ +addListener('onTokensCreate', static function (): void { + + if (! registry()->get('flextype.settings.entries.tokens.fields.created_by.enabled')) { + return; + } + + if (tokens()->registry()->get('create.data.created_by') !== null) { + return; + } + + tokens()->registry()->set('create.data.created_by', ''); +}); diff --git a/src/flextype/Tokens/Fields/Fields/IdField.php b/src/flextype/Tokens/Fields/Fields/IdField.php new file mode 100644 index 00000000..e8dd8812 --- /dev/null +++ b/src/flextype/Tokens/Fields/Fields/IdField.php @@ -0,0 +1,21 @@ +addListener('onTokensFetchSingleHasResult', static function (): void { + + if (! registry()->get('flextype.settings.entries.tokens.fields.id.enabled')) { + return; + } + + if (tokens()->registry()->get('fetch.data.id') !== null) { + return; + } + + tokens()->registry()->set('fetch.data.id', strings(tokens()->registry()->get('fetch.id'))->trimSlashes()->toString()); +}); \ No newline at end of file diff --git a/src/flextype/Tokens/Fields/Fields/ModifiedAtField.php b/src/flextype/Tokens/Fields/Fields/ModifiedAtField.php new file mode 100644 index 00000000..78e52d85 --- /dev/null +++ b/src/flextype/Tokens/Fields/Fields/ModifiedAtField.php @@ -0,0 +1,21 @@ +addListener('onTokensFetchSingleHasResult', static function (): void { + + if (! registry()->get('flextype.settings.entries.tokens.fields.modified_at.enabled')) { + return; + } + + if (tokens()->registry()->get('fetch.data.modified_at') !== null) { + return; + } + + tokens()->registry()->set('fetch.data.modified_at', (int) filesystem()->file(tokens()->getFileLocation(tokens()->registry()->get('fetch.id')))->lastModified()); +}); diff --git a/src/flextype/Tokens/Fields/Fields/UuidField.php b/src/flextype/Tokens/Fields/Fields/UuidField.php new file mode 100644 index 00000000..bda490ad --- /dev/null +++ b/src/flextype/Tokens/Fields/Fields/UuidField.php @@ -0,0 +1,23 @@ +addListener('onTokensCreate', static function (): void { + + if (! registry()->get('flextype.settings.entries.tokens.fields.uuid.enabled')) { + return; + } + + if (tokens()->registry()->get('create.data.uuid') !== null) { + return; + } + + tokens()->registry()->set('create.data.uuid', Uuid::uuid4()->toString()); +}); diff --git a/src/flextype/settings.yaml b/src/flextype/settings.yaml index 61aa5f8c..f85033e1 100644 --- a/src/flextype/settings.yaml +++ b/src/flextype/settings.yaml @@ -60,7 +60,22 @@ entries: filename: tokens extension: yaml serializer: yaml - fields: [] + fields: + modified_at: + enabled: true + path: "/src/flextype/Tokens/Fields/ModifiedAtField.php" + created_at: + enabled: true + path: "/src/flextype/Tokens/Fields/CreatedAtField.php" + created_by: + enabled: true + path: "/src/flextype/Tokens/Fields/CreatedByField.php" + uuid: + enabled: true + path: "/src/flextype/Tokens/Fields/UuidField.php" + id: + enabled: true + path: "/src/flextype/Tokens/Fields/IdField.php" media: directory: media filename: media