Пример #1
0
 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;
 }