Feature #19290 » 0009292_for_typo3_4-2-8.patch
typo3/sysext/cms/tslib/class.tslib_content.php (Arbeitskopie) | ||
---|---|---|
var $recordRegister=array(); // Array that registers rendered content elements (or any table) to make sure they are not rendered recursively!
|
||
var $cObjHookObjectsArr = array(); // Containig hooks for userdefined cObjects
|
||
protected $stdWrapHookObjects = array(); // Containig hook objects for stdWrap
|
||
protected $getImgResourceHookObjects = array(); // Containing hook objects for getImgResource
|
||
/**
|
||
* Class constructor.
|
||
... | ... | |
$this->stdWrapHookObjects[] = $hookObject;
|
||
}
|
||
}
|
||
if(is_array($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['getImgResource'])) {
|
||
$this->getImgResourceHookObjects = array();
|
||
foreach($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['getImgResource'] as $classData) {
|
||
$hookObject = &t3lib_div::getUserObj($classData);
|
||
if(!($hookObject instanceof tslib_cObj_getImgResourceHook)) {
|
||
throw new UnexpectedValueException('$hookObject must implement interface tslib_cObj_getImgResourceHook', 1218636383);
|
||
}
|
||
$this->getImgResourceHookObjects[] = $hookObject;
|
||
}
|
||
// t3lib_div::debug(Array('$this->getImgResourceHookObjects'=>$this->getImgResourceHookObjects, 'File:Line'=>__FILE__.':'.__LINE__));
|
||
}
|
||
}
|
||
/**
|
||
... | ... | |
$gifCreator->start($fileArray,$this->data);
|
||
$theImage = $gifCreator->gifBuild();
|
||
}
|
||
return $gifCreator->getImageDimensions($theImage);
|
||
$imageResource = $gifCreator->getImageDimensions($theImage);
|
||
break;
|
||
default:
|
||
if ($fileArray['import.']) {
|
||
... | ... | |
}
|
||
$GLOBALS['TSFE']->tmpl->fileCache[$hash]= $gifCreator->getImageDimensions($dest);
|
||
} else { // Normal situation:
|
||
$fileArray['params'] = $this->modifyImageMagickStripProfileParameters($fileArray['params'], $fileArray);
|
||
$GLOBALS['TSFE']->tmpl->fileCache[$hash]= $gifCreator->imageMagickConvert($theImage,$fileArray['ext'],$fileArray['width'],$fileArray['height'],$fileArray['params'],$fileArray['frame'],$options);
|
||
if (($fileArray['reduceColors'] || ($imgExt=='png' && !$gifCreator->png_truecolor)) && is_file($GLOBALS['TSFE']->tmpl->fileCache[$hash][3])) {
|
||
$reduced = $gifCreator->IMreduceColors($GLOBALS['TSFE']->tmpl->fileCache[$hash][3], t3lib_div::intInRange($fileArray['reduceColors'], 256, $gifCreator->truecolorColors, 256));
|
||
... | ... | |
}
|
||
$GLOBALS['TSFE']->tmpl->fileCache[$hash]['origFile'] = $theImage;
|
||
$GLOBALS['TSFE']->tmpl->fileCache[$hash]['origFile_mtime'] = @filemtime($theImage); // This is needed by tslib_gifbuilder, ln 100ff in order for the setup-array to create a unique filename hash.
|
||
$GLOBALS['TSFE']->tmpl->fileCache[$hash]['fileCacheHash'] = $hash;
|
||
}
|
||
return $GLOBALS['TSFE']->tmpl->fileCache[$hash];
|
||
$imageResource = $GLOBALS['TSFE']->tmpl->fileCache[$hash];
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
$theImage = $GLOBALS['TSFE']->tmpl->getFileName($file);
|
||
if ($theImage) {
|
||
if (!isset($imageResource) && $theImage) {
|
||
$gifCreator = t3lib_div::makeInstance('tslib_gifbuilder');
|
||
/* @var $gifCreator tslib_gifbuilder */
|
||
$gifCreator->init();
|
||
$info= $gifCreator->imageMagickConvert($theImage,'WEB','','','','','');
|
||
$info['origFile'] = $theImage;
|
||
$info['origFile_mtime'] = @filemtime($theImage); // This is needed by tslib_gifbuilder, ln 100ff in order for the setup-array to create a unique filename hash.
|
||
return $info;
|
||
$imageResource = $info;
|
||
}
|
||
// Hook: Post-processing of image resources
|
||
if (isset($imageResource)) {
|
||
foreach($this->getImgResourceHookObjects as $hookObject) {
|
||
// t3lib_div::debug(Array('$imageResource'=>$imageResource, '$file'=>$file, '$fileArray'=>$fileArray, '$imageResource'=>$imageResource, 'File:Line'=>__FILE__.':'.__LINE__));
|
||
$imageResource = $hookObject->getImgResourcePostProcess($file, (array)$fileArray, $imageResource, $this);
|
||
}
|
||
}
|
||
return $imageResource;
|
||
}
|
||
/**
|
||
* Modifies the parameters for ImageMagick for stripping of profile information.
|
||
*
|
||
* @param string $parameters: The parameters to be modified (if required)
|
||
* @param array $configuration: The TypoScript configuration of [IMAGE].file
|
||
* @param string The modified parameters
|
||
*/
|
||
protected function modifyImageMagickStripProfileParameters($parameters, array $configuration) {
|
||
// Strips profile information of image to save some space:
|
||
if (isset($configuration['stripProfile'])) {
|
||
if ($configuration['stripProfile']) {
|
||
$parameters = $gfxConf['im_stripProfileCommand'] . $parameters;
|
||
} else {
|
||
$parameters.= '###SkipStripProfile###';
|
||
}
|
||
}
|
||
return $parameters;
|
||
}
|
||
... | ... | |
/***********************************************
|
||
*
|
||
* Data retrieval etc.
|
typo3/sysext/cms/tslib/interfaces/interface.tslib_content_getimgresourcehook.php (Revision 0) | ||
---|---|---|
<?php
|
||
/***************************************************************
|
||
* Copyright notice
|
||
*
|
||
* (c) 2008 Oliver Hader <oliver@typo3.org>
|
||
* All rights reserved
|
||
*
|
||
* This script is part of the TYPO3 project. The TYPO3 project is
|
||
* free software; you can redistribute it and/or modify
|
||
* it under the terms of the GNU General Public License as published by
|
||
* the Free Software Foundation; either version 2 of the License, or
|
||
* (at your option) any later version.
|
||
*
|
||
* The GNU General Public License can be found at
|
||
* http://www.gnu.org/copyleft/gpl.html.
|
||
* A copy is found in the textfile GPL.txt and important notices to the license
|
||
* from the author is found in LICENSE.txt distributed with these scripts.
|
||
*
|
||
*
|
||
* This script is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
* GNU General Public License for more details.
|
||
*
|
||
* This copyright notice MUST APPEAR in all copies of the script!
|
||
***************************************************************/
|
||
/**
|
||
* Interface for classes which hook into tslib_content and do additional getImgResource processing
|
||
*
|
||
* @author Oliver Hader <oliver@typo3.org>
|
||
* @package TYPO3
|
||
* @subpackage cms
|
||
*/
|
||
interface tslib_cObj_getImgResourceHook {
|
||
/**
|
||
* Hook for post-processing image resources
|
||
*
|
||
* @param string Original image file
|
||
* @param array TypoScript getImgResource properties
|
||
* @param array Information of the created/converted image resource
|
||
* @param tslib_cObj Parent content object
|
||
* @return array Modified image resource information
|
||
*/
|
||
public function getImgResourcePostProcess($file, array $configuration, array $imageResource, tslib_cObj &$parentObject);
|
||
}
|
||
?>
|
||