NAME
Elive::Entity::Meeting - Elluminate Meeting instance class
DESCRIPTION
This is the main entity class for meetings.
METHODS
insert
Note: the insert()
and update()
methods are depreciated. For alternatives, please see Elive::Entity::Session.
my $start = time() + 15 * 60; # starts in 15 minutes
my $end = $start + 30 * 60; # runs for half an hour
my $meeting = Elive::Entity::Meeting->insert({
name => 'Test Meeting',
facilitatorId => Elive->login,
start => $start . '000',
end => $end . '000',
password => 'secret!',
privateMeeting => 1,
restrictedMeeting => 1,
seats => 42,
});
#
# Set the meeting participants
#
my $participant_list = $meeting->participant_list;
$participant_list->participants([$smith->userId, $jones->userId]);
$participant_list->update;
A series of meetings can be created using the recurrenceCount
and recurrenceDays
parameters.
#
# create three weekly meetings
#
my @meetings = Elive::Entity::Meeting->insert({
...,
recurrenceCount => 3,
recurrenceDays => 7,
});
update
my $meeting = Elive::Entity::Meeting->update({
start => hires-date,
end => hires-date,
name => string,
password => string,
seats => int,
privateMeeting => 0|1,
restrictedMeeting => 0|1,
timeZone => string
});
delete
my $meeting = Elive::Entity::Meeting->retrieve($meeting_id);
$meeting->delete
Delete the meeting.
Note:
- Meeting recordings are not deleted.
-
If you also want to remove the associated recordings, you'll need to delete them yourself, E.g.:
my $recordings = $meeting->list_recordings; foreach my $recording (@$recordings) { $recording->delete; } $meeting->delete;
- Recently deleted meetings may remain retrievable, but with the deleted property to true.
-
Meetings, Meeting Parameters, Server Parameters and recordings may remain accessible via the SOAP interface for a short period of time until they are garbage collected by ELM.
You'll may need to check for deleted meetings:
my $meeting = Elive::Entity::Meeting->retrieve($meeting_id); if ($meeting && ! $meeting->deleted) { # ... }
or filter them out when listing meetings:
my $live_meetings = Elive::Entity::Meeting->list(filter => 'deleted = false');
list_user_meetings_by_date
Lists all meetings for which this user is a participant, over a given date range.
For example, to list all meetings for a particular user over the next week:
my $now = DateTime->now;
my $next_week = $now->clone->add(days => 7);
my $meetings = Elive::Entity::Meeting->list_user_meetings_by_date(
{userId => $user_id,
startDate => $now->epoch.'000',
endDate => $next_week->epoch.'000'}
);
add_preload
my $preload = Elive::Entity::Preload->upload( 'c:\tmp\intro.wbd');
my $meeting = Elive::Entity::Meeting->retrieve($meeting_id);
$meeting->add_preload($preload);
Associates a preload with the given meeting-Id, or meeting object.
check_preload
my $ok = $meeting_obj->check_preload($preload);
Checks that the preload is associated with this meeting.
is_participant
my $ok = $meeting_obj->is_participant($user);
Checks that the user is a meeting participant.
is_moderator
my $ok = $meeting_obj->is_moderator($user);
Checks that the user is a meeting moderator.
remove_preload
$meeting_obj->remove_preload($preload_obj);
$preload_obj->delete; # if you don't want it to hang around
Disassociate a preload from a meeting.
buildJNLP
Builds a JNLP for the meeting.
# ...
use Elive;
use Elive::Entity::Role;
use Elive::Entity::Meeting;
use CGI;
my $cgi = CGI->new;
#
# authentication, calls to Elive->connect, etc goes here...
#
my $meeting_id = $cgi->param('meeting_id');
my $meeting = Elive::Entity::Meeting->retrieve($meeting_id);
my $login_name = $cgi->param('user');
my $jnlp = $meeting->buildJNLP(
userName => $login_name,
sessionRole => ${Elive::Entity::Role::PARTICIPANT},
);
#
# join this user to the meeting
#
print $cgi->header(-type => 'application/x-java-jnlp-file',
-attachment => 'my-meeting.jnlp');
print $jnlp;
Alternatively, you can pass a user object or user-id via userId
my $user = Elive::Entity::User->get_by_loginName($login_name);
my $jnlp = $meeting->buildJNLP(userId => $user);
Or you can just conjure up a display name and role. The user does not have to exist as in the ELM database, or in the meeting's participant list:
my $jnlp = $meeting->buildJNLP(
displayName => 'Joe Bloggs',
sessionRole => ${Elive::Entity::Role::PARTICIPANT}
);
Guests will by default be given a sessionRole
of participant (3).
JNLP is the 'Java Network Launch Protocol', also commonly known as Java WebStart. To launch the meeting you can, for example, render this as a web page, or send email attachments with mime type application/x-java-jnlp-file
.
Under Windows, and other desktops, files are usually saved with extension .jnlp
.
See also http://wikipedia.org/wiki/JNLP.
web_url
Utility method to return various website links for the meeting. This is available as both class level and object level methods.
#
# Class level access.
#
my $url = Elive::Entity::Meeting->web_url(
meeting_id => $meeting_id,
action => 'join', # join|edit|...
connection => $my_connection); # optional
#
# Object level.
#
my $meeting = Elive::Entity::Meeting->retrieve($meeting_id);
my $url = meeting->web_url(action => 'join');
parameters
my $meeting = Elive::Entity::Meeting->retrieve($meeting_id);
my $meeting_parameters = $meeting->parameters;
Utility method to return the meeting parameters associated with a meeting. See also Elive::Entity::MeetingParameters.
server_parameters
my $meeting = Elive::Entity::Meeting->retrieve($meeting_id);
my $server_parameters = $meeting->server_parameters;
Utility method to return the server parameters associated with a meeting. See also Elive::Entity::ServerParameters.
participant_list
my $meeting = Elive::Entity::Meeting->retrieve($meeting_id);
my $participant_list = $meeting->participant_list;
my $participants = $participant_list->participants;
Utility method to return the participant_list associated with a meeting. See also Elive::Entity::ParticipantList.
list_preloads
my $preloads = $meeting_obj->list_preloads;
Lists all preloads associated with the meeting. See also Elive::Entity::Preload.
list_recordings
my $recordings = $meeting_obj->list_recordings;
Lists all recordings associated with the meeting. See also Elive::Entity::Recording.
SEE ALSO
Elive::Entity::MeetingParameters