Project

General

Profile

Bug #22410 » 14050_cleaning_t3lib_tsparser_ext.patch

Administrator Admin, 2010-11-24 19:42

View differences:

t3lib/class.t3lib_tsparser_ext.php (revision )
<?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!
***************************************************************/
/**
* TSParser extension class to t3lib_TStemplate
*
......
*
*
* 105: class t3lib_tsparser_ext extends t3lib_TStemplate
* 191: function flattenSetup($setupArray, $prefix, $resourceFlag)
* 191: function flattenSetup($setupArray, $prefix, $resourceFlag)
* 218: function substituteConstants($all)
* 218: function substituteConstants($all)
* 231: function substituteConstantsCallBack($matches)
* 231: function substituteConstantsCallBack($matches)
* 261: function substituteCMarkers($all)
* 261: function substituteCMarkers($all)
* 284: function generateConfig_constants()
* 284: function generateConfig_constants()
* 330: function ext_getSetup($theSetup,$theKey)
* 330: function ext_getSetup($theSetup,$theKey)
* 358: function ext_getObjTree($arr, $depth_in, $depthData, $parentType='',$parentValue='', $alphaSort='0')
* 358: function ext_getObjTree($arr, $depth_in, $depthData, $parentType='',$parentValue='', $alphaSort='0')
* 463: function lineNumberToScript($lnArr)
* 463: function lineNumberToScript($lnArr)
* 494: function makeHtmlspecialchars($theValue)
* 494: function makeHtmlspecialchars($theValue)
* 507: function ext_getSearchKeys($arr, $depth_in, $searchString, $keyArray)
* 507: function ext_getSearchKeys($arr, $depth_in, $searchString, $keyArray)
* 562: function ext_getRootlineNumber($pid)
* 562: function ext_getRootlineNumber($pid)
* 580: function ext_getTemplateHierarchyArr($arr,$depthData, $keyArray,$first=0)
* 580: function ext_getTemplateHierarchyArr($arr,$depthData, $keyArray,$first=0)
* 639: function ext_process_hierarchyInfo($depthDataArr,&$pointer)
* 639: function ext_process_hierarchyInfo($depthDataArr,&$pointer)
* 670: function ext_outputTS($config, $lineNumbers=0, $comments=0, $crop=0, $syntaxHL=0, $syntaxHLBlockmode=0)
* 670: function ext_outputTS($config, $lineNumbers=0, $comments=0, $crop=0, $syntaxHL=0, $syntaxHLBlockmode=0)
* 697: function ext_fixed_lgd($string,$chars)
* 697: function ext_fixed_lgd($string,$chars)
* 713: function ext_lnBreakPointWrap($ln,$str)
* 713: function ext_lnBreakPointWrap($ln,$str)
* 726: function ext_formatTS($input, $ln, $comments=1, $crop=0)
* 726: function ext_formatTS($input, $ln, $comments=1, $crop=0)
* 765: function ext_getFirstTemplate($id,$template_uid=0)
* 765: function ext_getFirstTemplate($id,$template_uid=0)
* 785: function ext_getAllTemplates($id)
* 785: function ext_getAllTemplates($id)
* 806: function ext_compareFlatSetups($default)
* 806: function ext_compareFlatSetups($default)
* 872: function ext_categorizeEditableConstants($editConstArray)
* 872: function ext_categorizeEditableConstants($editConstArray)
* 895: function ext_getCategoryLabelArray()
* 895: function ext_getCategoryLabelArray()
* 912: function ext_getTypeData($type)
* 912: function ext_getTypeData($type)
* 953: function ext_getTSCE_config($category)
* 953: function ext_getTSCE_config($category)
* 992: function ext_getKeyImage($key)
* 992: function ext_getKeyImage($key)
* 1002: function ext_getTSCE_config_image($imgConf)
* 1002: function ext_getTSCE_config_image($imgConf)
* 1026: function ext_resourceDims()
* 1026: function ext_resourceDims()
* 1056: function ext_readDirResources($path)
* 1056: function ext_readDirResources($path)
* 1071: function readDirectory($path,$type='file')
* 1071: function readDirectory($path,$type='file')
* 1096: function ext_fNandV($params)
* 1096: function ext_fNandV($params)
* 1114: function ext_printFields($theConstants,$category)
* 1114: function ext_printFields($theConstants,$category)
*
* SECTION: Processing input values
* SECTION: Processing input values
* 1408: function ext_regObjectPositions($constants)
* 1408: function ext_regObjectPositions($constants)
* 1423: function ext_regObjects($pre)
* 1423: function ext_regObjects($pre)
* 1468: function ext_putValueInConf($key, $var)
* 1468: function ext_putValueInConf($key, $var)
* 1491: function ext_removeValueInConf($key)
* 1491: function ext_removeValueInConf($key)
* 1507: function ext_depthKeys($arr,$settings)
* 1507: function ext_depthKeys($arr,$settings)
* 1542: function ext_procesInput($http_post_vars,$http_post_files,$theConstants,$tplRow)
* 1542: function ext_procesInput($http_post_vars,$http_post_files,$theConstants,$tplRow)
* 1666: function upload_copy_file($typeDat,&$tplRow,$theRealFileName,$tmp_name)
* 1666: function upload_copy_file($typeDat,&$tplRow,$theRealFileName,$tmp_name)
* 1715: function ext_prevPageWithTemplate($id,$perms_clause)
* 1715: function ext_prevPageWithTemplate($id,$perms_clause)
* 1731: function ext_setStar($val)
* 1731: function ext_setStar($val)
* 1743: function ext_detectAndFixExtensionPrefix($value)
* 1743: function ext_detectAndFixExtensionPrefix($value)
*
* TOTAL FUNCTIONS: 41
* (This index is automatically created/updated by the extension "extdeveval")
......
*/
/**
* TSParser extension class to t3lib_TStemplate
*
......
* @package TYPO3
* @subpackage t3lib
*/
class t3lib_tsparser_ext extends t3lib_TStemplate {
class t3lib_tsparser_ext extends t3lib_TStemplate {
var $edit_divider = '###MOD_TS:EDITABLE_CONSTANTS###'; // This string is used to indicate the point in a template from where the editable constants are listed. Any vars before this point (if it exists though) is regarded as default values.
var $edit_divider = '###MOD_TS:EDITABLE_CONSTANTS###'; // This string is used to indicate the point in a template from where the editable constants are listed. Any vars before this point (if it exists though) is regarded as default values.
var $HTMLcolorList = 'aqua,beige,black,blue,brown,fuchsia,gold,gray,green,lime,maroon,navy,olive,orange,purple,red,silver,tan,teal,turquoise,yellow,white';
// internal
var $categories = array(
'basic' => array(), // Constants of superior importance for the template-layout. This is dimensions, imagefiles and enabling of various features. The most basic constants, which you would almost always want to configure.
'basic' => array(), // Constants of superior importance for the template-layout. This is dimensions, imagefiles and enabling of various features. The most basic constants, which you would almost always want to configure.
'menu' => array(), // Menu setup. This includes fontfiles, sizes, background images. Depending on the menutype.
'menu' => array(), // Menu setup. This includes fontfiles, sizes, background images. Depending on the menutype.
'content' => array(), // All constants related to the display of pagecontent elements
'content' => array(), // All constants related to the display of pagecontent elements
'page' => array(), // General configuration like metatags, link targets
'page' => array(), // General configuration like metatags, link targets
'advanced' => array(), // Advanced functions, which are used very seldomly.
'advanced' => array(), // Advanced functions, which are used very seldomly.
'all' => array() // All constants are put here also!
'all' => array() // All constants are put here also!
); // This will be filled with the available categories of the current template.
); // This will be filled with the available categories of the current template.
var $subCategories = array(
// Standard categories:
// Standard categories:
'enable' => Array('Enable features', 'a'),
'dims' => Array('Dimensions, widths, heights, pixels', 'b'),
'file' => Array('Files', 'c'),
'typo' => Array('Typography', 'd'),
'typo' => Array('Typography', 'd'),
'color' => Array('Colors', 'e'),
'links' => Array('Links and targets', 'f'),
'language' => Array('Language specific constants', 'g'),
// subcategories based on the default content elements
// subcategories based on the default content elements
'cheader' => Array('Content: \'Header\'', 'ma'),
'cheader_g' => Array('Content: \'Header\', Graphical', 'ma'),
'ctext' => Array('Content: \'Text\'', 'mb'),
......
var $resourceDimensions = array();
var $dirResources = array();
var $backend_info=1;
var $backend_info = 1;
// tsconstanteditor
var $ext_inBrace=0;
var $ext_inBrace = 0;
// tsbrowser
var $tsbrowser_searchKeys = array();
var $tsbrowser_depthKeys = array();
var $constantMode='';
var $constantMode = '';
var $regexMode='';
var $regexMode = '';
var $fixedLgd='';
var $fixedLgd = '';
var $resourceCheck=0;
var $resourceCheck = 0;
var $ext_lineNumberOffset=0;
var $ext_lineNumberOffset = 0;
var $ext_localGfxPrefix='';
var $ext_localGfxPrefix = '';
var $ext_localWebGfxPrefix='';
var $ext_localWebGfxPrefix = '';
var $ext_expandAllNotes=0;
var $ext_expandAllNotes = 0;
var $ext_noPMicons=0;
var $ext_noPMicons = 0;
var $ext_noSpecialCharsOnLabels=0;
var $ext_noSpecialCharsOnLabels = 0;
var $ext_listOfTemplatesArr=array();
var $ext_listOfTemplatesArr = array();
var $ext_lineNumberOffset_mode='';
var $ext_lineNumberOffset_mode = '';
var $ext_dontCheckIssetValues=0; // Dont change...
var $ext_dontCheckIssetValues = 0; // Dont change...
var $ext_noCEUploadAndCopying=0;
var $ext_noCEUploadAndCopying = 0;
var $ext_printAll=0;
var $ext_printAll = 0;
var $ext_CEformName='forms[0]';
var $ext_CEformName = 'forms[0]';
var $ext_defaultOnlineResourceFlag=0;
var $ext_defaultOnlineResourceFlag = 0;
var $doNotSortCategoriesBeforeMakingForm = FALSE;
// ts analyzer
var $templateTitles=array();
var $templateTitles = array();
/**
......
* @param [type] $resourceFlag: ...
* @return [type] ...
*/
function flattenSetup($setupArray, $prefix, $resourceFlag) {
function flattenSetup($setupArray, $prefix, $resourceFlag) {
if (is_array($setupArray)) {
if (is_array($setupArray)) {
$this->getFileName_backPath=PATH_site; // Setting absolute prefixed path for relative resources.
$this->getFileName_backPath = PATH_site; // Setting absolute prefixed path for relative resources.
foreach ($setupArray as $key => $val) {
if ($prefix || substr($key,0,16)!='TSConstantEditor') { // We don't want 'TSConstantEditor' in the flattend setup.
if ($prefix || substr($key, 0, 16) != 'TSConstantEditor') { // We don't want 'TSConstantEditor' in the flattend setup.
if (is_array($val)) {
if (is_array($val)) {
$this->flattenSetup($val,$prefix.$key, ($key=='file.'));
$this->flattenSetup($val, $prefix . $key, ($key == 'file.'));
} elseif ($resourceFlag && $this->resourceCheck) {
$this->flatSetup[$prefix.$key] = $this->getFileName($val);
$this->flatSetup[$prefix . $key] = $this->getFileName($val);
if ($this->removeFromGetFilePath && substr($this->flatSetup[$prefix.$key],0,strlen($this->removeFromGetFilePath))==$this->removeFromGetFilePath) {
if ($this->removeFromGetFilePath &&
substr($this->flatSetup[$prefix . $key], 0, strlen($this->removeFromGetFilePath)) == $this->removeFromGetFilePath) {
$this->flatSetup[$prefix.$key] = substr($this->flatSetup[$prefix.$key],strlen($this->removeFromGetFilePath));
$this->flatSetup[$prefix . $key] = substr($this->flatSetup[$prefix . $key], strlen($this->removeFromGetFilePath));
}
} else {
$this->flatSetup[$prefix.$key] = $val;
$this->flatSetup[$prefix . $key] = $val;
}
}
}
......
* @param [type] $all: ...
* @return [type] ...
*/
function substituteConstants($all) {
function substituteConstants($all) {
$this->Cmarker = substr(md5(uniqid('')),0,6);
$this->Cmarker = substr(md5(uniqid('')), 0, 6);
return preg_replace_callback('/\{\$(.[^}]+)\}/', array($this, 'substituteConstantsCallBack'), $all);
}
......
* @see substituteConstants()
*/
function substituteConstantsCallBack($matches) {
switch($this->constantMode) {
switch ($this->constantMode) {
case 'const':
$ret_val = isset($this->flatSetup[$matches[1]]) && !is_array($this->flatSetup[$matches[1]]) ?
$ret_val = isset($this->flatSetup[$matches[1]]) && !is_array($this->flatSetup[$matches[1]]) ?
'##'.$this->Cmarker.'_B##'.$matches[0].'##'.$this->Cmarker.'_E##' :
'##' . $this->Cmarker . '_B##' . $matches[0] . '##' . $this->Cmarker . '_E##' :
$matches[0];
break;
$matches[0];
break;
case 'subst':
$ret_val = isset($this->flatSetup[$matches[1]]) && !is_array($this->flatSetup[$matches[1]]) ?
$ret_val = isset($this->flatSetup[$matches[1]]) && !is_array($this->flatSetup[$matches[1]]) ?
'##'.$this->Cmarker.'_B##'.$this->flatSetup[$matches[1]].'##'.$this->Cmarker.'_E##' :
'##' . $this->Cmarker . '_B##' . $this->flatSetup[$matches[1]] . '##' . $this->Cmarker . '_E##' :
$matches[0];
break;
$matches[0];
break;
case 'untouched':
$ret_val = $matches[0];
break;
break;
default:
$ret_val = isset($this->flatSetup[$matches[1]]) && !is_array($this->flatSetup[$matches[1]]) ?
$ret_val = isset($this->flatSetup[$matches[1]]) && !is_array($this->flatSetup[$matches[1]]) ?
$this->flatSetup[$matches[1]] :
$matches[0];
$this->flatSetup[$matches[1]] :
$matches[0];
}
return $ret_val;
......
* @param [type] $all: ...
* @return [type] ...
*/
function substituteCMarkers($all) {
function substituteCMarkers($all) {
switch($this->constantMode) {
switch ($this->constantMode) {
case 'const':
$all = str_replace('##'.$this->Cmarker.'_B##', '<font color="green"><strong>', $all);
$all = str_replace('##' . $this->Cmarker . '_B##', '<font color="green"><strong>', $all);
$all = str_replace('##'.$this->Cmarker.'_E##', '</strong></font>', $all);
$all = str_replace('##' . $this->Cmarker . '_E##', '</strong></font>', $all);
break;
case 'subst':
$all = str_replace('##'.$this->Cmarker.'_B##', '<font color="green"><strong>', $all);
$all = str_replace('##' . $this->Cmarker . '_B##', '<font color="green"><strong>', $all);
$all = str_replace('##'.$this->Cmarker.'_E##', '</strong></font>', $all);
$all = str_replace('##' . $this->Cmarker . '_E##', '</strong></font>', $all);
break;
default:
$all = $all;
......
*
* @return [type] ...
*/
function generateConfig_constants() {
function generateConfig_constants() {
// These vars are also set lateron...
$this->setup['resources'] = $this->resources;
$this->setup['sitetitle'] = $this->sitetitle;
// parse constants
$constants = t3lib_div::makeInstance('t3lib_TSparser');
$constants->regComments=1; // Register comments!
$constants->regComments = 1; // Register comments!
$constants->setup = $this->const;
$constants->setup = $this->mergeConstantsFromPageTSconfig($constants->setup);
/* @var $matchObj t3lib_matchCondition_frontend */
$matchObj = t3lib_div::makeInstance('t3lib_matchCondition_frontend');
$matchObj->setSimulateMatchResult(true); // Matches ALL conditions in TypoScript
$matchObj->setSimulateMatchResult(TRUE); // Matches ALL conditions in TypoScript
$c=0;
$c = 0;
$cc=count($this->constants);
$cc = count($this->constants);
foreach ($this->constants as $str) {
$c++;
if ($c==$cc) {
if ($c == $cc) {
if (strstr($str,$this->edit_divider)) {
if (strstr($str, $this->edit_divider)) {
$parts = explode($this->edit_divider,$str,2);
$parts = explode($this->edit_divider, $str, 2);
$str=$parts[1];
$str = $parts[1];
$constants->parse($parts[0],$matchObj);
$constants->parse($parts[0], $matchObj);
}
$this->flatSetup = Array();
$this->flattenSetup($constants->setup,'','');
$this->flattenSetup($constants->setup, '', '');
$defaultConstants=$this->flatSetup;
$defaultConstants = $this->flatSetup;
}
$constants->parse($str,$matchObj);
$constants->parse($str, $matchObj);
}
$this->flatSetup = Array();
$this->flattenSetup($constants->setup,'','');
$this->flattenSetup($constants->setup, '', '');
$this->setup['constants'] = $constants->setup;
return $this->ext_compareFlatSetups($defaultConstants);
......
* @param [type] $theKey: ...
* @return [type] ...
*/
function ext_getSetup($theSetup,$theKey) {
function ext_getSetup($theSetup, $theKey) {
$parts = explode('.',$theKey,2);
$parts = explode('.', $theKey, 2);
if (strcmp($parts[0],'') && is_array($theSetup[$parts[0].'.'])) {
if (strcmp($parts[0], '') && is_array($theSetup[$parts[0] . '.'])) {
if (strcmp(trim($parts[1]),'')) {
if (strcmp(trim($parts[1]), '')) {
return $this->ext_getSetup($theSetup[$parts[0].'.'],trim($parts[1]));
return $this->ext_getSetup($theSetup[$parts[0] . '.'], trim($parts[1]));
} else {
return array($theSetup[$parts[0].'.'], $theSetup[$parts[0]]);
return array($theSetup[$parts[0] . '.'], $theSetup[$parts[0]]);
}
} else {
if (strcmp(trim($theKey),'')) {
if (strcmp(trim($theKey), '')) {
return array(array(),$theSetup[$theKey]);
return array(array(), $theSetup[$theKey]);
} else {
return array($theSetup,'');
return array($theSetup, '');
}
}
}
......
* @param boolean $alphaSort sorts the array keys / tree by alphabet when set to 1
* @return [type] ...
*/
function ext_getObjTree($arr, $depth_in, $depthData, $parentType='',$parentValue='', $alphaSort='0') {
function ext_getObjTree($arr, $depth_in, $depthData, $parentType = '', $parentValue = '', $alphaSort = '0') {
$HTML='';
$HTML = '';
$a=0;
$a = 0;
if($alphaSort == '1') {
if ($alphaSort == '1') {
ksort($arr);
}
$keyArr_num=array();
$keyArr_num = array();
$keyArr_alpha=array();
$keyArr_alpha = array();
foreach ($arr as $key => $value) {
if (substr($key,-2)!='..') { // Don't do anything with comments / linenumber registrations...
if (substr($key, -2) != '..') { // Don't do anything with comments / linenumber registrations...
$key=preg_replace('/\.$/','',$key);
$key = preg_replace('/\.$/', '', $key);
if (substr($key,-1)!='.') {
if (substr($key, -1) != '.') {
if (t3lib_div::testInt($key)) {
if (t3lib_div::testInt($key)) {
$keyArr_num[$key]=$arr[$key];
$keyArr_num[$key] = $arr[$key];
} else {
$keyArr_alpha[$key]=$arr[$key];
$keyArr_alpha[$key] = $arr[$key];
}
}
}
}
ksort($keyArr_num);
$keyArr=$keyArr_num+$keyArr_alpha;
$keyArr = $keyArr_num + $keyArr_alpha;
$c=count($keyArr);
$c = count($keyArr);
if ($depth_in) {$depth_in = $depth_in.'.';}
if ($depth_in) {
$depth_in = $depth_in . '.';
}
foreach ($keyArr as $key => $value) {
$a++;
$depth=$depth_in.$key;
$depth = $depth_in . $key;
if ($this->bType!='const' || substr($depth,0,1)!='_') { // this excludes all constants starting with '_' from being shown.
if ($this->bType != 'const' || substr($depth, 0, 1) != '_') { // this excludes all constants starting with '_' from being shown.
$goto = substr(md5($depth),0,6);
$goto = substr(md5($depth), 0, 6);
$deeper = (is_array($arr[$key.'.']) && ($this->tsbrowser_depthKeys[$depth] || $this->ext_expandAllNotes)) ? 1 : 0;
$deeper = (is_array($arr[$key . '.']) && ($this->tsbrowser_depthKeys[$depth] || $this->ext_expandAllNotes)) ? 1 : 0;
$PM = 'join';
$LN = ($a==$c)?'blank':'line';
$LN = ($a == $c) ? 'blank' : 'line';
$BTM = ($a==$c)?'bottom':'';
$BTM = ($a == $c) ? 'bottom' : '';
$PM = is_array($arr[$key.'.']) && !$this->ext_noPMicons ? ($deeper ? 'minus':'plus') : 'join';
$PM = is_array($arr[$key . '.']) && !$this->ext_noPMicons ? ($deeper ? 'minus' : 'plus') : 'join';
$HTML.=$depthData;
$HTML .= $depthData;
$theIcon='<img src="'.$GLOBALS['BACK_PATH'].'gfx/ol/'.$PM.$BTM.'.gif" width="18" height="16" align="top" border="0" alt="" />';
$theIcon = '<img src="' . $GLOBALS['BACK_PATH'] . 'gfx/ol/' . $PM . $BTM . '.gif" width="18" height="16" align="top" border="0" alt="" />';
if ($PM=='join') {
if ($PM == 'join') {
$HTML.=$theIcon;
$HTML .= $theIcon;
} else {
$aHref='index.php?id=' . $GLOBALS['SOBE']->id .
$aHref = 'index.php?id=' . $GLOBALS['SOBE']->id .
'&tsbr[' . $depth.']=' . ($deeper ? 0 : 1) .
'&tsbr[' . $depth . ']=' . ($deeper ? 0 : 1) .
(t3lib_div::_GP("breakPointLN") ? '&breakPointLN=' . t3lib_div::_GP("breakPointLN") : '') .
(t3lib_div::_GP("breakPointLN") ? '&breakPointLN=' . t3lib_div::_GP("breakPointLN") : '') .
'#' .$goto;
'#' . $goto;
$HTML.='<a name="'.$goto.'" href="'.htmlspecialchars($aHref).'">'.$theIcon.'</a>';
$HTML .= '<a name="' . $goto . '" href="' . htmlspecialchars($aHref) . '">' . $theIcon . '</a>';
}
$label = $key;
if (t3lib_div::inList('types,resources,sitetitle',$depth) && $this->bType=='setup') { // Read only...
if (t3lib_div::inList('types,resources,sitetitle', $depth) && $this->bType == 'setup') { // Read only...
$label='<font color="#666666">'.$label.'</font>';
$label = '<font color="#666666">' . $label . '</font>';
} else {
if ($this->linkObjects) {
if ($this->linkObjects) {
$aHref = 'index.php?id='.$GLOBALS['SOBE']->id .
$aHref = 'index.php?id=' . $GLOBALS['SOBE']->id .
'&sObj=' . $depth .
(t3lib_div::_GP("breakPointLN") ? '&breakPointLN=' . t3lib_div::_GP("breakPointLN") : '');
'&sObj=' . $depth .
(t3lib_div::_GP("breakPointLN") ? '&breakPointLN=' . t3lib_div::_GP("breakPointLN") : '');
if ($this->bType!='const') {
if ($this->bType != 'const') {
$ln = is_array($arr[$key.'.ln..']) ? 'Defined in: '.$this->lineNumberToScript($arr[$key.'.ln..']) : 'N/A';
$ln = is_array($arr[$key . '.ln..']) ? 'Defined in: ' . $this->lineNumberToScript($arr[$key . '.ln..']) : 'N/A';
} else {
$ln = '';
}
if ($this->tsbrowser_searchKeys[$depth] & 4) { $label = '<strong><font color="red">'.$label.'</font></strong>'; } // The key has matched the search string
if ($this->tsbrowser_searchKeys[$depth] & 4) {
$label = '<strong><font color="red">' . $label . '</font></strong>';
} // The key has matched the search string
$label = '<a href="'.htmlspecialchars($aHref).'" title="'.htmlspecialchars($ln).'">'.$label.'</a>';
$label = '<a href="' . htmlspecialchars($aHref) . '" title="' . htmlspecialchars($ln) . '">' . $label . '</a>';
}
}
$HTML.='['.$label.']';
$HTML .= '[' . $label . ']';
if (isset($arr[$key])) {
if (isset($arr[$key])) {
$theValue = $arr[$key];
if ($this->fixedLgd) {
if ($this->fixedLgd) {
$imgBlocks = ceil(1+strlen($depthData)/77);
$imgBlocks = ceil(1 + strlen($depthData) / 77);
$lgdChars = 68-ceil(strlen('['.$key.']')*0.8)-$imgBlocks*3;
$lgdChars = 68 - ceil(strlen('[' . $key . ']') * 0.8) - $imgBlocks * 3;
$theValue = $this->ext_fixed_lgd($theValue,$lgdChars);
$theValue = $this->ext_fixed_lgd($theValue, $lgdChars);
}
if ($this->tsbrowser_searchKeys[$depth] & 2) { // The value has matched the search string
if ($this->tsbrowser_searchKeys[$depth] & 2) { // The value has matched the search string
$HTML.='&nbsp;=&nbsp;<strong><font color="red">'.$this->makeHtmlspecialchars($theValue).'</font></strong>';
$HTML .= '&nbsp;=&nbsp;<strong><font color="red">' . $this->makeHtmlspecialchars($theValue) . '</font></strong>';
} else {
$HTML.='&nbsp;=&nbsp;<strong>'.$this->makeHtmlspecialchars($theValue).'</strong>';
$HTML .= '&nbsp;=&nbsp;<strong>' . $this->makeHtmlspecialchars($theValue) . '</strong>';
}
if ($this->ext_regComments && isset($arr[$key.'..'])) {
if ($this->ext_regComments && isset($arr[$key . '..'])) {
$comment = $arr[$key.'..'];
$comment = $arr[$key . '..'];
if (!preg_match('/### <INCLUDE_TYPOSCRIPT:.*/', $comment)) { // Skip INCLUDE_TYPOSCRIPT comments, they are almost useless
if (!preg_match('/### <INCLUDE_TYPOSCRIPT:.*/', $comment)) { // Skip INCLUDE_TYPOSCRIPT comments, they are almost useless
$comment = preg_replace('/[\r\n]/', ' ', $comment); // Remove linebreaks, replace with ' '
$comment = preg_replace('/[\r\n]/', ' ', $comment); // Remove linebreaks, replace with ' '
$comment = preg_replace('/[#\*]{2,}/', '', $comment); // Remove # and * if more than twice in a row
$comment = preg_replace('/[#\*]{2,}/', '', $comment); // Remove # and * if more than twice in a row
$comment = preg_replace('/^[#\*\s]+/', '# ', $comment); // Replace leading # (just if it exists) and add it again. Result: Every comment should be prefixed by a '#'.
$comment = preg_replace('/^[#\*\s]+/', '# ', $comment); // Replace leading # (just if it exists) and add it again. Result: Every comment should be prefixed by a '#'.
$comment = $this->makeHtmlspecialchars($comment); // Masking HTML Tags: Replace < with &lt; and > with &gt;
$comment = $this->makeHtmlspecialchars($comment); // Masking HTML Tags: Replace < with &lt; and > with &gt;
$HTML.= ' <span class="comment">'.trim($comment).'</span>';
$HTML .= ' <span class="comment">' . trim($comment) . '</span>';
}
}
}
$HTML.='<br />';
$HTML .= '<br />';
if ($deeper) {
if ($deeper) {
$HTML.=$this->ext_getObjTree($arr[$key.'.'], $depth, $depthData.'<img src="'.$GLOBALS['BACK_PATH'].'gfx/ol/'.$LN.'.gif" width="18" height="16" align="top" alt="" />', '' /* not used: $validate_info[$key] */, $arr[$key], $alphaSort);
$HTML .= $this->ext_getObjTree(
$arr[$key . '.'],
$depth,
$depthData . '<img src="' . $GLOBALS['BACK_PATH'] . 'gfx/ol/' . $LN . '.gif" width="18" height="16" align="top" alt="" />',
'' /* not used: $validate_info[$key] */,
$arr[$key],
$alphaSort
);
}
}
}
......
* @param [type] $lnArr: ...
* @return [type] ...
*/
function lineNumberToScript($lnArr) {
function lineNumberToScript($lnArr) {
if (!is_array($this->lnToScript)) {
if (!is_array($this->lnToScript)) {
$this->lnToScript = array();
$c=1;
$c = 1;
$c+=substr_count($GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup'],LF)+2;
$c += substr_count($GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup'], LF) + 2;
$this->lnToScript[$c] = '[Default]';
foreach($this->hierarchyInfoToRoot as $info) {
foreach ($this->hierarchyInfoToRoot as $info) {
$c+=$info['configLines']+1;
$c += $info['configLines'] + 1;
$this->lnToScript[$c] = $info['title'];
}
}
foreach($lnArr as $k => $ln) {
foreach ($lnArr as $k => $ln) {
foreach($this->lnToScript as $endLn => $title) {
foreach ($this->lnToScript as $endLn => $title) {
if ($endLn >= intval($ln)) {
if ($endLn >= intval($ln)) {
$lnArr[$k] = '"'.$title.'", '.$ln;
$lnArr[$k] = '"' . $title . '", ' . $ln;
break;
}
}
}
return implode('; ',$lnArr);
return implode('; ', $lnArr);
}
/**
......
* @param [type] $theValue: ...
* @return [type] ...
*/
function makeHtmlspecialchars($theValue){
function makeHtmlspecialchars($theValue) {
return $this->ext_noSpecialCharsOnLabels ? $theValue : htmlspecialchars($theValue);
}
......
* @param [type] $keyArray: ...
* @return [type] ...
*/
function ext_getSearchKeys($arr, $depth_in, $searchString, $keyArray) {
function ext_getSearchKeys($arr, $depth_in, $searchString, $keyArray) {
$keyArr=array();
$keyArr = array();
foreach ($arr as $key => $value) {
$key=preg_replace('/\.$/','',$key);
$key = preg_replace('/\.$/', '', $key);
if (substr($key,-1)!='.') {
if (substr($key, -1) != '.') {
$keyArr[$key]=1;
$keyArr[$key] = 1;
}
}
$c=count($keyArr);
$c = count($keyArr);
if ($depth_in) { $depth_in = $depth_in.'.'; }
if ($depth_in) {
$depth_in = $depth_in . '.';
}
foreach ($keyArr as $key => $value) {
$depth=$depth_in.$key;
$depth = $depth_in . $key;
$deeper = is_array($arr[$key.'.']);
$deeper = is_array($arr[$key . '.']);
if ($this->regexMode) {
if ($this->regexMode) {
if (preg_match('/'.$searchString.'/',$arr[$key])) { // The value has matched
if (preg_match('/' . $searchString . '/', $arr[$key])) { // The value has matched
$this->tsbrowser_searchKeys[$depth]+=2;
$this->tsbrowser_searchKeys[$depth] += 2;
}
if (preg_match('/'.$searchString.'/',$key)) { // The key has matched
if (preg_match('/' . $searchString . '/', $key)) { // The key has matched
$this->tsbrowser_searchKeys[$depth]+=4;
$this->tsbrowser_searchKeys[$depth] += 4;
}
if (preg_match('/'.$searchString.'/',$depth_in)) { // Just open this subtree if the parent key has matched the search
if (preg_match('/' . $searchString . '/', $depth_in)) { // Just open this subtree if the parent key has matched the search
$this->tsbrowser_searchKeys[$depth]=1;
$this->tsbrowser_searchKeys[$depth] = 1;
}
} else {
if (stristr($arr[$key],$searchString)) { // The value has matched
if (stristr($arr[$key], $searchString)) { // The value has matched
$this->tsbrowser_searchKeys[$depth]+=2;
$this->tsbrowser_searchKeys[$depth] += 2;
}
if (stristr($key,$searchString)) { // The key has matches
if (stristr($key, $searchString)) { // The key has matches
$this->tsbrowser_searchKeys[$depth]+=4;
$this->tsbrowser_searchKeys[$depth] += 4;
}
if (stristr($depth_in,$searchString)) { // Just open this subtree if the parent key has matched the search
if (stristr($depth_in, $searchString)) { // Just open this subtree if the parent key has matched the search
$this->tsbrowser_searchKeys[$depth]=1;
$this->tsbrowser_searchKeys[$depth] = 1;
}
}
if ($deeper) {
if ($deeper) {
$cS = count($this->tsbrowser_searchKeys);
$keyArray = $this->ext_getSearchKeys($arr[$key.'.'], $depth, $searchString, $keyArray);
$keyArray = $this->ext_getSearchKeys($arr[$key . '.'], $depth, $searchString, $keyArray);
if ($cS != count($this->tsbrowser_searchKeys)) {
if ($cS != count($this->tsbrowser_searchKeys)) {
$keyArray[$depth]=1;
$keyArray[$depth] = 1;
}
}
}
......
* @param [type] $pid: ...
* @return [type] ...
*/
function ext_getRootlineNumber($pid) {
function ext_getRootlineNumber($pid) {
if ($pid && is_array($GLOBALS['rootLine'])) {
if ($pid && is_array($GLOBALS['rootLine'])) {
foreach ($GLOBALS['rootLine'] as $key => $val) {
if ($val['uid']==$pid) return $key;
if ($val['uid'] == $pid) {
return $key;
}
}
}
}
}
}
}
/**
* [Describe function...]
......
* @param [type] $first: ...
* @return [type] ...
*/
function ext_getTemplateHierarchyArr($arr,$depthData, $keyArray,$first=0) {
function ext_getTemplateHierarchyArr($arr, $depthData, $keyArray, $first = 0) {
$keyArr=array();
$keyArr = array();
foreach ($arr as $key => $value) {
$key=preg_replace('/\.$/','',$key);
$key = preg_replace('/\.$/', '', $key);
if (substr($key,-1)!='.') {
if (substr($key, -1) != '.') {
$keyArr[$key]=1;
$keyArr[$key] = 1;
}
}
$a=0;
$a = 0;
$c=count($keyArr);
$c = count($keyArr);
static $i = 0;
foreach ($keyArr as $key => $value) {
$HTML = '';
......
$row = $arr[$key];
$PM = 'join';
$LN = ($a==$c) ? 'blank' : 'line';
$LN = ($a == $c) ? 'blank' : 'line';
$BTM = ($a==$c) ? 'top' : '';
$BTM = ($a == $c) ? 'top' : '';
$PM = 'join';
$HTML .= $depthData;
......
$alttext = '[' . $row['templateID'] . ']';
$alttext .= $row['pid'] ? ' - ' . t3lib_BEfunc::getRecordPath($row['pid'], $GLOBALS['SOBE']->perms_clause, 20) : '';
$icon = (substr($row['templateID'],0,3) == 'sys' ?
$icon = (substr($row['templateID'], 0, 3) == 'sys' ?
t3lib_iconWorks::getSpriteIconForRecord('sys_template', $row, array('title' => $alttext))
: t3lib_iconWorks::getSpriteIcon('mimetypes-x-content-template-static', array('title' => $alttext))
);
t3lib_iconWorks::getSpriteIconForRecord('sys_template', $row, array('title' => $alttext))
: t3lib_iconWorks::getSpriteIcon('mimetypes-x-content-template-static', array('title' => $alttext))
);
if (in_array($row['templateID'], $this->clearList_const) || in_array($row['templateID'], $this->clearList_setup)) {
$A_B = '<a href="index.php?id=' . htmlspecialchars($GLOBALS['SOBE']->id . '&template=' . $row['templateID']) . '">';
$A_E = '</a>';
......
$A_E = '';
}
$HTML .= ($first ? '' : '<img src="' . $GLOBALS['BACK_PATH'] . 'gfx/ol/' . $PM . $BTM . '.gif" width="18" height="16" align="top" border="0" alt="" />') .
$icon .
$A_B . htmlspecialchars(t3lib_div::fixed_lgd_cs($row['title'], $GLOBALS['BE_USER']->uc['titleLen'])) . $A_E . '&nbsp;&nbsp;';
$icon .
$A_B . htmlspecialchars(t3lib_div::fixed_lgd_cs($row['title'], $GLOBALS['BE_USER']->uc['titleLen'])) . $A_E . '&nbsp;&nbsp;';
$RL = $this->ext_getRootlineNumber($row['pid']);
$keyArray[] = '<tr class="' . ($i++ % 2 == 0 ? 'bgColor4' : 'bgColor6') . '">
<td nowrap="nowrap">' . $HTML . '</td>
<td align="center">' . ($row['root'] ? t3lib_iconWorks::getSpriteIcon('status-status-checked') : '') . '&nbsp;&nbsp;</td>
<td align="center">' . ($row['clConf'] ? t3lib_iconWorks::getSpriteIcon('status-status-checked') :'') . '&nbsp;&nbsp;' . '</td>
<td align="center">' . ($row['clConf'] ? t3lib_iconWorks::getSpriteIcon('status-status-checked') : '') . '&nbsp;&nbsp;' . '</td>
<td align="center">' . ($row['clConst'] ? t3lib_iconWorks::getSpriteIcon('status-status-checked') : '') . '&nbsp;&nbsp;' . '</td>
<td align="center">' . ($row['pid'] ? $row['pid'] : '') . '</td>
<td align="center">' . (strcmp($RL, '') ? $RL : '') . '</td>
<td>' . ($row['next'] ? '&nbsp;' . $row['next'] . '&nbsp;&nbsp;' : '') . '</td>
</tr>';
if ($deeper) {
if ($deeper) {
$keyArray = $this->ext_getTemplateHierarchyArr($arr[$key . '.'], $depthData . ($first ? '' : '<img src="' . $GLOBALS['BACK_PATH'] . 'gfx/ol/' . $LN . '.gif" width="18" height="16" align="top" />'), $keyArray);
$keyArray = $this->ext_getTemplateHierarchyArr(
$arr[$key . '.'],
$depthData . ($first ? '' : '<img src="' . $GLOBALS['BACK_PATH'] . 'gfx/ol/' . $LN . '.gif" width="18" height="16" align="top" />'),
$keyArray
);
}
}
return $keyArray;
......
* @param [type] $pointer: ...
* @return [type] ...
*/
function ext_process_hierarchyInfo($depthDataArr,&$pointer) {
function ext_process_hierarchyInfo($depthDataArr, &$pointer) {
$parent = $this->hierarchyInfo[$pointer-1]['templateParent'];
$parent = $this->hierarchyInfo[$pointer - 1]['templateParent'];
while ($pointer>0 && $this->hierarchyInfo[$pointer-1]['templateParent']==$parent) {
while ($pointer > 0 && $this->hierarchyInfo[$pointer - 1]['templateParent'] == $parent) {
$pointer--;
$row = $this->hierarchyInfo[$pointer];
$depthDataArr[$row['templateID']]=$row;
$depthDataArr[$row['templateID']] = $row;
$depthDataArr[$row['templateID']]['bgcolor_setup'] = isset($this->clearList_setup_temp[$row['templateID']])?' class="bgColor5"':'';
$depthDataArr[$row['templateID']]['bgcolor_setup'] = isset($this->clearList_setup_temp[$row['templateID']]) ? ' class="bgColor5"' : '';
$depthDataArr[$row['templateID']]['bgcolor_const'] = isset($this->clearList_const_temp[$row['templateID']])?' class="bgColor5"':'';
$depthDataArr[$row['templateID']]['bgcolor_const'] = isset($this->clearList_const_temp[$row['templateID']]) ? ' class="bgColor5"' : '';
unset($this->clearList_setup_temp[$row['templateID']]);
unset($this->clearList_const_temp[$row['templateID']]);
$this->templateTitles[$row['templateID']]=$row['title'];
$this->templateTitles[$row['templateID']] = $row['title'];
if ($row['templateID']==$this->hierarchyInfo[$pointer-1]['templateParent']) {
if ($row['templateID'] == $this->hierarchyInfo[$pointer - 1]['templateParent']) {
$depthDataArr[$row['templateID'].'.'] = $this->ext_process_hierarchyInfo(array(), $pointer);
$depthDataArr[$row['templateID'] . '.'] = $this->ext_process_hierarchyInfo(array(), $pointer);
}
}
return $depthDataArr;
......
* @param [type] $syntaxHLBlockmode: ...
* @return [type] ...
*/
function ext_outputTS($config, $lineNumbers=0, $comments=0, $crop=0, $syntaxHL=0, $syntaxHLBlockmode=0) {
function ext_outputTS($config, $lineNumbers = 0, $comments = 0, $crop = 0, $syntaxHL = 0, $syntaxHLBlockmode = 0) {
$all='';
$all = '';
foreach ($config as $str) {
$all .= LF .'[GLOBAL]' . LF . $str;
$all .= LF . '[GLOBAL]' . LF . $str;
}
if ($syntaxHL) {
if ($syntaxHL) {
$all = preg_replace('/^[^'.LF.']*./','',$all);
$all = preg_replace('/^[^' . LF . ']*./', '', $all);
$all = chop($all);
$tsparser = t3lib_div::makeInstance('t3lib_TSparser');
$tsparser->lineNumberOffset=$this->ext_lineNumberOffset+1;
$tsparser->lineNumberOffset = $this->ext_lineNumberOffset + 1;
$tsparser->parentObject = $this;
return $tsparser->doSyntaxHighlight($all,$lineNumbers?array($this->ext_lineNumberOffset+1):'',$syntaxHLBlockmode);
return $tsparser->doSyntaxHighlight($all, $lineNumbers ? array($this->ext_lineNumberOffset + 1) : '', $syntaxHLBlockmode);
} else {
return $this->ext_formatTS($all,$lineNumbers,$comments,$crop);
return $this->ext_formatTS($all, $lineNumbers, $comments, $crop);
}
}
......
* @param [type] $chars: ...
* @return [type] ...
*/
function ext_fixed_lgd($string,$chars) {
function ext_fixed_lgd($string, $chars) {
if ($chars >= 4) {
if ($chars >= 4) {
if(strlen($string)>$chars) {
if (strlen($string) > $chars) {
if(strlen($string)>24 && substr($string,0,12) == '##'.$this->Cmarker.'_B##') {
if (strlen($string) > 24 && substr($string, 0, 12) == '##' . $this->Cmarker . '_B##') {
return '##'.$this->Cmarker.'_B##'.t3lib_div::fixed_lgd_cs(substr($string,12,-12), $chars-3).'##'.$this->Cmarker.'_E##';
return '##' . $this->Cmarker . '_B##' . t3lib_div::fixed_lgd_cs(substr($string, 12, -12), $chars - 3) . '##' . $this->Cmarker . '_E##';
} else {
return t3lib_div::fixed_lgd_cs($string, $chars-3);
return t3lib_div::fixed_lgd_cs($string, $chars - 3);
}
}
}
......
* @param [type] $str: ...
* @return [type] ...
*/
function ext_lnBreakPointWrap($ln,$str) {
function ext_lnBreakPointWrap($ln, $str) {
return '<a href="#" onClick="return brPoint('.$ln.','.($this->ext_lineNumberOffset_mode=="setup"?1:0).');">'.$str.'</a>';
return '<a href="#" onClick="return brPoint(' . $ln . ',' . ($this->ext_lineNumberOffset_mode == "setup" ? 1 : 0) . ');">' . $str . '</a>';
}
/**
......
* @param [type] $crop: ...
* @return [type] ...
*/
function ext_formatTS($input, $ln, $comments=1, $crop=0) {
function ext_formatTS($input, $ln, $comments = 1, $crop = 0) {
$input = preg_replace('/^[^'.LF.']*./','',$input);
$input = preg_replace('/^[^' . LF . ']*./', '', $input);
$input = chop($input);
$cArr = explode(LF,$input);
$cArr = explode(LF, $input);
$n = ceil(log10(count($cArr)+$this->ext_lineNumberOffset));
$n = ceil(log10(count($cArr) + $this->ext_lineNumberOffset));
$lineNum='';
$lineNum = '';
foreach ($cArr as $k => $v) {
$lln=$k+$this->ext_lineNumberOffset+1;
$lln = $k + $this->ext_lineNumberOffset + 1;
if ($ln) $lineNum = $this->ext_lnBreakPointWrap($lln,str_replace(' ','&nbsp;',sprintf('% '.$n.'d',$lln))).': ';
if ($ln) {
$lineNum = $this->ext_lnBreakPointWrap($lln, str_replace(' ', '&nbsp;', sprintf('% ' . $n . 'd', $lln))) . ': ';
}
$v=htmlspecialchars($v);
$v = htmlspecialchars($v);
if ($crop) {$v=$this->ext_fixed_lgd($v,($ln?71:77));}
if ($crop) {
$v = $this->ext_fixed_lgd($v, ($ln ? 71 : 77));
}
$cArr[$k] = $lineNum.str_replace(' ','&nbsp;',$v);
$cArr[$k] = $lineNum . str_replace(' ', '&nbsp;', $v);
$firstChar = substr(trim($v),0,1);
$firstChar = substr(trim($v), 0, 1);
if ($firstChar=='[') {
if ($firstChar == '[') {
$cArr[$k] = '<font color="green"><strong>'.$cArr[$k].'</strong></font>';
$cArr[$k] = '<font color="green"><strong>' . $cArr[$k] . '</strong></font>';
} elseif ($firstChar=='/' || $firstChar=='#') {
} elseif ($firstChar == '/' || $firstChar == '#') {
if ($comments) {
if ($comments) {
$cArr[$k] = '<span class="typo3-dimmed">'.$cArr[$k].'</span>';
$cArr[$k] = '<span class="typo3-dimmed">' . $cArr[$k] . '</span>';
} else {
unset($cArr[$k]);
}
......
}
$output = implode($cArr, '<br />').'<br />';
$output = implode($cArr, '<br />') . '<br />';
return $output;
}
......
* @param [type] $template_uid: ...
* @return [type] ...
*/
function ext_getFirstTemplate($id,$template_uid=0) {
function ext_getFirstTemplate($id, $template_uid = 0) {
// Query is taken from the runThroughTemplates($theRootLine) function in the parent class.
if (intval($id)) {
if (intval($id)) {
if ($template_uid) {
if ($template_uid) {
$addC = ' AND uid='.$template_uid;
$addC = ' AND uid=' . $template_uid;
}
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_template', 'pid='.intval($id).$addC.' '.$this->whereClause, '', 'sorting', '1');
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_template', 'pid=' . intval($id) . $addC . ' ' . $this->whereClause, '', 'sorting', '1');
$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
t3lib_BEfunc::workspaceOL('sys_template',$row);
t3lib_BEfunc::workspaceOL('sys_template', $row);
$GLOBALS['TYPO3_DB']->sql_free_result($res);
return $row; // Returns the template row if found.
return $row; // Returns the template row if found.
}
}
......
* @param [type] $id: ...
* @return [type] ...
*/
function ext_getAllTemplates($id) {
function ext_getAllTemplates($id) {
// Query is taken from the runThroughTemplates($theRootLine) function in the parent class.
if (intval($id)) {
if (intval($id)) {
$outRes=array();
$outRes = array();
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_template', 'pid='.intval($id).' '.$this->whereClause, '', 'sorting');
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_template', 'pid=' . intval($id) . ' ' . $this->whereClause, '', 'sorting');
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
t3lib_BEfunc::workspaceOL('sys_template',$row);
t3lib_BEfunc::workspaceOL('sys_template', $row);
if (is_array($row)) $outRes[] = $row;
if (is_array($row)) {
$outRes[] = $row;
}
}
}
$GLOBALS['TYPO3_DB']->sql_free_result($res);
return $outRes; // Returns the template rows in an array.
return $outRes; // Returns the template rows in an array.
}
}
......
* @param [type] $default: ...
* @return [type] ...
*/
function ext_compareFlatSetups($default) {
function ext_compareFlatSetups($default) {
$editableComments=array();
$editableComments = array();
reset($this->flatSetup);
foreach ($this->flatSetup as $const => $value) {
if (substr($const,-2)!='..' && isset($this->flatSetup[$const.'..'])) {
if (substr($const, -2) != '..' && isset($this->flatSetup[$const . '..'])) {
$comment = trim($this->flatSetup[$const.'..']);
$comment = trim($this->flatSetup[$const . '..']);
$c_arr = explode(LF,$comment);
$c_arr = explode(LF, $comment);
foreach ($c_arr as $k => $v) {
$line=trim(preg_replace('/^[#\/]*/','',$v));
$line = trim(preg_replace('/^[#\/]*/', '', $v));
if ($line) {
if ($line) {
$parts = explode(';', $line);
foreach ($parts as $par) {
if (strstr($par,'=')) {
if (strstr($par, '=')) {
$keyValPair =explode('=',$par,2);
$keyValPair = explode('=', $par, 2);
switch(trim(strtolower($keyValPair[0]))) {
switch (trim(strtolower($keyValPair[0]))) {
case 'type':
// Type:
/*
int (range; low-high, list: item,item,item = selector),
boolean (check),
string (default),
wrap,
html-color ...,
file
*/
$editableComments[$const]['type'] = trim($keyValPair[1]);
break;
case 'cat':
// list of categories.
$catSplit=explode('/',strtolower($keyValPair[1]));
$catSplit = explode('/', strtolower($keyValPair[1]));
$editableComments[$const]['cat'] = trim($catSplit[0]);
$catSplit[1]=trim($catSplit[1]); // This is the subcategory. Must be a key in $this->subCategories[]. catSplit[2] represents the search-order within the subcat.
$catSplit[1] = trim($catSplit[1]); // This is the subcategory. Must be a key in $this->subCategories[]. catSplit[2] represents the search-order within the subcat.
if ($catSplit[1] && isset($this->subCategories[$catSplit[1]])) {
if ($catSplit[1] && isset($this->subCategories[$catSplit[1]])) {
$editableComments[$const]['subcat_name']=$catSplit[1];
$editableComments[$const]['subcat_name'] = $catSplit[1];
$editableComments[$const]['subcat']=$this->subCategories[$catSplit[1]][1].'/'.$catSplit[1].'/'.trim($catSplit[2]).'z';
$editableComments[$const]['subcat'] = $this->subCategories[$catSplit[1]][1] . '/' .
$catSplit[1] . '/' . trim($catSplit[2]) . 'z';
} else {
$editableComments[$const]['subcat']='x'.'/'.trim($catSplit[2]).'z';
$editableComments[$const]['subcat'] = 'x' . '/' . trim($catSplit[2]) . 'z';
}
break;
case 'label':
......
break;
case 'customsubcategory':
// custom subCategory label
$customSubcategory = explode('=',$keyValPair[1],2);
$customSubcategory = explode('=', $keyValPair[1], 2);
if (trim($customSubcategory[0])) {
$subCategoryKey = strtolower($customSubcategory[0]);
$this->subCategories[$subCategoryKey][0] = $GLOBALS['LANG']->sL($customSubcategory[1]);
......
}
}
}
if (isset($editableComments[$const])) {
if (isset($editableComments[$const])) {
$editableComments[$const]['name']=$const;
$editableComments[$const]['name'] = $const;
$editableComments[$const]['value']=trim($value);
$editableComments[$const]['value'] = trim($value);
if (isset($default[$const])) {
if (isset($default[$const])) {
$editableComments[$const]['default_value']=trim($default[$const]);
$editableComments[$const]['default_value'] = trim($default[$const]);
}
}
}
......
* @param [type] $editConstArray: ...
* @return [type] ...
*/
function ext_categorizeEditableConstants($editConstArray) {
function ext_categorizeEditableConstants($editConstArray) {
// Runs through the available constants and fills the $this->categories array with pointers and priority-info
// Runs through the available constants and fills the $this->categories array with pointers and priority-info
foreach ($editConstArray as $constName => $constData) {
if (!$constData['type']) {
$constData['type']='string';
$constData['type'] = 'string';
}
$cats = explode(',',$constData['cat']);
$cats = explode(',', $constData['cat']);
foreach ($cats as $theCat) { // if = only one category, while allows for many. We have agreed on only one category is the most basic way...
foreach ($cats as $theCat) { // if = only one category, while allows for many. We have agreed on only one category is the most basic way...
$theCat=trim($theCat);
$theCat = trim($theCat);
if ($theCat) {
if ($theCat) {
$this->categories[$theCat][$constName]=$constData['subcat'];
$this->categories[$theCat][$constName] = $constData['subcat'];
}
}
}
......
*
* @return [type] ...
*/
function ext_getCategoryLabelArray() {
function ext_getCategoryLabelArray() {
// Returns array used for labels in the menu.
// Returns array used for labels in the menu.
$retArr = array();
foreach ($this->categories as $k => $v) {
if (count($v)) {
if (count($v)) {
$retArr[$k]=strtoupper($k).' ('.count($v).')';
$retArr[$k] = strtoupper($k) . ' (' . count($v) . ')';
}
}
return $retArr;
......
* @param [type] $type: ...
* @return [type] ...
*/
function ext_getTypeData($type) {
function ext_getTypeData($type) {
$retArr = array();
$type=trim($type);
$type = trim($type);
if (!$type) {
if (!$type) {
$retArr['type']='string';
$retArr['type'] = 'string';
} else {
$m=strcspn ($type,' [');
$m = strcspn($type, ' [');
$retArr['type']=strtolower(substr($type,0,$m));
$retArr['type'] = strtolower(substr($type, 0, $m));
if (t3lib_div::inList('int,options,file,boolean,offset,user', $retArr['type'])) {
if (t3lib_div::inList('int,options,file,boolean,offset,user', $retArr['type'])) {
$p=trim(substr($type,$m));
$p = trim(substr($type, $m));
$reg = array();
preg_match('/\[(.*)\]/',$p,$reg);
preg_match('/\[(.*)\]/', $p, $reg);
$p=trim($reg[1]);
$p = trim($reg[1]);
if ($p) {
if ($p) {
$retArr['paramstr']=$p;
$retArr['paramstr'] = $p;
switch($retArr['type']) {
switch ($retArr['type']) {
case 'int':
if (substr($retArr['paramstr'],0,1)=='-') {
if (substr($retArr['paramstr'], 0, 1) == '-') {
$retArr['params']=t3lib_div::intExplode('-',substr($retArr['paramstr'],1));
$retArr['params'] = t3lib_div::intExplode('-', substr($retArr['paramstr'], 1));
$retArr['params'][0]=intval('-'.$retArr['params'][0]);
$retArr['params'][0] = intval('-' . $retArr['params'][0]);
} else {
$retArr['params']=t3lib_div::intExplode('-',$retArr['paramstr']);
$retArr['params'] = t3lib_div::intExplode('-', $retArr['paramstr']);
}
$retArr['paramstr']=$retArr['params'][0].' - '.$retArr['params'][1];
$retArr['paramstr'] = $retArr['params'][0] . ' - ' . $retArr['params'][1];
break;
case 'options':
$retArr['params']=explode(',',$retArr['paramstr']);
$retArr['params'] = explode(',', $retArr['paramstr']);
break;
}
}
......
* @param [type] $category: ...
* @return [type] ...
*/
function ext_getTSCE_config($category) {
function ext_getTSCE_config($category) {
$catConf=$this->setup['constants']['TSConstantEditor.'][$category.'.'];
$catConf = $this->setup['constants']['TSConstantEditor.'][$category . '.'];
$out=array();
$out = array();
if (is_array($catConf)) {
if (is_array($catConf)) {
foreach ($catConf as $key => $val) {
switch($key) {
switch ($key) {
case 'image':
$out['imagetag'] = $this->ext_getTSCE_config_image($catConf['image']);
break;
......
$out[$key] = $val;
break;
default:
if (t3lib_div::testInt($key)) {
if (t3lib_div::testInt($key)) {
$constRefs = explode(',',$val);
$constRefs = explode(',', $val);
foreach ($constRefs as $const) {
$const=trim($const);
$const = trim($const);
if ($const && $const<=20) {
if ($const && $const <= 20) {
$out['constants'][$const].=$this->ext_getKeyImage($key);
$out['constants'][$const] .= $this->ext_getKeyImage($key);
}
}
}
......
}
}
}
$this->helpConfig=$out;
$this->helpConfig = $out;
}
/**
......
* @param [type] $key: ...
* @return [type] ...
*/
function ext_getKeyImage($key) {
function ext_getKeyImage($key) {
return '<img src="'.$this->ext_localWebGfxPrefix.'gfx/'.$key.'.gif" align="top" hspace=2>';
return '<img src="' . $this->ext_localWebGfxPrefix . 'gfx/' . $key . '.gif" align="top" hspace=2>';
}
/**
......
* @param [type] $imgConf: ...
* @return [type] ...
*/
function ext_getTSCE_config_image($imgConf) {
function ext_getTSCE_config_image($imgConf) {
if (substr($imgConf,0,4)=='gfx/') {
if (substr($imgConf, 0, 4) == 'gfx/') {
$iFile=$this->ext_localGfxPrefix.$imgConf;
$iFile = $this->ext_localGfxPrefix . $imgConf;
$tFile=$this->ext_localWebGfxPrefix.$imgConf;
$tFile = $this->ext_localWebGfxPrefix . $imgConf;
} elseif (substr($imgConf,0,4)=='EXT:') {
} elseif (substr($imgConf, 0, 4) == 'EXT:') {
$iFile = t3lib_div::getFileAbsFileName($imgConf);
if ($iFile) {
if ($iFile) {
$f = substr($iFile,strlen(PATH_site));
$f = substr($iFile, strlen(PATH_site));
$tFile=$GLOBALS['BACK_PATH'].'../'.$f;
$tFile = $GLOBALS['BACK_PATH'] . '../' . $f;
}
} else {
$f = 'uploads/tf/'.$this->extractFromResources($this->setup['resources'],$imgConf);
$f = 'uploads/tf/' . $this->extractFromResources($this->setup['resources'], $imgConf);
$iFile=PATH_site.$f;
$iFile = PATH_site . $f;
$tFile=$GLOBALS['BACK_PATH'].'../'.$f;
$tFile = $GLOBALS['BACK_PATH'] . '../' . $f;
}
$imageInfo=@getImagesize($iFile);
$imageInfo = @getImagesize($iFile);
return '<img src="'.$tFile.'" '.$imageInfo[3].'>';
return '<img src="' . $tFile . '" ' . $imageInfo[3] . '>';
}
/**
......
*
* @return [type] ...
*/
function ext_resourceDims() {
function ext_resourceDims() {
if ($this->setup['resources']) {
if ($this->setup['resources']) {
$rArr=explode(',',$this->setup['resources']);
$rArr = explode(',', $this->setup['resources']);
foreach ($rArr as $c => $val) {
$val=trim($val);
$val = trim($val);
$theFile = PATH_site.'uploads/tf/'.$val;
$theFile = PATH_site . 'uploads/tf/' . $val;
if ($val && @is_file($theFile)) {
if ($val && @is_file($theFile)) {
$imgInfo = @getimagesize($theFile);
}
if (is_array($imgInfo)) {
if (is_array($imgInfo)) {
$this->resourceDimensions[$val]=' ('.$imgInfo[0].'x'.$imgInfo[1].')';
$this->resourceDimensions[$val] = ' (' . $imgInfo[0] . 'x' . $imgInfo[1] . ')';
}
}
}
foreach ($this->dirResources as $c => $val) {
$val=trim($val);
$val = trim($val);
$imgInfo = @getimagesize(PATH_site.$val);
$imgInfo = @getimagesize(PATH_site . $val);
if (is_array($imgInfo)) {
if (is_array($imgInfo)) {
$this->resourceDimensions[$val]=' ('.$imgInfo[0].'x'.$imgInfo[1].')';
$this->resourceDimensions[$val] = ' (' . $imgInfo[0] . 'x' . $imgInfo[1] . ')';
}
}
}
......
* @param [type] $path: ...
* @return [type] ...
*/
function ext_readDirResources($path) {
function ext_readDirResources($path) {
$path = trim($path);
if ($path && strstr($path, $GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'])) {
if ($path && strstr($path, $GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'])) {
$path = rtrim($path, '/');
$this->readDirectory(PATH_site . $path);
}
......
* @param [type] $type: ...
* @return [type] ...
*/
function readDirectory($path,$type='file') {
function readDirectory($path, $type = 'file') {
if(@is_dir($path)) {
if (@is_dir($path)) {
$d = @dir($path);
$tempArray=Array();
$tempArray = Array();
if (is_object($d)) {
if (is_object($d)) {
while($entry=$d->read()) {
while ($entry = $d->read()) {
if ($entry!='.' && $entry!='..') {
if ($entry != '.' && $entry != '..') {
$wholePath = $path.'/'.$entry; // Because of odd PHP-error where <BR>-tag is sometimes placed after a filename!!
$wholePath = $path . '/' . $entry; // Because of odd PHP-error where <BR>-tag is sometimes placed after a filename!!
if (file_exists($wholePath) && (!$type || filetype($wholePath)==$type)) {
if (file_exists($wholePath) && (!$type || filetype($wholePath) == $type)) {
$fI = t3lib_div::split_fileref($wholePath);
$this->dirResources[]=substr($wholePath,strlen(PATH_site));
$this->dirResources[] = substr($wholePath, strlen(PATH_site));
}
}
}
......
* @param [type] $params: ...
* @return [type] ...
*/
function ext_fNandV($params) {
function ext_fNandV($params) {
$fN='data['.$params['name'].']';
$fN = 'data[' . $params['name'] . ']';
$fV=$params['value'];
$fV = $params['value'];
if (preg_match('/^{[\$][a-zA-Z0-9\.]*}$/',trim($fV),$reg)) { // Values entered from the constantsedit cannot be constants! 230502; removed \{ and set {
if (preg_match('/^{[\$][a-zA-Z0-9\.]*}$/', trim($fV), $reg)) { // Values entered from the constantsedit cannot be constants! 230502; removed \{ and set {
$fV='';
$fV = '';
}
$fV=htmlspecialchars($fV);
$fV = htmlspecialchars($fV);
return array($fN,$fV,$params);
return array($fN, $fV, $params);
}
/**
......
* @param [type] $category: ...
* @return [type] ...
*/
function ext_printFields($theConstants,$category) {
function ext_printFields($theConstants, $category) {
reset($theConstants);
$output='<script type="text/javascript" src="'.$GLOBALS['BACK_PATH'].'js/constantEditor.js"></script>
$output = '<script type="text/javascript" src="' . $GLOBALS['BACK_PATH'] . 'js/constantEditor.js"></script>
';
$subcat='';
$subcat = '';
if (is_array($this->categories[$category])) {
if (is_array($this->categories[$category])) {
$help=$this->helpConfig;
$help = $this->helpConfig;
$this->rArr=explode(',',$this->setup['resources'].','.implode($this->dirResources,','));
$this->rArr = explode(',', $this->setup['resources'] . ',' . implode($this->dirResources, ','));
if (!$this->doNotSortCategoriesBeforeMakingForm) asort($this->categories[$category]);
if (!$this->doNotSortCategoriesBeforeMakingForm) {
asort($this->categories[$category]);
}
foreach ($this->categories[$category] as $name => $type) {
$params = $theConstants[$name];
if (is_array($params)) {
if (is_array($params)) {
if ($subcat!=$params['subcat_name']) {
if ($subcat != $params['subcat_name']) {
$subcat=$params['subcat_name'];
$subcat = $params['subcat_name'];
$subcat_name = $params['subcat_name'] ? $this->subCategories[$params['subcat_name']][0] : 'Others';
$output.='<h2 class="typo3-tstemplate-ceditor-subcat">'.$subcat_name.'</h2>';
$output .= '<h2 class="typo3-tstemplate-ceditor-subcat">' . $subcat_name . '</h2>';
}
$label=$GLOBALS['LANG']->sL($params['label']);
$label = $GLOBALS['LANG']->sL($params['label']);
$label_parts = explode(':',$label,2);
$label_parts = explode(':', $label, 2);
if (count($label_parts)==2) {
if (count($label_parts) == 2) {
$head=trim($label_parts[0]);
$head = trim($label_parts[0]);
$body=trim($label_parts[1]);
$body = trim($label_parts[1]);
} else {
$head=trim($label_parts[0]);
$head = trim($label_parts[0]);
$body='';
$body = '';
}
if (strlen($head)>35) {
if (strlen($head) > 35) {
if (!$body) {$body=$head;}
if (!$body) {
$body = $head;
}
$head=t3lib_div::fixed_lgd_cs($head,35);
$head = t3lib_div::fixed_lgd_cs($head, 35);
}
$typeDat=$this->ext_getTypeData($params['type']);
$typeDat = $this->ext_getTypeData($params['type']);
$checked='';
$checked = '';
$p_field='';
$p_field = '';
... This diff was truncated because it exceeds the maximum size that can be displayed.
(71-71/93)