aboutsummaryrefslogtreecommitdiff
path: root/lib/cronjobs/cleanup_log.class.php
blob: 378a6ecedab8fa6ff01a02c1f8a643063343791b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
/**
 * cleanup_log.php - Clean up event and cronjob logs
 *
 * @author Tobias Thelen <tobias.thelen@uni-osnabrueck.de>
 * @author Jan-Hendrik Willms <tleilax+studip@gmail.com>
 * @access public
 * @since  2.4
 */

// +---------------------------------------------------------------------------+
// This file is part of Stud.IP
// cleanup_log.class.php
//
// Copyright (C) 2013 Jan-Hendrik Willms <tleilax+studip@gmail.com>
// +---------------------------------------------------------------------------+
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or any later version.
// +---------------------------------------------------------------------------+
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
// +---------------------------------------------------------------------------+

require_once 'lib/classes/CronJob.class.php';

class CleanupLogJob extends CronJob
{
    /**
     * Returns the name of the cronjob.
     */
    public static function getName()
    {
        return _('Logs aufräumen');
    }

    /**
     * Returns the description of the cronjob.
     */
    public static function getDescription()
    {
        return _('Entfernt abgelaufene Log-Einträge sowohl für das '
                .'Eventsystem als auch für die Cronjobs');
    }

    /**
     * Return the paremeters for this cronjob.
     *
     * @return Array Parameters.
     */
    public static function getParameters()
    {
        return [
            'cronjobs' => [
                'type'        => 'boolean',
                'default'     => true,
                'status'      => 'optional',
                'description' => _('Sollen die Logeinträge für Cronjobs auch gelöscht werden'),
            ],
            'cronjobs-success' => [
                'type'        => 'integer',
                'default'     => 7,
                'status'      => 'optional',
                'description' => _('Nach wievielen Tagen sollen Logeinträge für '
                                  .'erfolgreiche Cronjobs gelöscht werden (0 für nie)'),
            ],
            'cronjobs-error' => [
                'type'        => 'integer',
                'default'     => 28,
                'status'      => 'optional',
                'description' => _('Nach wievielen Tagen sollen Logeinträge für '
                                  .'fehlgeschlagene Cronjobs gelöscht werden (0 für nie)'),
            ],
        ];
    }

    /**
     * Executes the cronjob.
     *
     * @param mixed $last_result What the last execution of this cronjob
     *                           returned.
     * @param Array $parameters Parameters for this cronjob instance which
     *                          were defined during scheduling.
     */
    public function execute($last_result, $parameters = [])
    {
        $event_log = new EventLog();
        $event_log->cleanup_log_events();

        if (!empty($parameters['cronjobs'])) {
            $delete = function($l) {$l->delete();};
            if ($parameters['cronjobs-error'] > 0) {
                CronjobLog::findEachBySql(
                    $delete,
                    "exception IS NOT NULL AND executed + ? < UNIX_TIMESTAMP()",
                    [$parameters['cronjobs-error'] * 24 * 60 * 60]
                );
            }
            if ($parameters['cronjobs-success'] > 0) {
                CronjobLog::findEachBySql(
                    $delete,
                    "exception IS NULL AND executed + ? < UNIX_TIMESTAMP()",
                    [$parameters['cronjobs-success'] * 24 * 60 * 60]
                );
            }
        }
    }
}