mirror of
				https://github.com/e107inc/e107.git
				synced 2025-10-24 19:26:21 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			182 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| /*
 | |
|  * e107 website system
 | |
|  *
 | |
|  * Copyright (C) 2008-2010 e107 Inc (e107.org)
 | |
|  * Released under the terms and conditions of the
 | |
|  * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
 | |
|  *
 | |
|  * On-the-fly thumbnail generator
 | |
|  *
 | |
|  * $URL$
 | |
|  * $Id$
 | |
|  */
 | |
| 
 | |
|  /**
 | |
|  * @package e107
 | |
|  * @subpackage core
 | |
|  * @author secretr
 | |
|  *
 | |
|  *
 | |
|  * On-the-fly thumbnail generator
 | |
|  */
 | |
| 
 | |
| const e107_INIT = true;
 | |
| 
 | |
| 
 | |
| function thumbExceptionHandler(Throwable $e)
 | |
| {
 | |
| 	http_response_code(500);
 | |
| 	echo "Fatal Thumbnail Error\n";
 | |
| 
 | |
| 	 $message = sprintf(
 | |
|         "Exception: %s, File: %s, Line: %d, Trace: %s",
 | |
|         $e->getMessage(),
 | |
|         $e->getFile(),
 | |
|         $e->getLine(),
 | |
|         $e->getTraceAsString()
 | |
|     );
 | |
|     var_dump($message);
 | |
| 	error_log($message);
 | |
| }
 | |
| 
 | |
| function thumbErrorHandler($errno, $errstr, $errfile, $errline)
 | |
| {
 | |
| 
 | |
| 	switch($errno)
 | |
| 	{
 | |
| 		case E_USER_ERROR:
 | |
| 			echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
 | |
| 			echo "  Fatal error on line $errline in file $errfile";
 | |
| 			echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
 | |
| 			echo "Aborting...<br />\n";
 | |
| 			thumbExceptionHandler(new Exception);
 | |
| 			exit(1);
 | |
| 			break;
 | |
| 
 | |
| 		default:
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| set_exception_handler('thumbExceptionHandler'); // disable to troubleshoot.
 | |
| set_error_handler("thumbErrorHandler"); // disable to troubleshoot.
 | |
| 
 | |
| // error_reporting(0); // suppress all errors or image will be corrupted.
 | |
| 
 | |
| 
 | |
| 
 | |
| ini_set('gd.jpeg_ignore_warning', 1);
 | |
| //require_once './e107_handlers/benchmark.php';
 | |
| //$bench = new e_benchmark();
 | |
| //$bench->start();
 | |
| 
 | |
| /**
 | |
|  * Class e_thumbpage
 | |
|  * @todo Simplify all this, e.g. e107::getInstance()->initMinimal($path_to_e107_config);
 | |
|  */
 | |
| class e_thumbpage
 | |
| {
 | |
| 
 | |
| 	function __construct()
 | |
| 	{
 | |
| 
 | |
| 		$self = realpath(__DIR__);
 | |
| 
 | |
| 		$e_ROOT = $self."/";
 | |
| 
 | |
| 		if ((substr($e_ROOT,-1) !== '/') && (substr($e_ROOT,-1) !== '\\') )
 | |
| 		{
 | |
| 			$e_ROOT .= DIRECTORY_SEPARATOR;  // Should function correctly on both windows and Linux now.
 | |
| 		}
 | |
| 
 | |
| 		define('e_ROOT', $e_ROOT);
 | |
| 
 | |
| 		$mySQLdefaultdb = '';
 | |
| 		$HANDLERS_DIRECTORY = '';
 | |
| 		$mySQLprefix = '';
 | |
| 
 | |
| 		// Config
 | |
| 
 | |
| 		$config = include($self.DIRECTORY_SEPARATOR.'e107_config.php');
 | |
| 
 | |
| 		// support early include feature
 | |
| 		if(!empty($CLASS2_INCLUDE))
 | |
| 		{
 | |
| 			 require_once(realpath(__DIR__ .'/'.$CLASS2_INCLUDE));
 | |
| 		}
 | |
| 
 | |
| 
 | |
| 		ob_end_clean(); // Precaution - clearout utf-8 BOM or any other garbage in e107_config.php
 | |
| 
 | |
| 		if(empty($HANDLERS_DIRECTORY))
 | |
| 		{
 | |
| 			$HANDLERS_DIRECTORY = 'e107_handlers/'; // quick fix for CLI Unit test.
 | |
| 		}
 | |
| 
 | |
| 		$tmp = $self.DIRECTORY_SEPARATOR.$HANDLERS_DIRECTORY;
 | |
| 
 | |
| 		//Core functions - now API independent
 | |
| 		require($tmp.DIRECTORY_SEPARATOR.'core_functions.php');
 | |
| 		//e107 class
 | |
| 		require($tmp.DIRECTORY_SEPARATOR.'e107_class.php');
 | |
| 
 | |
| 		if(empty($config['paths'])) // old e107_config.php format.
 | |
| 		{
 | |
| 			$dirNames = ['ADMIN_DIRECTORY', 'FILES_DIRECTORY', 'IMAGES_DIRECTORY', 'THEMES_DIRECTORY', 'PLUGINS_DIRECTORY', 'HANDLERS_DIRECTORY', 'LANGUAGES_DIRECTORY', 'HELP_DIRECTORY', 'DOWNLOADS_DIRECTORY','UPLOADS_DIRECTORY','SYSTEM_DIRECTORY', 'MEDIA_DIRECTORY','CACHE_DIRECTORY','LOGS_DIRECTORY', 'CORE_DIRECTORY', 'WEB_DIRECTORY'];
 | |
| 
 | |
| 			$e107_paths = [];
 | |
| 			foreach ($dirNames as $name)
 | |
| 			{
 | |
| 			    if (isset($$name))
 | |
| 			    {
 | |
| 			        $e107_paths[$name] = $$name;
 | |
| 			    }
 | |
| 			}
 | |
| 
 | |
| 			$legacy_sql_info = compact('mySQLserver', 'mySQLuser', 'mySQLpassword', 'mySQLdefaultdb', 'mySQLprefix');
 | |
| 			$sql_info = array_combine(array_map(function($k) {
 | |
| 				return str_replace('mySQL', '', $k);
 | |
| 				}, array_keys($legacy_sql_info)),
 | |
| 		        $legacy_sql_info
 | |
| 			);
 | |
| 		}
 | |
| 		else // New e107_config.php format. v2.4+
 | |
| 		{
 | |
| 			$e107_paths = $config['paths'];
 | |
| 			$sql_info = $config['database'];
 | |
| 			$E107_CONFIG = $config['other'] ?? [];
 | |
| 		}
 | |
| 
 | |
| 		$e107 = e107::getInstance()->initCore($e107_paths, e_ROOT, $sql_info, varset($E107_CONFIG, array()));
 | |
| 		// basic Admin area detection - required for proper path parsing
 | |
| 		define('ADMIN', strpos(e_SELF, (e107::getFolder('admin')) != false || strpos(e_PAGE, 'admin') !== false));
 | |
| 
 | |
| 		// Next function call maintains behavior identical to before; might not be needed
 | |
| 		//  See https://github.com/e107inc/e107/issues/3033
 | |
| 		$e107->set_urls_deferred();
 | |
| 
 | |
| 		$pref = e107::getPref();
 | |
| 
 | |
| 
 | |
| 		require_once(e_HANDLER."e_thumbnail_class.php");
 | |
| 
 | |
| 		$thm = new e_thumbnail;
 | |
| 		$thm->init($pref);
 | |
| 
 | |
| 		if(!$thm->checkSrc())
 | |
| 		{
 | |
| 			die('Bad URL');
 | |
| 		}
 | |
| 
 | |
| 		$thm->sendImage();
 | |
| 	}
 | |
| }
 | |
| 
 | |
| new e_thumbpage;
 | |
| // Check your e_LOG folder
 | |
| //$bench->end()->logResult('thumb.php', $_GET['src'].' - no cache');
 | |
| exit;
 | |
| 
 | |
| 
 |