function insert_room($idCourse, $idSt, $name, $room_type, $start_timestamp, $end_timestamp, $meetinghours, $maxparticipants, $bookable, $startdate, $starthour, $startminute) { //save in calendar the corresponding event $start_date = date("Y-m-d H:i:s", $start_timestamp); $end_date = date("Y-m-d H:i:s", $end_timestamp); $parts[1] = substr($start_date, 0, 4); $parts[2] = substr($start_date, 5, 2); $parts[3] = substr($start_date, 8, 2); $parts[4] = substr($start_date, 11, 2); $parts[5] = substr($start_date, 14, 2); $parts[6] = substr($start_date, 17, 2); $event = new DoceboCalEvent_lms(); $event->calEventClass = "lms"; $event->start_year = $parts[1]; $event->start_month = $parts[2]; $event->start_day = $parts[3]; $event->_year = $event->start_year; $event->_month = $event->start_month; $event->_day = $event->start_day; $event->start_hour = $parts[4]; $event->start_min = $parts[5]; $event->start_sec = $parts[6]; $parts[1] = substr($end_date, 0, 4); $parts[2] = substr($end_date, 5, 2); $parts[3] = substr($end_date, 8, 2); $parts[4] = substr($end_date, 11, 2); $parts[5] = substr($end_date, 14, 2); $parts[6] = substr($end_date, 17, 2); $event->end_year = $parts[1]; $event->end_month = $parts[2]; $event->end_day = $parts[3]; $event->end_hour = $parts[4]; $event->end_min = $parts[5]; $event->end_sec = $parts[6]; $event->title = $name; $event->description = $name; $event->_owner = $idSt; if (!$event->_owner) { $event->_owner == Docebo::user()->getIdSt(); } $event->category = "b"; $event->private = ""; $event->idCourse = $idCourse; $idCal = $event->store(); //save in database the roomid for user login $insert_room = "\r\n\t\tINSERT INTO " . $this->_getRoomTable() . "\r\n\t\t( idCal,idCourse,idSt,name, room_type, starttime,endtime,meetinghours,maxparticipants,bookable) VALUES (\r\n\t\t\t'" . $idCal . "',\r\n\t\t\t'" . $idCourse . "',\r\n\t\t\t'" . $idSt . "',\r\n\t\t\t'" . $name . "',\r\n\t\t\t'" . $room_type . "',\r\n\t\t\t'" . $start_timestamp . "',\r\n\t\t\t'" . $end_timestamp . "',\r\n\t\t\t'" . $meetinghours . "',\r\n\t\t\t'" . $maxparticipants . "',\r\n\t\t\t'" . $bookable . "'\r\n\t\t)"; $id_room = ""; $ok = true; if (!sql_query($insert_room)) { $ok = false; } if ($ok) { $idConference = sql_insert_id(); } if ($ok) { switch ($room_type) { case "bbb": // TODO : support for BBB is experimental - must be refined $acl_manager =& Docebo::user()->getAclManager(); $bbb = new Bbb_Manager(); $display_name = Docebo::user()->getUserName(); $u_info = $acl_manager->getUser(getLogUserId(), false); $user_email = $u_info[ACL_INFO_EMAIL]; $confkey = $bbb->generateConfKey(); $audiovideosettings = 1; $maxmikes = (int) Get::sett("bbb_max_mikes"); $extra_conf = array(); isset($_POST['lobbyEnabled']) ? $extra_conf['lobbyEnabled'] = true : ($extra_conf['lobbyEnabled'] = false); isset($_POST['privateChatEnabled']) ? $extra_conf['privateChatEnabled'] = true : ($extra_conf['privateChatEnabled'] = false); isset($_POST['publicChatEnabled']) ? $extra_conf['publicChatEnabled'] = true : ($extra_conf['publicChatEnabled'] = false); isset($_POST['screenShareEnabled']) ? $extra_conf['screenShareEnabled'] = true : ($extra_conf['screenShareEnabled'] = false); isset($_POST['autoAssignMikeOnJoin']) ? $extra_conf['autoAssignMikeOnJoin'] = true : ($extra_conf['autoAssignMikeOnJoin'] = false); isset($_POST['whiteboardEnabled']) ? $extra_conf['whiteboardEnabled'] = true : ($extra_conf['whiteboardEnabled'] = false); isset($_POST['enable_documents_sharing']) ? $extra_conf['documentSharingEnabled'] = true : ($extra_conf['documentSharingEnabled'] = false); isset($_POST['recordingEnabled']) ? $extra_conf['recordingEnabled'] = true : ($extra_conf['recordingEnabled'] = false); isset($_POST['autoHandsFreeOnAVLoad']) ? $extra_conf['autoHandsFreeOnAVLoad'] = true : ($extra_conf['autoHandsFreeOnAVLoad'] = false); isset($_POST['joinEmailRequired']) ? $extra_conf['joinEmailRequired'] = true : ($extra_conf['joinEmailRequired'] = false); //$extra_conf['recording_code'] = Get::req('recording_code', DOTY_MIXED, ''); $success = $bbb->insert_room($idConference, $user_email, $display_name, $confkey, $audiovideosettings, $maxmikes, $maxparticipants, $startdate, $starthour, $startminute, $meetinghours * 60, $extra_conf); if (!$success) { sql_query("DELETE FROM " . $this->_getRoomTable() . " WHERE id=" . (int) $idConference); $idConference = false; } break; case "dimdim": $acl_manager =& Docebo::user()->getAclManager(); $dimdim = new DimDim_Manager(); $display_name = Docebo::user()->getUserName(); $u_info = $acl_manager->getUser(getLogUserId(), false); $user_email = $u_info[ACL_INFO_EMAIL]; $confkey = $dimdim->generateConfKey(); $audiovideosettings = 1; $maxmikes = (int) Get::sett("dimdim_max_mikes"); $extra_conf = array(); isset($_POST['lobbyEnabled']) ? $extra_conf['lobbyEnabled'] = true : ($extra_conf['lobbyEnabled'] = false); isset($_POST['privateChatEnabled']) ? $extra_conf['privateChatEnabled'] = true : ($extra_conf['privateChatEnabled'] = false); isset($_POST['publicChatEnabled']) ? $extra_conf['publicChatEnabled'] = true : ($extra_conf['publicChatEnabled'] = false); isset($_POST['screenShareEnabled']) ? $extra_conf['screenShareEnabled'] = true : ($extra_conf['screenShareEnabled'] = false); isset($_POST['autoAssignMikeOnJoin']) ? $extra_conf['autoAssignMikeOnJoin'] = true : ($extra_conf['autoAssignMikeOnJoin'] = false); isset($_POST['whiteboardEnabled']) ? $extra_conf['whiteboardEnabled'] = true : ($extra_conf['whiteboardEnabled'] = false); isset($_POST['enable_documents_sharing']) ? $extra_conf['documentSharingEnabled'] = true : ($extra_conf['documentSharingEnabled'] = false); isset($_POST['recordingEnabled']) ? $extra_conf['recordingEnabled'] = true : ($extra_conf['recordingEnabled'] = false); isset($_POST['autoHandsFreeOnAVLoad']) ? $extra_conf['autoHandsFreeOnAVLoad'] = true : ($extra_conf['autoHandsFreeOnAVLoad'] = false); isset($_POST['joinEmailRequired']) ? $extra_conf['joinEmailRequired'] = true : ($extra_conf['joinEmailRequired'] = false); //$extra_conf['recording_code'] = Get::req('recording_code', DOTY_MIXED, ''); $success = $dimdim->insert_room($idConference, $user_email, $display_name, $confkey, $audiovideosettings, $maxmikes, $maxparticipants, $startdate, $starthour, $startminute, $meetinghours * 60, $extra_conf); if (!$success) { sql_query("DELETE FROM " . $this->_getRoomTable() . " WHERE id=" . (int) $idConference); $idConference = false; } break; case "teleskill": $start_date = date("Y-m-d H:i:s", $start_timestamp); $end_date = date("Y-m-d H:i:s", $end_timestamp); $teleskill = new Teleskill_Management(); $re_creation_room = $teleskill->openRoom($idConference, $name, $start_date, $end_date, FALSE, FALSE, $maxparticipants); break; } } return $idConference; }