hananils / kirby-tracker

Track content changes in Kirby 3
MIT License
11 stars 1 forks source link
kirby3-plugin

Kirby Tracker

Tracker is a plugin for Kirby 3 to track content changes and create panel logs or front-end notifications in member areas.

On privacy

Before using this plugin, please think about the privacy implications. You will be processing personal data of your users: their name, the date of their change and meta information about their change. This requires you to follow the privacy laws in your jurisdiction. Please consult a lawyer in case of doubt.

This plugin was initially conceived to create a dashboard for a private members area where all users consented to share their changes with the other users.

Example

<?php
$notifications = new Hananils\TracksCollection('notifications');
$notifications
  ->filterBy('datetime', '>=', $start->format('Y-m-d'))
  ->sortBy('datetime', 'asc')
  ->limit(10);
?>

<h1>Recent changes</h1>
<ol>
<?php foreach ($notification as $notification): ?>
    <li>
        <?= $notification
          ->track()
          ->toReference()
          ->title() ?>
    </li>
<?php endforeach; ?>
</ol>

Installation

Download

Download and copy this repository to /site/plugins/tracker.

Git submodule

git submodule add https://github.com/hananils/kirby-tracker.git site/plugins/tracker

Composer

composer require hananils/kirby-tracker

Tracked data

Tracker will create a SQLite datebase in site/logs/tracker.sqlite. It will create two tables:

tracks

Tracker will create a log of all change in this database:

notifications

Tracker will also create a list of all related pages, users and files that are affected by a change:

Usage

$site->tracks($limit)

Returns a TracksCollection of all changes of all users.

$limit: limit, defaults to 20 entries.

$site->notifications($limit)

Returns a TracksCollection of all notifications.

$limit: limit, defaults to 20 entries.

$page->tracks($limit)

Returns a TracksCollection of all changes on the given page.

$limit: limit, defaults to 20 entries.

$page->notifications($limit)

Returns a TracksCollection of all notifications for the given page.

$limit: limit, defaults to 20 entries.

$user->tracks($limit)

Returns a TracksCollection of all changes for the given user.

$limit: limit, defaults to 20 entries.

$user->notifications($limit)

Returns a TracksCollection of all notifications for the given user.

$limit: limit, defaults to 20 entries.

TracksCollection

The plugin provides a TracksCollection you can use to query, filter and output tracking information:

$tracks = new Hananils\TracksCollection();
$notifications = new Hananils\TracksCollection('notifications');

filterBy($column, $method, $value)

Applies a filter to the output.

$column: the table column. $method: filter method. $value: filter value.

limit($limit)

Limits the number of returned tracks.

$limit: limit, defaults to 20 entries.

offset($offset)

Applies and offset to the result.

$offset: entry offset.

sortBy()

Sorts the results.

validate()

Makes sure that only tracks for existing pages, users and files are returned, excluding those deleted in the meantime.

toArray()

Returns the result as an array

Track

Each item of the TrackCollection is a Track object:

isValid()

Returns true is the referenced Kirby object exists, otherwise false.

toUser()

Returns the Kirby user object.

toReference()

Returns the Kirby object of the given reference, either the changed page, user or file.

toDate($format)

Returns either the DateTime representation of the track or – if a format was provided – the formatted date.

$format: a PHP-readable date format.

toTrack()

Returns the related track for a notification.

toStatus()

Returns the status of a notified reference, either added, unchanged or removed.

value()

Returns the value of the track.

toArray()

Returns an array representation of the track.

To Do

License

This plugin is provided freely under the MIT license by hana+nils · Büro für Gestaltung. We create visual designs for digital and analog media.