From 65634a81b825fddf5d62abaf289b52334a5f7845 Mon Sep 17 00:00:00 2001 From: nicolasconnault Date: Thu, 16 Aug 2007 17:38:50 +0000 Subject: [PATCH] MDL-10853 Fixed this bug plus others in the resource class --- mod/resource/lib.php | 261 ++--- mod/resource/type/file/resource.class.php | 1526 +++++++++++++++-------------- 2 files changed, 905 insertions(+), 882 deletions(-) rewrite mod/resource/type/file/resource.class.php (96%) diff --git a/mod/resource/lib.php b/mod/resource/lib.php index acd438d89..2a2fc62a5 100644 --- a/mod/resource/lib.php +++ b/mod/resource/lib.php @@ -78,188 +78,189 @@ if (!empty($THEME->customcorners)) { class resource_base { -var $cm; -var $course; -var $resource; - - -/** -* Constructor for the base resource class -* -* Constructor for the base resource class. -* If cmid is set create the cm, course, resource objects. -* and do some checks to make sure people can be here, and so on. -* -* @param cmid integer, the current course module id - not set for new resources -*/ -function resource_base($cmid=0) { + var $cm; + var $course; + var $resource; + var $navigation; + var $navlinks; + + /** + * Constructor for the base resource class + * + * Constructor for the base resource class. + * If cmid is set create the cm, course, resource objects. + * and do some checks to make sure people can be here, and so on. + * + * @param cmid integer, the current course module id - not set for new resources + */ + function resource_base($cmid=0) { + + global $CFG, $COURSE; + + if ($cmid) { + if (! $this->cm = get_coursemodule_from_id('resource', $cmid)) { + error("Course Module ID was incorrect"); + } - global $CFG, $COURSE; + if (! $this->course = get_record("course", "id", $this->cm->course)) { + error("Course is misconfigured"); + } - if ($cmid) { - if (! $this->cm = get_coursemodule_from_id('resource', $cmid)) { - error("Course Module ID was incorrect"); - } + if (! $this->resource = get_record("resource", "id", $this->cm->instance)) { + error("Resource ID was incorrect"); + } - if (! $this->course = get_record("course", "id", $this->cm->course)) { - error("Course is misconfigured"); - } + $this->strresource = get_string("modulename", "resource"); + $this->strresources = get_string("modulenameplural", "resource"); - if (! $this->resource = get_record("resource", "id", $this->cm->instance)) { - error("Resource ID was incorrect"); - } + $this->navlinks[] = array('name' => $this->strresources, 'link' => "index.php?id={$this->course->id}", 'type' => 'activity'); - $this->strresource = get_string("modulename", "resource"); - $this->strresources = get_string("modulenameplural", "resource"); + if (!$this->cm->visible and !has_capability('moodle/course:viewhiddenactivities', get_context_instance(CONTEXT_MODULE, $this->cm->id))) { + $pagetitle = strip_tags($this->course->shortname.': '.$this->strresource); + $this->navlinks[] = array('name' => $this->strresource, 'link' => '', 'type' => 'activityinstance'); + $this->navigation = build_navigation($this->navlinks); - $this->navlinks[] = array('name' => $this->strresources, 'link' => "index.php?id={$this->course->id}", 'type' => 'activity'); + print_header($pagetitle, $this->course->fullname, $this->navigation, "", "", true, '', navmenu($this->course, $this->cm)); + notice(get_string("activityiscurrentlyhidden"), "$CFG->wwwroot/course/view.php?id={$this->course->id}"); + } - if (!$this->cm->visible and !has_capability('moodle/course:viewhiddenactivities', get_context_instance(CONTEXT_MODULE, $this->cm->id))) { - $pagetitle = strip_tags($this->course->shortname.': '.$this->strresource); - $this->navlinks[] = array('name' => $this->strresource, 'link' => '', 'type' => 'activityinstance'); - $this->navigation = build_navigation($this->navlinks); - - print_header($pagetitle, $this->course->fullname, $this->navigation, "", "", true, '', navmenu($this->course, $this->cm)); - notice(get_string("activityiscurrentlyhidden"), "$CFG->wwwroot/course/view.php?id={$this->course->id}"); + } else { + $this->course = $COURSE; } - - } else { - $this->course = $COURSE; } -} -/** -* Display function does nothing in the base class -*/ -function display() { + /** + * Display function does nothing in the base class + */ + function display() { -} + } -/** -* Display the resource with the course blocks. -*/ -function display_course_blocks_start() { + /** + * Display the resource with the course blocks. + */ + function display_course_blocks_start() { - global $CFG; - global $USER; + global $CFG; + global $USER; - require_once($CFG->libdir.'/blocklib.php'); - require_once($CFG->libdir.'/pagelib.php'); - require_once($CFG->dirroot.'/course/lib.php'); //required by some blocks + require_once($CFG->libdir.'/blocklib.php'); + require_once($CFG->libdir.'/pagelib.php'); + require_once($CFG->dirroot.'/course/lib.php'); //required by some blocks - $PAGE = page_create_object(PAGE_COURSE_VIEW, $this->course->id); - $this->PAGE = $PAGE; - $pageblocks = blocks_setup($PAGE); + $PAGE = page_create_object(PAGE_COURSE_VIEW, $this->course->id); + $this->PAGE = $PAGE; + $pageblocks = blocks_setup($PAGE); - $blocks_preferred_width = bounded_number(180, blocks_preferred_width($pageblocks[BLOCK_POS_LEFT]), 210); + $blocks_preferred_width = bounded_number(180, blocks_preferred_width($pageblocks[BLOCK_POS_LEFT]), 210); -/// Print the page header + /// Print the page header - $edit = optional_param('edit', -1, PARAM_BOOL); + $edit = optional_param('edit', -1, PARAM_BOOL); - if (($edit != -1) and $PAGE->user_allowed_editing()) { - $USER->editing = $edit; - } + if (($edit != -1) and $PAGE->user_allowed_editing()) { + $USER->editing = $edit; + } - $morenavlinks = array($this->strresources => 'index.php?id='.$this->course->id, - $this->resource->name => ''); + $morenavlinks = array($this->strresources => 'index.php?id='.$this->course->id, + $this->resource->name => ''); - $PAGE->print_header($this->course->shortname.': %fullname%', $morenavlinks); + $PAGE->print_header($this->course->shortname.': %fullname%', $morenavlinks); - echo ''; + echo '
'; - if((blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $PAGE->user_is_editing())) { - echo ''; - } - - echo ''; + } -} + echo ''; + $PAGE = $this->PAGE; + $pageblocks = blocks_setup($PAGE); + $blocks_preferred_width = bounded_number(180, blocks_preferred_width($pageblocks[BLOCK_POS_RIGHT]), 210); - if((blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $PAGE->user_is_editing())) { - echo ''; - } - echo '
'; - if (!empty($THEME->customcorners)) print_custom_corners_start(); - blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT); - if (!empty($THEME->customcorners)) print_custom_corners_end(); - echo ''; - if (!empty($THEME->customcorners)) print_custom_corners_start(); - echo '
'; + if((blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $PAGE->user_is_editing())) { + echo '
'; + if (!empty($THEME->customcorners)) print_custom_corners_start(); + blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT); + if (!empty($THEME->customcorners)) print_custom_corners_end(); + echo ''; + if (!empty($THEME->customcorners)) print_custom_corners_start(); + echo '
'; + } -/** - * Finish displaying the resource with the course blocks - */ -function display_course_blocks_end() { - global $CFG; + /** + * Finish displaying the resource with the course blocks + */ + function display_course_blocks_end() { - $PAGE = $this->PAGE; - $pageblocks = blocks_setup($PAGE); - $blocks_preferred_width = bounded_number(180, blocks_preferred_width($pageblocks[BLOCK_POS_RIGHT]), 210); + global $CFG; - echo '
'; - if (!empty($THEME->customcorners)) print_custom_corners_end(); - echo '
'; - if (!empty($THEME->customcorners)) print_custom_corners_start(); - blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT); + echo ''; if (!empty($THEME->customcorners)) print_custom_corners_end(); echo '
'; + if((blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $PAGE->user_is_editing())) { + echo ''; + if (!empty($THEME->customcorners)) print_custom_corners_start(); + blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT); + if (!empty($THEME->customcorners)) print_custom_corners_end(); + echo ''; + } - print_footer($this->course); + echo ''; -} + print_footer($this->course); + } -function add_instance($resource) { -// Given an object containing all the necessary data, -// (defined by the form in mod.html) this function -// will create a new instance and return the id number -// of the new instance. - $resource->timemodified = time(); + function add_instance($resource) { + // Given an object containing all the necessary data, + // (defined by the form in mod.html) this function + // will create a new instance and return the id number + // of the new instance. - return insert_record("resource", $resource); -} + $resource->timemodified = time(); + return insert_record("resource", $resource); + } -function update_instance($resource) { -// Given an object containing all the necessary data, -// (defined by the form in mod.html) this function -// will update an existing instance with new data. - $resource->id = $resource->instance; - $resource->timemodified = time(); + function update_instance($resource) { + // Given an object containing all the necessary data, + // (defined by the form in mod.html) this function + // will update an existing instance with new data. - return update_record("resource", $resource); -} + $resource->id = $resource->instance; + $resource->timemodified = time(); + return update_record("resource", $resource); + } -function delete_instance($resource) { -// Given an object containing the resource data -// this function will permanently delete the instance -// and any data that depends on it. - $result = true; + function delete_instance($resource) { + // Given an object containing the resource data + // this function will permanently delete the instance + // and any data that depends on it. - if (! delete_records("resource", "id", "$resource->id")) { - $result = false; - } + $result = true; - return $result; -} + if (! delete_records("resource", "id", "$resource->id")) { + $result = false; + } -function setup_elements(&$mform) { - //override to add your own options -} + return $result; + } -function setup_preprocessing(&$default_values){ - //override to add your own options -} + function setup_elements(&$mform) { + //override to add your own options + } + + function setup_preprocessing(&$default_values){ + //override to add your own options + } } /// end of class definition diff --git a/mod/resource/type/file/resource.class.php b/mod/resource/type/file/resource.class.php dissimilarity index 96% index 6165e3d7a..2d164fa01 100644 --- a/mod/resource/type/file/resource.class.php +++ b/mod/resource/type/file/resource.class.php @@ -1,752 +1,774 @@ -parameters = array( - 'label2' => array('langstr' => "", - 'value' =>'/optgroup'), - 'label3' => array('langstr' => get_string('course'), - 'value' => 'optgroup'), - - 'courseid' => array('langstr' => 'id', - 'value' => $this->course->id), - 'coursefullname' => array('langstr' => get_string('fullname'), - 'value' => $this->course->fullname), - 'courseshortname' => array('langstr' => get_string('shortname'), - 'value' => $this->course->shortname), - 'courseidnumber' => array('langstr' => get_string('idnumbercourse'), - 'value' => $this->course->idnumber), - 'coursesummary' => array('langstr' => get_string('summary'), - 'value' => $this->course->summary), - 'courseformat' => array('langstr' => get_string('format'), - 'value' => $this->course->format), - 'courseteacher' => array('langstr' => get_string('wordforteacher'), - 'value' => $this->course->teacher), - 'courseteachers' => array('langstr' => get_string('wordforteachers'), - 'value' => $this->course->teachers), - 'coursestudent' => array('langstr' => get_string('wordforstudent'), - 'value' => $this->course->student), - 'coursestudents' => array('langstr' => get_string('wordforstudents'), - 'value' => $this->course->students), - - 'label4' => array('langstr' => "", - 'value' =>'/optgroup'), - 'label5' => array('langstr' => get_string('miscellaneous'), - 'value' => 'optgroup'), - - 'lang' => array('langstr' => get_string('preferredlanguage'), - 'value' => current_language()), - 'sitename' => array('langstr' => get_string('fullsitename'), - 'value' => format_string($site->fullname)), - 'serverurl' => array('langstr' => get_string('serverurl', 'resource', $CFG), - 'value' => $CFG->wwwroot), - 'currenttime' => array('langstr' => get_string('time'), - 'value' => time()), - 'encryptedcode' => array('langstr' => get_string('encryptedcode'), - 'value' => $this->set_encrypted_parameter()), - - 'label6' => array('langstr' => "", - 'value' =>'/optgroup') - ); - - if (!empty($USER->id)) { - - $userparameters = array( - - 'label1' => array('langstr' => get_string('user'), - 'value' => 'optgroup'), - - 'userid' => array('langstr' => 'id', - 'value' => $USER->id), - 'userusername' => array('langstr' => get_string('username'), - 'value' => $USER->username), - 'useridnumber' => array('langstr' => get_string('idnumber'), - 'value' => $USER->idnumber), - 'userfirstname' => array('langstr' => get_string('firstname'), - 'value' => $USER->firstname), - 'userlastname' => array('langstr' => get_string('lastname'), - 'value' => $USER->lastname), - 'userfullname' => array('langstr' => get_string('fullname'), - 'value' => fullname($USER)), - 'useremail' => array('langstr' => get_string('email'), - 'value' => $USER->email), - 'usericq' => array('langstr' => get_string('icqnumber'), - 'value' => $USER->icq), - 'userphone1' => array('langstr' => get_string('phone').' 1', - 'value' => $USER->phone1), - 'userphone2' => array('langstr' => get_string('phone').' 2', - 'value' => $USER->phone2), - 'userinstitution' => array('langstr' => get_string('institution'), - 'value' => $USER->institution), - 'userdepartment' => array('langstr' => get_string('department'), - 'value' => $USER->department), - 'useraddress' => array('langstr' => get_string('address'), - 'value' => $USER->address), - 'usercity' => array('langstr' => get_string('city'), - 'value' => $USER->city), - 'usertimezone' => array('langstr' => get_string('timezone'), - 'value' => get_user_timezone_offset()), - 'userurl' => array('langstr' => get_string('webpage'), - 'value' => $USER->url) - ); - - $this->parameters = $userparameters + $this->parameters; - } -} - -function add_instance($resource) { - $this->_postprocess($resource); - return parent::add_instance($resource); -} - - -function update_instance($resource) { - $this->_postprocess($resource); - return parent::update_instance($resource); -} - -function _postprocess(&$resource) { - global $RESOURCE_WINDOW_OPTIONS; - $alloptions = $RESOURCE_WINDOW_OPTIONS; - - if ($resource->windowpopup) { - $optionlist = array(); - foreach ($alloptions as $option) { - $optionlist[] = $option."=".$resource->$option; - unset($resource->$option); - } - $resource->popup = implode(',', $optionlist); - unset($resource->windowpopup); - $resource->options = ''; - - } else { - if (empty($resource->framepage)) { - $resource->options = ''; - } else { - $resource->options = 'frame'; - } - unset($resource->framepage); - $resource->popup = ''; - } - - $optionlist = array(); - for ($i = 0; $i < $this->maxparameters; $i++) { - $parametername = "parameter$i"; - $parsename = "parse$i"; - if (!empty($resource->$parsename) and $resource->$parametername != "-") { - $optionlist[] = $resource->$parametername."=".$resource->$parsename; - } - unset($resource->$parsename); - unset($resource->$parametername); - } - - $resource->alltext = implode(',', $optionlist); -} - - -/** -* Display the file resource -* -* Displays a file resource embedded, in a frame, or in a popup. -* Output depends on type of file resource. -* -* @param CFG global object -*/ -function display() { - global $CFG, $THEME, $USER; - -/// Set up generic stuff first, including checking for access - parent::display(); - -/// Set up some shorthand variables - $cm = $this->cm; - $course = $this->course; - $resource = $this->resource; - - - $this->set_parameters(); // set the parameters array - -/////////////////////////////////////////////// - - /// Possible display modes are: - /// File displayed in a frame in a normal window - /// File displayed embedded in a normal page - /// File displayed in a popup window - /// File displayed emebedded in a popup window - - - /// First, find out what sort of file we are dealing with. - require_once($CFG->libdir.'/filelib.php'); - - $querystring = ''; - $resourcetype = ''; - $embedded = false; - $mimetype = mimeinfo("type", $resource->reference); - $pagetitle = strip_tags($course->shortname.': '.format_string($resource->name)); - - $formatoptions = new object(); - $formatoptions->noclean = true; - - if ($resource->options != "bogusoption_usedtobe_frame") { // TODO nicolasconnault 14-03-07: This option should be renamed "embed" - if (in_array($mimetype, array('image/gif','image/jpeg','image/png'))) { // It's an image - $resourcetype = "image"; - $embedded = true; - - } else if ($mimetype == "audio/mp3") { // It's an MP3 audio file - $resourcetype = "mp3"; - $embedded = true; - - } else if ($mimetype == "video/x-flv") { // It's a Flash video file - $resourcetype = "flv"; - $embedded = true; - - } else if (substr($mimetype, 0, 10) == "video/x-ms") { // It's a Media Player file - $resourcetype = "mediaplayer"; - $embedded = true; - - } else if ($mimetype == "video/quicktime") { // It's a Quicktime file - $resourcetype = "quicktime"; - $embedded = true; - - } else if ($mimetype == "application/x-shockwave-flash") { // It's a Flash file - $resourcetype = "flash"; - $embedded = true; - - } else if ($mimetype == "video/mpeg") { // It's a Mpeg file - $resourcetype = "mpeg"; - $embedded = true; - - } else if ($mimetype == "text/html") { // It's a web page - $resourcetype = "html"; - - } else if ($mimetype == "application/zip") { // It's a zip archive - $resourcetype = "zip"; - $embedded = true; - - } else if ($mimetype == 'application/pdf' || $mimetype == 'application/x-pdf') { - $resourcetype = "pdf"; - $embedded = true; - } - } - - $isteamspeak = (stripos($resource->reference, 'teamspeak://') === 0); - -/// Form the parse string - if (!empty($resource->alltext)) { - $querys = array(); - $parray = explode(',', $resource->alltext); - foreach ($parray as $fieldstring) { - $field = explode('=', $fieldstring); - $querys[] = urlencode($field[1]).'='.urlencode($this->parameters[$field[0]]['value']); - } - if ($isteamspeak) { - $querystring = implode('?', $querys); - } else { - $querystring = implode('&', $querys); - } - } - - - /// Set up some variables - - $inpopup = optional_param('inpopup', 0, PARAM_BOOL); - - if (resource_is_url($resource->reference)) { - $fullurl = $resource->reference; - if (!empty($querystring)) { - $urlpieces = parse_url($resource->reference); - if (empty($urlpieces['query']) or $isteamspeak) { - $fullurl .= '?'.$querystring; - } else { - $fullurl .= '&'.$querystring; - } - } - - } else if ($CFG->resource_allowlocalfiles and (strpos($resource->reference, RESOURCE_LOCALPATH) === 0)) { // Localpath - $localpath = get_user_preferences('resource_localpath', 'D:'); - $relativeurl = str_replace(RESOURCE_LOCALPATH, $localpath, $resource->reference); - - if ($querystring) { - $relativeurl .= '?'.$querystring; - } - - $relativeurl = str_replace('\\', '/', $relativeurl); - $relativeurl = str_replace(' ', '%20', $relativeurl); - $fullurl = 'file:///'.htmlentities($relativeurl); - $localpath = true; - - } else { // Normal uploaded file - if ($CFG->slasharguments) { - $relativeurl = "/file.php/{$course->id}/{$resource->reference}"; - if ($querystring) { - $relativeurl .= '?'.$querystring; - } - } else { - $relativeurl = "/file.php?file=/{$course->id}/{$resource->reference}"; - if ($querystring) { - $relativeurl .= '&'.$querystring; - } - } - $fullurl = "$CFG->wwwroot$relativeurl"; - } - - /// Print a notice and redirect if we are trying to access a file on a local file system - /// and the config setting has been disabled - if (!$CFG->resource_allowlocalfiles and (strpos($resource->reference, RESOURCE_LOCALPATH) === 0)) { - if ($inpopup) { - print_header($pagetitle, $course->fullname); - } else { - print_header($pagetitle, $course->fullname, "$this->navigation ".format_string($resource->name), "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm)); - } - notify(get_string('notallowedlocalfileaccess', 'resource', '')); - if ($inpopup) { - close_window_button(); - } - print_footer('none'); - die; - } - - - /// Check whether this is supposed to be a popup, but was called directly - if ($resource->popup and !$inpopup) { /// Make a page and a pop-up window - - print_header($pagetitle, $course->fullname, "$this->navigation ".format_string($resource->name), "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm)); - - - echo "\n'; - - if (trim(strip_tags($resource->summary))) { - print_simple_box(format_text($resource->summary, FORMAT_MOODLE, $formatoptions), "center"); - } - - $link = "wwwroot/mod/resource/view.php?inpopup=true&id={$cm->id}\" onclick=\"this.target='resource{$resource->id}'; return openpopup('/mod/resource/view.php?inpopup=true&id={$cm->id}', 'resource{$resource->id}','{$resource->popup}');\">".format_string($resource->name,true).""; - - echo '
'; - print_string('popupresource', 'resource'); - echo '
'; - print_string('popupresourcelink', 'resource', $link); - echo '
'; - - print_footer($course); - exit; - } - - - /// Now check whether we need to display a frameset - - $frameset = optional_param('frameset', '', PARAM_ALPHA); - if (empty($frameset) and !$embedded and !$inpopup and ($resource->options == "frame") and empty($USER->screenreader)) { - @header('Content-Type: text/html; charset=utf-8'); - echo "\n"; - echo "\n"; - echo ''; - echo ''; - echo "" . format_string($course->shortname) . ": ".strip_tags(format_string($resource->name,true))."\n"; - echo "resource_framesize,*\">"; - echo "id}&type={$resource->type}&frameset=top\" title=\"".get_string('modulename','resource')."\"/>"; - if (!empty($localpath)) { // Show it like this so we interpose some HTML - echo "id}&type={$resource->type}&inpopup=true\" title=\"".get_string('modulename','resource')."\"/>"; - } else { - echo ""; - } - echo ""; - echo ""; - exit; - } - - - /// We can only get here once per resource, so add an entry to the log - - add_to_log($course->id, "resource", "view", "view.php?id={$cm->id}", $resource->id, $cm->id); - - - /// If we are in a frameset, just print the top of it - - if (!empty( $frameset ) and ($frameset == "top") ) { - - print_header($pagetitle, $course->fullname, "$this->navigation ".format_string($resource->name), "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm, "parent")); - - $options = new object(); - $options->para = false; - echo '
'.format_text($resource->summary, FORMAT_HTML, $options).'
'; - if (!empty($localpath)) { // Show some help - echo ''; - } - echo ''; - exit; - } - - - /// Display the actual resource - if ($embedded) { // Display resource embedded in page - $strdirectlink = get_string("directlink", "resource"); - - if ($inpopup) { - print_header($pagetitle); - } else { - print_header_simple($pagetitle, '', "$this->navigation frametarget title=\"$strdirectlink\" href=\"$fullurl\"> ".format_string($resource->name,true)."", "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm, "self")); - - } - - if ($resourcetype == "image") { - echo '
'; - echo "name,true))."\" class=\"resourceimage\" src=\"$fullurl\" alt=\"\" />"; - echo '
'; - - } else if ($resourcetype == "mp3") { - if (!empty($THEME->resource_mp3player_colors)) { - $c = $THEME->resource_mp3player_colors; // You can set this up in your theme/xxx/config.php - } else { - $c = 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. - 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. - 'font=Arial&fontColour=FF33FF&buffer=10&waitForPlay=no&autoPlay=yes'; - } - $c .= '&volText='.get_string('vol', 'resource').'&panText='.get_string('pan','resource'); - $c = htmlentities($c); - $id = 'filter_mp3_'.time(); //we need something unique because it might be stored in text cache - $cleanurl = addslashes_js($fullurl); - - - // If we have Javascript, use UFO to embed the MP3 player, otherwise depend on plugins - - echo '
'; - - echo ''. - ''."\n"; - - echo ''; - echo '
'; - - } else if ($resourcetype == "flv") { - $id = 'filter_flv_'.time(); //we need something unique because it might be stored in text cache - $cleanurl = addslashes_js($fullurl); - - - // If we have Javascript, use UFO to embed the FLV player, otherwise depend on plugins - - echo '
'; - - echo ''. - ''."\n"; - - echo ''; - echo '
'; - - } else if ($resourcetype == "mediaplayer") { - echo '
'; - echo ''; - echo ''; - echo ''; - echo ""; - echo ''; - echo "$fullurl"; - echo ''; - echo '
'; - - } else if ($resourcetype == "mpeg") { - echo '
'; - echo ''; - echo ""; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ""; - echo "$fullurl"; - echo ''; - echo '' . $fullurl . ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
'; - - } else if ($resourcetype == "quicktime") { - echo ''; - echo '
'; - - echo ''; - echo ""; - echo ''; - echo ''; - echo ''; - echo ''; - - echo ""; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '' . $fullurl . ''; - echo ''; - echo '
'; - } else if ($resourcetype == "flash") { - echo '
'; - echo ''; - echo ""; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ""; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '' . $fullurl . ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
'; - - } elseif ($resourcetype == 'zip') { - echo '
'; - echo get_string('clicktoopen', 'resource') . '' . format_string($resource->name) . ''; - echo '
'; - - } elseif ($resourcetype == 'pdf') { - echo '
'; - echo ''; - echo get_string('clicktoopen', 'resource') . '' . format_string($resource->name) . ''; - echo ''; - echo '
'; - } - - if (trim($resource->summary)) { - print_simple_box(format_text($resource->summary, FORMAT_MOODLE, $formatoptions, $course->id), "center"); - } - - if ($inpopup) { - echo "
($strdirectlink)
"; - } else { - print_spacer(20,20); - print_footer($course); - } - - } else { // Display the resource on it's own - if (!empty($localpath)) { // Show a link to help work around browser security - echo ''; - echo "
($fullurl)
"; - } - redirect($fullurl); - } - -} - - -//backwards compatible with existing resources -function set_encrypted_parameter() { - global $CFG; - - if (!empty($this->resource->reference) && file_exists($CFG->dirroot ."/mod/resource/type/file/externserverfile.php")) { - include $CFG->dirroot ."/mod/resource/type/file/externserverfile.php"; - if (function_exists(extern_server_file)) { - return extern_server_file($this->resource->reference); - } - } - return md5($_SERVER['REMOTE_ADDR'].$CFG->resource_secretphrase); -} - -function setup_preprocessing(&$defaults){ - - if (!isset($defaults['popup'])) { - // use form defaults - - } else if (!empty($defaults['popup'])) { - $defaults['windowpopup'] = 1; - if (array_key_exists('popup', $defaults)) { - $rawoptions = explode(',', $defaults['popup']); - foreach ($rawoptions as $rawoption) { - $option = explode('=', trim($rawoption)); - $defaults[$option[0]] = $option[1]; - } - } - } else { - $defaults['windowpopup'] = 0; - if (array_key_exists('options', $defaults)) { - $defaults['framepage'] = ($defaults['options']=='frame'); - } - } - /// load up any stored parameters - if (!empty($defaults['alltext'])) { - $parray = explode(',', $defaults['alltext']); - $i=0; - foreach ($parray as $rawpar) { - list($param, $varname) = explode('=', $rawpar); - $defaults["parse$i"] = $varname; - $defaults["parameter$i"] = $param; - $i++; - } - } -} - -function setup_elements(&$mform) { - global $CFG, $RESOURCE_WINDOW_OPTIONS; - - $this->set_parameters(); // set the parameter array for the form - - $mform->addElement('choosecoursefile', 'reference', get_string('location')); - $mform->setDefault('reference', $CFG->resource_defaulturl); - $mform->addRule('name', null, 'required', null, 'client'); - - if (!empty($CFG->resource_websearch)) { - $searchbutton = $mform->addElement('button', 'searchbutton', get_string('searchweb', 'resource').'...'); - $buttonattributes = array('title'=>get_string('localfilechoose', 'resource'), 'onclick'=>"return window.open('$CFG->resource_websearch', 'websearch', 'menubar=1,location=1,directories=1,toolbar=1,scrollbars,resizable,width=800,height=600');"); - $searchbutton->updateAttributes($buttonattributes); - } - - if (!empty($CFG->resource_allowlocalfiles)) { - $lfbutton = $mform->addElement('button', 'localfilesbutton', get_string('localfilechoose', 'resource').'...'); - $options = 'menubar=0,location=0,scrollbars,resizable,width=600,height=400'; - $url = '/mod/resource/type/file/localfile.php?choose=id_reference_value'; - $buttonattributes = array('title'=>get_string('localfilechoose', 'resource'), 'onclick'=>"return openpopup('$url', '".$lfbutton->getName()."', '$options', 0);"); - $lfbutton->updateAttributes($buttonattributes); - } - - $mform->addElement('header', 'displaysettings', get_string('display', 'resource')); - - $woptions = array(0 => get_string('pagewindow', 'resource'), 1 => get_string('newwindow', 'resource')); - $mform->addElement('select', 'windowpopup', get_string('display', 'resource'), $woptions); - $mform->setDefault('windowpopup', !empty($CFG->resource_popup)); - - $mform->addElement('checkbox', 'framepage', get_string('keepnavigationvisible', 'resource')); - - $mform->setHelpButton('framepage', array('frameifpossible', get_string('keepnavigationvisible', 'resource'), 'resource')); - $mform->setDefault('framepage', 0); - $mform->disabledIf('framepage', 'windowpopup', 'eq', 1); - $mform->setAdvanced('framepage'); - - foreach ($RESOURCE_WINDOW_OPTIONS as $option) { - if ($option == 'height' or $option == 'width') { - $mform->addElement('text', $option, get_string('new'.$option, 'resource'), array('size'=>'4')); - $mform->setDefault($option, $CFG->{'resource_popup'.$option}); - $mform->disabledIf($option, 'windowpopup', 'eq', 0); - } else { - $mform->addElement('checkbox', $option, get_string('new'.$option, 'resource')); - $mform->setDefault($option, $CFG->{'resource_popup'.$option}); - $mform->disabledIf($option, 'windowpopup', 'eq', 0); - } - $mform->setAdvanced($option); - } - - $mform->addElement('header', 'parameters', get_string('parameters', 'resource')); - - $options = array(); - $options['-'] = get_string('chooseparameter', 'resource').'...'; - $optgroup = ''; - foreach ($this->parameters as $pname=>$param) { - if ($param['value']=='/optgroup') { - $optgroup = ''; - continue; - } - if ($param['value']=='optgroup') { - $optgroup = $param['langstr']; - continue; - } - $options[$pname] = $optgroup.' - '.$param['langstr']; - } - - for ($i = 0; $i < $this->maxparameters; $i++) { - $parametername = "parameter$i"; - $parsename = "parse$i"; - $group = array(); - $group[] =& $mform->createElement('text', $parsename, '', array('size'=>'12'));//TODO: accessiblity - $group[] =& $mform->createElement('select', $parametername, '', $options);//TODO: accessiblity - $mform->addGroup($group, 'pargroup'.$i, get_string('variablename', 'resource').'='.get_string('parameter', 'resource'), ' ', false); - $mform->setAdvanced('pargroup'.$i); - - $mform->setDefault($parametername, '-'); - } -} - -} - -?> +parameters = array( + 'label2' => array('langstr' => "", + 'value' =>'/optgroup'), + 'label3' => array('langstr' => get_string('course'), + 'value' => 'optgroup'), + + 'courseid' => array('langstr' => 'id', + 'value' => $this->course->id), + 'coursefullname' => array('langstr' => get_string('fullname'), + 'value' => $this->course->fullname), + 'courseshortname' => array('langstr' => get_string('shortname'), + 'value' => $this->course->shortname), + 'courseidnumber' => array('langstr' => get_string('idnumbercourse'), + 'value' => $this->course->idnumber), + 'coursesummary' => array('langstr' => get_string('summary'), + 'value' => $this->course->summary), + 'courseformat' => array('langstr' => get_string('format'), + 'value' => $this->course->format), + 'courseteacher' => array('langstr' => get_string('wordforteacher'), + 'value' => $this->course->teacher), + 'courseteachers' => array('langstr' => get_string('wordforteachers'), + 'value' => $this->course->teachers), + 'coursestudent' => array('langstr' => get_string('wordforstudent'), + 'value' => $this->course->student), + 'coursestudents' => array('langstr' => get_string('wordforstudents'), + 'value' => $this->course->students), + + 'label4' => array('langstr' => "", + 'value' =>'/optgroup'), + 'label5' => array('langstr' => get_string('miscellaneous'), + 'value' => 'optgroup'), + + 'lang' => array('langstr' => get_string('preferredlanguage'), + 'value' => current_language()), + 'sitename' => array('langstr' => get_string('fullsitename'), + 'value' => format_string($site->fullname)), + 'serverurl' => array('langstr' => get_string('serverurl', 'resource', $CFG), + 'value' => $CFG->wwwroot), + 'currenttime' => array('langstr' => get_string('time'), + 'value' => time()), + 'encryptedcode' => array('langstr' => get_string('encryptedcode'), + 'value' => $this->set_encrypted_parameter()), + + 'label6' => array('langstr' => "", + 'value' =>'/optgroup') + ); + + if (!empty($USER->id)) { + + $userparameters = array( + + 'label1' => array('langstr' => get_string('user'), + 'value' => 'optgroup'), + + 'userid' => array('langstr' => 'id', + 'value' => $USER->id), + 'userusername' => array('langstr' => get_string('username'), + 'value' => $USER->username), + 'useridnumber' => array('langstr' => get_string('idnumber'), + 'value' => $USER->idnumber), + 'userfirstname' => array('langstr' => get_string('firstname'), + 'value' => $USER->firstname), + 'userlastname' => array('langstr' => get_string('lastname'), + 'value' => $USER->lastname), + 'userfullname' => array('langstr' => get_string('fullname'), + 'value' => fullname($USER)), + 'useremail' => array('langstr' => get_string('email'), + 'value' => $USER->email), + 'usericq' => array('langstr' => get_string('icqnumber'), + 'value' => $USER->icq), + 'userphone1' => array('langstr' => get_string('phone').' 1', + 'value' => $USER->phone1), + 'userphone2' => array('langstr' => get_string('phone').' 2', + 'value' => $USER->phone2), + 'userinstitution' => array('langstr' => get_string('institution'), + 'value' => $USER->institution), + 'userdepartment' => array('langstr' => get_string('department'), + 'value' => $USER->department), + 'useraddress' => array('langstr' => get_string('address'), + 'value' => $USER->address), + 'usercity' => array('langstr' => get_string('city'), + 'value' => $USER->city), + 'usertimezone' => array('langstr' => get_string('timezone'), + 'value' => get_user_timezone_offset()), + 'userurl' => array('langstr' => get_string('webpage'), + 'value' => $USER->url) + ); + + $this->parameters = $userparameters + $this->parameters; + } + } + + function add_instance($resource) { + $this->_postprocess($resource); + return parent::add_instance($resource); + } + + + function update_instance($resource) { + $this->_postprocess($resource); + return parent::update_instance($resource); + } + + function _postprocess(&$resource) { + global $RESOURCE_WINDOW_OPTIONS; + $alloptions = $RESOURCE_WINDOW_OPTIONS; + + if ($resource->windowpopup) { + $optionlist = array(); + foreach ($alloptions as $option) { + $optionlist[] = $option."=".$resource->$option; + unset($resource->$option); + } + $resource->popup = implode(',', $optionlist); + unset($resource->windowpopup); + $resource->options = ''; + + } else { + if (empty($resource->framepage)) { + $resource->options = ''; + } else { + $resource->options = 'frame'; + } + unset($resource->framepage); + $resource->popup = ''; + } + + $optionlist = array(); + for ($i = 0; $i < $this->maxparameters; $i++) { + $parametername = "parameter$i"; + $parsename = "parse$i"; + if (!empty($resource->$parsename) and $resource->$parametername != "-") { + $optionlist[] = $resource->$parametername."=".$resource->$parsename; + } + unset($resource->$parsename); + unset($resource->$parametername); + } + + $resource->alltext = implode(',', $optionlist); + } + + + /** + * Display the file resource + * + * Displays a file resource embedded, in a frame, or in a popup. + * Output depends on type of file resource. + * + * @param CFG global object + */ + function display() { + global $CFG, $THEME, $USER; + + /// Set up generic stuff first, including checking for access + parent::display(); + + /// Set up some shorthand variables + $cm = $this->cm; + $course = $this->course; + $resource = $this->resource; + + + $this->set_parameters(); // set the parameters array + + /////////////////////////////////////////////// + + /// Possible display modes are: + /// File displayed in a frame in a normal window + /// File displayed embedded in a normal page + /// File displayed in a popup window + /// File displayed emebedded in a popup window + + + /// First, find out what sort of file we are dealing with. + require_once($CFG->libdir.'/filelib.php'); + + $querystring = ''; + $resourcetype = ''; + $embedded = false; + $mimetype = mimeinfo("type", $resource->reference); + $pagetitle = strip_tags($course->shortname.': '.format_string($resource->name)); + + $formatoptions = new object(); + $formatoptions->noclean = true; + + if ($resource->options != "bogusoption_usedtobe_frame") { // TODO nicolasconnault 14-03-07: This option should be renamed "embed" + if (in_array($mimetype, array('image/gif','image/jpeg','image/png'))) { // It's an image + $resourcetype = "image"; + $embedded = true; + + } else if ($mimetype == "audio/mp3") { // It's an MP3 audio file + $resourcetype = "mp3"; + $embedded = true; + + } else if ($mimetype == "video/x-flv") { // It's a Flash video file + $resourcetype = "flv"; + $embedded = true; + + } else if (substr($mimetype, 0, 10) == "video/x-ms") { // It's a Media Player file + $resourcetype = "mediaplayer"; + $embedded = true; + + } else if ($mimetype == "video/quicktime") { // It's a Quicktime file + $resourcetype = "quicktime"; + $embedded = true; + + } else if ($mimetype == "application/x-shockwave-flash") { // It's a Flash file + $resourcetype = "flash"; + $embedded = true; + + } else if ($mimetype == "video/mpeg") { // It's a Mpeg file + $resourcetype = "mpeg"; + $embedded = true; + + } else if ($mimetype == "text/html") { // It's a web page + $resourcetype = "html"; + + } else if ($mimetype == "application/zip") { // It's a zip archive + $resourcetype = "zip"; + $embedded = true; + + } else if ($mimetype == 'application/pdf' || $mimetype == 'application/x-pdf') { + $resourcetype = "pdf"; + $embedded = true; + } + } + + $isteamspeak = (stripos($resource->reference, 'teamspeak://') === 0); + + /// Form the parse string + if (!empty($resource->alltext)) { + $querys = array(); + $parray = explode(',', $resource->alltext); + foreach ($parray as $fieldstring) { + $field = explode('=', $fieldstring); + $querys[] = urlencode($field[1]).'='.urlencode($this->parameters[$field[0]]['value']); + } + if ($isteamspeak) { + $querystring = implode('?', $querys); + } else { + $querystring = implode('&', $querys); + } + } + + + /// Set up some variables + + $inpopup = optional_param('inpopup', 0, PARAM_BOOL); + + if (resource_is_url($resource->reference)) { + $fullurl = $resource->reference; + if (!empty($querystring)) { + $urlpieces = parse_url($resource->reference); + if (empty($urlpieces['query']) or $isteamspeak) { + $fullurl .= '?'.$querystring; + } else { + $fullurl .= '&'.$querystring; + } + } + + } else if ($CFG->resource_allowlocalfiles and (strpos($resource->reference, RESOURCE_LOCALPATH) === 0)) { // Localpath + $localpath = get_user_preferences('resource_localpath', 'D:'); + $relativeurl = str_replace(RESOURCE_LOCALPATH, $localpath, $resource->reference); + + if ($querystring) { + $relativeurl .= '?'.$querystring; + } + + $relativeurl = str_replace('\\', '/', $relativeurl); + $relativeurl = str_replace(' ', '%20', $relativeurl); + $fullurl = 'file:///'.htmlentities($relativeurl); + $localpath = true; + + } else { // Normal uploaded file + if ($CFG->slasharguments) { + $relativeurl = "/file.php/{$course->id}/{$resource->reference}"; + if ($querystring) { + $relativeurl .= '?'.$querystring; + } + } else { + $relativeurl = "/file.php?file=/{$course->id}/{$resource->reference}"; + if ($querystring) { + $relativeurl .= '&'.$querystring; + } + } + $fullurl = "$CFG->wwwroot$relativeurl"; + } + + /// Print a notice and redirect if we are trying to access a file on a local file system + /// and the config setting has been disabled + if (!$CFG->resource_allowlocalfiles and (strpos($resource->reference, RESOURCE_LOCALPATH) === 0)) { + if ($inpopup) { + print_header($pagetitle, $course->fullname); + } else { + $this->navlinks[] = array('name' => format_string($resource->name), 'link' => null, 'type' => 'misc'); + $this->navigation = build_navigation($this->navlinks); + print_header($pagetitle, $course->fullname, $this->navigation, + "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm)); + } + notify(get_string('notallowedlocalfileaccess', 'resource', '')); + if ($inpopup) { + close_window_button(); + } + print_footer('none'); + die; + } + + + /// Check whether this is supposed to be a popup, but was called directly + if ($resource->popup and !$inpopup) { /// Make a page and a pop-up window + $this->navlinks[] = array('name' => format_string($resource->name), 'link' => null, 'type' => 'misc'); + $this->navigation = build_navigation($this->navlinks); + + print_header($pagetitle, $course->fullname, $this->navigation, + "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm)); + + + echo "\n'; + + if (trim(strip_tags($resource->summary))) { + print_simple_box(format_text($resource->summary, FORMAT_MOODLE, $formatoptions), "center"); + } + + $link = "wwwroot/mod/resource/view.php?inpopup=true&id={$cm->id}\" " + . "onclick=\"this.target='resource{$resource->id}'; return openpopup('/mod/resource/view.php?inpopup=true&id={$cm->id}', " + . "'resource{$resource->id}','{$resource->popup}');\">".format_string($resource->name,true).""; + + echo '
'; + print_string('popupresource', 'resource'); + echo '
'; + print_string('popupresourcelink', 'resource', $link); + echo '
'; + + print_footer($course); + exit; + } + + + /// Now check whether we need to display a frameset + + $frameset = optional_param('frameset', '', PARAM_ALPHA); + if (empty($frameset) and !$embedded and !$inpopup and ($resource->options == "frame") and empty($USER->screenreader)) { + @header('Content-Type: text/html; charset=utf-8'); + echo "\n"; + echo "\n"; + echo ''; + echo ''; + echo "" . format_string($course->shortname) . ": ".strip_tags(format_string($resource->name,true))."\n"; + echo "resource_framesize,*\">"; + echo "id}&type={$resource->type}&frameset=top\" title=\"" + . get_string('modulename','resource')."\"/>"; + if (!empty($localpath)) { // Show it like this so we interpose some HTML + echo "id}&type={$resource->type}&inpopup=true\" title=\"". + get_string('modulename','resource')."\"/>"; + } else { + echo ""; + } + echo ""; + echo ""; + exit; + } + + + /// We can only get here once per resource, so add an entry to the log + + add_to_log($course->id, "resource", "view", "view.php?id={$cm->id}", $resource->id, $cm->id); + + + /// If we are in a frameset, just print the top of it + + if (!empty( $frameset ) and ($frameset == "top") ) { + $this->navlinks[] = array('name' => format_string($resource->name), 'link' => null, 'type' => 'misc'); + $this->navigation = build_navigation($this->navlinks); + print_header($pagetitle, $course->fullname, $this->navigation, + "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm, "parent")); + + $options = new object(); + $options->para = false; + echo '
'.format_text($resource->summary, FORMAT_HTML, $options).'
'; + if (!empty($localpath)) { // Show some help + echo ''; + } + echo ''; + exit; + } + + + /// Display the actual resource + if ($embedded) { // Display resource embedded in page + $strdirectlink = get_string("directlink", "resource"); + + if ($inpopup) { + print_header($pagetitle); + } else { + $this->navlinks[] = array('name' => format_string($resource->name, true), + 'link' => $fullurl, + 'type' => 'misc'); + $this->navigation = build_navigation($this->navlinks); + print_header_simple($pagetitle, '', $this->navigation, "", "", true, + update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm, "self")); + + } + + if ($resourcetype == "image") { + echo '
'; + echo "name,true))."\" class=\"resourceimage\" src=\"$fullurl\" alt=\"\" />"; + echo '
'; + + } else if ($resourcetype == "mp3") { + if (!empty($THEME->resource_mp3player_colors)) { + $c = $THEME->resource_mp3player_colors; // You can set this up in your theme/xxx/config.php + } else { + $c = 'bgColour=000000&btnColour=ffffff&btnBorderColour=cccccc&iconColour=000000&'. + 'iconOverColour=00cc00&trackColour=cccccc&handleColour=ffffff&loaderColour=ffffff&'. + 'font=Arial&fontColour=FF33FF&buffer=10&waitForPlay=no&autoPlay=yes'; + } + $c .= '&volText='.get_string('vol', 'resource').'&panText='.get_string('pan','resource'); + $c = htmlentities($c); + $id = 'filter_mp3_'.time(); //we need something unique because it might be stored in text cache + $cleanurl = addslashes_js($fullurl); + + + // If we have Javascript, use UFO to embed the MP3 player, otherwise depend on plugins + + echo '
'; + + echo ''. + ''."\n"; + + echo ''; + echo '
'; + + } else if ($resourcetype == "flv") { + $id = 'filter_flv_'.time(); //we need something unique because it might be stored in text cache + $cleanurl = addslashes_js($fullurl); + + + // If we have Javascript, use UFO to embed the FLV player, otherwise depend on plugins + + echo '
'; + + echo ''. + ''."\n"; + + echo ''; + echo '
'; + + } else if ($resourcetype == "mediaplayer") { + echo '
'; + echo ''; + echo ''; + echo ''; + echo ""; + echo ''; + echo "$fullurl"; + echo ''; + echo '
'; + + } else if ($resourcetype == "mpeg") { + echo '
'; + echo ''; + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ""; + echo "$fullurl"; + echo ''; + echo '' . $fullurl . ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo '
'; + + } else if ($resourcetype == "quicktime") { + echo ''; + echo '
'; + + echo ''; + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo '' . $fullurl . ''; + echo ''; + echo '
'; + } else if ($resourcetype == "flash") { + echo '
'; + echo ''; + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo '' . $fullurl . ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo '
'; + + } elseif ($resourcetype == 'zip') { + echo '
'; + echo get_string('clicktoopen', 'resource') . '' . format_string($resource->name) . ''; + echo '
'; + + } elseif ($resourcetype == 'pdf') { + echo '
'; + echo ''; + echo get_string('clicktoopen', 'resource') . '' . format_string($resource->name) . ''; + echo ''; + echo '
'; + } + + if (trim($resource->summary)) { + print_simple_box(format_text($resource->summary, FORMAT_MOODLE, $formatoptions, $course->id), "center"); + } + + if ($inpopup) { + echo "
($strdirectlink)
"; + } else { + print_spacer(20,20); + print_footer($course); + } + + } else { // Display the resource on it's own + if (!empty($localpath)) { // Show a link to help work around browser security + echo ''; + echo "
($fullurl)
"; + } + redirect($fullurl); + } + + } + + + //backwards compatible with existing resources + function set_encrypted_parameter() { + global $CFG; + + if (!empty($this->resource->reference) && file_exists($CFG->dirroot ."/mod/resource/type/file/externserverfile.php")) { + include $CFG->dirroot ."/mod/resource/type/file/externserverfile.php"; + if (function_exists(extern_server_file)) { + return extern_server_file($this->resource->reference); + } + } + return md5($_SERVER['REMOTE_ADDR'].$CFG->resource_secretphrase); + } + + function setup_preprocessing(&$defaults){ + + if (!isset($defaults['popup'])) { + // use form defaults + + } else if (!empty($defaults['popup'])) { + $defaults['windowpopup'] = 1; + if (array_key_exists('popup', $defaults)) { + $rawoptions = explode(',', $defaults['popup']); + foreach ($rawoptions as $rawoption) { + $option = explode('=', trim($rawoption)); + $defaults[$option[0]] = $option[1]; + } + } + } else { + $defaults['windowpopup'] = 0; + if (array_key_exists('options', $defaults)) { + $defaults['framepage'] = ($defaults['options']=='frame'); + } + } + /// load up any stored parameters + if (!empty($defaults['alltext'])) { + $parray = explode(',', $defaults['alltext']); + $i=0; + foreach ($parray as $rawpar) { + list($param, $varname) = explode('=', $rawpar); + $defaults["parse$i"] = $varname; + $defaults["parameter$i"] = $param; + $i++; + } + } + } + + function setup_elements(&$mform) { + global $CFG, $RESOURCE_WINDOW_OPTIONS; + + $this->set_parameters(); // set the parameter array for the form + + $mform->addElement('choosecoursefile', 'reference', get_string('location')); + $mform->setDefault('reference', $CFG->resource_defaulturl); + $mform->addRule('name', null, 'required', null, 'client'); + + if (!empty($CFG->resource_websearch)) { + $searchbutton = $mform->addElement('button', 'searchbutton', get_string('searchweb', 'resource').'...'); + $buttonattributes = array('title'=>get_string('localfilechoose', 'resource'), 'onclick'=>"return window.open('" + . "$CFG->resource_websearch', 'websearch', 'menubar=1,location=1,directories=1,toolbar=1," + . "scrollbars,resizable,width=800,height=600');"); + $searchbutton->updateAttributes($buttonattributes); + } + + if (!empty($CFG->resource_allowlocalfiles)) { + $lfbutton = $mform->addElement('button', 'localfilesbutton', get_string('localfilechoose', 'resource').'...'); + $options = 'menubar=0,location=0,scrollbars,resizable,width=600,height=400'; + $url = '/mod/resource/type/file/localfile.php?choose=id_reference_value'; + $buttonattributes = array('title'=>get_string('localfilechoose', 'resource'), 'onclick'=>"return openpopup('$url', '" + . $lfbutton->getName()."', '$options', 0);"); + $lfbutton->updateAttributes($buttonattributes); + } + + $mform->addElement('header', 'displaysettings', get_string('display', 'resource')); + + $woptions = array(0 => get_string('pagewindow', 'resource'), 1 => get_string('newwindow', 'resource')); + $mform->addElement('select', 'windowpopup', get_string('display', 'resource'), $woptions); + $mform->setDefault('windowpopup', !empty($CFG->resource_popup)); + + $mform->addElement('checkbox', 'framepage', get_string('keepnavigationvisible', 'resource')); + + $mform->setHelpButton('framepage', array('frameifpossible', get_string('keepnavigationvisible', 'resource'), 'resource')); + $mform->setDefault('framepage', 0); + $mform->disabledIf('framepage', 'windowpopup', 'eq', 1); + $mform->setAdvanced('framepage'); + + foreach ($RESOURCE_WINDOW_OPTIONS as $option) { + if ($option == 'height' or $option == 'width') { + $mform->addElement('text', $option, get_string('new'.$option, 'resource'), array('size'=>'4')); + $mform->setDefault($option, $CFG->{'resource_popup'.$option}); + $mform->disabledIf($option, 'windowpopup', 'eq', 0); + } else { + $mform->addElement('checkbox', $option, get_string('new'.$option, 'resource')); + $mform->setDefault($option, $CFG->{'resource_popup'.$option}); + $mform->disabledIf($option, 'windowpopup', 'eq', 0); + } + $mform->setAdvanced($option); + } + + $mform->addElement('header', 'parameters', get_string('parameters', 'resource')); + + $options = array(); + $options['-'] = get_string('chooseparameter', 'resource').'...'; + $optgroup = ''; + foreach ($this->parameters as $pname=>$param) { + if ($param['value']=='/optgroup') { + $optgroup = ''; + continue; + } + if ($param['value']=='optgroup') { + $optgroup = $param['langstr']; + continue; + } + $options[$pname] = $optgroup.' - '.$param['langstr']; + } + + for ($i = 0; $i < $this->maxparameters; $i++) { + $parametername = "parameter$i"; + $parsename = "parse$i"; + $group = array(); + $group[] =& $mform->createElement('text', $parsename, '', array('size'=>'12'));//TODO: accessiblity + $group[] =& $mform->createElement('select', $parametername, '', $options);//TODO: accessiblity + $mform->addGroup($group, 'pargroup'.$i, get_string('variablename', 'resource').'='.get_string('parameter', 'resource'), ' ', false); + $mform->setAdvanced('pargroup'.$i); + + $mform->setDefault($parametername, '-'); + } + } + +} + +?> -- 2.11.4.GIT