root/releases/0.672/lib/iconslib.php

Revision 421, 2.8 kB (checked in by sven, 2 years ago)

icons: upgrade phpthumb to 1.7.2 and move it to lib/
change icons to be output through a function rather than the bundled phpThumb.php, to allow greater control over security

  • Property svn:eol-style set to native
Line 
1 <?php
2 //
3 // icon functions - just phpthumb handlers for now
4 //
5
6 require_once($CFG->dirroot . 'lib/filelib.php');
7 require_once($CFG->dirroot . 'lib/phpthumb/phpthumb.class.php');
8 require_once($CFG->dirroot . 'lib/phpthumb/phpThumb.config.php');
9
10
11 // a cut-down functionised version of the standard phpThumb.php
12 // outputs an image to the browser and exits
13 function spit_phpthumb_image($filepath, $configarray = array()) {
14     
15     // set up class
16     global $CFG, $PHPTHUMB_CONFIG;
17     $phpThumb = new phpThumb();
18     
19     // import default config
20     if (!empty($PHPTHUMB_CONFIG)) {
21         foreach ($PHPTHUMB_CONFIG as $key => $value) {
22             $keyname = 'config_'.$key;
23             $phpThumb->setParameter($keyname, $value);
24         }
25     }
26     
27     // import passed params
28     if (!empty($configarray)) {
29         foreach ($configarray as $key => $value) {
30             $keyname = $key;
31             $phpThumb->setParameter($keyname, $value);
32         }
33     }
34     
35     $phpThumb->setSourceFilename($filepath);
36     
37     if (!is_file($phpThumb->sourceFilename) && !phpthumb_functions::gd_version()) {
38         if (!headers_sent()) {
39             // base64-encoded error image in GIF format
40             $ERROR_NOGD = 'R0lGODlhIAAgALMAAAAAABQUFCQkJDY2NkZGRldXV2ZmZnJycoaGhpSUlKWlpbe3t8XFxdXV1eTk5P7+/iwAAAAAIAAgAAAE/vDJSau9WILtTAACUinDNijZtAHfCojS4W5H+qxD8xibIDE9h0OwWaRWDIljJSkUJYsN4bihMB8th3IToAKs1VtYM75cyV8sZ8vygtOE5yMKmGbO4jRdICQCjHdlZzwzNW4qZSQmKDaNjhUMBX4BBAlmMywFSRWEmAI6b5gAlhNxokGhooAIK5o/pi9vEw4Lfj4OLTAUpj6IabMtCwlSFw0DCKBoFqwAB04AjI54PyZ+yY3TD0ss2YcVmN/gvpcu4TOyFivWqYJlbAHPpOntvxNAACcmGHjZzAZqzSzcq5fNjxFmAFw9iFRunD1epU6tsIPmFCAJnWYE0FURk7wJDA0MTKpEzoWAAskiAAA7';
41             header('Content-Type: image/gif');
42             echo base64_decode($ERROR_NOGD);
43         } else {
44             echo '*** ERROR: No PHP-GD support available ***';
45         }
46         exit;
47     }
48     
49     $phpThumb->SetCacheFilename();
50     
51     if (!file_exists($phpThumb->cache_filename) && is_writable(dirname($phpThumb->cache_filename))) {
52 //         error_log("generating to cache: " . $phpThumb->cache_filename);
53         $phpThumb->CleanUpCacheDirectory();
54         $phpThumb->GenerateThumbnail();
55         $phpThumb->RenderToFile($phpThumb->cache_filename);
56     }
57     
58     if (is_file($phpThumb->cache_filename)) {
59 //         error_log("sending from cache: " . $phpThumb->cache_filename);
60         if ($getimagesize = @GetImageSize($phpThumb->cache_filename)) {
61             $mimetype = phpthumb_functions::ImageTypeToMIMEtype($getimagesize[2]);
62         }
63         spitfile_with_mtime_check ($phpThumb->cache_filename, $mimetype);
64     } else {
65 //         error_log("phpthumb cache file doesn't exist: " . $phpThumb->cache_filename);
66         $phpThumb->GenerateThumbnail();
67         $phpThumb->OutputThumbnail();
68         exit;
69     }
70     
71 }
72
73
74
75 ?>
Note: See TracBrowser for help on using the browser.