ILIAS  release_7 Revision v7.30-3-g800a261c036
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
4include_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 {
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) {
107 }
108 $result = new ilCronJobResult();
109 $result->setStatus($status);
110 return $result;
111 }
112
113 public function __getCheckPeriod()
114 {
115 switch ($this->getScheduleType()) {
117 $period = 24 * 60 * 60;
118 break;
119
121 $period = 7 * 24 * 60 * 60;
122 break;
123
125 $period = 30 * 7 * 24 * 60 * 60;
126 break;
127
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
An exception for terminatinating execution or to throw for unit testing.
Cron job result data container.
Cron job application base class.
getScheduleType()
Get current schedule type (if flexible)
const SCHEDULE_TYPE_WEEKLY
const SCHEDULE_TYPE_DAILY
const SCHEDULE_TYPE_QUARTERLY
const SCHEDULE_TYPE_MONTHLY
class for checking external links in page objects Normally used in Cron jobs, but should be extensibl...
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
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,...
hasFlexibleSchedule()
Can the schedule be configured?
hasAutoActivation()
Is to be activated on "installation".
activationWasToggled($a_currently_active)
Cron job status was changed.
global $DIC
Definition: goto.php:24
$ilUser
Definition: imgupload.php:18
global $ilSetting
Definition: privfeed.php:17
$lng
global $ilDB
$message
Definition: xapiexit.php:14