silverstripe-multiform/code/tasks/MultiFormPurgeTask.php

56 lines
1.3 KiB
PHP
Raw Normal View History

<?php
2008-04-18 00:03:51 +02:00
/**
* Task to clean out all {@link MultiFormSession} objects from the database.
2015-11-02 01:38:50 +01:00
*
2008-04-18 00:03:51 +02:00
* Setup Instructions:
* You need to create an automated task for your system (cronjobs on unix)
* which triggers the process() method through cli-script.php:
* `php framework/cli-script.php MultiFormPurgeTask`
* or
* `framework/sake MultiFormPurgeTask`
2015-11-02 01:38:50 +01:00
*
2008-04-18 00:03:51 +02:00
* @package multiform
*/
2014-10-23 16:44:12 +02:00
class MultiFormPurgeTask extends BuildTask {
2015-11-02 01:38:50 +01:00
2008-04-18 00:03:51 +02:00
/**
* Days after which sessions expire and
* are automatically deleted.
2015-11-02 01:38:50 +01:00
*
2008-04-18 00:03:51 +02:00
* @var int
*/
public static $session_expiry_days = 7;
/**
* Run this cron task.
2015-11-02 01:38:50 +01:00
*
* Go through all MultiFormSession records that
* are older than the days specified in $session_expiry_days
* and delete them.
*/
2014-10-23 16:44:12 +02:00
public function run($request) {
$sessions = $this->getExpiredSessions();
$delCount = 0;
if($sessions) foreach($sessions as $session) {
$session->delete();
$delCount++;
2008-04-18 00:03:51 +02:00
}
echo $delCount . ' session records deleted that were older than ' . self::$session_expiry_days . ' days.';
2008-04-18 00:03:51 +02:00
}
/**
* Return all MultiFormSession database records that are older than
* the days specified in $session_expiry_days
*
* @return DataObjectSet
*/
2008-04-18 00:03:51 +02:00
protected function getExpiredSessions() {
return DataObject::get(
'MultiFormSession',
"DATEDIFF(NOW(), \"MultiFormSession\".\"Created\") > " . self::$session_expiry_days
);
2008-04-18 00:03:51 +02:00
}
2015-11-02 01:38:50 +01:00
}