ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
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 $DIC;
24 
25  $lng = $DIC['lng'];
26 
27  return $lng->txt("check_web_resources");
28  }
29 
30  public function getDescription()
31  {
32  global $DIC;
33 
34  $lng = $DIC['lng'];
35 
36  return $lng->txt("check_web_resources_desc");
37  }
38 
39  public function getDefaultScheduleType()
40  {
41  return self::SCHEDULE_TYPE_DAILY;
42  }
43 
44  public function getDefaultScheduleValue()
45  {
46  return;
47  }
48 
49  public function hasAutoActivation()
50  {
51  return false;
52  }
53 
54  public function hasFlexibleSchedule()
55  {
56  return true;
57  }
58 
59  public function run()
60  {
61  global $DIC;
62 
63  $ilLog = $DIC->logger()->webr();
64  $ilUser = $DIC['ilUser'];
65  $ilDB = $DIC['ilDB'];
66 
68 
69  include_once'./Services/LinkChecker/classes/class.ilLinkChecker.php';
70 
71  $counter = 0;
72  foreach (ilUtil::_getObjectsByOperations('webr', 'write', $ilUser->getId(), -1) as $node) {
73  if (!is_object($tmp_webr = ilObjectFactory::getInstanceByRefId($node, false))) {
74  continue;
75  }
76 
77  $tmp_webr->initLinkResourceItemsObject();
78 
79  // Set all link to valid. After check invalid links will be set to invalid
80 
81  $link_checker = new ilLinkChecker($ilDB);
82  $link_checker->setMailStatus(true);
83  $link_checker->setCheckPeriod($this->__getCheckPeriod());
84  $link_checker->setObjId($tmp_webr->getId());
85 
86 
87  $tmp_webr->items_obj->updateValidByCheck($this->__getCheckPeriod());
88  foreach ($link_checker->checkWebResourceLinks() as $invalid) {
89  $tmp_webr->items_obj->readItem($invalid['page_id']);
90  $tmp_webr->items_obj->setActiveStatus(false);
91  $tmp_webr->items_obj->setValidStatus(false);
92  $tmp_webr->items_obj->setDisableCheckStatus(true);
93  $tmp_webr->items_obj->setLastCheckDate(time());
94  $tmp_webr->items_obj->update(false);
95  }
96 
97  $tmp_webr->items_obj->updateLastCheck($this->__getCheckPeriod());
98 
99  foreach ($link_checker->getLogMessages() as $message) {
100  $ilLog->debug($message);
101  $counter++;
102  }
103  }
104 
105  if ($counter) {
106  $status = ilCronJobResult::STATUS_OK;
107  }
108  $result = new ilCronJobResult();
109  $result->setStatus($status);
110  return $result;
111  }
112 
113  public function __getCheckPeriod()
114  {
115  switch ($this->getScheduleType()) {
116  case self::SCHEDULE_TYPE_DAILY:
117  $period = 24 * 60 * 60;
118  break;
119 
120  case self::SCHEDULE_TYPE_WEEKLY:
121  $period = 7 * 24 * 60 * 60;
122  break;
123 
124  case self::SCHEDULE_TYPE_MONTHLY:
125  $period = 30 * 7 * 24 * 60 * 60;
126  break;
127 
128  case self::SCHEDULE_TYPE_QUARTERLY:
129  $period = 3 * 30 * 7 * 24 * 60 * 60;
130  break;
131 
132  default:
133  $period = 0;
134  }
135  return $period;
136  }
137 
138  public function activationWasToggled($a_currently_active)
139  {
140  global $DIC;
141 
142  $ilSetting = $DIC['ilSetting'];
143 
144  // propagate cron-job setting to object setting
145  $ilSetting->set("cron_web_resource_check", (bool) $a_currently_active);
146  }
147 }
$result
global $DIC
Definition: saml.php:7
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...
catch(Exception $e) $message
$lng
$ilUser
Definition: imgupload.php:18
global $ilSetting
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
Cron job result data container.
getScheduleType()
Get current schedule type (if flexible)