The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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