Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
namespace mod_bigbluebuttonbn\local\bigbluebutton\recordings;
18
 
19
use mod_bigbluebuttonbn\instance;
20
use mod_bigbluebuttonbn\recording;
21
use mod_bigbluebuttonbn\local\config;
22
 
23
/**
24
 * Collection of helper methods for handling recordings actions in Moodle.
25
 *
26
 * Utility class for meeting actions
27
 *
28
 * @package mod_bigbluebuttonbn
29
 * @copyright 2021 onwards, Blindside Networks Inc
30
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
31
 */
32
class recording_action {
33
    /**
34
     * Import recording
35
     *
36
     * @param recording $recording
37
     * @param instance $targetinstance
38
     */
39
    public static function import(recording $recording, instance $targetinstance): void {
40
        $recording->create_imported_recording($targetinstance);
41
    }
42
 
43
    /**
44
     * Helper for performing delete on recordings.
45
     *
46
     * @param recording $recording
47
     */
48
    public static function delete(recording $recording): void {
49
        // As the recordingid was not identified as imported recording link, execute delete on a real recording.
50
        // Step 1, delete imported links associated to the recording.
51
        $recordingstodelete = recording::get_records(['recordingid' => $recording->get('recordingid'),
52
            'imported' => true]);
53
        foreach ($recordingstodelete as $rec) {
54
            $rec->delete();
55
        }
56
        $recording->delete();
57
    }
58
 
59
    /**
60
     * Helper for performing edit on recordings.
61
     *
62
     * @param recording $recording
63
     */
64
    public static function edit(recording $recording): void {
65
        $recording->update();
66
    }
67
 
68
    /**
69
     * Helper for performing unprotect on recordings.
70
     *
71
     * @param recording $recording
72
     */
73
    public static function unprotect(recording $recording): void {
74
        if (!(boolean) config::get('recording_protect_editable')) {
75
            // Recording protect action through UI is disabled, there is no need to do anything else.
76
            throw new \moodle_exception('cannotperformaction', 'mod_bigblubuebuttobn', '', 'unprotect');
77
        }
78
        if ($recording->get('imported')) {
79
            // Imported recordings can not be unprotected. There is no need to do anything else.
80
            throw new \moodle_exception('cannotperformaction', 'mod_bigblubuebuttobn', '', 'unprotect');
81
        }
82
        $recording->set('protected', false);
83
        $recording->update();
84
    }
85
 
86
    /**
87
     * Helper for performing protect on recordings.
88
     *
89
     * @param recording $recording
90
     */
91
    public static function protect(recording $recording): void {
92
        if (!(boolean) config::get('recording_protect_editable')) {
93
            // Recording protect action through UI is disabled, there is no need to do anything else.
94
            throw new \moodle_exception('cannotperformaction', 'mod_bigblubuebuttobn', '', 'protect');
95
        }
96
        if ($recording->get('imported')) {
97
            // Imported recordings can not be unprotected. There is no need to do anything else.
98
            throw new \moodle_exception('cannotperformaction', 'mod_bigblubuebuttobn', '', 'protect');
99
        }
100
        $recording->set('protected', true);
101
        $recording->update();
102
    }
103
 
104
    /**
105
     * Helper for performing unpublish on recordings.
106
     *
107
     * @param recording $recording
108
     */
109
    public static function unpublish(recording $recording): void {
110
        if ($recording->get('imported')) {
111
            /* Since the recording link is the one fetched from the BBB server, imported recordings can not be
112
             * unpublished. There is no need to do anything else.
113
             */
114
            throw new \moodle_exception('cannotperformaction', 'mod_bigblubuebuttobn', '', 'unpublish');
115
        }
116
        $recording->set('published', false);
117
        $recording->update();
118
    }
119
 
120
    /**
121
     * Helper for performing publish on recordings.
122
     *
123
     * @param recording $recording
124
     */
125
    public static function publish(recording $recording): void {
126
        if ($recording->get('imported')) {
127
            /* Since the recording link is the one fetched from the BBB server, imported recordings can not be
128
             * unpublished. There is no need to do anything else.
129
             */
130
            throw new \moodle_exception('cannotperformaction', 'mod_bigblubuebuttobn', '', 'publish');
131
        }
132
        $recording->set('published', true);
133
        $recording->update();
134
    }
135
}