function adobe_connection_test($host = '', $port = 80, $username = '', $password = '', $httpheader = '', $emaillogin) { if (empty($host) or empty($port) or 0 == $port or empty($username) or empty($password) or empty($httpheader)) { echo "</p>One of the required parameters is blank or incorrect: <br />" . "Host: {$host}<br /> Port: {$port}<br /> Username: {$username}<br /> Password: {$password}" . "<br /> HTTP Header: {$httpheader}</p>"; die; } $messages = array(); $aconnectDOM = new connect_class_dom($host, $port, $username, $password); $params = array('action' => 'common-info'); // Send common-info call to obtain the session key echo '<p>Sending common-info call:</p>'; $aconnectDOM->create_request($params); if (!empty($aconnectDOM->_xmlresponse)) { // Get the session key from the XML response $aconnectDOM->read_cookie_xml($aconnectDOM->_xmlresponse); $cookie = $aconnectDOM->get_cookie(); if (empty($cookie)) { echo '<p>unable to obtain session key from common-info call</p>'; echo '<p>xmlrequest:</p>'; $doc = new DOMDocument(); if ($doc->loadXML($aconnectDOM->_xmlrequest)) { echo '<p>' . htmlspecialchars($doc->saveXML()) . '</p>'; } else { echo '<p>unable to display the XML request</p>'; } echo '<p>xmlresponse:</p>'; $doc = new DOMDocument(); if ($doc->loadXML($aconnectDOM->_xmlresponse)) { echo '<p>' . htmlspecialchars($doc->saveHTML()) . '</p>'; } else { echo '<p>unable to display the XML response</p>'; } } else { // print success echo '<p style="color:#006633">successfully obtained the session key: ' . $aconnectDOM->get_cookie() . '</p>'; // test logging in as the administrator $params = array('action' => 'login', 'login' => $aconnectDOM->get_username(), 'password' => $aconnectDOM->get_password()); $aconnectDOM->create_request($params); if ($aconnectDOM->call_success()) { echo '<p style="color:#006633">successfully logged in as admin user</p>'; //$username //Test retrevial of folders echo '<p>Testing retrevial of shared content, recording and meeting folders:</p>'; $folderscoid = aconnect_get_folder($aconnectDOM, 'content'); if ($folderscoid) { echo '<p style="color:#006633">successfully obtained shared content folder scoid: ' . $folderscoid . '</p>'; } else { echo '<p>error obtaining shared content folder</p>'; echo '<p style="color:#680000">XML request:<br />' . htmlspecialchars($aconnectDOM->_xmlrequest) . '</p>'; echo '<p style="color:#680000">XML response:<br />' . htmlspecialchars($aconnectDOM->_xmlresponse) . '</p>'; } $folderscoid = aconnect_get_folder($aconnectDOM, 'forced-archives'); if ($folderscoid) { echo '<p style="color:#006633">successfully obtained forced-archives (meeting recordings) folder scoid: ' . $folderscoid . '</p>'; } else { echo '<p>error obtaining forced-archives (meeting recordings) folder</p>'; echo '<p style="color:#680000">XML request:<br />' . htmlspecialchars($aconnectDOM->_xmlrequest) . '</p>'; echo '<p style="color:#680000">XML response:<br />' . htmlspecialchars($aconnectDOM->_xmlresponse) . '</p>'; } $folderscoid = aconnect_get_folder($aconnectDOM, 'meetings'); if ($folderscoid) { echo '<p style="color:#006633">successfully obtained meetings folder scoid: ' . $folderscoid . '</p>'; } else { echo '<p>error obtaining meetings folder</p>'; echo '<p style="color:#680000">XML request:<br />' . htmlspecialchars($aconnectDOM->_xmlrequest) . '</p>'; echo '<p style="color:#680000">XML response:<br />' . htmlspecialchars($aconnectDOM->_xmlresponse) . '</p>'; } //Test creating a meeting $folderscoid = aconnect_get_folder($aconnectDOM, 'meetings'); $meeting = new stdClass(); $meeting->name = 'testmeetingtest'; $time = time(); $meeting->starttime = $time; $time = $time + 60 * 60; $meeting->endtime = $time; if ($meetingscoid = aconnect_create_meeting($aconnectDOM, $meeting, $folderscoid)) { echo '<p style="color:#006633">successfully created meeting <b>testmeetingtest</b> scoid: ' . $meetingscoid . '</p>'; } else { echo '<p>error creating meeting <b>testmeetingtest</b> folder</p>'; echo '<p style="color:#680000">XML request:<br />' . htmlspecialchars($aconnectDOM->_xmlrequest) . '</p>'; echo '<p style="color:#680000">XML response:<br />' . htmlspecialchars($aconnectDOM->_xmlresponse) . '</p>'; } //Test creating a user $user = new stdClass(); $user->username = '******'; $user->firstname = 'testusertest'; $user->lastname = 'testusertest'; $user->email = '*****@*****.**'; if (!empty($emaillogin)) { $user->username = $user->email; } $skipdeletetest = false; if (!($usrprincipal = aconnect_user_exists($aconnectDOM, $user))) { $usrprincipal = aconnect_create_user($aconnectDOM, $user); if ($usrprincipal) { echo '<p style="color:#006633">successfully created user <b>testusertest</b> principal-id: ' . $usrprincipal . '</p>'; } else { echo '<p>error creating user <b>testusertest</b></p>'; echo '<p style="color:#680000">XML request:<br />' . htmlspecialchars($aconnectDOM->_xmlrequest) . '</p>'; echo '<p style="color:#680000">XML response:<br />' . htmlspecialchars($aconnectDOM->_xmlresponse) . '</p>'; } } else { echo '<p>user <b>testusertest</b> already exists skipping delete user test</p>'; $skipdeletetest = true; } //Test assigning a user a role to the meeting if (aconnect_check_user_perm($aconnectDOM, $usrprincipal, $meetingscoid, ADOBE_PRESENTER, true)) { echo '<p style="color:#006633">successfully assigned user <b>testusertest</b>' . ' presenter role in meeting <b>testmeetingtest</b>: ' . $usrprincipal . '</p>'; } else { echo '<p>error assigning user <b>testusertest</b> presenter role in meeting <b>testmeetingtest</b></p>'; echo '<p style="color:#680000">XML request:<br />' . htmlspecialchars($aconnectDOM->_xmlrequest) . '</p>'; echo '<p style="color:#680000">XML response:<br />' . htmlspecialchars($aconnectDOM->_xmlresponse) . '</p>'; } //Test removing role from meeting if (aconnect_check_user_perm($aconnectDOM, $usrprincipal, $meetingscoid, ADOBE_REMOVE_ROLE, true)) { echo '<p style="color:#006633">successfully removed presenter role for user <b>testusertest</b>' . ' in meeting <b>testmeetingtest</b>: ' . $usrprincipal . '</p>'; } else { echo '<p>error remove presenter role for user <b>testusertest</b> in meeting <b>testmeetingtest</b></p>'; echo '<p style="color:#680000">XML request:<br />' . htmlspecialchars($aconnectDOM->_xmlrequest) . '</p>'; echo '<p style="color:#680000">XML response:<br />' . htmlspecialchars($aconnectDOM->_xmlresponse) . '</p>'; } //Test removing user from server if (!$skipdeletetest) { if (aconnect_delete_user($aconnectDOM, $usrprincipal)) { echo '<p style="color:#006633">successfully removed user <b>testusertest</b> principal-id: ' . $usrprincipal . '</p>'; } else { echo '<p>error removing user <b>testusertest</b></p>'; echo '<p style="color:#680000">XML request:<br />' . htmlspecialchars($aconnectDOM->_xmlrequest) . '</p>'; echo '<p style="color:#680000">XML response:<br />' . htmlspecialchars($aconnectDOM->_xmlresponse) . '</p>'; } } //Test removing meeting from server if ($meetingscoid) { if (aconnect_remove_meeting($aconnectDOM, $meetingscoid)) { echo '<p style="color:#006633">successfully removed meeting <b>testmeetingtest</b> scoid: ' . $meetingscoid . '</p>'; } else { echo '<p>error removing meeting <b>testmeetingtest</b> folder</p>'; echo '<p style="color:#680000">XML request:<br />' . htmlspecialchars($aconnectDOM->_xmlrequest) . '</p>'; echo '<p style="color:#680000">XML response:<br />' . htmlspecialchars($aconnectDOM->_xmlresponse) . '</p>'; } } } else { echo '<p style="color:#680000">logging in as ' . $username . ' was not successful, check to see if the username and password are correct </p>'; } } } else { echo '<p style="color:#680000">common-info API call returned an empty document. Please check your settings and try again </p>'; } aconnect_logout($aconnectDOM); }
/** * Given an object containing all the necessary data, * (defined by the form in mod_form.php) this function * will create a new instance and return the id number * of the new instance. * * @param object $adobeconnect An object from the form in mod_form.php * @return int The id of the newly inserted adobeconnect record */ function adobeconnect_add_instance($adobeconnect) { global $COURSE, $USER, $DB; $adobeconnect->timecreated = time(); $adobeconnect->meeturl = adobeconnect_clean_meet_url($adobeconnect->meeturl); $return = false; $meeting = new stdClass(); // Assign the current user with the Adobe Presenter role $context = get_context_instance(CONTEXT_COURSE, $adobeconnect->course); if (!has_capability('mod/adobeconnect:meetinghost', $context, $USER->id, false)) { $param = array('shortname' => 'adobeconnecthost'); $roleid = $DB->get_field('role', 'id', $param); if (role_assign($roleid, $USER->id, $context->id, 'mod_adobeconnect')) { //DEBUG } else { echo 'role assignment failed'; die; } } $recid = $DB->insert_record('adobeconnect', $adobeconnect); if (empty($recid)) { return false; } $aconnect = aconnect_login(); $meetfldscoid = aconnect_get_folder($aconnect, 'my-meetings'); $meeting = clone $adobeconnect; if (0 != $adobeconnect->groupmode) { // Allow for multiple groups // get all groups for the course $crsgroups = groups_get_all_groups($COURSE->id); if (empty($crsgroups)) { return 0; } require_once dirname(dirname(dirname(__FILE__))) . '/group/lib.php'; // Create the meeting for each group foreach ($crsgroups as $crsgroup) { // The teacher role if they don't already have one and // Assign them to each group if (!groups_is_member($crsgroup->id, $USER->id)) { $param = array('shortname' => 'editingteacher'); $roleid = $DB->get_field('role', 'id', $param); if (!user_has_role_assignment($USER->id, $roleid, $context->id)) { role_assign($roleid, $USER->id, $context->id, 'mod_adobeconnect'); } groups_add_member($crsgroup->id, $USER->id); } $meeting->name = $adobeconnect->name . '_' . $crsgroup->name; if (!empty($adobeconnect->meeturl)) { $meeting->meeturl = adobeconnect_clean_meet_url($adobeconnect->meeturl . '_' . $crsgroup->name); } if (!($meetingscoid = aconnect_create_meeting($aconnect, $meeting, $meetfldscoid))) { debugging('error creating meeting', DEBUG_DEVELOPER); } // Update permissions for meeting if (empty($adobeconnect->meetingpublic)) { aconnect_update_meeting_perm($aconnect, $meetingscoid, ADOBE_MEETPERM_PRIVATE); } else { aconnect_update_meeting_perm($aconnect, $meetingscoid, ADOBE_MEETPERM_PUBLIC); } // Insert record to activity instance in meeting_groups table $record = new stdClass(); $record->instanceid = $recid; $record->meetingscoid = $meetingscoid; $record->groupid = $crsgroup->id; $record->id = $DB->insert_record('adobeconnect_meeting_groups', $record); // Add event to calendar $event = new stdClass(); $event->name = $meeting->name; $event->description = format_module_intro('adobeconnect', $adobeconnect, $adobeconnect->coursemodule); $event->courseid = $adobeconnect->course; $event->groupid = $crsgroup->id; $event->userid = 0; $event->instance = $recid; $event->eventtype = 'group'; $event->timestart = $adobeconnect->starttime; $event->timeduration = $adobeconnect->endtime - $adobeconnect->starttime; $event->visible = 1; $event->modulename = 'adobeconnect'; calendar_event::create($event); } } else { // no groups support $meetingscoid = aconnect_create_meeting($aconnect, $meeting, $meetfldscoid); // Update permissions for meeting if (empty($adobeconnect->meetingpublic)) { aconnect_update_meeting_perm($aconnect, $meetingscoid, ADOBE_MEETPERM_PRIVATE); } else { aconnect_update_meeting_perm($aconnect, $meetingscoid, ADOBE_MEETPERM_PUBLIC); } // Insert record to activity instance in meeting_groups table $record = new stdClass(); $record->instanceid = $recid; $record->meetingscoid = $meetingscoid; $record->groupid = 0; $record->id = $DB->insert_record('adobeconnect_meeting_groups', $record); // Add event to calendar $event = new stdClass(); $event->name = $meeting->name; $event->description = format_module_intro('adobeconnect', $adobeconnect, $adobeconnect->coursemodule); $event->courseid = $adobeconnect->course; $event->groupid = 0; $event->userid = 0; $event->instance = $recid; $event->eventtype = 'course'; $event->timestart = $adobeconnect->starttime; $event->timeduration = $adobeconnect->endtime - $adobeconnect->starttime; $event->visible = 1; $event->modulename = 'adobeconnect'; calendar_event::create($event); } // If no meeting URL was submitted, // update meeting URL for activity with server assigned URL if (empty($adobeconnect->meeturl) and 0 == $adobeconnect->groupmode) { $filter = array('filter-sco-id' => $meetingscoid); $meeting = aconnect_meeting_exists($aconnect, $meetfldscoid, $filter); if (!empty($meeting)) { $meeting = current($meeting); $record = new stdClass(); $record->id = $recid; $record->meeturl = trim($meeting->url, '/'); $DB->update_record('adobeconnect', $record); } } aconnect_logout($aconnect); return $recid; }