[Hw4mdl-svn] SF.net SVN: hw4mdl: [4] trunk/moodle/mod/liveclassroom/api.php
Brought to you by:
jhlinder,
trollinger
From: <hu...@us...> - 2006-04-18 14:40:14
|
Revision: 4 Author: hugues Date: 2006-04-18 07:40:02 -0700 (Tue, 18 Apr 2006) ViewCVS: http://svn.sourceforge.net/hw4mdl/?rev=4&view=rev Log Message: ----------- I missed this file :] Added Paths: ----------- trunk/moodle/mod/liveclassroom/api.php Added: trunk/moodle/mod/liveclassroom/api.php =================================================================== --- trunk/moodle/mod/liveclassroom/api.php (rev 0) +++ trunk/moodle/mod/liveclassroom/api.php 2006-04-18 14:40:02 UTC (rev 4) @@ -0,0 +1,324 @@ +<?PHP +// This is the API to authenticate and perform transactions with the Live cLassroom server +// All functions here should start with liveclassroom_api_ + + +$LIVECLASSROOM_API_ADMIN = '/admin/api/api.pl?'; +$LIVECLASSROOM_API_FUNCTION_NOOP = 'function=NOOP'; +$LIVECLASSROOM_API_FUNCTION_CREATE_USER = 'function=createUser'; +$LIVECLASSROOM_API_FUNCTION_GET_TOKEN = 'function=getAuthToken'; +$LIVECLASSROOM_API_FUNCTION_CREATE_CLASS = 'function=createClass'; +$LIVECLASSROOM_API_FUNCTION_CREATE_ROLE = 'function=createRole'; +$LIVECLASSROOM_API_FUNCTION_DELETE_ROLE = 'function=deleteRole'; + + +// Creates a CURL session with the liveclassroom server +// It returns the CURL handle incase of success, false otherwise. +function liveclassroom_api_authenticate () { + global $CFG; + global $LIVECLASSROOM_API_ADMIN; + global $LIVECLASSROOM_API_FUNCTION_NOOP; + + $url = $CFG->liveclassroom_servername. + $LIVECLASSROOM_API_ADMIN. + $LIVECLASSROOM_API_FUNCTION_NOOP. + "&AuthType=AuthCookieHandler". + "&AuthName=Horizon". + "&credential_0=". $CFG->liveclassroom_adminusername. + "&credential_1=". $CFG->liveclassroom_adminpassword; + + + //add_to_log("", "liveclassroom", "", "liveclassroom_api_authenticate", "URL Sent: $url"); + //add_to_log("", "liveclassroom", "", "", "Creating Auth Cookie in: ".dirname(__FILE__).'/cookie.txt'); + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL,$url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_TIMEOUT, 4); + curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); # XXX: cookiejar needs to be configurable? + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); + #curl_setopt($ch, CURLOPT_HEADER, 1); + $data = curl_exec($ch); + #print $data; + if (curl_errno($ch)) { + print curl_error($ch); + return false; + } + preg_match("(\d*)", $data, $matches); + $resp_code = $matches[0]; + + if ( $resp_code != 100 && $resp_code != 301) { + error( "Response: Authentication Failed: $resp_code"); + return false; + } + + return $ch; +} + + +function liveclassroom_api_create_user ($userid, $coursename, $rolename) { +// Creating users as per design recommendations in +// http://wiki.horizonwimba.com/wiki/index.php/LC_Integration_Design_Guidelines#Click_on_Live_Classroom_tool_link +// + global $CFG; + global $LIVECLASSROOM_API_ADMIN; + global $LIVECLASSROOM_API_FUNCTION_CREATE_USER; + + if (!$ch = liveclassroom_api_authenticate()) { + return false; + } + + $url = $CFG->liveclassroom_servername. + $LIVECLASSROOM_API_ADMIN. + $LIVECLASSROOM_API_FUNCTION_CREATE_USER. + "&target=$userid". + "&first_name=$rolename". + "&last_name=$coursename"; + + //add_to_log("", "liveclassroom", "", "liveclassroom_api_create_user", "URL Sent: $url"); + + + curl_setopt($ch, CURLOPT_URL,$url); + $data = curl_exec($ch); + #print $data; + if (curl_errno($ch)) { + print curl_error($ch); + return false; + } + + preg_match("(\d*)", $data, $matches); + $respcode = $matches[0]; + + if ( $respcode != 100 && $respcode != 301) { + error( "Response: Account ($userId) Creation Failed: $resp_code"); + return false; + } + + return true; +} + +function liveclassroom_api_get_session ($userid, $nickname) { + // Returns a session id (token) for this userId + // + global $CFG; + global $USER; + global $LIVECLASSROOM_API_ADMIN; + global $LIVECLASSROOM_API_FUNCTION_GET_TOKEN; + + if (!$ch = liveclassroom_api_authenticate()) { + return false; + } + + $url = $CFG->liveclassroom_servername. + $LIVECLASSROOM_API_ADMIN. + $LIVECLASSROOM_API_FUNCTION_GET_TOKEN. + "&target=$userid". + "&nickname=$nickname"; + + //DEBUG + //add_to_log("", "liveclassroom", "", "liveclassroom_api_get_session", "URL Sent: $url"); + + curl_setopt($ch, CURLOPT_URL,$url); + $data = curl_exec($ch); + + //DEBUG + //add_to_log("", "liveclassroom", "", "liveclassroom_api_get_session", "DATA: <pre>$data</pre>"); + if (curl_errno($ch)) { + print curl_error($ch); + return false; + } + + preg_match("(\d*)", $data, $matches); + $respcode = $matches[0]; + + if ( $respcode != 100) { + //error( "Response: Cannot Create Session: $resp_code"); + return false; + } + + $currentline = strtok($data,"\n"); + while (!empty($currentline) && !preg_match("/authToken=/", $currentline, $matches)) { + $currentline = strtok("\n"); + } + + if (empty($currentline)) { + //error ("Did not find authToken, data=<pre>$data</pre>"); + return false; + } + + $authtoken= substr($currentline, 10); + + //DEBUG + //add_to_log("", "liveclassroom", "", "liveclassroom_api_get_session", "AuthToken: '$authtoken'"); + + if (empty($authtoken)) { + //error ("Token empty, data=<pre>$data</pre>"); + return false; + } + + return $authtoken; +} + + +function liveclassroom_api_create_class ($roomid, $roomname) { + global $CFG; + global $LIVECLASSROOM_API_ADMIN, + $LIVECLASSROOM_API_FUNCTION_CREATE_CLASS; + + + if (!$ch = liveclassroom_api_authenticate()) { + return false; + } + + $url = $CFG->liveclassroom_servername. + $LIVECLASSROOM_API_ADMIN. + $LIVECLASSROOM_API_FUNCTION_CREATE_CLASS. + "&target=$roomid". + "&longname=$roomname"; + + //DEBUG + //add_to_log("", "liveclassroom", "", "liveclassroom_api_create_class", "URL Sent: $url"); + + curl_setopt($ch, CURLOPT_URL,$url); + $data = curl_exec($ch); + + //DEBUG + //add_to_log("", "liveclassroom", "", "liveclassroom_api_create_class", "DATA: <pre>$data</pre>"); + if (curl_errno($ch)) { + print curl_error($ch); + return false; + } + + preg_match("(\d*)", $data, $matches); + $respcode = $matches[0]; + + if ( $respcode != 100) { + //error( "Response: Cannot Create Class with id:$roomid, and name: $roomname."); + return false; + } + return true; +} + +function liveclassroom_api_add_user_role ($roomid, $userid, $role) { + global $CFG; + global $LIVECLASSROOM_API_ADMIN, + $LIVECLASSROOM_API_FUNCTION_CREATE_ROLE; + + + if (!$ch = liveclassroom_api_authenticate()) { + return false; + } + + $url = $CFG->liveclassroom_servername. + $LIVECLASSROOM_API_ADMIN. + $LIVECLASSROOM_API_FUNCTION_CREATE_ROLE. + "&target=$roomid". + "&user_id=$userid". + "&role_id=$role"; + + //DEBUG + add_to_log("", "liveclassroom", "", "liveclassroom_api_add_user_role", "URL Sent: $url"); + + curl_setopt($ch, CURLOPT_URL,$url); + $data = curl_exec($ch); + + //DEBUG + //add_to_log("", "liveclassroom", "", "liveclassroom_api_create_class", "DATA: <pre>$data</pre>"); + if (curl_errno($ch)) { + print curl_error($ch); + return false; + } + + preg_match("(\d*)", $data, $matches); + $respcode = $matches[0]; + + if ( $respcode != 100) { + //error( "Response: Cannot Create Class with id:$roomid, and name: $roomname."); + return false; + } + return true; +} + + +function liveclassroom_api_remove_user_role ($roomid, $userid, $role) { + global $CFG; + global $LIVECLASSROOM_API_ADMIN, + $LIVECLASSROOM_API_FUNCTION_DELETE_ROLE; + + + if (!$ch = liveclassroom_api_authenticate()) { + return false; + } + + $url = $CFG->liveclassroom_servername. + $LIVECLASSROOM_API_ADMIN. + $LIVECLASSROOM_API_FUNCTION_DELETE_ROLE. + "&target=$roomid". + "&user_id=$userid". + "&role_id=$role"; + + //DEBUG + add_to_log("", "liveclassroom", "", "liveclassroom_api_remove_user_role", "URL Sent: $url"); + + curl_setopt($ch, CURLOPT_URL,$url); + $data = curl_exec($ch); + + //DEBUG + //add_to_log("", "liveclassroom", "", "liveclassroom_api_create_class", "DATA: <pre>$data</pre>"); + if (curl_errno($ch)) { + print curl_error($ch); + return false; + } + + preg_match("(\d*)", $data, $matches); + $respcode = $matches[0]; + + if ( $respcode != 100) { + //error( "Response: Cannot Create Class with id:$roomid, and name: $roomname."); + return false; + } + return true; +} + +function liveclassroom_api_remove_group_role ($roomid, $groupid, $role) { + global $CFG; + global $LIVECLASSROOM_API_ADMIN, + $LIVECLASSROOM_API_FUNCTION_DELETE_ROLE; + + if (!$ch = liveclassroom_api_authenticate()) { + return false; + } + + $url = $CFG->liveclassroom_servername. + $LIVECLASSROOM_API_ADMIN. + $LIVECLASSROOM_API_FUNCTION_DELETE_ROLE. + "&target=$roomid". + "&group_id=$groupid". + "&role_id=$role"; + + //DEBUG + add_to_log("", "liveclassroom", "", "liveclassroom_api_remove_group_role", "URL Sent: $url"); + + curl_setopt($ch, CURLOPT_URL,$url); + $data = curl_exec($ch); + + //DEBUG + //add_to_log("", "liveclassroom", "", "liveclassroom_api_create_class", "DATA: <pre>$data</pre>"); + if (curl_errno($ch)) { + print curl_error($ch); + return false; + } + + preg_match("(\d*)", $data, $matches); + $respcode = $matches[0]; + + if ( $respcode != 100) { + //error( "Response: Cannot Create Class with id:$roomid, and name: $roomname."); + return false; + } + return true; +} + + + +?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |