CronTaskStatus   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 4
c 0
b 0
f 0
lcom 1
cbo 3
dl 0
loc 60
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A get_status() 0 6 1
A update_status() 0 20 3
1
<?php
2
3
namespace SilverStripe\CronTask;
4
5
use SilverStripe\ORM\DataObject;
6
use SilverStripe\ORM\FieldType\DBDatetime;
7
8
/**
9
 * Record status of each cron task execution
10
 *
11
 * @property string $LastChecked Date this task was last checked
12
 * @property string $LastRun Date this task was last run
13
 * @property string $TaskClass Class of this task
14
 *
15
 * @package crontask
16
 */
17
class CronTaskStatus extends DataObject
18
{
19
    /**
20
     * {@inheritDoc}
21
     */
22
    private static $table_name = 'CronTaskStatus';
0 ignored issues
show
Comprehensibility introduced by
Consider using a different property name as you override a private property of the parent class.
Loading history...
23
24
    /**
25
     * {@inheritDoc}
26
     * @var array
27
     */
28
    private static $db = array(
0 ignored issues
show
Comprehensibility introduced by
Consider using a different property name as you override a private property of the parent class.
Loading history...
29
        'TaskClass' => 'Varchar(255)',
30
        'LastChecked' => 'DBDatetime',
31
        'LastRun' => 'DBDatetime',
32
    );
33
34
    /**
35
     * Get the status
36
     *
37
     * @param string $class Name of class which implements CronTask
38
     *
39
     * @return CronTaskStatus
0 ignored issues
show
Documentation introduced by
Should the return type not be CronTaskStatus|null?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
40
     */
41
    public static function get_status($class)
42
    {
43
        return static::get()
44
            ->filter('TaskClass', $class)
45
            ->first();
46
    }
47
48
    /**
49
     * Update the status for a given class
50
     *
51
     * @param string $class Name of class which implements CronTask
52
     * @param bool $wasRun Flag indicating that the task was run this request
53
     *
54
     * @return CronTaskStatus Status data object
55
     */
56
    public static function update_status($class, $wasRun)
57
    {
58
        // Get existing object
59
        $object = static::get()
60
            ->filter('TaskClass', $class)
61
            ->first();
62
        // Create new object if not found
63
        if (!$object) {
64
            $object = static::create();
65
            $object->TaskClass = $class;
66
        }
67
        // Update fields
68
        $now = DBDatetime::now()->getValue();
69
        if ($wasRun) {
70
            $object->LastRun = $now;
71
        }
72
        $object->LastChecked = $now;
73
        $object->write();
74
        return $object;
75
    }
76
}
77