ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilWebResourceCronLinkCheck.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once "Services/Cron/classes/class.ilCronJob.php";
5 
15 {
16  public function getId()
17  {
18  return "webr_link_check";
19  }
20 
21  public function getTitle()
22  {
23  global $lng;
24 
25  return $lng->txt("check_web_resources");
26  }
27 
28  public function getDescription()
29  {
30  global $lng;
31 
32  return $lng->txt("check_web_resources_desc");
33  }
34 
35  public function getDefaultScheduleType()
36  {
37  return self::SCHEDULE_TYPE_DAILY;
38  }
39 
40  public function getDefaultScheduleValue()
41  {
42  return;
43  }
44 
45  public function hasAutoActivation()
46  {
47  return false;
48  }
49 
50  public function hasFlexibleSchedule()
51  {
52  return true;
53  }
54 
55  public function run()
56  {
57  global $ilLog, $ilUser, $ilDB;
58 
60 
61  include_once'./Services/LinkChecker/classes/class.ilLinkChecker.php';
62 
63  $counter = 0;
64  foreach (ilUtil::_getObjectsByOperations('webr', 'write', $ilUser->getId(), -1) as $node) {
65  if (!is_object($tmp_webr = ilObjectFactory::getInstanceByRefId($node, false))) {
66  continue;
67  }
68 
69  $tmp_webr->initLinkResourceItemsObject();
70 
71  // Set all link to valid. After check invalid links will be set to invalid
72 
73  $link_checker = new ilLinkChecker($ilDB);
74  $link_checker->setMailStatus(true);
75  $link_checker->setCheckPeriod($this->__getCheckPeriod());
76  $link_checker->setObjId($tmp_webr->getId());
77 
78 
79  $tmp_webr->items_obj->updateValidByCheck($this->__getCheckPeriod());
80  foreach ($link_checker->checkWebResourceLinks() as $invalid) {
81  $tmp_webr->items_obj->readItem($invalid['page_id']);
82  $tmp_webr->items_obj->setActiveStatus(false);
83  $tmp_webr->items_obj->setValidStatus(false);
84  $tmp_webr->items_obj->setDisableCheckStatus(true);
85  $tmp_webr->items_obj->setLastCheckDate(time());
86  $tmp_webr->items_obj->update(false);
87  }
88 
89  $tmp_webr->items_obj->updateLastCheck($this->__getCheckPeriod());
90 
91  foreach ($link_checker->getLogMessages() as $message) {
92  $ilLog->write($message);
93  $counter++;
94  }
95  }
96 
97  if ($counter) {
99  }
100  $result = new ilCronJobResult();
101  $result->setStatus($status);
102  return $result;
103  }
104 
105  public function __getCheckPeriod()
106  {
107  switch ($this->getScheduleType()) {
108  case self::SCHEDULE_TYPE_DAILY:
109  $period = 24 * 60 * 60;
110  break;
111 
112  case self::SCHEDULE_TYPE_WEEKLY:
113  $period = 7 * 24 * 60 * 60;
114  break;
115 
116  case self::SCHEDULE_TYPE_MONTHLY:
117  $period = 30 * 7 * 24 * 60 * 60;
118  break;
119 
120  case self::SCHEDULE_TYPE_QUARTERLY:
121  $period = 3 * 30 * 7 * 24 * 60 * 60;
122  break;
123 
124  default:
125  $period = 0;
126  }
127  return $period;
128  }
129 
130  public function activationWasToggled($a_currently_active)
131  {
132  global $ilSetting;
133 
134  // propagate cron-job setting to object setting
135  $ilSetting->set("cron_web_resource_check", (bool) $a_currently_active);
136  }
137 }
$result
Cron job application base class.
static _getObjectsByOperations($a_obj_type, $a_operation, $a_usr_id=0, $limit=0)
Get all objects of a specific type and check access This function is not recursive, instead it parses the serialized rbac_pa entries.
class for checking external links in page objects Normally used in Cron jobs, but should be extensibl...
$counter
catch(Exception $e) $message
$ilUser
Definition: imgupload.php:18
global $ilSetting
Definition: privfeed.php:17
global $lng
Definition: privfeed.php:17
global $ilDB
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
Cron job result data container.
getScheduleType()
Get current schedule type (if flexible)