Added support for NULL fields in the database
[Packages/TYPO3.CMS.git] / t3lib / thumbs.php
index 5c792a5..e78b302 100755 (executable)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *  
-*  (c) 1999-2003 Kasper Skårhøj (kasper@typo3.com)
+*  (c) 1999-2004 Kasper Skaarhoj (kasper@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is 
 /**
  * Generates a thumbnail and returns an image stream, either GIF/PNG or JPG
  *
- * Revised for TYPO3 3.6 July/2003 by Kasper Skårhøj
+ * $Id$
+ * Revised for TYPO3 3.6 July/2003 by Kasper Skaarhoj
  *
- * @author             Kasper Skårhøj  <kasper@typo3.com>
- * @package TYPO3
- * @subpackage t3lib
+ * @author             Kasper Skaarhoj <kasper@typo3.com>
  */
 /**
  * [CLASS/FUNCTION INDEX of SCRIPT]
  *
  *
  *
- *  109: class SC_t3lib_thumbs 
- *  127:     function init()   
- *  154:     function main()   
+ *  114: class SC_t3lib_thumbs 
+ *  135:     function init()   
+ *  165:     function main()   
  *
  *              SECTION: OTHER FUNCTIONS:
- *  257:     function errorGif($l1,$l2,$l3)    
- *  309:     function fontGif($font)   
+ *  268:     function errorGif($l1,$l2,$l3)    
+ *  320:     function fontGif($font)   
+ *  367:     function wrapFileName($inputName) 
  *
- * TOTAL FUNCTIONS: 4
+ * TOTAL FUNCTIONS: 5
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
@@ -64,7 +64,7 @@ error_reporting (E_ALL ^ E_NOTICE);
 // ******************
 define('TYPO3_OS', stristr(PHP_OS,'win')&&!stristr(PHP_OS,'darwin')?'WIN':'');
 define('TYPO3_MODE','BE');
-define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', php_sapi_name()=='cgi'||php_sapi_name()=='isapi' ? $HTTP_SERVER_VARS['PATH_TRANSLATED']:$HTTP_SERVER_VARS['SCRIPT_FILENAME'])));
+define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', php_sapi_name()=='cgi'||php_sapi_name()=='isapi'||php_sapi_name()=='cgi-fcgi' ? $HTTP_SERVER_VARS['PATH_TRANSLATED']:$HTTP_SERVER_VARS['SCRIPT_FILENAME'])));
 
 define('PATH_site', ereg_replace('[^/]*.[^/]*$','',PATH_thisScript));          // the path to the website folder (see init.php)
 define('PATH_typo3conf', PATH_site.'typo3conf/');
@@ -76,10 +76,13 @@ define('TYPO3_mainDir', 'typo3/');          // This is the directory of the backend admi
 // ******************
 require(PATH_t3lib.'class.t3lib_div.php');
 require(PATH_t3lib.'class.t3lib_extmgm.php');
+
 require(PATH_t3lib.'config_default.php');
 if (!defined ('TYPO3_db'))     die ('The configuration file was not included.');
 if (!$TYPO3_CONF_VARS['GFX']['image_processing'])      die ('ImageProcessing was disabled!');
 
+require(PATH_t3lib.'class.t3lib_db.php');              // The database library
+$TYPO3_DB = t3lib_div::makeInstance('t3lib_DB');
 
 
 
@@ -98,13 +101,15 @@ if (!$TYPO3_CONF_VARS['GFX']['image_processing'])  die ('ImageProcessing was disa
 
 /**
  * Class for generating a thumbnail from the input parameters given to the script
- * 
+ *
  * Input GET var, &file:               relative or absolute reference to an imagefile. WILL be validated against PATH_site / lockRootPath
  * Input GET var, &size:               integer-values defining size of thumbnail, format '[int]' or '[int]x[int]'
- * 
+ *
  * Relative paths MUST BE the first two characters ONLY: eg: '../dir/file.gif', otherwise it is expect to be absolute
- * 
- * @author             Kasper Skårhøj  <kasper@typo3.com>
+ *
+ * @author             Kasper Skaarhoj <kasper@typo3.com>
+ * @package TYPO3
+ * @subpackage t3lib
  */
 class SC_t3lib_thumbs {
        var $include_once=array();
@@ -113,25 +118,31 @@ class SC_t3lib_thumbs {
        var $output = '';
        var $sizeDefault='56x56';
 
-       var $file;              // Holds the input filename (GET: file)
-       var $size;              // Holds the input size (GET: size)
        var $imageList; // Coming from $TYPO3_CONF_VARS['GFX']['imagefile_ext']
        var $input;             // Contains the absolute path to the file for which to make a thumbnail (after init())
 
+               // Internal, static: GPvar:
+       var $file;              // Holds the input filename (GET: file)
+       var $size;              // Holds the input size (GET: size)
+       
+       
        /**
         * Initialize; reading parameters with GPvar and checking file path
         * Results in internal var, $this->input, being set to the absolute path of the file for which to make the thumbnail.
-        * 
-        * @return      void            
+        *
+        * @return      void
         */
        function init() {
-               global $TYPO3_CONF_VARS,$HTTP_GET_VARS;
+               global $TYPO3_CONF_VARS;
+
+                       // Setting GPvars:
+               $this->file = t3lib_div::_GP('file');
+               $this->size = t3lib_div::_GP('size');
 
+                       // Image extension list is set:
                $this->imageList = $TYPO3_CONF_VARS['GFX']['imagefile_ext'];                    // valid extensions. OBS: No spaces in the list, all lowercase...
-               $this->file = t3lib_div::GPvar('file');
-               $this->size = t3lib_div::GPvar('size');
                
-               // if the filereference $this->file is relative, we correct the path
+                       // if the filereference $this->file is relative, we correct the path
                if (substr($this->file,0,3)=='../')     {
                        $this->input = PATH_site.ereg_replace('^\.\./','',$this->file);
                } else {
@@ -148,8 +159,8 @@ class SC_t3lib_thumbs {
        /**
         * Create the thumbnail
         * Will exit before return if all is well.
-        * 
-        * @return      void            
+        *
+        * @return      void
         */
        function main() {
                global $TYPO3_CONF_VARS;
@@ -194,17 +205,17 @@ class SC_t3lib_thumbs {
                        if ($TYPO3_CONF_VARS['GFX']['im'])      {
                                        // If thumbnail does not exist, we generate it
                                if (!@file_exists($this->output))       {
-                                       if (strstr($this->input,' ') || strstr($this->output,' '))      {
+/*                                     if (strstr($this->input,' ') || strstr($this->output,' '))      {
                                                $this->errorGif('Spaces in','filepath',$this->input);
                                        }
-                                               // 16 colors for small (56) thumbs, 64 for bigger and all for jpegs
+*/                                             // 16 colors for small (56) thumbs, 64 for bigger and all for jpegs
                                        if ($outext=='jpg')     {
                                                $colors = '';
                                        } else {
                                                $colors = ($sizeMax>56)?'-colors 64':'-colors 16';
                                        }
                                        $cmd = ($TYPO3_CONF_VARS['GFX']['im_path_lzw'] ? $TYPO3_CONF_VARS['GFX']['im_path_lzw'] : $TYPO3_CONF_VARS['GFX']['im_path']).
-                                                               'convert -sample '.$this->size.' '.$colors.' '.$this->input.'[0] '.$this->output;
+                                                               'convert -sample '.$this->size.' '.$colors.' '.$this->wrapFileName($this->input.'[0]').' '.$this->wrapFileName($this->output);
 
                //                      echo $cmd;
                                        exec($cmd);
@@ -248,11 +259,11 @@ class SC_t3lib_thumbs {
         * Creates error image based on gfx/notfound_thumb.png
         * Requires GD lib enabled, otherwise it will exit with the three textstrings outputted as text.
         * Outputs the image stream to browser and exits!
-        * 
+        *
         * @param       string          Text line 1
         * @param       string          Text line 2
         * @param       string          Text line 3
-        * @return      void            
+        * @return      void
         */
        function errorGif($l1,$l2,$l3)  {       
                global $TYPO3_CONF_VARS;
@@ -302,9 +313,9 @@ class SC_t3lib_thumbs {
         * This means a PNG/GIF file with the text "AaBbCc...." set with the font-file given as input and in various sizes to show how the font looks
         * Requires GD lib enabled.
         * Outputs the image stream to browser and exits!
-        * 
+        *
         * @param       string          The filepath to the font file (absolute, probably)
-        * @return      void            
+        * @return      void
         */
        function fontGif($font) {       
                global $TYPO3_CONF_VARS;
@@ -345,6 +356,20 @@ class SC_t3lib_thumbs {
                imagedestroy($im);
                exit;
        }
+
+       /**
+        * Wrapping the input filename in double-quotes
+        *
+        * @param       string          Input filename
+        * @return      string          The output wrapped in "" (if there are spaces in the filepath)
+        * @access private
+        */
+       function wrapFileName($inputName)       {
+               if (strstr($inputName,' '))     {
+                       $inputName='"'.$inputName.'"';
+               }
+               return $inputName;
+       }
 }
 
 // Include extension class?