Documentation TYPO3 par Ameos |
00001 <?php 00002 /*************************************************************** 00003 * Copyright notice 00004 * 00005 * (c) 1999-2004 Kasper Skaarhoj (kasperYYYY@typo3.com) 00006 * All rights reserved 00007 * 00008 * This script is part of the TYPO3 project. The TYPO3 project is 00009 * free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2 of the License, or 00012 * (at your option) any later version. 00013 * 00014 * The GNU General Public License can be found at 00015 * http://www.gnu.org/copyleft/gpl.html. 00016 * A copy is found in the textfile GPL.txt and important notices to the license 00017 * from the author is found in LICENSE.txt distributed with these scripts. 00018 * 00019 * 00020 * This script is distributed in the hope that it will be useful, 00021 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 * GNU General Public License for more details. 00024 * 00025 * This copyright notice MUST APPEAR in all copies of the script! 00026 ***************************************************************/ 00052 // ******************************* 00053 // Set error reporting 00054 // ******************************* 00055 error_reporting (E_ALL ^ E_NOTICE); 00056 00057 00058 // *********************** 00059 // Paths are setup 00060 // *********************** 00061 define('TYPO3_OS', stristr(PHP_OS,'win')&&!stristr(PHP_OS,'darwin')?'WIN':''); 00062 define('TYPO3_MODE','FE'); 00063 define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', (php_sapi_name()=='cgi'||php_sapi_name()=='isapi' ||php_sapi_name()=='cgi-fcgi')&&($_SERVER['ORIG_PATH_TRANSLATED']?$_SERVER['ORIG_PATH_TRANSLATED']:$_SERVER['PATH_TRANSLATED'])? ($_SERVER['ORIG_PATH_TRANSLATED']?$_SERVER['ORIG_PATH_TRANSLATED']:$_SERVER['PATH_TRANSLATED']):($_SERVER['ORIG_SCRIPT_FILENAME']?$_SERVER['ORIG_SCRIPT_FILENAME']:$_SERVER['SCRIPT_FILENAME'])))); 00064 00065 define('PATH_site', dirname(PATH_thisScript).'/'); 00066 define('PATH_t3lib', PATH_site.'t3lib/'); 00067 define('PATH_tslib', PATH_site.'tslib/'); 00068 define('PATH_typo3conf', PATH_site.'typo3conf/'); 00069 define('TYPO3_mainDir', 'typo3/'); // This is the directory of the backend administration for the sites of this TYPO3 installation. 00070 00071 require_once(PATH_t3lib.'class.t3lib_div.php'); 00072 require_once(PATH_t3lib.'class.t3lib_extmgm.php'); 00073 00074 // ****************** 00075 // Including config 00076 // ****************** 00077 require_once(PATH_t3lib.'config_default.php'); 00078 if (!defined ('TYPO3_db')) die ('The configuration file was not included.'); 00079 00080 require_once(PATH_t3lib.'class.t3lib_db.php'); 00081 $TYPO3_DB = t3lib_div::makeInstance('t3lib_DB'); 00082 00083 require_once(PATH_t3lib.'class.t3lib_stdgraphic.php'); 00084 00085 00086 00087 00088 00097 class SC_tslib_showpic { 00098 var $content; // Page content accumulated here. 00099 00100 // Parameters loaded into these internal variables: 00101 var $file; 00102 var $width; 00103 var $height; 00104 var $sample; 00105 var $alternativeTempPath; 00106 var $effects; 00107 var $frame; 00108 var $bodyTag; 00109 var $title; 00110 var $wrap; 00111 var $md5; 00112 00118 function init() { 00119 // Loading internal vars with the GET/POST parameters from outside: 00120 $this->file = t3lib_div::_GP('file'); 00121 $this->width = t3lib_div::_GP('width'); 00122 $this->height = t3lib_div::_GP('height'); 00123 $this->sample = t3lib_div::_GP('sample'); 00124 $this->alternativeTempPath = t3lib_div::_GP('alternativeTempPath'); 00125 $this->effects = t3lib_div::_GP('effects'); 00126 $this->frame = t3lib_div::_GP('frame'); 00127 $this->bodyTag = t3lib_div::_GP('bodyTag'); 00128 $this->title = t3lib_div::_GP('title'); 00129 $this->wrap = t3lib_div::_GP('wrap'); 00130 $this->md5 = t3lib_div::_GP('md5'); 00131 00132 // *********************** 00133 // Check parameters 00134 // *********************** 00135 // If no file-param is given, we must exit 00136 if (!$this->file) { 00137 die('Parameter Error: No file given.'); 00138 } 00139 00140 // Chech md5-checksum: If this md5-value does not match the one submitted, then we fail... (this is a kind of security that somebody don't just hit the script with a lot of different parameters 00141 $md5_value = md5($this->file.'|'.$this->width.'|'.$this->height.'|'.$this->effects.'|'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'].'|'); 00142 if ($md5_value!=$this->md5) { 00143 die('Parameter Error: Wrong parameters sent.'); 00144 } 00145 00146 // *********************** 00147 // Check the file. If must be in a directory beneath the dir of this script... 00148 // $this->file remains unchanged, because of the code in stdgraphic, but we do check if the file exists within the current path 00149 // *********************** 00150 00151 $test_file=PATH_site.$this->file; 00152 if (!t3lib_div::validPathStr($test_file)) { 00153 die('Parameter Error: No valid filepath'); 00154 } 00155 if (!@is_file($test_file)) { 00156 die('The given file was not found'); 00157 } 00158 } 00159 00166 function main() { 00167 00168 // Creating stdGraphic object, initialize it and make image: 00169 $img = t3lib_div::makeInstance('t3lib_stdGraphic'); 00170 $img->mayScaleUp = 0; 00171 $img->init(); 00172 if ($this->sample) {$img->scalecmd = '-sample';} 00173 if ($this->alternativeTempPath && t3lib_div::inList($GLOBALS['TYPO3_CONF_VARS']['FE']['allowedTempPaths'],$this->alternativeTempPath)) { 00174 $img->tempPath = $this->alternativeTempPath; 00175 } 00176 00177 #if ($GLOBALS['TYPO3_CONF_VARS']['GFX']['enable_typo3temp_db_tracking']) { 00178 // Need to connect to database, because this may be used (eg. by stdgraphic) 00179 $GLOBALS['TYPO3_DB']->sql_pconnect(TYPO3_db_host, TYPO3_db_username, TYPO3_db_password); 00180 #} 00181 00182 if (strstr($this->width.$this->height, 'm')) {$max='m';} else {$max='';} 00183 00184 $this->height = t3lib_div::intInRange($this->height,0,1000); 00185 $this->width = t3lib_div::intInRange($this->width,0,1000); 00186 if ($this->frame) {$this->frame = intval($this->frame);} 00187 $imgInfo = $img->imageMagickConvert($this->file,'web',$this->width.$max,$this->height,$img->IMparams($this->effects),$this->frame,''); 00188 00189 00190 // Create HTML output: 00191 $this->content=''; 00192 $this->content.=' 00193 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 00194 00195 <html> 00196 <head> 00197 <title>'.htmlspecialchars($this->title ? $this->title : "Image").'</title> 00198 </head> 00199 '.($this->bodyTag ? $this->bodyTag : '<body>'); 00200 00201 if (is_array($imgInfo)) { 00202 $wrapParts = explode('|',$this->wrap); 00203 $this->content.=trim($wrapParts[0]).$img->imgTag($imgInfo).trim($wrapParts[1]); 00204 } 00205 $this->content.=' 00206 </body> 00207 </html>'; 00208 } 00209 00215 function printContent() { 00216 echo $this->content; 00217 } 00218 } 00219 00220 // Include extension? 00221 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['tslib/showpic.php']) { 00222 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['tslib/showpic.php']); 00223 } 00224 00225 00226 00227 00228 00229 00230 00231 00232 00233 00234 00235 00236 // Make instance: 00237 $SOBE = t3lib_div::makeInstance('SC_tslib_showpic'); 00238 $SOBE->init(); 00239 $SOBE->main(); 00240 $SOBE->printContent(); 00241 ?>