ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilConsultationHourCron.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 
12 {
13  public function getId()
14  {
15  return "cal_consultation";
16  }
17 
18  public function getTitle()
19  {
20  global $DIC;
21 
22  $lng = $DIC['lng'];
23 
24  $lng->loadLanguageModule('dateplaner');
25  return $lng->txt("cal_ch_cron_reminder");
26  }
27 
28  public function getDescription()
29  {
30  global $DIC;
31 
32  $lng = $DIC['lng'];
33 
34  $lng->loadLanguageModule('dateplaner');
35  return $lng->txt("cal_ch_cron_reminder_info");
36  }
37 
38  public function getDefaultScheduleType()
39  {
40  return self::SCHEDULE_TYPE_DAILY;
41  }
42 
43  public function getDefaultScheduleValue()
44  {
45  return;
46  }
47 
48  public function hasAutoActivation()
49  {
50  return false;
51  }
52 
53  public function hasFlexibleSchedule()
54  {
55  return false;
56  }
57 
58  public function hasCustomSettings()
59  {
60  return true;
61  }
62 
63  public function run()
64  {
65  global $DIC;
66 
67  $ilSetting = $DIC['ilSetting'];
68  $ilDB = $DIC['ilDB'];
69 
71 
72  $days_before = $ilSetting->get('ch_reminder_days');
73  $now = new ilDateTime(time(), IL_CAL_UNIX);
74 
75  $limit = clone $now;
76  $limit->increment(IL_CAL_DAY, $days_before);
77 
78  $counter = 0;
79 
80  $query = 'SELECT * FROM booking_user ' .
81  'JOIN cal_entries ON entry_id = cal_id ' .
82  'WHERE notification_sent = ' . $ilDB->quote(0, 'integer') . ' ' .
83  'AND starta > ' . $ilDB->quote($now->get(IL_CAL_DATETIME, '', ilTimeZone::UTC), 'timestamp') . ' ' .
84  'AND starta <= ' . $ilDB->quote($limit->get(IL_CAL_DATETIME, '', ilTimeZone::UTC), 'timestamp');
85  $res = $ilDB->query($query);
86  while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
87  include_once 'Services/Calendar/classes/class.ilCalendarMailNotification.php';
88  $mail = new ilCalendarMailNotification();
89  $mail->setAppointmentId($row->entry_id);
90  $mail->setRecipients(array($row->user_id));
92  $mail->send();
93 
94  // update notification
95  $query = 'UPDATE booking_user ' .
96  'SET notification_sent = ' . $ilDB->quote(1, 'integer') . ' ' .
97  'WHERE user_id = ' . $ilDB->quote($row->user_id, 'integer') . ' ' .
98  'AND entry_id = ' . $ilDB->quote($row->entry_id, 'integer');
99  $ilDB->manipulate($query);
100 
101  $counter++;
102  }
103 
104  if ($counter) {
105  $status = ilCronJobResult::STATUS_OK;
106  }
107  $result = new ilCronJobResult();
108  $result->setStatus($status);
109  return $result;
110  }
111 
113  {
114  global $DIC;
115 
116  $lng = $DIC['lng'];
117  $ilSetting = $DIC['ilSetting'];
118 
119  $lng->loadLanguageModule('dateplaner');
120 
121  $consultation_days = new ilNumberInputGUI($lng->txt('cal_ch_cron_reminder_days'), 'ch_reminder_days');
122  $consultation_days->setMinValue(1);
123  $consultation_days->setMaxLength(2);
124  $consultation_days->setSize(2);
125  $consultation_days->setValue($ilSetting->get('ch_reminder_days', 2));
126  $consultation_days->setRequired(true);
127  $a_form->addItem($consultation_days);
128  }
129 
130  public function saveCustomSettings(ilPropertyFormGUI $a_form)
131  {
132  global $DIC;
133 
134  $ilSetting = $DIC['ilSetting'];
135 
136  $ilSetting->set('ch_reminder_days', $a_form->getInput('ch_reminder_days'));
137 
138  return true;
139  }
140 }
const IL_CAL_DATETIME
$result
This class represents a property form user interface.
global $DIC
Definition: saml.php:7
Cron job application base class.
Distributes calendar mail notifications.
addItem($a_item)
Add Item (Property, SectionHeader).
const IL_CAL_UNIX
const IL_CAL_DAY
setMinValue($a_minvalue, $a_display_always=false)
Set Minimum Value.
foreach($_POST as $key=> $value) $res
$lng
This class represents a number property in a property form.
Date and time handling
$query
getInput($a_post_var, $ensureValidation=true)
Returns the value of a HTTP-POST variable, identified by the passed id.
addCustomSettingsToForm(ilPropertyFormGUI $a_form)
$row
Reminders for consultation hours.
saveCustomSettings(ilPropertyFormGUI $a_form)
global $ilSetting
Definition: privfeed.php:17
global $ilDB
Cron job result data container.