|" // Single lookup mode returns 1 entry, whereas multi-lookup and list modes may return many. // If the single lookup fails, then error code -103 is returned. // If the other modes fail (i.e. no matching avatars found), then there are simply no data lines -- the status code is still 1. // // Note: data will *not* be given for Moodle users who have no avatar, nor avatars not linked to a Moodle user /** Lets Sloodle know we are in a linker script. */ define('SLOODLE_LINKER_SCRIPT', true); /** Grab the Sloodle/Moodle configuration. */ require_once('../init.php'); /** Include the Sloodle PHP API. */ require_once(SLOODLE_LIBROOT.'/sloodle_session.php'); // Process incoming data $sloodle = new SloodleSession(); // Check what type of authentication we are using $course_centric = false; if ($sloodle->request->get_controller_id(false) == null) { // Attempt user-centric authentication $sloodle->authenticate_user_request(); $sloodle->validate_avatar(); } else { // Attempt course-centric authentication $sloodle->authenticate_request(); $course_centric = true; } // Load the AviLister module $sloodle->load_module('avilister', false); // No database data required // Check for other parameters $sloodlelookupavname = $sloodle->request->optional_param('sloodlelookupavname'); $sloodleavnamelist = $sloodle->request->optional_param('sloodleavnamelist'); // Check what mode we are in (0 = course names, 1 = single-lookup, 2 = multi-lookup) $mode = 0; if (!empty($sloodlelookupavname)) $mode = 1; else if (!empty($sloodleavnamelist)) $mode = 2; switch ($mode) { case 0: // Course names - not valid with user-centric authentication if (!$course_centric) { $sloodle->response->quick_output(-331, 'USER_AUTH', 'Cannot access this information via user-centric authentication', false); exit(); } // Get the array of names $names = $sloodle->module->find_real_names_course(); if (!$names || count($names) == 0) { $sloodle->response->quick_output(-512, 'COURSE', 'Failed to access course to retrieve enrolled user data', false); exit(); } // Output the list of names natcasesort($names); foreach ($names as $avatar_name => $real_name) { $sloodle->response->add_data_line(array($avatar_name, $real_name)); } break; case 1: // Single lookup mode // Attempt to get the real name $sloodlelookupavname = addslashes(strip_tags($sloodlelookupavname)); $real_name = $sloodle->module->find_real_name('', $sloodlelookupavname); if (!$real_name) { $sloodle->response->quick_output(-103, 'MISC', 'Could not locate requested avatar name', false); exit(); } $sloodle->response->add_data_line(array($sloodlelookupavname, $real_name)); break; case 2: // Split up the input array $sloodleavnamelist = addslashes(strip_tags($sloodleavnamelist)); $avnames = explode('|', $sloodleavnamelist); // Get and output the array of names $names = $sloodle->module->find_real_names($avnames); if ($names && count($names) > 0) { natcasesort($names); foreach ($names as $avatar_name => $real_name) { $sloodle->response->add_data_line(array($avatar_name, $real_name)); } } break; } // Output our response $sloodle->response->set_status_code(1); $sloodle->response->set_status_descriptor('OK'); $sloodle->response->render_to_output(); exit(); ?>