Project

General

Profile

Bug #23532 » 15694_v2.diff

Administrator Admin, 2010-09-13 13:59

View differences:

typo3/sysext/cms/tslib/class.tslib_content.php (working copy)
<?php
/***************************************************************
* Copyright notice
*
* (c) 1999-2010 Kasper Skårhøj (kasperYYYY@typo3.com)
* 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!
***************************************************************/
* Copyright notice
*
* (c) 1999-2010 Kasper Skårhøj (kasperYYYY@typo3.com)
* 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!
***************************************************************/
/**
* Contains classes for Content Rendering based on TypoScript Template configuration
*
......
*
*
*
* 256: class tslib_cObj
* 353: function start($data,$table='')
* 387: function setParent($data,$currentRecord)
* 256: class tslib_cObj
* 353: function start($data,$table='')
* 387: function setParent($data,$currentRecord)
*
* SECTION: CONTENT_OBJ:
* 412: function getCurrentVal()
* 423: function setCurrentVal($value)
* 436: function cObjGet($setup,$addKey='')
* 460: function cObjGetSingle($name,$conf,$TSkey='__')
* SECTION: CONTENT_OBJ:
* 412: function getCurrentVal()
* 423: function setCurrentVal($value)
* 436: function cObjGet($setup,$addKey='')
* 460: function cObjGetSingle($name,$conf,$TSkey='__')
*
* SECTION: Functions rendering content objects (cObjects)
* 629: function HTML($conf)
* 640: function TEXT($conf)
* 651: function CLEARGIF($conf)
* 670: function COBJ_ARRAY($conf,$ext='')
* 706: function USER($conf,$ext='')
* 733: function FILE($conf)
* 749: function IMAGE($conf)
* 768: function IMG_RESOURCE($conf)
* 780: function IMGTEXT($conf)
* SECTION: Functions rendering content objects (cObjects)
* 629: function HTML($conf)
* 640: function TEXT($conf)
* 651: function CLEARGIF($conf)
* 670: function COBJ_ARRAY($conf,$ext='')
* 706: function USER($conf,$ext='')
* 733: function FILE($conf)
* 749: function IMAGE($conf)
* 768: function IMG_RESOURCE($conf)
* 780: function IMGTEXT($conf)
* 1203: function CONTENT($conf)
* 1290: function RECORDS($conf)
* 1370: function HMENU($conf)
......
* 2354: function TEMPLATE($conf)
* 2505: function MULTIMEDIA($conf)
*
* SECTION: Various helper functions for content objects:
* SECTION: Various helper functions for content objects:
* 2592: function getSlidePids($pidList, $pidConf)
* 2623: function getFieldDefaultValue($noValueInsert, $fieldName, $defaultVal)
* 2641: function cImage($file,$conf)
......
* 2765: function fileResource($fName, $addParams='alt="" title=""')
* 2788: function lastChanged($tstamp)
* 2805: function linkWrap($content,$wrap)
* 2824: function getAltParam($conf, $longDesc=true)
* 2824: function getAltParam($conf, $longDesc=TRUE)
* 2859: function cleanFormName($name)
* 2875: function getATagParams($conf, $addGlobal=1)
*
* SECTION: HTML template processing functions
* SECTION: HTML template processing functions
* 2922: function getSubpart($content, $marker)
* 2938: function substituteSubpart($content,$marker,$subpartContent,$recursive=1)
* 2951: function substituteMarker($content,$marker,$markContent)
......
* 3081: function substituteMarkerInObject(&$tree, $markContentArray)
* 3104: function fillInMarkerArray($markContentArray, $row, $fieldList='', $nl2br=TRUE, $prefix='FIELD_', $HSC=FALSE)
*
* SECTION: "stdWrap" + sub functions
* SECTION: "stdWrap" + sub functions
* 3167: function stdWrap($content,$conf)
* 3364: function numRows($conf)
* 3388: function listNum($content,$listNum,$char)
......
* 4574: function mailto_makelinks($data,$conf)
* 4617: function getImgResource($file,$fileArray)
*
* SECTION: Data retrieval etc.
* SECTION: Data retrieval etc.
* 4810: function getFieldVal($field)
* 4830: function getData($string,$fieldArray)
* 4975: function rootLineValue($key,$field,$slideBack=0,$altRootLine='')
......
* 5033: function getKey($key,$arr)
* 5056: function TCAlookup($inputValue,$conf)
*
* SECTION: Link functions (typolink)
* SECTION: Link functions (typolink)
* 5116: function typoLink($linktxt, $conf)
* 5481: function typoLink_URL($conf)
* 5499: function getTypoLink($label,$params,$urlParameters=array(),$target='')
......
* 5619: function getMailTo($mailAddress,$linktxt,$initP='?')
* 5658: function getQueryArguments($conf,$overruleQueryArgs=array(),$forceArgs=FALSE)
*
* SECTION: Miscellaneous functions, stand alone
* SECTION: Miscellaneous functions, stand alone
* 5754: function wrap($content,$wrap,$char='|')
* 5770: function noTrimWrap($content,$wrap)
* 5784: function wrapSpace($content, $wrap)
......
* 6159: function linebreaks($string,$chars,$maxLines=0)
* 6190: function getUpdateJS($dataArray, $formName, $arrPrefix, $fieldList)
*
* SECTION: Database functions, making of queries
* SECTION: Database functions, making of queries
* 6260: function DBgetDelete($table, $uid, $doExec=FALSE)
* 6292: function DBgetUpdate($table, $uid, $dataArr, $fieldList, $doExec=FALSE)
* 6334: function DBgetInsert($table, $pid, $dataArr, $fieldList, $doExec=FALSE)
......
* 6878: function checkPidArray($listArr)
* 6902: function checkPid($uid)
*
* SECTION: Frontend editing functions
* SECTION: Frontend editing functions
* 6959: function editPanel($content, $conf, $currentRecord='', $dataArr=array())
* 7146: function editIcons($content,$params, $conf=array(), $currentRecord='', $dataArr=array(),$addUrlParamStr='')
* 7228: function editPanelLinkWrap($string,$formName,$cmd,$currentRecord='',$confirm='',$nPid='')
......
*
*/
// Object TypoScript library included:
if(t3lib_extMgm::isLoaded('obts')) {
require_once(t3lib_extMgm::extPath('obts').'_tsobject/_tso.php');
}
/**
* This class contains all main TypoScript features.
* This includes the rendering of TypoScript content objects (cObjects).
......
* @link http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=270&cHash=4ad9d7acb4
*/
class tslib_cObj {
var $align = Array ('center', 'right', 'left');
var $align = array(
'center', 'right', 'left'
);
/**
* Holds ImageMagick parameters and extensions used for compression
......
* 1x = GIFs
* 2x = JPGs
*/
var $image_compression = Array(
10 => Array('params'=>'', 'ext'=>'gif'),
11 => Array('params'=>'-colors 128', 'ext'=>'gif'),
12 => Array('params'=>'-colors 64', 'ext'=>'gif'),
13 => Array('params'=>'-colors 32', 'ext'=>'gif'),
14 => Array('params'=>'-colors 16', 'ext'=>'gif'),
15 => Array('params'=>'-colors 8', 'ext'=>'gif'),
var $image_compression = array(
10 => array(
'params' => '', 'ext' => 'gif'
),
11 => array(
'params' => '-colors 128', 'ext' => 'gif'
),
12 => array(
'params' => '-colors 64', 'ext' => 'gif'
),
13 => array(
'params' => '-colors 32', 'ext' => 'gif'
),
14 => array(
'params' => '-colors 16', 'ext' => 'gif'
),
15 => array(
'params' => '-colors 8', 'ext' => 'gif'
),
30 => Array('params'=>'-colors 256', 'ext'=>'png'),
31 => Array('params'=>'-colors 128', 'ext'=>'png'),
32 => Array('params'=>'-colors 64', 'ext'=>'png'),
33 => Array('params'=>'-colors 32', 'ext'=>'png'),
34 => Array('params'=>'-colors 16', 'ext'=>'png'),
35 => Array('params'=>'-colors 8', 'ext'=>'png'),
39 => Array('params'=>'', 'ext'=>'png'),
20 => array(
'params' => '-quality 100', 'ext' => 'jpg'
),
21 => array(
'params' => '-quality 90', 'ext' => 'jpg'
),
22 => array(
'params' => '-quality 80', 'ext' => 'jpg'
),
23 => array(
'params' => '-quality 70', 'ext' => 'jpg'
),
24 => array(
'params' => '-quality 60', 'ext' => 'jpg'
),
25 => array(
'params' => '-quality 50', 'ext' => 'jpg'
),
26 => array(
'params' => '-quality 40', 'ext' => 'jpg'
),
27 => array(
'params' => '-quality 30', 'ext' => 'jpg'
),
28 => array(
'params' => '-quality 20', 'ext' => 'jpg'
),
20 => Array('params'=>'-quality 100', 'ext'=>'jpg'),
21 => Array('params'=>'-quality 90', 'ext'=>'jpg'),
22 => Array('params'=>'-quality 80', 'ext'=>'jpg'),
23 => Array('params'=>'-quality 70', 'ext'=>'jpg'),
24 => Array('params'=>'-quality 60', 'ext'=>'jpg'),
25 => Array('params'=>'-quality 50', 'ext'=>'jpg'),
26 => Array('params'=>'-quality 40', 'ext'=>'jpg'),
27 => Array('params'=>'-quality 30', 'ext'=>'jpg'),
28 => Array('params'=>'-quality 20', 'ext'=>'jpg')
30 => array(
'params' => '-colors 256', 'ext' => 'png'
),
31 => array(
'params' => '-colors 128', 'ext' => 'png'
),
32 => array(
'params' => '-colors 64', 'ext' => 'png'
),
33 => array(
'params' => '-colors 32', 'ext' => 'png'
),
34 => array(
'params' => '-colors 16', 'ext' => 'png'
),
35 => array(
'params' => '-colors 8', 'ext' => 'png'
),
39 => array(
'params' => '', 'ext' => 'png'
),
);
/**
......
*
* @see IMGTEXT()
*/
var $image_effects = Array(
var $image_effects = array(
1 => '-rotate 90',
2 => '-rotate 270',
3 => '-rotate 180',
......
* The function stdWrap has TypoScript properties that fetch field-data from this array.
* @see init()
*/
var $data = Array();
var $data = array();
protected $table = '';
var $oldData = Array(); // Used for backup...
var $alternativeData =''; // If this is set with an array before stdWrap, it's used instead of $this->data in the data-property in stdWrap
var $parameters = Array(); // Used by the parseFunc function and is loaded with tag-parameters when parsing tags.
var $oldData = array(); // Used for backup...
var $alternativeData = ''; // If this is set with an array before stdWrap, it's used instead of $this->data in the data-property in stdWrap
var $parameters = array(); // Used by the parseFunc function and is loaded with tag-parameters when parsing tags.
var $currentValKey = 'currentValue_kidjls9dksoje';
var $currentRecord = ''; // This is set to the [table]:[uid] of the record delivered in the $data-array, if the cObjects CONTENT or RECORD is in operation. Note that $GLOBALS['TSFE']->currentRecord is set to an equal value but always indicating the latest record rendered.
var $currentRecordTotal = 0; // Set in cObj->RECORDS and cObj->CONTENT to the current number of records selected in a query.
var $currentRecordNumber = 0; // Incremented in cObj->RECORDS and cObj->CONTENT before each record rendering.
var $parentRecordNumber = 0; // Incremented in parent cObj->RECORDS and cObj->CONTENT before each record rendering.
var $parentRecord = array(); // If the tslib_cObj was started from CONTENT, RECORD or SEARCHRESULT cObject's this array has two keys, 'data' and 'currentRecord' which indicates the record and data for the parent cObj.
var $regObj; // This may be set as a reference to the calling object of eg. cObjGetSingle. Anyway, just use it as you like. It's used in productsLib.inc for example.
var $currentRecord = ''; // This is set to the [table]:[uid] of the record delivered in the $data-array, if the cObjects CONTENT or RECORD is in operation. Note that $GLOBALS['TSFE']->currentRecord is set to an equal value but always indicating the latest record rendered.
var $currentRecordTotal = 0; // Set in cObj->RECORDS and cObj->CONTENT to the current number of records selected in a query.
var $currentRecordNumber = 0; // Incremented in cObj->RECORDS and cObj->CONTENT before each record rendering.
var $parentRecordNumber = 0; // Incremented in parent cObj->RECORDS and cObj->CONTENT before each record rendering.
var $parentRecord = array(); // If the tslib_cObj was started from CONTENT, RECORD or SEARCHRESULT cObject's this array has two keys, 'data' and 'currentRecord' which indicates the record and data for the parent cObj.
var $regObj; // This may be set as a reference to the calling object of eg. cObjGetSingle. Anyway, just use it as you like. It's used in productsLib.inc for example.
// internal
var $INT_include=0; // Is set to 1 if the instance of this cObj is executed from a PHP_SCRIPT_INT -include script (see pagegen, bottom of document)
var $checkPid_cache = Array(); // This is used by checkPid, that checks if pages are accessible. The $checkPid_cache['page_uid'] is set true or false upon this check featuring a caching function for the next request.
// internal
var $INT_include = 0; // Is set to 1 if the instance of this cObj is executed from a PHP_SCRIPT_INT -include script (see pagegen, bottom of document)
var $checkPid_cache = array(); // This is used by checkPid, that checks if pages are accessible. The $checkPid_cache['page_uid'] is set TRUE or FALSE upon this check featuring a caching function for the next request.
var $checkPid_badDoktypeList = '255';
var $lastTypoLinkUrl=''; // This will be set by typoLink() to the url of the most recent link created.
var $lastTypoLinkTarget=''; // DO. link target.
var $lastTypoLinkUrl = ''; // This will be set by typoLink() to the url of the most recent link created.
var $lastTypoLinkTarget = ''; // DO. link target.
var $lastTypoLinkLD = array();
var $substMarkerCache=array(); // Caching substituteMarkerArrayCached function
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(); // Containing hook objects for stdWrap
protected $getImgResourceHookObjects; // Containing hook objects for getImgResource
var $substMarkerCache = array(); // Caching substituteMarkerArrayCached function
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(); // Containing hook objects for stdWrap
protected $getImgResourceHookObjects; // Containing hook objects for getImgResource
/**
* Set to true by doConvertToUserIntObject() if USER object wants to become USER_INT
* Set to TRUE by doConvertToUserIntObject() if USER object wants to become USER_INT
*/
protected $doConvertToUserIntObject = false;
protected $doConvertToUserIntObject = FALSE;
/**
* Indicates current object type. Can hold one of OBJECTTYPE_ constants or false.
* Indicates current object type. Can hold one of OBJECTTYPE_ constants or FALSE.
* The value is set and reset inside USER() function. Any time outside of
* USER() it is false.
* USER() it is FALSE.
*/
protected $userObjectType = false;
protected $userObjectType = FALSE;
/**
* Indicates that object type is USER.
......
* @param string $table the table that the data record is from.
* @return void
*/
function start($data,$table='') {
function start($data, $table = '') {
global $TYPO3_CONF_VARS;
$this->data = $data;
$this->table = $table;
$this->currentRecord = $table ? $table.':'.$this->data['uid'] : '';
$this->parameters = Array();
if (is_array ($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['cObjTypeAndClass'])) {
$this->currentRecord = $table ? $table . ':' . $this->data['uid'] : '';
$this->parameters = array();
if (is_array($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['cObjTypeAndClass'])) {
foreach ($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['cObjTypeAndClass'] as $classArr) {
$this->cObjHookObjectsArr[$classArr[0]] = t3lib_div::getUserObj($classArr[1]);
}
}
$this->stdWrapHookObjects = array();
if(is_array($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap'])) {
foreach($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap'] as $classData) {
if (is_array($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap'])) {
foreach ($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap'] as $classData) {
$hookObject = t3lib_div::getUserObj($classData);
if(!($hookObject instanceof tslib_content_stdWrapHook)) {
throw new UnexpectedValueException('$hookObject must implement interface tslib_content_stdWrapHook', 1195043965);
if (!($hookObject instanceof tslib_content_stdWrapHook)) {
throw new UnexpectedValueException(
'$hookObject must implement interface tslib_content_stdWrapHook',
1195043965
);
}
$this->stdWrapHookObjects[] = $hookObject;
......
foreach ($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['postInit'] as $classData) {
$postInitializationProcessor = t3lib_div::getUserObj($classData);
if(!($postInitializationProcessor instanceof tslib_content_PostInitHook)) {
throw new UnexpectedValueException('$postInitializationProcessor must implement interface tslib_content_PostInitHook', 1274563549);
if (!($postInitializationProcessor instanceof tslib_content_PostInitHook)) {
throw new UnexpectedValueException(
'$postInitializationProcessor must implement interface tslib_content_PostInitHook',
1274563549
);
}
$postInitializationProcessor->postProcessContentObjectInitialization($this);
......
if (!isset($this->getImgResourceHookObjects)) {
$this->getImgResourceHookObjects = array();
if(is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['getImgResource'])) {
foreach($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['getImgResource'] as $classData) {
if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['getImgResource'])) {
foreach ($GLOBALS['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);
if (!($hookObject instanceof tslib_cObj_getImgResourceHook)) {
throw new UnexpectedValueException(
'$hookObject must implement interface tslib_cObj_getImgResourceHook',
1218636383
);
}
$this->getImgResourceHookObjects[] = $hookObject;
......
* @return void
* @access private
*/
function setParent($data,$currentRecord) {
$this->parentRecord=array('data'=>$data, 'currentRecord'=>$currentRecord);
function setParent($data, $currentRecord) {
$this->parentRecord = array(
'data' => $data,
'currentRecord' => $currentRecord
);
}
/***********************************************
*
* CONTENT_OBJ:
......
*
* @return mixed The "current" value
*/
function getCurrentVal() {
function getCurrentVal() {
return $this->data[$this->currentValKey];
}
......
* @return void
* @see getCurrentVal()
*/
function setCurrentVal($value) {
function setCurrentVal($value) {
$this->data[$this->currentValKey] = $value;
}
......
* Rendering of a "numerical array" of cObjects from TypoScript
* Will call ->cObjGetSingle() for each cObject found and accumulate the output.
*
* @param array $setup: Array with cObjects as values.
* @param array $setup: array with cObjects as values.
* @param string $addKey: A prefix for the debugging information
* @return string Rendered output from the cObjects in the array.
* @see cObjGetSingle()
*/
function cObjGet($setup,$addKey='') {
if (is_array($setup)) {
$sKeyArray=t3lib_TStemplate::sortedKeyList($setup);
$content ='';
foreach($sKeyArray as $theKey) {
$theValue=$setup[$theKey];
if (intval($theKey) && !strstr($theKey,'.')) {
$conf=$setup[$theKey.'.'];
$content.=$this->cObjGetSingle($theValue,$conf,$addKey.$theKey); // Get the contentObject
function cObjGet($setup, $addKey = '') {
if (is_array($setup)) {
$sKeyArray = t3lib_TStemplate::sortedKeyList($setup);
$content = '';
foreach ($sKeyArray as $theKey) {
$theValue = $setup[$theKey];
if (intval($theKey) && !strstr($theKey, '.')) {
$conf = $setup[$theKey . '.'];
$content .= $this->cObjGetSingle($theValue, $conf, $addKey . $theKey); // Get the contentObject
}
}
return $content;
......
* @return string cObject output
* @example http://typo3.org/doc.0.html?&encryptionKey=&tx_extrepmgm_pi1[extUid]=267&tx_extrepmgm_pi1[tocEl]=153&cHash=7e74f4d331
*/
function cObjGetSingle($name,$conf,$TSkey='__') {
function cObjGetSingle($name, $conf, $TSkey = '__') {
global $TYPO3_CONF_VARS;
$content='';
$content = '';
// Checking that the function is not called eternally. This is done by interrupting at a depth of 100
$GLOBALS['TSFE']->cObjectDepthCounter--;
if ($GLOBALS['TSFE']->cObjectDepthCounter>0) {
if ($GLOBALS['TSFE']->cObjectDepthCounter > 0) {
$name = trim($name);
if ($GLOBALS['TT']->LR) $GLOBALS['TT']->push($TSkey, $name);
if ($GLOBALS['TT']->LR)
$GLOBALS['TT']->push($TSkey, $name);
// Checking if the COBJ is a reference to another object. (eg. name of 'blabla.blabla = < styles.something')
if (substr($name,0,1)=='<') {
$key = trim(substr($name,1));
if (substr($name, 0, 1) == '<') {
$key = trim(substr($name, 1));
$cF = t3lib_div::makeInstance('t3lib_TSparser');
// $name and $conf is loaded with the referenced values.
$old_conf=$conf;
list($name, $conf) = $cF->getVal($key,$GLOBALS['TSFE']->tmpl->setup);
if (is_array($old_conf) && count($old_conf)) {
$conf = $this->joinTSarrays($conf,$old_conf);
$old_conf = $conf;
list ($name, $conf) = $cF->getVal($key, $GLOBALS['TSFE']->tmpl->setup);
if (is_array($old_conf) && count($old_conf)) {
$conf = $this->joinTSarrays($conf, $old_conf);
}
// Getting the cObject
$GLOBALS['TT']->incStackPointer();
$content.=$this->cObjGetSingle($name,$conf,$key);
$content .= $this->cObjGetSingle($name, $conf, $key);
$GLOBALS['TT']->decStackPointer();
} else {
$hooked = false;
$hooked = FALSE;
// Application defined cObjects
foreach ($this->cObjHookObjectsArr as $cObjName => $hookObj) {
if (($name===$cObjName) && method_exists($hookObj, 'cObjGetSingleExt')) {
$content.= $hookObj->cObjGetSingleExt($name, $conf, $TSkey, $this);
$hooked = true;
foreach ($this->cObjHookObjectsArr as $cObjName => $hookObj) {
if (($name === $cObjName) && method_exists($hookObj, 'cObjGetSingleExt')) {
$content .= $hookObj->cObjGetSingleExt($name, $conf, $TSkey, $this);
$hooked = TRUE;
}
}
if (!$hooked && isset($GLOBALS['OBTS']['tso_list'][$name]) && t3lib_extMgm::isLoaded('obts')) {
$content.= obts_dtutil::renderDatatypeContent($name, $GLOBALS['OBTS']['tso_list'][$name], $conf, $this);
} elseif (!$hooked) {
if (!$hooked) {
// Traditional Content Object branching:
switch($name) {
case 'COBJ_ARRAY':
case 'COA':
$content.=$this->COBJ_ARRAY($conf);
switch ($name) {
case 'COBJ_ARRAY' :
case 'COA' :
$content .= $this->COBJ_ARRAY($conf);
break;
case 'COA_INT':
$content.=$this->COBJ_ARRAY($conf,'INT');
case 'COA_INT' :
$content .= $this->COBJ_ARRAY($conf, 'INT');
break;
case 'HTML':
$content.=$this->HTML($conf);
case 'HTML' :
$content .= $this->HTML($conf);
break;
case 'TEXT':
$content.=$this->TEXT($conf);
case 'TEXT' :
$content .= $this->TEXT($conf);
break;
case 'CLEARGIF':
$content.=$this->CLEARGIF($conf);
case 'CLEARGIF' :
$content .= $this->CLEARGIF($conf);
break;
case 'FILE':
$content.=$this->FILE($conf);
case 'FILE' :
$content .= $this->FILE($conf);
break;
case 'IMAGE':
$content.=$this->IMAGE($conf);
case 'IMAGE' :
$content .= $this->IMAGE($conf);
break;
case 'IMG_RESOURCE':
$content.=$this->IMG_RESOURCE($conf);
case 'IMG_RESOURCE' :
$content .= $this->IMG_RESOURCE($conf);
break;
case 'IMGTEXT':
$content.=$this->IMGTEXT($conf);
case 'IMGTEXT' :
$content .= $this->IMGTEXT($conf);
break;
case 'CONTENT':
$content.=$this->CONTENT($conf);
case 'CONTENT' :
$content .= $this->CONTENT($conf);
break;
case 'RECORDS':
$content.=$this->RECORDS($conf);
case 'RECORDS' :
$content .= $this->RECORDS($conf);
break;
case 'HMENU':
$content.=$this->HMENU($conf);
case 'HMENU' :
$content .= $this->HMENU($conf);
break;
case 'CTABLE':
$content.=$this->CTABLE($conf);
case 'CTABLE' :
$content .= $this->CTABLE($conf);
break;
case 'OTABLE':
$content.=$this->OTABLE($conf);
case 'OTABLE' :
$content .= $this->OTABLE($conf);
break;
case 'COLUMNS':
$content.=$this->COLUMNS($conf);
case 'COLUMNS' :
$content .= $this->COLUMNS($conf);
break;
case 'HRULER':
$content.=$this->HRULER($conf);
case 'HRULER' :
$content .= $this->HRULER($conf);
break;
case 'CASE':
$content.=$this->CASEFUNC($conf);
case 'CASE' :
$content .= $this->CASEFUNC($conf);
break;
case 'LOAD_REGISTER':
case 'RESTORE_REGISTER':
$this->LOAD_REGISTER($conf,$name);
case 'LOAD_REGISTER' :
case 'RESTORE_REGISTER' :
$this->LOAD_REGISTER($conf, $name);
break;
case 'FORM':
$content.=$this->FORM($conf);
case 'FORM' :
$content .= $this->FORM($conf);
break;
case 'SEARCHRESULT':
$content.=$this->SEARCHRESULT($conf);
case 'SEARCHRESULT' :
$content .= $this->SEARCHRESULT($conf);
break;
case 'PHP_SCRIPT':
$content.=$this->PHP_SCRIPT($conf);
case 'PHP_SCRIPT' :
$content .= $this->PHP_SCRIPT($conf);
break;
case 'PHP_SCRIPT_EXT':
$content.=$this->PHP_SCRIPT($conf,'EXT');
case 'PHP_SCRIPT_EXT' :
$content .= $this->PHP_SCRIPT($conf, 'EXT');
break;
case 'PHP_SCRIPT_INT':
$content.=$this->PHP_SCRIPT($conf,'INT');
case 'PHP_SCRIPT_INT' :
$content .= $this->PHP_SCRIPT($conf, 'INT');
break;
case 'USER':
$content.=$this->USER($conf);
case 'USER' :
$content .= $this->USER($conf);
break;
case 'USER_INT':
$content.=$this->USER($conf,'INT');
case 'USER_INT' :
$content .= $this->USER($conf, 'INT');
break;
case 'TEMPLATE':
$content.=$this->TEMPLATE($conf);
case 'TEMPLATE' :
$content .= $this->TEMPLATE($conf);
break;
case 'EDITPANEL':
if ($GLOBALS['TSFE']->beUserLogin) {$content.=$this->editPanel($content, $conf);}
case 'EDITPANEL' :
if ($GLOBALS['TSFE']->beUserLogin) {
$content .= $this->editPanel($content, $conf);
}
break;
case 'MULTIMEDIA':
$content.=$this->MULTIMEDIA($conf);
case 'MULTIMEDIA' :
$content .= $this->MULTIMEDIA($conf);
break;
case 'MEDIA':
$content.=$this->MEDIA($conf);
case 'MEDIA' :
$content .= $this->MEDIA($conf);
break;
case 'SWFOBJECT':
$content.=$this->SWFOBJECT($conf);
case 'SWFOBJECT' :
$content .= $this->SWFOBJECT($conf);
break;
case 'QTOBJECT':
$content.=$this->QTOBJECT($conf);
case 'QTOBJECT' :
$content .= $this->QTOBJECT($conf);
break;
default:
default :
// call hook functions for extra processing
if($name && is_array($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['cObjTypeAndClassDefault'])) {
foreach($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['cObjTypeAndClassDefault'] as $classData) {
if ($name && is_array($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['cObjTypeAndClassDefault'])) {
foreach ($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_content.php']['cObjTypeAndClassDefault'] as $classData) {
$hookObject = t3lib_div::getUserObj($classData);
if(!($hookObject instanceof tslib_content_cObjGetSingleHook)) {
throw new UnexpectedValueException('$hookObject must implement interface tslib_content_cObjGetSingleHook', 1195043731);
if (!($hookObject instanceof tslib_content_cObjGetSingleHook)) {
throw new UnexpectedValueException(
'$hookObject must implement interface tslib_content_cObjGetSingleHook',
1195043731
);
}
/* @var $hookObject tslib_content_cObjGetSingleHook */
$content .= $hookObject->getSingleContentObject($name, (array) $conf, $TSkey, $this);
......
}
}
}
if ($GLOBALS['TT']->LR) $GLOBALS['TT']->pull($content);
if ($GLOBALS['TT']->LR)
$GLOBALS['TT']->pull($content);
}
// Increasing on exit...
$GLOBALS['TSFE']->cObjectDepthCounter++;
......
/********************************************
*
* Functions rendering content objects (cObjects)
......
/**
* Rendering the cObject, HTML
*
* @param array Array of TypoScript properties
* @param array array of TypoScript properties
* @return string Output
* @link http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=270&tx_extrepmgm_pi1[tocEl]=349&cHash=d3fd0c70b4
*/
function HTML($conf) {
return $this->stdWrap($conf['value'],$conf['value.']);
function HTML($conf) {
return $this->stdWrap($conf['value'], $conf['value.']);
}
/**
* Rendering the cObject, TEXT
*
* @param array Array of TypoScript properties
* @param array array of TypoScript properties
* @return string Output
* @link http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=270&tx_extrepmgm_pi1[tocEl]=350&cHash=b49de28f83
*/
function TEXT($conf) {
return $this->stdWrap($conf['value'],$conf);
function TEXT($conf) {
return $this->stdWrap($conf['value'], $conf);
}
/**
* Rendering the cObject, CLEARGIF
*
* @param array Array of TypoScript properties
* @param array array of TypoScript properties
* @return string Output
* @link http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=270&tx_extrepmgm_pi1[tocEl]=355&cHash=70c0f19915
*/
function CLEARGIF($conf) {
$w = $this->stdWrap($conf['width'],$conf['width.']);
$h = $this->stdWrap($conf['height'],$conf['height.']);
function CLEARGIF($conf) {
$w = $this->stdWrap($conf['width'], $conf['width.']);
$h = $this->stdWrap($conf['height'], $conf['height.']);
$w = $w ? $w : 1;
$h = $h ? $h : 1;
$wrap = $conf['wrap'] ? $conf['wrap'] : '|<br />';
$theValue = $this->wrap('<img src="'.$GLOBALS['TSFE']->absRefPrefix.'clear.gif" width="'.$w.'" height="'.$h.'"'.$this->getBorderAttr(' border="0"').' alt="" title="" />', $wrap);
$theValue = $this->wrap(
'<img src="' . $GLOBALS['TSFE']->absRefPrefix . 'clear.gif" width="' . $w . '" height="' . $h . '"' .
$this->getBorderAttr(' border="0"') . ' alt="" title="" />',
$wrap
);
return $this->stdWrap($theValue,$conf['stdWrap.']);
return $this->stdWrap($theValue, $conf['stdWrap.']);
}
/**
* Rendering the cObject, COBJ_ARRAY / COA and COBJ_ARRAY_INT
*
* @param array Array of TypoScript properties
* @param array array of TypoScript properties
* @param string If "INT" then the cObject is a "COBJ_ARRAY_INT" (non-cached), otherwise just "COBJ_ARRAY" (cached)
* @return string Output
* @link http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=270&tx_extrepmgm_pi1[tocEl]=351&cHash=a09db0329c
*/
function COBJ_ARRAY($conf,$ext='') {
function COBJ_ARRAY($conf, $ext = '') {
if (is_array($conf)) {
$content = '';
switch($ext) {
case 'INT':
switch ($ext) {
case 'INT' :
$substKey = $ext . '_SCRIPT.' . $GLOBALS['TSFE']->uniqueHash();
$content .= '<!--'.$substKey.'-->';
$GLOBALS['TSFE']->config[$ext . 'incScript'][$substKey] = array (
$content .= '<!--' . $substKey . '-->';
$GLOBALS['TSFE']->config[$ext . 'incScript'][$substKey] = array(
'file' => $conf['includeLibs'],
'conf' => $conf,
'cObj' => serialize($this),
'type' => 'COA'
);
break;
default:
default :
if ($this->checkIf($conf['if.'])) {
$this->includeLibs($conf);
$content = $this->cObjGet($conf);
......
}
return $content;
} else {
$GLOBALS['TT']->setTSlogMessage('No elements in this content object array (COBJ_ARRAY, COA, COA_INT).', 2);
$GLOBALS['TT']->setTSlogMessage('No elements in this content object array(COBJ_ARRAY, COA, COA_INT).', 2);
}
}
/**
* Rendering the cObject, USER and USER_INT
*
* @param array Array of TypoScript properties
* @param array array of TypoScript properties
* @param string If "INT" then the cObject is a "USER_INT" (non-cached), otherwise just "USER" (cached)
* @return string Output
* @link http://typo3.org/documentation/document-library/references/doc_core_tsref/4.1.0/view/8/22/
......
function USER($conf, $ext = '') {
$content = '';
switch ($ext) {
case 'INT':
case 'INT' :
$this->userObjectType = self::OBJECTTYPE_USER_INT;
$substKey = $ext . '_SCRIPT.' . $GLOBALS['TSFE']->uniqueHash();
$content.='<!--' . $substKey . '-->';
$content .= '<!--' . $substKey . '-->';
$GLOBALS['TSFE']->config[$ext . 'incScript'][$substKey] = array(
'file' => $conf['includeLibs'],
'conf' => $conf,
'cObj' => serialize($this),
'type' => 'FUNC'
);
break;
default:
if ($this->userObjectType === false) {
break;
default :
if ($this->userObjectType === FALSE) {
// Come here only if we are not called from $TSFE->INTincScript_process()!
$this->userObjectType = self::OBJECTTYPE_USER;
}
$this->includeLibs($conf);
$tempContent = $this->callUserFunction($conf['userFunc'], $conf, '');
if ($this->doConvertToUserIntObject) {
$this->doConvertToUserIntObject = false;
$this->doConvertToUserIntObject = FALSE;
$content = $this->USER($conf, 'INT');
} else {
$content .= $tempContent;
}
break;
break;
}
$this->userObjectType = false;
$this->userObjectType = FALSE;
return $content;
}
/**
* Retrieves a type of object called as USER or USER_INT. Object can detect their
* type by using this call. It returns OBJECTTYPE_USER_INT or OBJECTTYPE_USER depending on the
* current object execution. In all other cases it will return false to indicate
* current object execution. In all other cases it will return FALSE to indicate
* a call out of context.
*
* @return mixed One of OBJECTTYPE_ class constants or false
* @return mixed One of OBJECTTYPE_ class constants or FALSE
*/
public function getUserObjectType() {
return $this->userObjectType;
......
*/
public function convertToUserIntObject() {
if ($this->userObjectType !== self::OBJECTTYPE_USER) {
$GLOBALS['TT']->setTSlogMessage('tslib_cObj::convertToUserIntObject() ' .
'is called in the wrong context or for the wrong object type', 2);
$GLOBALS['TT']->setTSlogMessage('tslib_cObj::convertToUserIntObject() ' . 'is called in the wrong context or for the wrong object type', 2);
} else {
$this->doConvertToUserIntObject = TRUE;
}
else {
$this->doConvertToUserIntObject = true;
}
}
/**
* Rendering the cObject, FILE
*
* @param array Array of TypoScript properties
* @param array array of TypoScript properties
* @return string Output
* @link http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=270&tx_extrepmgm_pi1[tocEl]=352&cHash=379c60f8bc
*/
function FILE($conf) {
$theValue = $this->fileResource($this->stdWrap($conf['file'],$conf['file.']), trim($this->getAltParam($conf, false)));
if ($conf['linkWrap']) {
$theValue = $this->linkWrap($theValue,$conf['linkWrap']);
function FILE($conf) {
$theValue = $this->fileResource($this->stdWrap($conf['file'], $conf['file.']), trim($this->getAltParam($conf, FALSE)));
if ($conf['linkWrap']) {
$theValue = $this->linkWrap($theValue, $conf['linkWrap']);
}
return $this->wrap($theValue,$conf['wrap']);
return $this->wrap($theValue, $conf['wrap']);
}
/**
* Rendering the cObject, IMAGE
*
* @param array Array of TypoScript properties
* @param array array of TypoScript properties
* @return string Output
* @link http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=270&tx_extrepmgm_pi1[tocEl]=353&cHash=440681ea56
* @see cImage()
*/
function IMAGE($conf) {
$content='';
if ($this->checkIf($conf['if.'])) {
$theValue = $this->cImage($conf['file'],$conf);
if ($conf['stdWrap.']) {
$theValue = $this->stdWrap($theValue,$conf['stdWrap.']);
function IMAGE($conf) {
$content = '';
if ($this->checkIf($conf['if.'])) {
$theValue = $this->cImage($conf['file'], $conf);
if ($conf['stdWrap.']) {
$theValue = $this->stdWrap($theValue, $conf['stdWrap.']);
}
return $theValue;
}
......
/**
* Rendering the cObject, IMG_RESOURCE
*
* @param array Array of TypoScript properties
* @param array array of TypoScript properties
* @return string Output
* @link http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=270&tx_extrepmgm_pi1[tocEl]=354&cHash=46f9299706
* @see getImgResource()
*/
function IMG_RESOURCE($conf) {
$GLOBALS['TSFE']->lastImgResourceInfo = $this->getImgResource($conf['file'],$conf['file.']);
return $this->stdWrap($GLOBALS['TSFE']->lastImgResourceInfo[3],$conf['stdWrap.']);
function IMG_RESOURCE($conf) {
$GLOBALS['TSFE']->lastImgResourceInfo = $this->getImgResource($conf['file'], $conf['file.']);
return $this->stdWrap($GLOBALS['TSFE']->lastImgResourceInfo[3], $conf['stdWrap.']);
}
/**
* Rendering the cObject, IMGTEXT
*
* @param array Array of TypoScript properties
* @param array array of TypoScript properties
* @return string Output
* @link http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=270&tx_extrepmgm_pi1[tocEl]=363&cHash=cf2969bce1
*/
function IMGTEXT($conf) {
$content='';
if (is_array($conf['text.'])) {
$content.= $this->stdWrap($this->cObjGet($conf['text.'],'text.'),$conf['text.']); // this gets the surrounding content
$content = '';
if (is_array($conf['text.'])) {
$content .= $this->stdWrap($this->cObjGet($conf['text.'], 'text.'), $conf['text.']); // this gets the surrounding content
}
$imgList=trim($this->stdWrap($conf['imgList'],$conf['imgList.'])); // gets images
if ($imgList) {
$imgs = t3lib_div::trimExplode(',',$imgList);
$imgStart = intval($this->stdWrap($conf['imgStart'],$conf['imgStart.']));
$imgList = trim($this->stdWrap($conf['imgList'], $conf['imgList.'])); // gets images
if ($imgList) {
$imgs = t3lib_div::trimExplode(',', $imgList);
$imgStart = intval($this->stdWrap($conf['imgStart'], $conf['imgStart.']));
$imgCount= count($imgs)-$imgStart;
$imgCount = count($imgs) - $imgStart;
$imgMax = intval($this->stdWrap($conf['imgMax'],$conf['imgMax.']));
if ($imgMax) {
$imgCount = t3lib_div::intInRange($imgCount,0,$imgMax); // reduces the number of images.
$imgMax = intval($this->stdWrap($conf['imgMax'], $conf['imgMax.']));
if ($imgMax) {
$imgCount = t3lib_div::intInRange($imgCount, 0, $imgMax); // reduces the number of images.
}
$imgPath = $this->stdWrap($conf['imgPath'],$conf['imgPath.']);
$imgPath = $this->stdWrap($conf['imgPath'], $conf['imgPath.']);
// initialisation
$caption='';
$caption = '';
$captionArray = array();
if (!$conf['captionSplit'] && !$conf['imageTextSplit'] && is_array($conf['caption.'])) {
$caption = $this->stdWrap($this->cObjGet($conf['caption.'], 'caption.'),$conf['caption.']); // global caption, no splitting
if (!$conf['captionSplit'] && !$conf['imageTextSplit'] && is_array($conf['caption.'])) {
$caption = $this->stdWrap($this->cObjGet($conf['caption.'], 'caption.'), $conf['caption.']); // global caption, no splitting
}
if ($conf['captionSplit'] && $conf['captionSplit.']['cObject']) {
if ($conf['captionSplit'] && $conf['captionSplit.']['cObject']) {
$legacyCaptionSplit = 1;
$capSplit = $this->stdWrap($conf['captionSplit.']['token'], $conf['captionSplit.']['token.']);
if (!$capSplit) {$capSplit=LF;}
$captionArray = explode($capSplit, $this->cObjGetSingle($conf['captionSplit.']['cObject'], $conf['captionSplit.']['cObject.'], 'captionSplit.cObject'));
if (!$capSplit) {
$capSplit = LF;
}
$captionArray = explode($capSplit, $this->cObjGetSingle(
$conf['captionSplit.']['cObject'],
$conf['captionSplit.']['cObject.'],
'captionSplit.cObject')
);
foreach ($captionArray as $ca_key => $ca_val) {
$captionArray[$ca_key] = $this->stdWrap(trim($captionArray[$ca_key]), $conf['captionSplit.']['stdWrap.']);
}
}
$tablecode='';
$position=$this->stdWrap($conf['textPos'],$conf['textPos.']);
$tablecode = '';
$position = $this->stdWrap($conf['textPos'], $conf['textPos.']);
$tmppos = $position&7;
$contentPosition = $position&24;
$tmppos = $position & 7;
$contentPosition = $position & 24;
$align = $this->align[$tmppos];
$cap = ($caption)?1:0;
$txtMarg = intval($this->stdWrap($conf['textMargin'],$conf['textMargin.']));
if (!$conf['textMargin_outOfText'] && $contentPosition<16) {
$txtMarg=0;
$cap = ($caption) ? 1 : 0;
$txtMarg = intval($this->stdWrap($conf['textMargin'], $conf['textMargin.']));
if (!$conf['textMargin_outOfText'] && $contentPosition < 16) {
$txtMarg = 0;
}
$cols = intval($this->stdWrap($conf['cols'],$conf['cols.']));
$rows = intval($this->stdWrap($conf['rows'],$conf['rows.']));
$colspacing = intval($this->stdWrap($conf['colSpace'],$conf['colSpace.']));
$rowspacing = intval($this->stdWrap($conf['rowSpace'],$conf['rowSpace.']));
$cols = intval($this->stdWrap($conf['cols'], $conf['cols.']));
$rows = intval($this->stdWrap($conf['rows'], $conf['rows.']));
$colspacing = intval($this->stdWrap($conf['colSpace'], $conf['colSpace.']));
$rowspacing = intval($this->stdWrap($conf['rowSpace'], $conf['rowSpace.']));
$border = intval($this->stdWrap($conf['border'],$conf['border.'])) ? 1:0;
$borderColor = $this->stdWrap($conf['borderCol'],$conf['borderCol.']);
$borderThickness = intval($this->stdWrap($conf['borderThick'],$conf['borderThick.']));
$border = intval($this->stdWrap($conf['border'], $conf['border.'])) ? 1 : 0;
$borderColor = $this->stdWrap($conf['borderCol'], $conf['borderCol.']);
$borderThickness = intval($this->stdWrap($conf['borderThick'], $conf['borderThick.']));
$borderColor=$borderColor?$borderColor:'black';
$borderThickness=$borderThickness?$borderThickness:1;
$borderColor = $borderColor ? $borderColor : 'black';
$borderThickness = $borderThickness ? $borderThickness : 1;
$caption_align = $this->stdWrap($conf['captionAlign'],$conf['captionAlign.']);
$caption_align = $this->stdWrap($conf['captionAlign'], $conf['captionAlign.']);
if (!$caption_align) {
$caption_align = $align;
}
// generate cols
$colCount = ($cols > 1) ? $cols : 1;
if ($colCount > $imgCount) {$colCount = $imgCount;}
if ($colCount > $imgCount) {
$colCount = $imgCount;
}
$rowCount = ($colCount > 1) ? ceil($imgCount / $colCount) : $imgCount;
// generate rows
if ($rows>1) {
if ($rows > 1) {
$rowCount = $rows;
if ($rowCount > $imgCount) {$rowCount = $imgCount;}
$colCount = ($rowCount>1) ? ceil($imgCount / $rowCount) : $imgCount;
if ($rowCount > $imgCount) {
$rowCount = $imgCount;
}
$colCount = ($rowCount > 1) ? ceil($imgCount / $rowCount) : $imgCount;
}
// max Width
$colRelations = trim($this->stdWrap($conf['colRelations'],$conf['colRelations.']));
$maxW = intval($this->stdWrap($conf['maxW'],$conf['maxW.']));
$colRelations = trim($this->stdWrap($conf['colRelations'], $conf['colRelations.']));
$maxW = intval($this->stdWrap($conf['maxW'], $conf['maxW.']));
$maxWInText = intval($this->stdWrap($conf['maxWInText'],$conf['maxWInText.']));
if (!$maxWInText) { // If maxWInText is not set, it's calculated to the 50 % of the max...
$maxWInText = round($maxW/2);
$maxWInText = intval($this->stdWrap($conf['maxWInText'], $conf['maxWInText.']));
if (!$maxWInText) { // If maxWInText is not set, it's calculated to the 50 % of the max...
$maxWInText = round($maxW / 2);
}
if ($maxWInText && $contentPosition>=16) { // inText
if ($maxWInText && $contentPosition >= 16) { // inText
$maxW = $maxWInText;
}
if ($maxW && $colCount > 0) { // If there is a max width and if colCount is greater than column
/* debug($border*$borderThickness*2);
debug($maxW);
debug($colspacing);
debug(($maxW-$colspacing*($colCount-1)-$colCount*$border*$borderThickness*2));
*/
$maxW = ceil(($maxW-$colspacing*($colCount-1)-$colCount*$border*$borderThickness*2)/$colCount);
if ($maxW && $colCount > 0) { // If there is a max width and if colCount is greater than column
$maxW = ceil(($maxW - $colspacing * ($colCount - 1) - $colCount * $border * $borderThickness * 2) / $colCount);
}
// create the relation between rows
$colMaxW = Array();
if ($colRelations) {
$rel_parts = explode(':',$colRelations);
$colMaxW = array();
if ($colRelations) {
$rel_parts = explode(':', $colRelations);
$rel_total = 0;
for ($a=0;$a<$colCount;$a++) {
for ($a = 0; $a < $colCount; $a++) {
$rel_parts[$a] = intval($rel_parts[$a]);
$rel_total+= $rel_parts[$a];
$rel_total += $rel_parts[$a];
}
if ($rel_total) {
for ($a=0;$a<$colCount;$a++) {
$colMaxW[$a] = round(($maxW*$colCount)/$rel_total*$rel_parts[$a]);
if ($rel_total) {
for ($a = 0; $a < $colCount; $a++) {
$colMaxW[$a] = round(($maxW * $colCount) / $rel_total * $rel_parts[$a]);
}
if (min($colMaxW)<=0 || max($rel_parts)/min($rel_parts)>10) { // The difference in size between the largest and smalles must be within a factor of ten.
$colMaxW = Array();
if (min($colMaxW) <= 0 || max($rel_parts) / min($rel_parts) > 10) { // The difference in size between the largest and smalles must be within a factor of ten.
$colMaxW = array();
}
}
}
$image_compression = intval($this->stdWrap($conf['image_compression'],$conf['image_compression.']));
$image_effects = intval($this->stdWrap($conf['image_effects'],$conf['image_effects.']));
$image_frames = intval($this->stdWrap($conf['image_frames.']['key'],$conf['image_frames.']['key.']));
$image_compression = intval($this->stdWrap($conf['image_compression'], $conf['image_compression.']));
$image_effects = intval($this->stdWrap($conf['image_effects'], $conf['image_effects.']));
$image_frames = intval($this->stdWrap($conf['image_frames.']['key'], $conf['image_frames.']['key.']));
// fetches pictures
$splitArr=array();
$splitArr['imgObjNum']=$conf['imgObjNum'];
$splitArr = $GLOBALS['TSFE']->tmpl->splitConfArray($splitArr,$imgCount);
$splitArr = array();
$splitArr['imgObjNum'] = $conf['imgObjNum'];
$splitArr = $GLOBALS['TSFE']->tmpl->splitConfArray($splitArr, $imgCount);
// EqualHeight
$equalHeight = intval($this->stdWrap($conf['equalH'],$conf['equalH.']));
if ($equalHeight) { // Initiate gifbuilder object in order to get dimensions AND calculate the imageWidth's
$equalHeight = intval($this->stdWrap($conf['equalH'], $conf['equalH.']));
if ($equalHeight) { // Initiate gifbuilder object in order to get dimensions AND calculate the imageWidth's
$gifCreator = t3lib_div::makeInstance('tslib_gifbuilder');
$gifCreator->init();
$relations = Array();
$relations_cols = Array();
$totalMaxW = $maxW*$colCount;
for($a=0;$a<$imgCount;$a++) {
$imgKey = $a+$imgStart;
$imgInfo = $gifCreator->getImageDimensions($imgPath.$imgs[$imgKey]);
$relations[$a] = $imgInfo[1] / $equalHeight; // relationship between the original height and the wished height
if ($relations[$a]) { // if relations is zero, then the addition of this value is omitted as the image is not expected to display because of some error.
$relations_cols[floor($a/$colCount)] += $imgInfo[0]/$relations[$a]; // counts the total width of the row with the new height taken into consideration.
$relations = array();
$relations_cols = array();
$totalMaxW = $maxW * $colCount;
for ($a = 0; $a < $imgCount; $a++) {
$imgKey = $a + $imgStart;
$imgInfo = $gifCreator->getImageDimensions($imgPath . $imgs[$imgKey]);
$relations[$a] = $imgInfo[1] / $equalHeight; // relationship between the original height and the wished height
if ($relations[$a]) { // if relations is zero, then the addition of this value is omitted as the image is not expected to display because of some error.
$relations_cols[floor($a / $colCount)] += $imgInfo[0] / $relations[$a]; // counts the total width of the row with the new height taken into consideration.
}
}
}
$imageRowsFinalWidths = Array(); // contains the width of every image row
$imageRowsMaxHeights = Array();
$imgsTag=array();
$origImages=array();
for($a=0;$a<$imgCount;$a++) {
$imageRowsFinalWidths = array(); // contains the width of every image row
$imageRowsMaxHeights = array();
$imgsTag = array();
$origImages = array();
for ($a = 0; $a < $imgCount; $a++) {
$GLOBALS['TSFE']->register['IMAGE_NUM'] = $a;
$GLOBALS['TSFE']->register['IMAGE_NUM_CURRENT'] = $a;
$imgKey = $a+$imgStart;
$totalImagePath = $imgPath.$imgs[$imgKey];
$imgKey = $a + $imgStart;
$totalImagePath = $imgPath . $imgs[$imgKey];
$this->data[$this->currentValKey] = $totalImagePath;
$imgObjNum = intval($splitArr[$a]['imgObjNum']);
$imgConf = $conf[$imgObjNum.'.'];
$imgConf = $conf[$imgObjNum . '.'];
if ($equalHeight) {
if ($equalHeight) {
$scale = 1;
if ($totalMaxW) {
$rowTotalMaxW = $relations_cols[floor($a/$colCount)];
if ($rowTotalMaxW > $totalMaxW) {
if ($totalMaxW) {
$rowTotalMaxW = $relations_cols[floor($a / $colCount)];
if ($rowTotalMaxW > $totalMaxW) {
$scale = $rowTotalMaxW / $totalMaxW;
}
}
// transfer info to the imageObject. Please note, that
$imgConf['file.']['height'] = round($equalHeight/$scale);
$imgConf['file.']['height'] = round($equalHeight / $scale);
unset($imgConf['file.']['width']);
unset($imgConf['file.']['maxW']);
unset($imgConf['file.']['maxH']);
unset($imgConf['file.']['minW']);
unset($imgConf['file.']['minH']);
unset($imgConf['file.']['width.']);
unset($imgConf['file.']['maxW.']);
unset($imgConf['file.']['maxH.']);
unset($imgConf['file.']['minW.']);
unset($imgConf['file.']['minH.']);
$maxW = 0; // setting this to zero, so that it doesn't disturb
unset(
$imgConf['file.']['width'],
$imgConf['file.']['maxW'],
$imgConf['file.']['maxH'],
$imgConf['file.']['minW'],
$imgConf['file.']['minH'],
$imgConf['file.']['width.'],
$imgConf['file.']['maxW.'],
$imgConf['file.']['maxH.'],
$imgConf['file.']['minW.'],
$imgConf['file.']['minH.']
);
$maxW = 0; // setting this to zero, so that it doesn't disturb
}
if ($maxW) {
if (count($colMaxW)) {
$imgConf['file.']['maxW'] = $colMaxW[($a%$colCount)];
if (count($colMaxW)) {
$imgConf['file.']['maxW'] = $colMaxW[($a % $colCount)];
} else {
$imgConf['file.']['maxW'] = $maxW;
}
......
// Image Object supplied:
if (is_array($imgConf)) {
if ($this->image_effects[$image_effects]) {
$imgConf['file.']['params'].= ' '.$this->image_effects[$image_effects];
if ($this->image_effects[$image_effects]) {
$imgConf['file.']['params'] .= ' ' . $this->image_effects[$image_effects];
}
if ($image_frames) {
if (is_array($conf['image_frames.'][$image_frames.'.'])) {
$imgConf['file.']['m.'] = $conf['image_frames.'][$image_frames.'.'];
if ($image_frames) {
if (is_array($conf['image_frames.'][$image_frames . '.'])) {
$imgConf['file.']['m.'] = $conf['image_frames.'][$image_frames . '.'];
}
}
if ($image_compression && $imgConf['file']!='GIFBUILDER') {
if ($image_compression==1) {
if ($image_compression && $imgConf['file'] != 'GIFBUILDER') {
if ($image_compression == 1) {
$tempImport = $imgConf['file.']['import'];
$tempImport_dot = $imgConf['file.']['import.'];
unset($imgConf['file.']);
$imgConf['file.']['import'] = $tempImport;
$imgConf['file.']['import.'] = $tempImport_dot;
} elseif (isset($this->image_compression[$image_compression])) {
$imgConf['file.']['params'].= ' '.$this->image_compression[$image_compression]['params'];
$imgConf['file.']['params'] .= ' ' . $this->image_compression[$image_compression]['params'];
$imgConf['file.']['ext'] = $this->image_compression[$image_compression]['ext'];
unset($imgConf['file.']['ext.']);
}
......
$imgsTag[$imgKey] = $this->IMAGE($imgConf);
// Store the original filepath
$origImages[$imgKey]=$GLOBALS['TSFE']->lastImageInfo;
$origImages[$imgKey] = $GLOBALS['TSFE']->lastImageInfo;
$imageRowsFinalWidths[floor($a/$colCount)] += $GLOBALS['TSFE']->lastImageInfo[0];
if ($GLOBALS['TSFE']->lastImageInfo[1]>$imageRowsMaxHeights[floor($a/$colCount)]) {
$imageRowsMaxHeights[floor($a/$colCount)] = $GLOBALS['TSFE']->lastImageInfo[1];
$imageRowsFinalWidths[floor($a / $colCount)] += $GLOBALS['TSFE']->lastImageInfo[0];
if ($GLOBALS['TSFE']->lastImageInfo[1] > $imageRowsMaxHeights[floor($a / $colCount)]) {
$imageRowsMaxHeights[floor($a / $colCount)] = $GLOBALS['TSFE']->lastImageInfo[1];
}
}
// calculating the tableWidth:
// TableWidth problems: It creates problems if the pictures are NOT as wide as the tableWidth.
$tableWidth = max($imageRowsFinalWidths)+ $colspacing*($colCount-1) + $colCount*$border*$borderThickness*2;
$tableWidth = max($imageRowsFinalWidths) + $colspacing * ($colCount - 1) + $colCount * $border * $borderThickness * 2;
// make table for pictures
$index=$imgStart;
$index = $imgStart;
$noRows = $this->stdWrap($conf['noRows'],$conf['noRows.']);
$noCols = $this->stdWrap($conf['noCols'],$conf['noCols.']);
if ($noRows) {$noCols=0;} // noRows overrides noCols. They cannot exist at the same time.
$noRows = $this->stdWrap($conf['noRows'], $conf['noRows.']);
$noCols = $this->stdWrap($conf['noCols'], $conf['noCols.']);
if ($noRows) {
$noCols = 0;
} // noRows overrides noCols. They cannot exist at the same time.
if ($equalHeight) {
$noCols=1;
$noRows=0;
$noCols = 1;
$noRows = 0;
}
$rowCount_temp=1;
$colCount_temp=$colCount;
if ($noRows) {
$rowCount_temp = 1;
$colCount_temp = $colCount;
if ($noRows) {
$rowCount_temp = $rowCount;
$rowCount=1;
$rowCount = 1;
}
if ($noCols) {
$colCount=1;
if ($noCols) {
$colCount = 1;
}
// col- and rowspans calculated
$colspan = (($colspacing) ? $colCount*2-1 : $colCount);
$rowspan = (($rowspacing) ? $rowCount*2-1 : $rowCount) + $cap;
$colspan = (($colspacing) ? $colCount * 2 - 1 : $colCount);
$rowspan = (($rowspacing) ? $rowCount * 2 - 1 : $rowCount) + $cap;
// Edit icons:
$editIconsHTML = $conf['editIcons']&&$GLOBALS['TSFE']->beUserLogin ? $this->editIcons('',$conf['editIcons'],$conf['editIcons.']) : '';
$editIconsHTML = $conf['editIcons'] && $GLOBALS['TSFE']->beUserLogin
? $this->editIcons('', $conf['editIcons'], $conf['editIcons.'])
: '';
// strech out table:
$tablecode='';
$flag=0;
if ($conf['noStretchAndMarginCells']!=1) {
$tablecode.='<tr>';
if ($txtMarg && $align=='right') { // If right aligned, the textborder is added on the right side
$tablecode.='<td rowspan="'.($rowspan+1).'" valign="top"><img src="'.$GLOBALS['TSFE']->absRefPrefix.'clear.gif" width="'.$txtMarg.'" height="1" alt="" title="" />'.($editIconsHTML?'<br />'.$editIconsHTML:'').'</td>';
$editIconsHTML='';
$flag=1;
$tablecode = '';
$flag = 0;
if ($conf['noStretchAndMarginCells'] != 1) {
$tablecode .= '<tr>';
if ($txtMarg && $align == 'right') { // If right aligned, the textborder is added on the right side
$tablecode .= '<td rowspan="' . ($rowspan + 1) . '" valign="top"><img src="' .
$GLOBALS['TSFE']->absRefPrefix . 'clear.gif" width="' . $txtMarg . '" height="1" alt="" title="" />' .
($editIconsHTML ? '<br />' . $editIconsHTML : '') . '</td>';
$editIconsHTML = '';
$flag = 1;
}
$tablecode.='<td colspan="'.$colspan.'"><img src="'.$GLOBALS['TSFE']->absRefPrefix.'clear.gif" width="'.$tableWidth.'" height="1" alt="" /></td>';
if ($txtMarg && $align=='left') { // If left aligned, the textborder is added on the left side
$tablecode.='<td rowspan="'.($rowspan+1).'" valign="top"><img src="'.$GLOBALS['TSFE']->absRefPrefix.'clear.gif" width="'.$txtMarg.'" height="1" alt="" title="" />'.($editIconsHTML?'<br />'.$editIconsHTML:'').'</td>';
$editIconsHTML='';
$flag=1;
$tablecode .= '<td colspan="' . $colspan . '"><img src="' .
$GLOBALS['TSFE']->absRefPrefix . 'clear.gif" width="' . $tableWidth . '" height="1" alt="" /></td>';
if ($txtMarg && $align == 'left') { // If left aligned, the textborder is added on the left side
$tablecode .= '<td rowspan="' . ($rowspan + 1) . '" valign="top"><img src="' .
$GLOBALS['TSFE']->absRefPrefix . 'clear.gif" width="' . $txtMarg . '" height="1" alt="" title="" />' .
($editIconsHTML ? '<br />' . $editIconsHTML : '') . '</td>';
$editIconsHTML = '';
$flag = 1;
}
if ($flag) $tableWidth+=$txtMarg+1;
// $tableWidth=0;
$tablecode.='</tr>';
if ($flag) {
$tableWidth += $txtMarg + 1;
}
$tablecode .= '</tr>';
}
// draw table
for ($c=0;$c<$rowCount;$c++) { // Looping through rows. If 'noRows' is set, this is '1 time', but $rowCount_temp will hold the actual number of rows!
if ($c && $rowspacing) { // If this is NOT the first time in the loop AND if space is required, a row-spacer is added. In case of "noRows" rowspacing is done further down.
$tablecode.='<tr><td colspan="'.$colspan.'"><img src="'.$GLOBALS['TSFE']->absRefPrefix.'clear.gif" width="1" height="'.$rowspacing.'"'.$this->getBorderAttr(' border="0"').' alt="" title="" /></td></tr>';
for ($c = 0; $c < $rowCount; $c++) { // Looping through rows. If 'noRows' is set, this is '1 time', but $rowCount_temp will hold the actual number of rows!
if ($c && $rowspacing) { // If this is NOT the first time in the loop AND if space is required, a row-spacer is added. In case of "noRows" rowspacing is done further down.
$tablecode .= '<tr><td colspan="' . $colspan . '"><img src="' . $GLOBALS['TSFE']->absRefPrefix . 'clear.gif" width="1" height="' . $rowspacing . '"' . $this->getBorderAttr(' border="0"') . ' alt="" title="" /></td></tr>';
}
$tablecode.='<tr>'; // starting row
for ($b=0; $b<$colCount_temp; $b++) { // Looping through the columns
... This diff was truncated because it exceeds the maximum size that can be displayed.
(2-2/2)