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::Session

Elive::Entity::Preload

Elive::Entity::Recording

Elive::Entity::MeetingParameters

Elive::Entity::ServerParameters

Elive::Entity::ParticipantList