Skip to content

Commit 58fb3e0

Browse files
committed
Only add owner video perm to uploader or scheduler of the recording
Currently, all dozent get write perms to an uploaded course video or to a scheduled recording. This patch changes this behaviour based on elan-ev#1216. close elan-ev#1216
1 parent 1199da6 commit 58fb3e0

File tree

5 files changed

+52
-26
lines changed

5 files changed

+52
-26
lines changed

lib/Models/ScheduleHelper.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,8 @@ public static function validateCourseAndResource($course_id, $resource_config_id
435435
*/
436436
private static function scheduleRecording($course_id, $resource_id, $date_id, $event_id, $livestream)
437437
{
438+
global $user;
439+
438440
$series = SeminarSeries::getSeries($course_id);
439441
$serie = $series[0];
440442

@@ -457,6 +459,7 @@ private static function scheduleRecording($course_id, $resource_id, $date_id, $e
457459
$success = ScheduledRecordings::setScheduleRecording(
458460
$course_id,
459461
$serie['series_id'],
462+
$user->id,
460463
$date_id,
461464
$resource_id,
462465
$date->date,

lib/Models/ScheduledRecordings.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ protected static function configure($config = array())
3535
public static function setScheduleRecording(
3636
$seminar_id,
3737
$series_id,
38+
$user_id,
3839
$date_id,
3940
$resource_id,
4041
$start,
@@ -54,6 +55,7 @@ public static function setScheduleRecording(
5455
compact(
5556
'seminar_id',
5657
'series_id',
58+
'user_id',
5759
'date_id',
5860
'resource_id',
5961
'start',

lib/Models/VideosUserPerms.php

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,29 @@ public static function setPermissions($eventType, $episode, $video)
5454
return;
5555
}
5656

57+
// Determine if the event is scheduled recordings
58+
$scheduled_recording = ScheduledRecordings::findOneBySql(
59+
'event_id = ? AND series_id = ? AND user_id IS NOT NULL AND is_livestream = 0',
60+
[$video->episode, $episode->is_part_of]
61+
);
62+
if (!empty($scheduled_recording)) {
63+
// check, if there is already an entry for this user-video combination
64+
$perm = self::findOneBySQL('video_id = :video_id AND user_id = :user_id', [
65+
':video_id' => $video->id,
66+
':user_id' => $scheduled_recording->user_id
67+
]);
68+
69+
if (empty($perm)) {
70+
$perm = new self();
71+
$perm->user_id = $scheduled_recording->user_id;
72+
$perm->video_id = $video->id;
73+
$perm->perm = 'owner';
74+
$perm->store();
75+
}
76+
77+
return;
78+
}
79+
5780
// check if a series is assigned to this event
5881
if ($episode->is_part_of) {
5982
// get the courses this series belongs to
@@ -132,25 +155,4 @@ public static function setPermissions($eventType, $episode, $video)
132155
}
133156

134157
}
135-
136-
public static function assignCourseLecturerPermissions($course_id, $video_id, $perm_type = 'write', $member_course_status = 'dozent')
137-
{
138-
$course = \Course::find($course_id);
139-
$lecturers_obj = $course->getMembersWithStatus($member_course_status);
140-
foreach ($lecturers_obj as $lecturer) {
141-
// check, if there is already an entry for this user-video combination
142-
$perm_record = self::findOneBySQL('video_id = :video_id AND user_id = :user_id', [
143-
':video_id' => $video_id,
144-
':user_id' => $lecturer->user_id
145-
]);
146-
147-
if (empty($perm_record)) {
148-
$perm_record = new self();
149-
$perm_record->user_id = $lecturer->user_id;
150-
$perm_record->video_id = $video_id;
151-
$perm_record->perm = $perm_type;
152-
$perm_record->store();
153-
}
154-
}
155-
}
156158
}

lib/Routes/Video/VideoAdd.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,6 @@ public function __invoke(Request $request, Response $response, $args)
6767
$oc_perm->store();
6868
}
6969

70-
// Assign permissions to teachers of the course, when it is a student upload in a course.
71-
if (!empty($course_id) && $perm->have_studip_perm('user', $course_id, $user->id)) {
72-
VideosUserPerms::assignCourseLecturerPermissions($course_id, $video->id);
73-
}
74-
7570
$ret = $video->toSanitizedArray();
7671

7772
$message = [
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
class AddUserToScheduledRecordings extends Migration
4+
{
5+
public function description()
6+
{
7+
return 'Add user id to oc_scheduled_recordings to identify the user who scheduled the recording';
8+
}
9+
10+
public function up()
11+
{
12+
$db = DBManager::get();
13+
14+
$db->exec('ALTER TABLE `oc_scheduled_recordings`
15+
ADD COLUMN `user_id` varchar(32) CHARACTER SET latin1 COLLATE latin1_bin NULL AFTER `series_id`');
16+
}
17+
18+
public function down()
19+
{
20+
$db = DBManager::get();
21+
22+
$db->exec('ALTER TABLE `oc_scheduled_recordings` DROP COLUMN `user_id`');
23+
}
24+
}

0 commit comments

Comments
 (0)