course->controller->is_loaded(); // Get the object type (only necessary if it was not already in the database) $sloodleobjtype = null; if (empty($auth_obj->type)) { $sloodleobjtype = required_param('sloodleobjtype', PARAM_TEXT); } else { $sloodleobjtype = optional_param('sloodleobjtype', null, PARAM_TEXT); } // Treat this like a Sloodle session, but do not authenticate anything $sloodle = new SloodleSession(); // Was a controller loaded by the request? $loaded_controller = false; if ($sloodle->course->controller->is_loaded()) { $loaded_controller = true; } else { // If a controller was already specified for the object, then use that if ($auth_obj->course->controller->is_loaded()) { $loaded_controller = true; $sloodle->course = $auth_obj->course; } } // Load the user $sloodle->user->load_user($USER->id); $sloodle->user->load_linked_avatar(); // Fetch localization strings $stryes = get_string('yes'); $strno = get_string('no'); // Check if the confirmation action has been specified $action = optional_param('action', '', PARAM_TEXT); // If the action was not recognised, then ignore it if ($action != 'auth' && $action != 'cancel') $action = ''; // Determine the page name - it should be authorisation or configuration $pagename = get_string('objectauth','sloodle'); if ($object_authorised == true || $action == 'auth') $pagename = get_string('objectconfiguration','sloodle'); // Construct a breadcrumb navigation menu $nav = get_string('modulename', 'sloodle').' -> '; $nav .= $pagename; // Display the page header sloodle_print_header($pagename, $pagename, $nav, '', '', false); //------------------------------------------------------------ // AUTHORISATION STEP // Was an action specified? (Don't do this if the object was already authorised) $action_success = false; if (!empty($action) && $object_authorised == false) { // Check if we were instructed to authorise, and also that we have a controller to authorise on if ($action == 'auth' && $loaded_controller == true) { // Make sure the user is allowed to authorise objects $module_context = get_context_instance(CONTEXT_MODULE, $sloodle->course->controller->get_id()); require_capability('mod/sloodle:objectauth', $module_context); // Indicate that we are attempting authorisation echo '
'; echo get_string('authorizingfor', 'sloodle').$sloodle->course->get_full_name().' > '.$sloodle->course->controller->get_name().'

'; // Attempt to authorise the entry if ($sloodle->course->controller->authorise_object($auth_obj->uuid, $sloodle->user, $sloodleobjtype)) { echo ''.get_string('objectauthsuccessful','sloodle').'
'; $action_success = true; $object_authorised = true; // Reload the object data $auth_obj = SloodleController::get_object($sloodleauthid); } else { echo ''.get_string('objectauthfailed','sloodle').'
'; } echo "

\n"; } else if ($action == 'cancel') { // Attempt to delete the entry $sloodle->course->controller->remove_object($sloodleauthid); // Display the result sloodle_print_box(get_string('objectauthcancelled', 'sloodle'), 'generalbox boxaligncenter boxwidthnarrow'); $action_success = true; } } else if ($object_authorised) { // If the object has already been authorised, then display a message about it sloodle_print_box_start('generalbox boxwidthnarrow boxaligncenter'); echo ''.get_string('objectauthalready','sloodle').''; sloodle_print_box_end(); } //------------------------------------------------------------ // OBJECT INFO // Display the information about the object sloodle_print_box_start('generalbox boxaligncenter boxwidthnarrow'); echo '
'; echo ''.get_string('objectdetails','sloodle').'
'; echo get_string('objectname','sloodle').': '.$auth_obj->name.'
'; echo get_string('objectuuid','sloodle').': '.$auth_obj->uuid.'
'; echo get_string('objecttype','sloodle').': '; if (!empty($sloodleobjtype)) echo $sloodleobjtype.'
'; else if (!empty($auth_obj->type)) echo $auth_obj->type.'
'; else echo '-
'; echo '
'; sloodle_print_box_end(); echo '
'; //------------------------------------------------------------ // AUTHORISATION FORM // If the action was not performed or successful, then display the authorisation form if ($action_success == false && $object_authorised == false) { sloodle_print_box_start('generalbox boxaligncenter boxwidthnormal'); echo '
'; echo '

'.get_string('objectauth','sloodle').'

'; // If an authorisation action was attempted but the controller failed to load, then display an error message if ($action == 'auth' && $loaded_controller = false) { echo ''.get_string('failedauth-trydifferent','sloodle').''; } // Get a list of controllers which the user is permitted to authorise objects on // (It will be a 2d array - top level will be course ID's, 2nd level will be coursemodule ID's, containing database objects from the 'sloodle' table) $controllers = array(); $recs = sloodle_get_records('sloodle', 'type', SLOODLE_TYPE_CTRL); // Make sure we have at least one controller if ($recs == false || count($recs) == 0) { error(get_string('objectauthnocontrollers','sloodle')); exit(); } foreach ($recs as $r) { // Fetch the course module $cm = get_coursemodule_from_instance('sloodle', $r->id); // Check that the person can authorise objects of this module if (has_capability('mod/sloodle:objectauth', get_context_instance(CONTEXT_MODULE, $cm->id))) { // Store this controller $controllers[$cm->course][$cm->id] = $r; } } // Make sure that permission came through on at least one controller if (count($controllers) == 0) { error(get_string('objectauthnopermission','sloodle')); exit(); } // Construct the list of course names $coursenames = array(); foreach ($controllers as $cid => $ctrl) { $courserec = sloodle_get_record('course', 'id', $cid, '','', '','', 'id,shortname,fullname'); if (!$courserec) $coursenames[$cid] = "(unknown)"; else $coursenames[$cid] = $courserec->fullname; } // Sort the list alphabetically natcasesort($coursenames); // Attempt to get our current controller, if possible, so we can pre-select it in the list $cur_controller_id = 0; if ($loaded_controller) { $cur_controller_id = $sloodle->course->controller->get_id(); } // Display an authorisation form echo '
'; if (SLOODLE_DEBUG) echo ''; if (!empty($sloodleauthid)) echo ''; if (!empty($sloodleobjtype)) echo ''; // Ask the user to select a controller to authorise on echo get_string('selectcontroller','sloodle').':

'; echo '

'; // Ask the user if they want to confirm or deny the authorisation echo get_string('confirmobjectauth', 'sloodle').' '; echo '

'; echo ''; echo "
\n"; echo '
'; sloodle_print_box_end(); } //------------------------------------------------------------ // CONFIGURATION FORM // Get the type $usetype = ""; if (!empty($auth_obj->type)) $usetype = $auth_obj->type; else $usetype = $sloodleobjtype; // If the object is now authorised, we can display its configuration form if ($object_authorised && !empty($usetype)) { // Make sure the user has permission to manage activities on this course $course_context = get_context_instance(CONTEXT_COURSE, $auth_obj->course->get_course_id()); require_capability('moodle/course:manageactivities', $course_context); // Make sure the type value is stored in the database too $sloodle->course->controller->update_object_type($auth_obj->uuid, $usetype); $auth_obj->type = $usetype; // Make sure the type exists $objectpath = SLOODLE_DIRROOT."/mod/$usetype"; if (!file_exists($objectpath)) error(get_string('objectnotinstalled','sloodle')); // Determine if we have a custom configuration page $hascustomconfig = $auth_obj->has_custom_config(); // Display the configuration section sloodle_print_box_start('generalbox boxwidthnormal boxaligncenter'); echo '

'.get_string('objectconfiguration','sloodle').'

'; // Do we have custom configuration settings? if ($hascustomconfig) { // Display our configuration form echo '
'; // Add a hidden field to store the object's type echo ''; // Include the form elements include('object_configuration_form_template.php'); // Add this object's authorisation ID, and a submit button echo '
'; if (SLOODLE_DEBUG) echo ''; echo ''; echo '
'; } else { // No configuration settings for this object print_string('noobjectconfig','sloodle'); // Add or udpate a configuration value to store this object's type $cfgtype = sloodle_get_record('sloodle_object_config', 'object', $sloodleauthid, 'name', 'sloodleobjtype'); if (!$cfgtype) { $cfgtype = new stdClass(); $cfgtype->object = $sloodleauthid; $cfgtype->name = 'sloodleobjtype'; $cfgtype->value = $usetype; sloodle_insert_record('sloodle_object_config', $cfgtype); } else { $cfgtype->value = $usetype; sloodle_update_record('sloodle_object_config', $cfgtype); } } echo '
'; sloodle_print_box_end(); } // Finish sloodle_print_footer(); ?>