File Coverage

blib/lib/Elive/Entity/MeetingParameters.pm
Criterion Covered Total %
statement 12 24 50.0
branch 0 2 0.0
condition 0 3 0.0
subroutine 4 8 50.0
pod 3 3 100.0
total 19 40 47.5


line stmt bran cond sub pod time code
1             package Elive::Entity::MeetingParameters;
2 1     1   381 use warnings; use strict;
  1     1   2  
  1         37  
  1         7  
  1         1  
  1         26  
3              
4 1     1   4 use Mouse;
  1         1  
  1         4  
5 1     1   238 use Mouse::Util::TypeConstraints;
  1         1  
  1         5  
6              
7             extends 'Elive::Entity';
8              
9             __PACKAGE__->entity_name('MeetingParameters');
10             __PACKAGE__->_isa('Meeting');
11              
12             coerce 'Elive::Entity::MeetingParameters' => from 'HashRef'
13             => via {Elive::Entity::MeetingParameters->new($_) };
14              
15             has 'meetingId' => (is => 'rw', isa => 'Int', required => 1,
16             documentation => 'associated meeting');
17             __PACKAGE__->primary_key('meetingId');
18              
19             has 'costCenter' => (is => 'rw', isa => 'Str',
20             documentation => 'user defined cost center');
21             __PACKAGE__->_alias('cost_center' => 'costCenter');
22              
23             has 'moderatorNotes' => (is => 'rw', isa => 'Str',
24             documentation => 'meeting instructions for moderator(s)');
25             __PACKAGE__->_alias('moderator_notes' => 'moderatorNotes');
26              
27             has 'userNotes' => (is => 'rw', isa => 'Str',
28             documentation => 'meeting instructions for all participants');
29             __PACKAGE__->_alias('user_notes' => 'userNotes');
30              
31             enum enumRecordingStates => '', qw(on off remote);
32             has 'recordingStatus' => (is => 'rw', isa => 'enumRecordingStates',
33             documentation => 'recording status; on, off or remote (start/stopped by moderator)');
34             __PACKAGE__->_alias('recording' => 'recordingStatus');
35              
36             has 'raiseHandOnEnter' => (is => 'rw', isa => 'Bool',
37             documentation => 'raise hands automatically when users join');
38             __PACKAGE__->_alias('raise_hands' => 'raiseHandOnEnter');
39              
40             has 'maxTalkers' => (is => 'rw', isa => 'Int',
41             documentation => 'maximum number of simultaneous talkers');
42             __PACKAGE__->_alias('max_talkers' => 'maxTalkers');
43              
44             has 'inSessionInvitation' => (is => 'rw', isa => 'Bool',
45             documentation => 'Can moderators invite other individuals from within the online session');
46             # v9.5
47             __PACKAGE__->_alias('inSessionInvitations' => 'inSessionInvitation');
48             __PACKAGE__->_alias('invites' => 'inSessionInvitation');
49              
50             has 'followModerator' => (is => 'rw', isa => 'Bool',
51             documentation => 'Whiteboard slides are locked to moderator view');
52             __PACKAGE__->_alias('follow_moderator' => 'followModerator');
53              
54             has 'videoWindow' => (is => 'rw', isa => 'Int',
55             documentation => 'Max simultaneous cameras');
56             __PACKAGE__->_alias('max_cameras' => 'videoWindow');
57              
58             has 'recordingObfuscation' => (is => 'rw', isa => 'Bool');
59             has 'recordingResolution' => (is => 'rw', isa => 'Str',
60             documentation => 'CG:course gray, CC:course color, MG:medium gray, MC:medium color, FG:fine gray, FC:fine color');
61             __PACKAGE__->_alias('recording_resolution' => 'recordingResolution');
62              
63             has 'profile' => (is => 'rw', isa => 'Str',
64             documentation => "Which user profiles are displayed: 'none', 'mod' or 'all'");
65              
66             =head1 NAME
67              
68             Elive::Entity::MeetingParameters - Meeting parameters entity class
69              
70             =head1 SYNOPSIS
71              
72             Note: the C and C methods are depreciated. For alternatives,
73             please see L.
74              
75             use Elive::Entity::MeetingParameters;
76              
77             my $meeting_params
78             = Elive::Entity::MeetingParameters->retrieve($meeting_id);
79              
80             $meeting_params->update({
81             maxTalkers => 3,
82             costCenter => 'acme',
83             moderatorNotes => 'be there early!',
84             userNotes => "don't be late!",
85             recordingStatus => 'on',
86             raiseHandsOnEnter => 1,
87             inSessionInvitation => 1,
88             followModerator => 0,
89             videoWindow => 0,
90             });
91              
92             =head1 DESCRIPTION
93              
94             This class contains a range of options for a previously created meeting.
95              
96             =cut
97              
98             =head1 METHODS
99              
100             =cut
101              
102             =head2 retrieve
103              
104             my $paremeters = Elive::Entity::MeetingParameters->retrieve($meeting_id);
105              
106             Retrieves the meeting parameters for a meeting.
107              
108             =cut
109              
110             =head2 insert
111              
112             The insert method is not applicable. The meeting parameters table is
113             automatically created when you create a table.
114              
115             =cut
116              
117 0     0 1   sub insert {return shift->_not_available}
118              
119             =head2 delete
120              
121             The delete method is not applicable. meeting parameters are deleted
122             when the meeting itself is deleted.
123              
124             =cut
125              
126 0     0 1   sub delete {return shift->_not_available}
127              
128             =head2 list
129              
130             The list method is not available for meeting parameters.
131              
132             =cut
133              
134 0     0 1   sub list {return shift->_not_available}
135              
136             sub _thaw {
137 0     0     my ($class, $db_data, @args) = @_;
138              
139 0           my $data = $class->SUPER::_thaw($db_data, @args);
140              
141 0           for (grep {defined} $data->{recordingStatus}) {
  0            
142              
143 0           $_ = lc($_);
144              
145 0 0 0       unless (m{^(on|off|remote)$}x || $_ eq '') {
146 0           warn "ignoring unknown recording status: $_\n";
147 0           delete $data->{recordingStatus};
148             }
149             }
150              
151 0           return $data;
152             }
153              
154             =head1 See Also
155              
156             L
157              
158             =cut
159              
160             1;