/** * Check if a user has a permission * @param object $aconnect a connect_class object * @param int $usrprincipal user principal-id * @param int $meetingscoid meeting sco-id * @param int $roletype can be ADOBE_PRESENTER, ADOBE_PARTICIPANT or ADOBE_REMOVE * @param bool $assign set to true if you want to assign the user the role type * set to false to just check the user's permission. $assign parameter is ignored * if $roletype is ADOBE_REMOVE * @return TODO * */ function aconnect_check_user_perm($aconnect, $usrprincipal, $meetingscoid, $roletype, $assign = false) { $perm_type = ''; $hasperm = false; switch ($roletype) { case ADOBE_PRESENTER: $perm_type = ADOBE_MINIADMIN_ROLE; break; case ADOBE_PARTICIPANT: $perm_type = ADOBE_VIEW_ROLE; break; case ADOBE_HOST: $perm_type = ADOBE_HOST_ROLE; break; case ADOBE_REMOVE: $perm_type = ADOBE_REMOVE_ROLE; break; default: break; } $params = array('action' => 'permissions-info', 'acl-id' => $meetingscoid, 'filter-principal-id' => $usrprincipal); if (ADOBE_REMOVE_ROLE != $perm_type) { $params['filter-permission-id'] = $perm_type; } $aconnect->create_request($params); if ($aconnect->call_success()) { $dom = new DomDocument(); $dom->loadXML($aconnect->_xmlresponse); $domnodelist = $dom->getElementsByTagName('permissions'); if (!empty($domnodelist->length)) { $domnodelist = $domnodelist->item(0)->getElementsByTagName('principal'); if (!empty($domnodelist->length)) { $hasperm = true; } } if (ADOBE_REMOVE_ROLE != $perm_type and $assign and !$hasperm) { // TODO: check return values of the two functions below // Assign permission to user return aconnect_assign_user_perm($aconnect, $usrprincipal, $meetingscoid, $perm_type); } elseif (ADOBE_REMOVE_ROLE == $perm_type) { // Remove user's permission return aconnect_remove_user_perm($aconnect, $usrprincipal, $meetingscoid); } else { return $hasperm; } } }
// if it's a public meeting give them permissions regardless if ($cm->groupmode) { if (has_capability('mod/adobeconnect:meetingpresenter', $context, $usrobj->id) or has_capability('mod/adobeconnect:meetingparticipant', $context, $usrobj->id)) { if (aconnect_assign_user_perm($aconnect, $usrprincipal, $fldid, ADOBE_VIEW_ROLE)) { //DEBUG // echo 'true'; } else { //DEBUG debugging("error assign user recording folder permissions", DEBUG_DEVELOPER); // print_object('error assign user recording folder permissions'); // print_object($aconnect->_xmlrequest); // print_object($aconnect->_xmlresponse); } } } else { aconnect_assign_user_perm($aconnect, $usrprincipal, $fldid, ADOBE_VIEW_ROLE); } aconnect_logout($aconnect); } // Log in the current user $login = $usrobj->username; $password = $usrobj->username; $https = false; if (isset($CFG->adobeconnect_https) and !empty($CFG->adobeconnect_https)) { $https = true; } $aconnect = new connect_class_dom($CFG->adobeconnect_host, $CFG->adobeconnect_port, '', '', '', $https); $aconnect->request_http_header_login(1, $login); $adobesession = $aconnect->get_cookie(); if ($cm->groupmode) { // Not sure if this is needed anymore...