https://github.com/bnomei/kirby-content-last-modified
Kirby plugin to track the timestamp any content was last modified at in the full content folder
https://github.com/bnomei/kirby-content-last-modified
content kirby kirby-cms kirby-plugin modified timestamp track
Last synced: 3 months ago
JSON representation
Kirby plugin to track the timestamp any content was last modified at in the full content folder
- Host: GitHub
- URL: https://github.com/bnomei/kirby-content-last-modified
- Owner: bnomei
- License: mit
- Created: 2024-09-20T07:18:41.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-09-20T09:33:43.000Z (9 months ago)
- Last Synced: 2024-10-11T03:02:53.005Z (8 months ago)
- Topics: content, kirby, kirby-cms, kirby-plugin, modified, timestamp, track
- Language: PHP
- Homepage: https://forum.getkirby.com/t/kirby-content-last-modified/32524
- Size: 42 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Kirby Content Last Modified


[](https://codeclimate.com/github/bnomei/kirby-content-last-modified)
[](https://discordapp.com/users/bnomei)Kirby plugin to track the last timestamp when any content was modified at in the full content folder.
## Installation
- unzip [master.zip](https://github.com/bnomei/kirby-content-last-modified/archive/master.zip) as folder `site/plugins/kirby-content-last-modified` or
- `git submodule add https://github.com/bnomei/kirby-content-last-modified.git site/plugins/kirby-content-last-modified` or
- `composer require bnomei/kirby-content-last-modified`## Usage
When you install this plugin it will create a file in the `content` folder of your Kirby installation. If any content (site, pages, files) in the `content` folder changes, this file will store the timestamp when the modification occurred. This might be useful to invalidate caches or trigger other actions.
### Output the last modified timestamp
```php
= site()->contentLastModified()->toDate('c') ?>
```### Flush a cache if the content was modified after a given timestamp
```php
contentLastModified()->toInt() > intval(get('last-modified'))) {
kirby()->cache('my-cache')->flush();
}
```### Invalidate individual cache values based on the last modified timestamp
```php
contentLastModified()->toInt();/* @var $cache \Kirby\Cache\Cache */
$cache = kirby()->cache('your-cache-name');/* @var $rawValue \Kirby\Cache\Value */
$rawValue = $cache->retrieve('some-cache-key');
if ($rawValue && $rawValue->created() < $lastModifiedTimestamp) {
$cache->remove('some-cache-key');
}// or with the helper
site()->removeFromCacheIfCreatedIsAfterModified('your-cache-name', 'some-cache-key', $lastModifiedTimestamp);// defaults to site()->contentLastModified()->toInt()
site()->removeFromCacheIfCreatedIsAfterModified('your-cache-name', 'some-cache-key');
```### Performance
The core method `site()->modified()` will give you the same timestamp but it will crawl all content files, which might not be the most performant thing to do depending on how much content you have.
## Settings
| bnomei.content-last-modified. | Default | Description |
|-------------------------------|------------|---------------------------------------------------------------|
| file | `callback` | returning the absolute path to the file storing the timestamp |
| max-dirty | `100` | write every N changes, if `null` it only writes on destruct |## Disclaimer
This plugin is provided "as is" with no guarantee. Use it at your own risk and always test it yourself before using it in a production environment. If you find any issues, please [create a new issue](https://github.com/bnomei/kirby-content-last-modified/issues/new).
## License
[MIT](https://opensource.org/licenses/MIT)
It is discouraged to use this plugin in any project that promotes racism, sexism, homophobia, animal abuse, violence or any other form of hate speech.