ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
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 ilCronCheck()
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  {
58  for($i = 4; $i < $_SERVER['argc']; $i++)
59  {
60  $arg = $_SERVER['argv'][$i];
61 
62  if( !isset($this->possible_tasks[$arg]) )
63  throw new ilException('cron-task "'.$arg.'" is not defined');
64 
65  $task = $this->possible_tasks[$arg];
66 
67  $this->runTask($task);
68  }
69  }
70  else foreach($this->default_tasks as $task)
71  {
72  $task = $this->possible_tasks[$task];
73 
74  $this->runTask($task);
75  }
76  }
77 
78  private function runTask($task)
79  {
80  global $ilLog;
81 
86  $classlocation = $task['location'].'/classes';
87  if( isset($task['sub_location']) && strlen($task['sub_location']) )
88  {
89  $classlocation .= '/'.$task['sub_location'];
90  }
91  $classfile .= $classlocation.'/class.'.$task['classname'].'.php';
92 
93  $classname = $task['classname'];
94  $method = $task['method'];
95 
96  $condition = $task['condition'];
97 
102  if( !file_exists($classfile) )
103  throw new ilException('class file "'.$classfile.'" does not exist');
104 
105  require_once($classfile);
106 
107  if( !class_exists($classname) )
108  throw new ilException('class "'.$classname.'" does not exist');
109 
110  if( !method_exists($classname, $method) )
111  throw new ilException('method "'.$classname.'::'.$method.'()" does not exist');
112 
118  if($condition)
119  {
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  }
127  else
128  {
129  $ilLog->write("CRON - task condition failed: ".$classname."::".$method);
130  }
131  }
132 
133  private function initTasks()
134  {
135  global $ilias;
136 
137  require_once('Services/Payment/classes/class.ilUserDefinedInvoiceNumber.php');
138 
139  $this->default_tasks = array(
140  'ilCronValidator::check'
141  );
142 
143  $this->possible_tasks = array(
144 
145  // Start System Check
146  'ilCronValidator::check' => array(
147  'classname' => 'ilCronValidator',
148  'method' => 'check',
149  'location' => 'cron',
150  'condition' => ($ilias->getSetting('systemcheck_cron') == 1)
151  )
152  );
153  }
154 }
155 ?>