2 /************************************************************************/
4 /************************************************************************/
5 /* Copyright (c) 2002-2008 by Greg Gay, Cindy Qi Li, Harris Wong */
6 /* Adaptive Technology Resource Centre / University of Toronto */
9 /* This program is free software. You can redistribute it and/or */
10 /* modify it under the terms of the GNU General Public License */
11 /* as published by the Free Software Foundation. */
12 /************************************************************************/
13 // $Id: openmeetings.class.php 7575 2008-06-04 18:17:14Z hwong $
14 if (!defined('AT_INCLUDE_PATH')) { exit; }
15 require('SOAP_openmeetings.php');
18 var $_sid = ''; //Openmeetings session id
24 function Openmeetings($course_id, $member_id, $group_id=0){
25 $this->_course_id = abs($course_id);
26 $this->_member_id = abs($member_id);
27 $this->_group_id = abs($group_id);
32 * Login to openmeetings
33 * Login process is, login, saveuserinstance
37 $om = new SOAP_openmeetings($_config['openmeetings_location'].'/services/UserService?wsdl');
38 $param = array ( 'username' => $_config['openmeetings_username'],
39 'userpass' => $_config['openmeetings_userpass']);
42 * Login to the openmeetings
43 * ref: http://code.google.com/p/openmeetings/wiki/DirectLoginSoapGeneralFlow
45 $result = $om->login($param);
47 debug($om->getError($result), 'error');
51 //If no error, then get the generated OM session id
52 $this->_sid = $om->getSid();
54 //Retrieve members information
55 $sql = 'SELECT login, first_name, last_name, email FROM '.TABLE_PREFIX.'members WHERE member_id='.$this->_member_id;
56 $result = mysql_query($sql);
57 $row = mysql_fetch_assoc($result);
61 "username" => $row['login'],
62 "firstname" => $row['first_name'],
63 "lastname" => $row['last_name'],
64 "profilePictureUrl" => '',
65 "email" => $row['email']
67 $om->saveUserInstance($params);
73 * Add a room to the db iff it has not been created. Each course should only have one room to it.
74 * @param int sid is the auth session id that was logged in into openmeetings.
75 * @param array the specification for openmeetings
76 * @return room # of the created room, or the room # of the existed room
78 function om_addRoom($room_name, $om_param=array()){
81 if ($this->_course_id < 0){
85 //Check if the room has already been created for this
86 if (($room_id = $this->om_getRoom()) !=false){
87 //instead of returning room id, we might have to delete it and carry on.
92 $om = new SOAP_openmeetings($_config['openmeetings_location'].'/services/RoomService?wsdl');
96 'roomtypes_id' => $om_param['openmeetings_roomtype'],
97 'numberOfPartizipants' => $om_param['openmeetings_num_of_participants'],
98 'ispublic' => $om_param['openmeetings_ispublic'],
99 'videoPodWidth' => $om_param['openmeetings_vid_w'],
100 'videoPodHeight' => $om_param['openmeetings_vid_h'],
101 'showWhiteBoard' => $om_param['openmeetings_show_wb'],
102 'whiteBoardPanelWidth' => $om_param['openmeetings_wb_w'],
103 'whiteBoardPanelHeight' => $om_param['openmeetings_wb_h'],
104 'showFilesPanel' => $om_param['openmeetings_show_fp'],
105 'filesPanelHeight' => $om_param['openmeetings_fp_h'],
106 'filesPanelWidth' => $om_param['openmeetings_fp_w']
108 $result = $om->addRoom($param);
109 //TODO: Check for error, and handles success/failure
111 //TODO: On success, add to DB entry.
112 $sql = 'INSERT INTO '.TABLE_PREFIX.'openmeetings_rooms SET rooms_id='.$result['return'].', course_id='.$this->_course_id
113 . ', owner_id=' . $this->_member_id;
114 $rs = mysql_query($sql);
118 $om_id = mysql_insert_id();
119 $sql = 'INSERT INTO '.TABLE_PREFIX."openmeetings_groups SET om_id=$om_id, group_id=$this->_group_id";
120 $rs = mysql_query($sql);
123 return $result['return'];
133 function om_updateRoom($room_id, $om_param=array()){
137 $om = new SOAP_openmeetings($_config['openmeetings_location'].'/services/RoomService?wsdl');
139 'SID' => $this->_sid,
140 'rooms_id' => $room_id,
141 'name' => $om_param['openmeetings_room_name'],
142 'roomtypes_id' => $om_param['openmeetings_roomtype'],
143 'numberOfPartizipants' => $om_param['openmeetings_num_of_participants'],
144 'ispublic' => $om_param['openmeetings_ispublic'],
145 'videoPodWidth' => $om_param['openmeetings_vid_w'],
146 'videoPodHeight' => $om_param['openmeetings_vid_h'],
147 'showWhiteBoard' => $om_param['openmeetings_show_wb'],
148 'whiteBoardPanelWidth' => $om_param['openmeetings_wb_w'],
149 'whiteBoardPanelHeight' => $om_param['openmeetings_wb_h'],
150 'showFilesPanel' => $om_param['openmeetings_show_fp'],
151 'filesPanelHeight' => $om_param['openmeetings_fp_h'],
152 'filesPanelWidth' => $om_param['openmeetings_fp_w']
154 $result = $om->updateRoom($param);
159 * Retrieve Session id
166 * Checks if there is a room for the given course id.
169 * @return the room id if there is a room already assigned to this course; false otherwise
171 function om_getRoom(){
172 // $sql = 'SELECT rooms_id FROM '.TABLE_PREFIX.'openmeetings_rooms INNER JOIN '.TABLE_PREFIX."openmeetings_groups WHERE
173 // course_id = $this->_course_id AND owner_id = $this->_member_id AND group_id = $this->_group_id";
174 $sql = 'SELECT rooms_id FROM '.TABLE_PREFIX.'openmeetings_rooms r NATURAL JOIN '.TABLE_PREFIX."openmeetings_groups g WHERE
175 course_id = $this->_course_id AND group_id = $this->_group_id";
176 $result = mysql_query($sql);
177 if (mysql_numrows($result) > 0){
178 $row = mysql_fetch_assoc($result);
179 //instead of returning room id, we might have to delete it and carry on.
180 return $row['rooms_id'];
187 * Get room obj form the given room id
189 function om_getRoomById($room_id){
194 $om = new SOAP_openmeetings($_config['openmeetings_location'].'/services/RoomService?wsdl');
196 'SID' => $this->_sid,
197 'rooms_id' => $room_id
199 $result = $om->getRoomById($param);
205 * @param int group id.
207 function setGid($gid){
208 $this->_group_id = $gid;
214 function om_deleteRoom($room_id){
216 $om = new SOAP_openmeetings($_config['openmeetings_location'].'/services/RoomService?wsdl');
218 'SID' => $this->_sid,
219 'rooms_id' => $room_id
222 $result = $om->deleteRoom($param);
223 $sql = 'DELETE r, g FROM (SELECT om_id FROM '.TABLE_PREFIX."openmeetings_rooms WHERE rooms_id=$room_id) AS t, ".TABLE_PREFIX
224 .'openmeetings_rooms r NATURAL JOIN '.TABLE_PREFIX.'openmeetings_groups g WHERE r.om_id =t.om_id';
230 * Return true if this user created the given room.
232 * @return true if it is, false otherwise.
234 function isMine($room_id){
235 $sql = 'SELECT * FROM '.TABLE_PREFIX."openmeetings_rooms WHERE rooms_id=$room_id AND owner_id=$this->_member_id";
236 $result = mysql_query($sql);
237 if (mysql_numrows($result) > 0){