Skip to content
Snippets Groups Projects
Commit e854d978 authored by Elmar Ludwig's avatar Elmar Ludwig
Browse files

move object_user_visits cleanup into garbage_collector, fixes #3113

Closes #3113

Merge request studip/studip!2278
parent 66490f66
No related branches found
No related tags found
No related merge requests found
<?php
class Tic3113RemoveCronjob extends Migration
{
public function description()
{
return 'Removes the cleanup cronjob for the table "object_user_visits"';
}
public function up()
{
$query = 'DELETE `cronjobs_tasks`, `cronjobs_schedules`, `cronjobs_logs`
FROM `cronjobs_tasks`
LEFT JOIN `cronjobs_schedules` USING (`task_id`)
LEFT JOIN `cronjobs_logs` USING (`schedule_id`)
WHERE `filename` = :filename';
DBManager::get()->execute($query, [
':filename' => 'lib/cronjobs/clean_object_user_visits.php'
]);
}
public function down()
{
$query = 'INSERT INTO `cronjobs_tasks` (`task_id`, `filename`, `class`)
VALUES (:task_id, :filename, :class)';
DBManager::get()->execute($query, [
':task_id' => '7cb4134a91bd985263fd570c7560ad72',
':filename' => 'lib/cronjobs/clean_object_user_visits.php',
':class' => 'CleanObjectUserVisits',
]);
}
}
<?php
/**
* clean_object_user_visits.php.
*
* Core cronjob that removes old entries from the table "object_user_visits".
*
* @author Jan-Hendrik Willms <tleilax+studip@gmail.com>
* @license GPL2 or any later version
* @since 3.3
*/
class CleanObjectUserVisits extends CronJob
{
/**
* Return the name of this cronjob.
*
* @return String containing the name
*/
public static function getName()
{
return _('Entfernt alte Einträge aus der Tabelle "object_user_visits"');
}
/**
* Returns the description for this cronjob.
*
* @return String containing the description
*/
public static function getDescription()
{
return _('Um die Tabelle "object_user_visits" schmal zu halten, werden alte Einträge nach einem definierten Zeitraum entfernt.');
}
/**
* Returns the defined configuration parameters for this cronjob.
*
* @return Array with defined parameters
*/
public static function getParameters()
{
return [];
}
/**
* Executes the cronjob.
*
* @param mixed $last_result Result returned from the last execution
* @param Array $parameters Defined parameters
*/
public function execute($last_result, $parameters = [])
{
if (Config::get()->NEW_INDICATOR_THRESHOLD) {
$query = "DELETE FROM `object_user_visits`
WHERE GREATEST(`visitdate`, `last_visitdate`) < UNIX_TIMESTAMP(NOW() - INTERVAL :expires DAY)";
$statement = DBManager::get()->prepare($query);
$statement->bindValue(':expires', (int) Config::get()->NEW_INDICATOR_THRESHOLD, PDO::PARAM_INT);
$statement->execute();
}
}
}
......@@ -148,6 +148,15 @@ class GarbageCollectorJob extends CronJob
Studip\Activity\Activity::doGarbageCollect();
// remove old entries from the table "object_user_visits".
if (Config::get()->NEW_INDICATOR_THRESHOLD) {
$query = "DELETE FROM `object_user_visits`
WHERE GREATEST(`visitdate`, `last_visitdate`) < UNIX_TIMESTAMP(NOW() - INTERVAL :expires DAY)";
$statement = DBManager::get()->prepare($query);
$statement->bindValue(':expires', (int) Config::get()->NEW_INDICATOR_THRESHOLD, PDO::PARAM_INT);
$statement->execute();
}
// clean db cache
$cache = new StudipDbCache();
$cache->purge();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment