ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilCronCheck.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2001 ILIAS open source, University of Cologne |
7 | |
8 | This program is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License |
10 | as published by the Free Software Foundation; either version 2 |
11 | of the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program; if not, write to the Free Software |
20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21 +-----------------------------------------------------------------------------+
22*/
23
24
35{
36 private $possible_tasks = array();
37 private $default_tasks = array();
38
39 public function __construct()
40 {
41 global $ilLog;
42
43 $this->log = $ilLog;
44
45 $this->initTasks();
46 }
47
48 public function start()
49 {
50 /* MOVED TO: ilCronManager::runActiveJobs();
51 global $ilSetting;
52
53 $ilSetting->set('last_cronjob_start_ts', time());
54 */
55
56 if ($_SERVER['argc'] > 4) {
57 for ($i = 4; $i < $_SERVER['argc']; $i++) {
58 $arg = $_SERVER['argv'][$i];
59
60 if (!isset($this->possible_tasks[$arg])) {
61 throw new ilException('cron-task "' . $arg . '" is not defined');
62 }
63
64 $task = $this->possible_tasks[$arg];
65
66 $this->runTask($task);
67 }
68 } else {
69 foreach ($this->default_tasks as $task) {
70 $task = $this->possible_tasks[$task];
71
72 $this->runTask($task);
73 }
74 }
75 }
76
77 private function runTask($task)
78 {
79 global $ilLog;
80
85 $classlocation = $task['location'] . '/classes';
86 if (isset($task['sub_location']) && strlen($task['sub_location'])) {
87 $classlocation .= '/' . $task['sub_location'];
88 }
89 $classfile .= $classlocation . '/class.' . $task['classname'] . '.php';
90
91 $classname = $task['classname'];
92 $method = $task['method'];
93
94 $condition = $task['condition'];
95
100 if (!file_exists($classfile)) {
101 throw new ilException('class file "' . $classfile . '" does not exist');
102 }
103
104 require_once($classfile);
105
106 if (!class_exists($classname)) {
107 throw new ilException('class "' . $classname . '" does not exist');
108 }
109
110 if (!method_exists($classname, $method)) {
111 throw new ilException('method "' . $classname . '::' . $method . '()" does not exist');
112 }
113
119 if ($condition) {
120 $ilLog->write("CRON - starting task: " . $classname . "::" . $method);
121
122 $task = new $classname;
123 $task->$method();
124
125 $ilLog->write("CRON - finished task: " . $classname . "::" . $method);
126 } else {
127 $ilLog->write("CRON - task condition failed: " . $classname . "::" . $method);
128 }
129 }
130
131 private function initTasks()
132 {
133 global $ilSetting;
134
135 $this->default_tasks = array(
136 'ilCronValidator::check'
137 );
138
139 $this->possible_tasks = array(
140
141 // Start System Check
142 'ilCronValidator::check' => array(
143 'classname' => 'ilCronValidator',
144 'method' => 'check',
145 'location' => 'cron',
146 'condition' => ($ilSetting->get('systemcheck_cron') == 1)
147 )
148 );
149 }
150}
An exception for terminatinating execution or to throw for unit testing.
Base class for ILIAS Exception handling.
$i
Definition: disco.tpl.php:19
global $ilSetting
Definition: privfeed.php:17
if((!isset($_SERVER['DOCUMENT_ROOT'])) OR(empty($_SERVER['DOCUMENT_ROOT']))) $_SERVER['DOCUMENT_ROOT']