Skip to content

Commit b75bca0

Browse files
authored
fixes #688 (#754) (#755)
* work around broken ui for branched plugins and older verions of Stud.IP (<5.1) * take care of scheduling with alternate schedules and changed dates * remove obsolete code * Revert "work around broken ui for branched plugins and older verions of Stud.IP (<5.1)" This reverts commit 7b3b277. * add migration
1 parent 10a89fd commit b75bca0

File tree

5 files changed

+49
-16
lines changed

5 files changed

+49
-16
lines changed

classes/OCRestClient/SchedulerClient.php

+10-11
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,7 @@ public function scheduleEventForSeminar($course_id, $resource_id, $termin_id)
3737
$media_package = $ingest_client->addDCCatalog($media_package, $metadata['dublincore']);
3838
$tmp_event_id = $this->gen_uuid();
3939

40-
try {
41-
OCModel::scheduleRecording($course_id, $resource_id, $termin_id, $tmp_event_id);
42-
} catch (PDOException $error) {
43-
// assume that scheduling is already under way - so just return false
44-
return false;
45-
}
40+
OCModel::scheduleRecording($course_id, $resource_id, $termin_id, $tmp_event_id);
4641

4742
$result = $ingest_client->schedule($media_package, $metadata['device_capabilities'], $metadata['workflow']);
4843

@@ -137,13 +132,17 @@ public function updateEventForSeminar($course_id, $resource_id, $termin_id, $eve
137132
$event = OCScheduledRecordings::find($event_id);
138133
$date = CourseDate::find($termin_id);
139134

140-
if ($date->date != $event->start) {
135+
// check if the course_dates are still the same, otherwise update them
136+
if ($date->date != $event->coursedate_start
137+
|| $date->end_time != $event->coursedate_end
138+
) {
139+
$event->coursedate_start = $date->date;
140+
$event->coursedate_end = $date->end_time;
141+
142+
// also reset any custom made changes to the recording length, to prevent any unwanted effects for alternate schedules (if even activated)
141143
$event->start = $date->date;
142-
$event->store();
143-
}
144+
$event->end = $date->date;
144145

145-
if ($date->end_time != $event->end) {
146-
$event->end = $date->end_time;
147146
$event->store();
148147
}
149148

controllers/course.php

-2
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,6 @@ public function config_action()
327327

328328
Navigation::activateItem('course/opencast');
329329
$navigation = Navigation::getItem('/course/opencast');
330-
$navigation->setImage(new Icon('../../' . $this->dispatcher->trails_root . '/images/opencast-black.svg'));
331330

332331
$this->set_title($this->_('Opencast Konfiguration'));
333332
$this->response->add_header('X-Title', rawurlencode($this->_('Serie mit Veranstaltung verknüpfen')));
@@ -394,7 +393,6 @@ public function scheduler_action()
394393

395394
Navigation::activateItem('course/opencast/scheduler');
396395
$navigation = Navigation::getItem('/course/opencast');
397-
$navigation->setImage(new Icon('../../' . $this->dispatcher->trails_root . '/images/opencast-black.svg'));
398396

399397
$this->set_title($this->_('Opencast Aufzeichnungen planen'));
400398

cronjobs/refresh_scheduled_events.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,10 @@ public function execute($last_result, $parameters = [])
8787
unset($opencast_events[$se['event_id']]);
8888
unset($curated_events[$se['event_id']]);
8989

90-
if ($cd->room_booking->resource_id == $se['resource_id']) {
90+
if ($cd->room_booking->resource_id == $se['resource_id']
91+
|| $cd->room_booking->date != $se['coursedate_start']
92+
|| $cd->room_booking->end_time != $se['coursedate_end'])
93+
{
9194
$scheduler_client = SchedulerClient::create($se['seminar_id']);
9295
$scheduler_client->updateEventForSeminar($se['seminar_id'], $se['resource_id'], $se['date_id'], $se['event_id']);
9396

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
class AddCourseDateFieldsForEvents extends Migration
3+
{
4+
public function up()
5+
{
6+
$db = DBManager::get();
7+
8+
// only execute this migration if columns are missing
9+
$results = $db->query("SHOW COLUMNS FROM `oc_scheduled_recordings` LIKE 'coursedate_start'");
10+
if (empty($results->fetchAll())) {
11+
$db->exec('ALTER TABLE oc_scheduled_recordings
12+
ADD `coursedate_end` int(11) AFTER `end`,
13+
ADD `coursedate_start` int(11) AFTER `end`
14+
');
15+
16+
// update all entries to fill new coursedate-fields
17+
$db->exec('UPDATE oc_scheduled_recordings
18+
SET coursedate_start = start, coursedate_end = end
19+
WHERE 1
20+
');
21+
}
22+
}
23+
24+
public function down()
25+
{
26+
$db->exec('ALTER TABLE oc_scheduled_recordings
27+
DROP `coursedate_end` ,
28+
DROP `coursedate_start`
29+
');
30+
}
31+
}

models/OCModel.php

+4-2
Original file line numberDiff line numberDiff line change
@@ -170,9 +170,9 @@ public static function scheduleRecording($course_id, $resource_id, $date_id, $ev
170170

171171
$stmt = DBManager::get()->prepare("INSERT INTO
172172
oc_scheduled_recordings (seminar_id, series_id, date_id,
173-
resource_id, start, end, capture_agent, event_id, status,
173+
resource_id, `start`, `end`, coursedate_start, coursedate_end, capture_agent, event_id, `status`,
174174
mktime)
175-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
175+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
176176

177177
$success = $stmt->execute([
178178
$course_id,
@@ -181,6 +181,8 @@ public static function scheduleRecording($course_id, $resource_id, $date_id, $ev
181181
$resource_id,
182182
$date->date,
183183
$date->end_time,
184+
$date->date,
185+
$date->end_time,
184186
$ca['capture_agent'],
185187
$event_id,
186188
'scheduled',

0 commit comments

Comments
 (0)