Source for file regenrol_linker.php

Documentation is available at regenrol_linker.php

  1. <?php
  2.     // This script is part of the Sloodle project
  3.  
  4.     /**
  5.     * Registration and enrolment linker script.
  6.     * Allows scripts in-world to initiate manual registration and enrolment.
  7.     *
  8.     * @package sloodleregenrol
  9.     * @copyright Copyright (c) 2007-8 Sloodle (various contributors)
  10.     * @license http://www.gnu.org/licenses/gpl-3.0.html GNU GPL v3
  11.     *
  12.     * @contributor Edmund Edgar
  13.     * @contributor Peter R. Bloomfield
  14.     *
  15.     */
  16.     
  17.     /*
  18.     * The following parameters are required:
  19.     *
  20.     *  sloodlecontrollerid = the ID of the controller to connect to
  21.     *  sloodlepwd = password for authentication (either a prim password or an object-specific session key)
  22.     *  sloodlemode = indicates the mode: "reg", "enrol", or "regenrol"
  23.     *  sloodleuuid = UUID of the avatar
  24.     *  sloodleavname = name of the avatar
  25.     *
  26.     * If successful, the status code returned will be 1 and the data line will contain a URL to forward the user to.
  27.     * If nothing needs done because the user is already registered, then status code 301 is returned.
  28.     * If nothing needs done because the user is already enrolled, then status code 401 is returned.
  29.     * If the user cannot be enrolled because they are not yet registered, then status code -321.
  30.     */
  31.     
  32.     
  33.     /** Lets Sloodle know we are in a linker script. */
  34.     define('SLOODLE_LINKER_SCRIPT'true);
  35.     
  36.     /** Grab the Sloodle/Moodle configuration. */
  37.     require_once('../sl_config.php');
  38.     /** Include the Sloodle PHP API. */
  39.     require_once(SLOODLE_LIBROOT.'/sloodle_session.php');
  40.     
  41.     // Authenticate the request
  42.     $sloodle new SloodleSession();
  43.     $sloodle->authenticate_request();
  44.     // Attempt to authenticate the user, but do not allow auto-registration/enrolment
  45.     $sloodle->validate_user(falsetruetrue);
  46.     $is_registered $sloodle->user->is_user_loaded();
  47.     $is_enrolled false;
  48.     if ($is_registered{
  49.         $is_enrolled $sloodle->user->is_enrolled($sloodle->course->get_course_id());
  50.     }
  51.     
  52.     // Make sure UUID and avatar name were specified
  53.     $sloodleuuid $sloodle->request->get_avatar_uuid(TRUE);
  54.     $sloodleavname $sloodle->request->get_avatar_name(TRUE);
  55.     // Get the mode value
  56.     $sloodlemode $sloodle->request->required_param('sloodlemode');
  57.     
  58.     // If the mode is 'regenrol', but the user is already registered,
  59.     //  then just do enrolment
  60.     if ($sloodlemode == 'regenrol' && $is_registered$sloodlemode 'enrol';
  61.     
  62.     // What mode has been requested?
  63.     switch ($sloodlemode)
  64.     {
  65.     case 'reg'case 'regenrol':
  66.         // Is the user already registered?
  67.         if ($is_registered{
  68.             $sloodle->response->set_status_code(301);
  69.             $sloodle->response->set_status_descriptor('MISC_REGISTER');
  70.         else {
  71.             // Add a pending avatar
  72.             $pa $sloodle->user->add_pending_avatar($sloodleuuid$sloodleavname);
  73.             if (!$pa{
  74.                 $sloodle->response->set_status_code(-322);
  75.                 $sloodle->response->set_status_descriptor('MISC_REGISTER');
  76.                 $sloodle->response->add_data_line('Failed to add pending avatar details.');
  77.             else {
  78.                 // Construct and return a registration URL
  79.                 $url SLOODLE_WWWROOT."/login/sl_welcome_reg.php?sloodleuuid=$sloodleuuid&sloodlelst={$pa->lst}";
  80.                 if ($sloodlemode == 'regenrol'$url .= '&sloodlecourseid='.$sloodle->course->get_course_id();                
  81.                 $sloodle->response->set_status_code(1);
  82.                 $sloodle->response->set_status_descriptor('OK');
  83.                 $sloodle->response->add_data_line($url);
  84.             }
  85.         }
  86.         break;
  87.         
  88.     case 'enrol':
  89.         // Is the user registered?
  90.         if (!$is_registered{
  91.             $sloodle->response->set_status_code(-321);
  92.             $sloodle->response->set_status_descriptor('MISC_REGISTER');
  93.             $sloodle->response->add_data_line('Enrolment failed -- user is not yet registered.');
  94.         else {
  95.             // Is the user already enrolled?
  96.             if ($is_enrolled{
  97.                 $sloodle->response->set_status_code(401);
  98.                 $sloodle->response->set_status_descriptor('MISC_ENROL');
  99.             else {
  100.                 // Construct and return an enrolment URL
  101.                 $sloodle->response->set_status_code(1);
  102.                 $sloodle->response->set_status_descriptor('OK');
  103.                 $sloodle->response->add_data_line("{$CFG->wwwroot}/course/enrol.php?id=".$sloodle->course->get_course_id());
  104.             }
  105.         }        
  106.         break;
  107.         
  108.         
  109.     default:
  110.         $sloodle->response->set_status_code(-811);
  111.         $sloodle->response->set_status_descriptor('REQUEST');
  112.         $sloodle->response->add_data_line("Mode '$sloodlemode' unrecognised.");
  113.         break;
  114.     }
  115.     
  116.     
  117.     // Render the response
  118.     $sloodle->response->render_to_output();
  119.     exit();
  120. ?>

Documentation generated on Fri, 17 Jul 2009 11:02:26 +0100 by phpDocumentor 1.4.0