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
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 $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 {
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()) {
109 $period = 24 * 60 * 60;
110 break;
111
113 $period = 7 * 24 * 60 * 60;
114 break;
115
117 $period = 30 * 7 * 24 * 60 * 60;
118 break;
119
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
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.
$counter
catch(Exception $e) $message
global $lng
Definition: privfeed.php:17
global $ilSetting
Definition: privfeed.php:17
global $ilDB
$ilUser
Definition: imgupload.php:18