1 <?php
 2 
 3 /**
 4  * Cronjob Addon.
 5  *
 6  * @author gharlan[at]web[dot]de Gregor Harlan
 7  *
 8  * @package redaxo\cronjob
 9  */
10 
11 abstract class rex_cronjob
12 {
13     private $params = [];
14     private $message = '';
15 
16     final public static function factory($class)
17     {
18         if (!rex_autoload::autoload($class)) {
19             return $class;
20         }
21 
22         return new $class();
23     }
24 
25     public function setParam($key, $value)
26     {
27         $this->params[$key] = $value;
28     }
29 
30     public function setParams(array $params)
31     {
32         $this->params = $params;
33     }
34 
35     public function getParam($key, $default = null)
36     {
37         if (isset($this->params[$key])) {
38             return $this->params[$key];
39         }
40 
41         return $default;
42     }
43 
44     public function getParams()
45     {
46         return $this->params;
47     }
48 
49     public function __set($key, $value)
50     {
51         $this->setParam($key, $value);
52     }
53 
54     public function __get($key)
55     {
56         return $this->getParam($key);
57     }
58 
59     public function setMessage($message)
60     {
61         $this->message = $message;
62     }
63 
64     public function getMessage()
65     {
66         return $this->message;
67     }
68 
69     public function hasMessage()
70     {
71         return !empty($this->message);
72     }
73 
74     abstract public function execute();
75 
76     public function getTypeName()
77     {
78         // returns the name of the cronjob type
79         return $this->getType();
80     }
81 
82     final public function getType()
83     {
84         return get_class($this);
85     }
86 
87     public function getEnvironments()
88     {
89         // returns an array of environments in which the cronjob is available
90         return ['frontend', 'backend', 'script'];
91     }
92 
93     public function getParamFields()
94     {
95         // returns an array of parameters which are required for the cronjob
96         return [];
97     }
98 }
99