authenticate_request(); $sloodle->load_module(SLOODLE_TYPE_PRESENTER, true); // Load the necessary Presenter plugins sloodle_debug("Loading Presenter plugins\n"); if (!$sloodle->plugins->load_plugins('presenter')) { $sloodle->response->quick_output(-131, 'PLUGIN', 'Failed to load any SLOODLE Presenter plugins. Please check your "sloodle/plugin" folder.', false); exit(); } // Get all the slides in this presentation $slides = $sloodle->module->get_slides(); if (!is_array($slides) || count($slides) == 0) { $sloodle->response->quick_output(-10501, 'PRESENTER', 'There are no slides in this presentation', false); exit(); } $numslides = count($slides); // Has a particular slide been requested? $sloodleslidenum = (int)$sloodle->request->optional_param('sloodleslidenum', 0); if ($sloodleslidenum < 1 || $sloodleslidenum > $numslides) $sloodleslidenum = 1; // Figure out which slide we are going to output $outputslide = null; $curslidenum = 1; foreach ($slides as $curslide) { // If this is the current slide we are after, then output it if ($curslidenum == $sloodleslidenum) { $outputslide = $curslide; break; } $curslidenum++; } // Output the basic presenter information $sloodle->response->set_status_code(1); $sloodle->response->set_status_descriptor('OK'); $sloodle->response->add_data_line(array($numslides, sloodle_clean_for_output($sloodle->module->get_name()))); // Our plugin data will be store in these variables $slidetype = ''; $slidesource = ''; // Attempt to load the plugin required by our current slide sloodle_debug("Attempting to load plugin \"{$outputslide->type}\"..."); $slideplugin = $sloodle->plugins->get_plugin('presenter-slide', $outputslide->type); if ($slideplugin === false) { // Indicate the error as a side effect, and specify the type as an error sloodle_debug("Failed to load Presenter slide plugin.\n"); $sloodle->response->add_side_effect(-132); $slidetype = 'ERROR'; $slidesource = ''; } else { // Load the slide data from the plugin sloodle_debug("Loaded plugin OK\n"); list($slidetype, $slidesource) = $slideplugin->render_slide_for_sl($outputslide); } // Output the slide data $sloodle->response->add_data_line(array($sloodleslidenum, sloodle_clean_for_output($slidetype), sloodle_clean_for_output($slidesource), sloodle_clean_for_output($outputslide->name))); $sloodle->response->render_to_output(); exit(); ?>