コード例 #1
0
ファイル: file.php プロジェクト: nadavkav/MoodleTAO
            }
        }
    }
}
// security: teachers can view all assignments, students only their own
if (count($args) >= 3 and strtolower($args[1]) == 'moddata' and strtolower($args[2]) == 'assignment') {
    $lifetime = 0;
    // do not cache assignments, students may reupload them
    if ($args[4] == $USER->id) {
        //can view own assignemnt submissions
    } else {
        $instance = (int) $args[3];
        if (!($cm = get_coursemodule_from_instance('assignment', $instance, $course->id))) {
            taoresource_not_found($course->id);
        }
        if (!has_capability('mod/assignment:grade', get_context_instance(CONTEXT_MODULE, $cm->id))) {
            error('Access not allowed');
        }
    }
}
// check that file exists
if (!file_exists($pathname)) {
    taoresource_not_found($course->id);
}
// ========================================
// finally send the file
// ========================================
session_write_close();
// unlock session during fileserving
$filename = $args[count($args) - 1];
send_file($pathname, $filename, $lifetime, $CFG->filteruploadedfiles, false, $forcedownload);
コード例 #2
0
ファイル: view.php プロジェクト: nadavkav/MoodleTAO
    if (!($resource = get_record('taoresource_entry', 'identifier', $identifier))) {
        taoresource_not_found();
        //error('Resource Identifier was incorrect');
    }
} else {
    if ($id) {
        if (!($cm = get_coursemodule_from_id('taoresource', $id))) {
            taoresource_not_found();
            //                error('Course Module ID was incorrect');
        }
        if (!($resource = get_record('taoresource', 'id', $cm->instance))) {
            taoresource_not_found($cm->course);
            //                error('Resource ID was incorrect');
        }
    } else {
        taoresource_not_found();
        //            error('No valid parameters!!');
    }
    if (!($course = get_record('course', 'id', $cm->course))) {
        print_error('badcourseid', 'taoresource');
    }
    require_course_login($course, true, $cm);
    $cm_id = $cm->id;
}
require $CFG->dirroot . '/mod/taoresource/type/' . $resource->type . '/resource.class.php';
$resourceclass = 'taoresource_' . $resource->type;
$resourceinstance = new $resourceclass($cm_id, $identifier);
if ($inpopup) {
    $resourceinstance->inpopup();
}
$resourceinstance->display();
コード例 #3
0
ファイル: resource.class.php プロジェクト: nadavkav/MoodleTAO
 /**
  * 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->taoresource;
     $taoresource_entry = taoresource_entry::get_by_identifier($resource->identifier);
     // if we dont get the resource then bail
     if (!$taoresource_entry) {
         taoresource_not_found($course->id);
     }
     $resource->reference = $taoresource_entry->file ? $taoresource_entry->file : $taoresource_entry->url;
     if (isset($resource->name)) {
         $resource->title = $resource->name;
     }
     $this->set_parameters();
     // set the parameters array
     /// 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->title));
     $formatoptions = new object();
     $formatoptions->noclean = true;
     if ($this->inpopup || isset($resource->options) && $resource->options != "forcedownload") {
         // 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;
                                             } else {
                                                 if ($mimetype == "audio/x-pn-realaudio") {
                                                     // It's a realmedia file
                                                     $resourcetype = "rm";
                                                     $embedded = true;
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     $isteamspeak = stripos($resource->reference, 'teamspeak://') === 0;
     /// Form the parse string
     $querys = array();
     if (!empty($resource->alltext)) {
         $parray = explode(',', $resource->alltext);
         foreach ($parray as $fieldstring) {
             list($moodleparam, $urlname) = explode('=', $fieldstring);
             $value = urlencode($this->parameters[$moodleparam]['value']);
             $querys[urlencode($urlname)] = $value;
             $querysbits[] = urlencode($urlname) . '=' . $value;
         }
         if ($isteamspeak) {
             $querystring = implode('?', $querysbits);
         } else {
             $querystring = implode('&', $querysbits);
         }
     }
     /// Set up some variables
     $inpopup = optional_param('inpopup', 0, PARAM_BOOL);
     if (taoresource_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 {
         // Normal uploaded file
         $forcedownloadsep = '?';
         if (isset($resource->options) && $resource->options == 'forcedownload') {
             $querys['forcedownload'] = '1';
         }
         $fullurl = taoresource_get_file_url(TAORESOURCE_RESOURCEPATH . $resource->reference, $querys);
     }
     /// Check whether this is supposed to be a popup, but was called directly
     if (isset($resource->popup) && $resource->popup and !$inpopup) {
         /// Make a page and a pop-up window
         $navigation = build_navigation($this->navlinks, $cm);
         print_header($pagetitle, $course->fullname, $navigation, "", "", true, update_module_button($cm->id, $course->id, $this->strtaoresource), navmenu($course, $cm));
         echo "\n<script type=\"text/javascript\">";
         echo "\n<!--\n";
         echo "openpopup('/mod/taoresource/view.php?inpopup=true&id={$cm->id}','resource{$resource->id}','{$resource->popup}');\n";
         echo "\n-->\n";
         echo '</script>';
         if (trim(strip_tags($resource->summary))) {
             print_simple_box(format_text($resource->summary, FORMAT_MOODLE, $formatoptions), "center");
         }
         $link = "<a href=\"{$CFG->wwwroot}/mod/taoresource/view.php?inpopup=true&amp;id={$cm->id}\" " . "onclick=\"this.target='resource{$resource->id}'; return openpopup('/mod/taoresource/view.php?inpopup=true&amp;id={$cm->id}', " . "'resource{$resource->id}','{$resource->popup}');\">" . format_string($resource->title, true) . "</a>";
         echo '<div class="popupnotice">';
         print_string('popupresource', 'resource');
         echo '<br />';
         print_string('popupresourcelink', 'resource', $link);
         echo '</div>';
         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 isset($resource->options) && $resource->options == "frame" and empty($USER->screenreader)) {
         @header('Content-Type: text/html; charset=utf-8');
         echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n";
         echo "<html dir=\"ltr\">\n";
         echo '<head>';
         echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />';
         echo "<title>" . format_string($course->shortname) . ": " . strip_tags(format_string($resource->title, true)) . "</title></head>\n";
         echo "<frameset rows=\"{$CFG->taoresource_framesize},*\">";
         echo "<frame src=\"view.php?id={$cm->id}&amp;type={$resource->type}&amp;frameset=top\" title=\"" . get_string('modulename', 'resource') . "\"/>";
         echo "<frame src=\"{$fullurl}\" title=\"" . get_string('modulename', 'taoresource') . "\"/>";
         echo "</frameset>";
         echo "</html>";
         exit;
     }
     /// We can only get here once per resource, so add an entry to the log
     add_to_log($course->id, "taoresource", "view", "view.php?identifier={$resource->identifier}", $resource->title);
     /// If we are in a frameset, just print the top of it
     if (!empty($frameset) and $frameset == "top") {
         $navigation = build_navigation($this->navlinks, $cm);
         print_header($pagetitle, $course->fullname, $navigation, "", "", true, update_module_button($cm->id, $course->id, $this->strresource), navmenu($course, $cm, "parent"));
         $options = new object();
         $options->para = false;
         echo '<div class="summary">' . format_text($resource->summary, FORMAT_HTML, $options) . '</div>';
         print_footer('empty');
         exit;
     }
     /// Display the actual resource
     if ($embedded) {
         // Display resource embedded in page
         $strdirectlink = get_string("directlink", "taoresource");
         if ($inpopup) {
             print_header($pagetitle);
         } else {
             $navigation = build_navigation($this->navlinks, $cm);
             print_header_simple($pagetitle, '', $navigation, "", "", true, update_module_button($cm->id, $course->id, $this->strtaoresource), navmenu($course, $cm, "self"));
         }
         if ($resourcetype == "image") {
             echo '<div class="resourcecontent resourceimg">';
             echo "<img title=\"" . strip_tags(format_string($resource->title, true)) . "\" class=\"resourceimage\" src=\"{$fullurl}\" alt=\"\" />";
             echo '</div>';
         } 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', 'taoresource') . '&panText=' . get_string('pan', 'taoresource');
                 $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 '<div class="resourcecontent resourcemp3">';
                 echo '<span class="mediaplugin mediaplugin_mp3" id="' . $id . '"></span>' . '<script type="text/javascript">' . "\n" . '//<![CDATA[' . "\n" . 'var FO = { movie:"' . $CFG->wwwroot . '/lib/mp3player/mp3player.swf?src=' . $cleanurl . '",' . "\n" . 'width:"600", height:"70", majorversion:"6", build:"40", flashvars:"' . $c . '", quality: "high" };' . "\n" . 'UFO.create(FO, "' . $id . '");' . "\n" . '//]]>' . "\n" . '</script>' . "\n";
                 echo '<noscript>';
                 echo "<object type=\"audio/mpeg\" data=\"{$fullurl}\" width=\"600\" height=\"70\">";
                 echo "<param name=\"src\" value=\"{$fullurl}\" />";
                 echo '<param name="quality" value="high" />';
                 echo '<param name="autoplay" value="true" />';
                 echo '<param name="autostart" value="true" />';
                 echo '</object>';
                 echo '<p><a href="' . $fullurl . '">' . $fullurl . '</a></p>';
                 echo '</noscript>';
                 echo '</div>';
             } 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 '<div class="resourcecontent resourceflv">';
                     echo '<span class="mediaplugin mediaplugin_flv" id="' . $id . '"></span>' . '<script type="text/javascript">' . "\n" . '//<![CDATA[' . "\n" . 'var FO = { movie:"' . $CFG->wwwroot . '/filter/mediaplugin/flvplayer.swf?file=' . $cleanurl . '",' . "\n" . 'width:"600", height:"400", majorversion:"6", build:"40", allowscriptaccess:"never", quality: "high" };' . "\n" . 'UFO.create(FO, "' . $id . '");' . "\n" . '//]]>' . "\n" . '</script>' . "\n";
                     echo '<noscript>';
                     echo "<object type=\"video/x-flv\" data=\"{$fullurl}\" width=\"600\" height=\"400\">";
                     echo "<param name=\"src\" value=\"{$fullurl}\" />";
                     echo '<param name="quality" value="high" />';
                     echo '<param name="autoplay" value="true" />';
                     echo '<param name="autostart" value="true" />';
                     echo '</object>';
                     echo '<p><a href="' . $fullurl . '">' . $fullurl . '</a></p>';
                     echo '</noscript>';
                     echo '</div>';
                 } else {
                     if ($resourcetype == "mediaplayer") {
                         echo '<div class="resourcecontent resourcewmv">';
                         echo '<object type="video/x-ms-wmv" data="' . $fullurl . '">';
                         echo '<param name="controller" value="true" />';
                         echo '<param name="autostart" value="true" />';
                         echo "<param name=\"src\" value=\"{$fullurl}\" />";
                         echo '<param name="scale" value="noScale" />';
                         echo "<a href=\"{$fullurl}\">{$fullurl}</a>";
                         echo '</object>';
                         echo '</div>';
                     } else {
                         if ($resourcetype == "mpeg") {
                             echo '<div class="resourcecontent resourcempeg">';
                             echo '<object classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"
                           codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsm p2inf.cab#Version=5,1,52,701"
                           type="application/x-oleobject">';
                             echo "<param name=\"fileName\" value=\"{$fullurl}\" />";
                             echo '<param name="autoStart" value="true" />';
                             echo '<param name="animationatStart" value="true" />';
                             echo '<param name="transparentatStart" value="true" />';
                             echo '<param name="showControls" value="true" />';
                             echo '<param name="Volume" value="-450" />';
                             echo '<!--[if !IE]>-->';
                             echo '<object type="video/mpeg" data="' . $fullurl . '">';
                             echo '<param name="controller" value="true" />';
                             echo '<param name="autostart" value="true" />';
                             echo "<param name=\"src\" value=\"{$fullurl}\" />";
                             echo "<a href=\"{$fullurl}\">{$fullurl}</a>";
                             echo '<!--<![endif]-->';
                             echo '<a href="' . $fullurl . '">' . $fullurl . '</a>';
                             echo '<!--[if !IE]>-->';
                             echo '</object>';
                             echo '<!--<![endif]-->';
                             echo '</object>';
                             echo '</div>';
                         } else {
                             if ($resourcetype == "rm") {
                                 echo '<div class="resourcecontent resourcerm">';
                                 echo '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="320" height="240">';
                                 echo '<param name="src" value="' . $fullurl . '" />';
                                 echo '<param name="controls" value="All" />';
                                 echo '<!--[if !IE]>-->';
                                 echo '<object type="audio/x-pn-realaudio-plugin" data="' . $fullurl . '" width="320" height="240">';
                                 echo '<param name="controls" value="All" />';
                                 echo '<a href="' . $fullurl . '">' . $fullurl . '</a>';
                                 echo '</object>';
                                 echo '<!--<![endif]-->';
                                 echo '</object>';
                                 echo '</div>';
                             } else {
                                 if ($resourcetype == "quicktime") {
                                     echo '<div class="resourcecontent resourceqt">';
                                     echo '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"';
                                     echo '        codebase="http://www.apple.com/qtactivex/qtplugin.cab">';
                                     echo "<param name=\"src\" value=\"{$fullurl}\" />";
                                     echo '<param name="autoplay" value="true" />';
                                     echo '<param name="loop" value="true" />';
                                     echo '<param name="controller" value="true" />';
                                     echo '<param name="scale" value="aspect" />';
                                     echo '<!--[if !IE]>-->';
                                     echo "<object type=\"video/quicktime\" data=\"{$fullurl}\">";
                                     echo '<param name="controller" value="true" />';
                                     echo '<param name="autoplay" value="true" />';
                                     echo '<param name="loop" value="true" />';
                                     echo '<param name="scale" value="aspect" />';
                                     echo '<!--<![endif]-->';
                                     echo '<a href="' . $fullurl . '">' . $fullurl . '</a>';
                                     echo '<!--[if !IE]>-->';
                                     echo '</object>';
                                     echo '<!--<![endif]-->';
                                     echo '</object>';
                                     echo '</div>';
                                 } else {
                                     if ($resourcetype == "flash") {
                                         echo '<div class="resourcecontent resourceswf">';
                                         echo '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">';
                                         echo "<param name=\"movie\" value=\"{$fullurl}\" />";
                                         echo '<param name="autoplay" value="true" />';
                                         echo '<param name="loop" value="true" />';
                                         echo '<param name="controller" value="true" />';
                                         echo '<param name="scale" value="aspect" />';
                                         echo '<!--[if !IE]>-->';
                                         echo "<object type=\"application/x-shockwave-flash\" data=\"{$fullurl}\">";
                                         echo '<param name="controller" value="true" />';
                                         echo '<param name="autoplay" value="true" />';
                                         echo '<param name="loop" value="true" />';
                                         echo '<param name="scale" value="aspect" />';
                                         echo '<!--<![endif]-->';
                                         echo '<a href="' . $fullurl . '">' . $fullurl . '</a>';
                                         echo '<!--[if !IE]>-->';
                                         echo '</object>';
                                         echo '<!--<![endif]-->';
                                         echo '</object>';
                                         echo '</div>';
                                     } elseif ($resourcetype == 'zip') {
                                         echo '<div class="resourcepdf">';
                                         echo get_string('clicktoopen', 'resource') . '<a href="' . $fullurl . '">' . format_string($resource->title) . '</a>';
                                         echo '</div>';
                                     } elseif ($resourcetype == 'pdf') {
                                         echo '<div class="resourcepdf">';
                                         echo '<object data="' . $fullurl . '" type="application/pdf">';
                                         echo get_string('clicktoopen', 'resource') . '<a href="' . $fullurl . '">' . format_string($resource->title) . '</a>';
                                         echo '</object>';
                                         echo '</div>';
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
         if (trim($resource->summary)) {
             print_simple_box(format_text(stripslashes_safe($resource->summary), FORMAT_MOODLE, $formatoptions, $course->id), "center");
         }
         if ($inpopup) {
             // suppress the banner that gets cutoff with large images
             echo '<style> body.HAT-narrowbg {background:none};</style>';
             echo "<div class=\"popupnotice\">(<a href=\"{$fullurl}\">{$strdirectlink}</a>)</div>";
             echo "</div>";
             // MDL-12098
             print_footer($course);
             // MDL-12098
         } else {
             print_spacer(20, 20);
             print_footer($course);
         }
     } else {
         // Display the resource on it's own
         redirect($fullurl);
     }
 }