Index: t3lib/class.t3lib_parsehtml_proc.php =================================================================== --- t3lib/class.t3lib_parsehtml_proc.php (revision 8742) +++ t3lib/class.t3lib_parsehtml_proc.php (revision ) @@ -1,29 +1,29 @@ ') + * 1407: function removeTables($value,$breakChar='
') - * 1439: function defaultTStagMapping($code,$direction='rte') + * 1439: function defaultTStagMapping($code,$direction='rte') - * 1462: function getWHFromAttribs($attribArray) + * 1462: function getWHFromAttribs($attribArray) - * 1489: function urlInfoForLinkTags($url) + * 1489: function urlInfoForLinkTags($url) - * 1548: function TS_AtagToAbs($value,$dontSetRTEKEEP=FALSE) + * 1548: function TS_AtagToAbs($value,$dontSetRTEKEEP=FALSE) * * TOTAL FUNCTIONS: 28 * (This index is automatically created/updated by the extension "extdeveval") @@ -81,17 +81,6 @@ */ - - - - - - - - - - - /** * Class for parsing HTML for the Rich Text Editor. (also called transformations) * @@ -102,32 +91,24 @@ class t3lib_parsehtml_proc extends t3lib_parsehtml { // Static: - var $blockElementList = 'PRE,UL,OL,H1,H2,H3,H4,H5,H6,HR,ADDRESS,DL,DD'; // List of tags for these elements + var $blockElementList = 'PRE,UL,OL,H1,H2,H3,H4,H5,H6,HR,ADDRESS,DL,DD'; // List of tags for these elements // Internal, static: - var $recPid = 0; // Set this to the pid of the record manipulated by the class. + var $recPid = 0; // Set this to the pid of the record manipulated by the class. - var $elRef = ''; // Element reference [table]:[field], eg. "tt_content:bodytext" + var $elRef = ''; // Element reference [table]:[field], eg. "tt_content:bodytext" - var $relPath=''; // Relative path + var $relPath = ''; // Relative path - var $relBackPath=''; // Relative back-path + var $relBackPath = ''; // Relative back-path - public $tsConfig = array(); // Current Page TSConfig + public $tsConfig = array(); // Current Page TSConfig - var $procOptions = ''; // Set to the TSconfig options coming from Page TSconfig + var $procOptions = ''; // Set to the TSconfig options coming from Page TSconfig // Internal, dynamic - var $TS_transform_db_safecounter=100; // Run-away brake for recursive calls. + var $TS_transform_db_safecounter = 100; // Run-away brake for recursive calls. - var $rte_p=''; // Parameters from TCA types configuration related to the RTE + var $rte_p = ''; // Parameters from TCA types configuration related to the RTE - var $getKeepTags_cache=array(); // Data caching for processing function + var $getKeepTags_cache = array(); // Data caching for processing function - var $allowedClasses=array(); // Storage of the allowed CSS class names in the RTE + var $allowedClasses = array(); // Storage of the allowed CSS class names in the RTE - var $preserveTags = ''; // Set to tags to preserve from Page TSconfig configuration + var $preserveTags = ''; // Set to tags to preserve from Page TSconfig configuration - - - - - - - - /** * Initialize, setting element reference and record PID * @@ -135,7 +116,7 @@ * @param integer PID of the record (page id) * @return void */ - function init($elRef='',$recPid=0) { + function init($elRef = '', $recPid = 0) { $this->recPid = $recPid; $this->elRef = $elRef; } @@ -147,18 +128,18 @@ * @param string The relative path from PATH_site to the place where the file being edited is. Eg. "fileadmin/static". * @return void There is no output, it is set in internal variables. With the above example of "fileadmin/static" as input this will yield ->relPath to be "fileadmin/static/" and ->relBackPath to be "../../" */ - function setRelPath($path) { + function setRelPath($path) { $path = trim($path); - $path = preg_replace('/^\//','',$path); + $path = preg_replace('/^\//', '', $path); - $path = preg_replace('/\/$/','',$path); + $path = preg_replace('/\/$/', '', $path); - if ($path) { + if ($path) { $this->relPath = $path; $this->relBackPath = ''; - $partsC=count(explode('/',$this->relPath)); + $partsC = count(explode('/', $this->relPath)); - for ($a=0;$a<$partsC;$a++) { + for ($a = 0; $a < $partsC; $a++) { - $this->relBackPath.='../'; + $this->relBackPath .= '../'; } - $this->relPath.='/'; + $this->relPath .= '/'; } } @@ -171,21 +152,21 @@ * @return mixed On success an array with various information is returned, otherwise a string with an error message * @see t3lib_TCEmain, t3lib_transferData */ - function evalWriteFile($pArr,$currentRecord) { + function evalWriteFile($pArr, $currentRecord) { // Write file configuration: - if (is_array($pArr)) { + if (is_array($pArr)) { if ($GLOBALS['TYPO3_CONF_VARS']['BE']['staticFileEditPath'] - && substr($GLOBALS['TYPO3_CONF_VARS']['BE']['staticFileEditPath'],-1)=='/' + && substr($GLOBALS['TYPO3_CONF_VARS']['BE']['staticFileEditPath'], -1) == '/' - && @is_dir(PATH_site.$GLOBALS['TYPO3_CONF_VARS']['BE']['staticFileEditPath'])) { + && @is_dir(PATH_site . $GLOBALS['TYPO3_CONF_VARS']['BE']['staticFileEditPath'])) { $SW_p = $pArr['parameters']; $SW_editFileField = trim($SW_p[0]); $SW_editFile = $currentRecord[$SW_editFileField]; - if ($SW_editFileField && $SW_editFile && t3lib_div::validPathStr($SW_editFile)) { + if ($SW_editFileField && $SW_editFile && t3lib_div::validPathStr($SW_editFile)) { - $SW_relpath = $GLOBALS['TYPO3_CONF_VARS']['BE']['staticFileEditPath'].$SW_editFile; + $SW_relpath = $GLOBALS['TYPO3_CONF_VARS']['BE']['staticFileEditPath'] . $SW_editFile; - $SW_editFile = PATH_site.$SW_relpath; + $SW_editFile = PATH_site . $SW_relpath; - if (@is_file($SW_editFile)) { + if (@is_file($SW_editFile)) { return array( 'editFile' => $SW_editFile, 'relEditFile' => $SW_relpath, @@ -194,24 +175,19 @@ 'loadFromFileField' => trim($SW_p[3]), 'statusField' => trim($SW_p[4]) ); - } else return "ERROR: Editfile '".$SW_relpath."' did not exist"; - } else return "ERROR: Edit file name could not be found or was bad."; - } else return "ERROR: staticFileEditPath was not set, not set correctly or did not exist!"; + } else { + return "ERROR: Editfile '" . $SW_relpath . "' did not exist"; - } + } + } else { + return "ERROR: Edit file name could not be found or was bad."; - } + } + } else { + return "ERROR: staticFileEditPath was not set, not set correctly or did not exist!"; + } + } + } - - - - - - - - - - - /********************************************** * * Main function @@ -229,12 +205,12 @@ * @return string Output value * @see t3lib_TCEmain::fillInFieldArray(), t3lib_transferData::renderRecord_typesProc() */ - function RTE_transform($value,$specConf,$direction='rte',$thisConfig=array()) { + function RTE_transform($value, $specConf, $direction = 'rte', $thisConfig = array()) { // Init: $this->tsConfig = $thisConfig; $this->procOptions = $thisConfig['proc.']; - $this->preserveTags = strtoupper(implode(',',t3lib_div::trimExplode(',',$this->procOptions['preserveTags']))); + $this->preserveTags = strtoupper(implode(',', t3lib_div::trimExplode(',', $this->procOptions['preserveTags']))); // dynamic configuration of blockElementList if ($this->procOptions['blockElementList']) { @@ -245,61 +221,61 @@ $p = $this->rte_p = t3lib_BEfunc::getSpecConfParametersFromArray($specConf['rte_transform']['parameters']); // Setting modes: - if (strcmp($this->procOptions['overruleMode'],'')) { + if (strcmp($this->procOptions['overruleMode'], '')) { - $modes = array_unique(t3lib_div::trimExplode(',',$this->procOptions['overruleMode'])); + $modes = array_unique(t3lib_div::trimExplode(',', $this->procOptions['overruleMode'])); } else { - $modes = array_unique(t3lib_div::trimExplode('-',$p['mode'])); + $modes = array_unique(t3lib_div::trimExplode('-', $p['mode'])); } $revmodes = array_flip($modes); // Find special modes and extract them: - if (isset($revmodes['ts'])) { + if (isset($revmodes['ts'])) { $modes[$revmodes['ts']] = 'ts_transform,ts_preserve,ts_images,ts_links'; } // Find special modes and extract them: - if (isset($revmodes['ts_css'])) { + if (isset($revmodes['ts_css'])) { $modes[$revmodes['ts_css']] = 'css_transform,ts_images,ts_links'; } // Make list unique - $modes = array_unique(t3lib_div::trimExplode(',',implode(',',$modes),1)); + $modes = array_unique(t3lib_div::trimExplode(',', implode(',', $modes), 1)); // Reverse order if direction is "rte" - if ($direction=='rte') { + if ($direction == 'rte') { $modes = array_reverse($modes); } // Getting additional HTML cleaner configuration. These are applied either before or after the main transformation is done and is thus totally independant processing options you can set up: - $entry_HTMLparser = $this->procOptions['entryHTMLparser_'.$direction] ? $this->HTMLparserConfig($this->procOptions['entryHTMLparser_'.$direction.'.']) : ''; + $entry_HTMLparser = $this->procOptions['entryHTMLparser_' . $direction] ? $this->HTMLparserConfig($this->procOptions['entryHTMLparser_' . $direction . '.']) : ''; - $exit_HTMLparser = $this->procOptions['exitHTMLparser_'.$direction] ? $this->HTMLparserConfig($this->procOptions['exitHTMLparser_'.$direction.'.']) : ''; + $exit_HTMLparser = $this->procOptions['exitHTMLparser_' . $direction] ? $this->HTMLparserConfig($this->procOptions['exitHTMLparser_' . $direction . '.']) : ''; // Line breaks of content is unified into char-10 only (removing char 13) - if (!$this->procOptions['disableUnifyLineBreaks']) { + if (!$this->procOptions['disableUnifyLineBreaks']) { - $value = str_replace(CRLF,LF,$value); + $value = str_replace(CRLF, LF, $value); } // In an entry-cleaner was configured, pass value through the HTMLcleaner with that: - if (is_array($entry_HTMLparser)) { + if (is_array($entry_HTMLparser)) { - $value = $this->HTMLcleaner($value,$entry_HTMLparser[0],$entry_HTMLparser[1],$entry_HTMLparser[2],$entry_HTMLparser[3]); + $value = $this->HTMLcleaner($value, $entry_HTMLparser[0], $entry_HTMLparser[1], $entry_HTMLparser[2], $entry_HTMLparser[3]); } // Traverse modes: - foreach($modes as $cmd) { + foreach ($modes as $cmd) { // ->DB - if ($direction=='db') { + if ($direction == 'db') { // Checking for user defined transformation: - if ($_classRef = $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_parsehtml_proc.php']['transformation'][$cmd]) { + if ($_classRef = $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_parsehtml_proc.php']['transformation'][$cmd]) { $_procObj = t3lib_div::getUserObj($_classRef); $_procObj->pObj = $this; $_procObj->transformationKey = $cmd; - $value = $_procObj->transform_db($value,$this); + $value = $_procObj->transform_db($value, $this); - } else { // ... else use defaults: + } else { // ... else use defaults: - switch($cmd) { + switch ($cmd) { case 'ts_images': $value = $this->TS_images_db($value); break; case 'ts_reglinks': - $value = $this->TS_reglinks($value,'db'); + $value = $this->TS_reglinks($value, 'db'); break; case 'ts_links': $value = $this->TS_links_db($value); @@ -309,9 +285,9 @@ break; case 'ts_transform': case 'css_transform': - $value = str_replace(CR,'',$value); // Has a very disturbing effect, so just remove all '13' - depend on '10' + $value = str_replace(CR, '', $value); // Has a very disturbing effect, so just remove all '13' - depend on '10' $this->allowedClasses = t3lib_div::trimExplode(',', $this->procOptions['allowedClasses'], 1); - $value = $this->TS_transform_db($value,$cmd=='css_transform'); + $value = $this->TS_transform_db($value, $cmd == 'css_transform'); break; case 'ts_strip': $value = $this->TS_strip_db($value); @@ -322,19 +298,19 @@ } } // ->RTE - if ($direction=='rte') { + if ($direction == 'rte') { // Checking for user defined transformation: - if ($_classRef = $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_parsehtml_proc.php']['transformation'][$cmd]) { + if ($_classRef = $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_parsehtml_proc.php']['transformation'][$cmd]) { $_procObj = t3lib_div::getUserObj($_classRef); $_procObj->pObj = $this; - $value = $_procObj->transform_rte($value,$this); + $value = $_procObj->transform_rte($value, $this); - } else { // ... else use defaults: + } else { // ... else use defaults: - switch($cmd) { + switch ($cmd) { case 'ts_images': $value = $this->TS_images_rte($value); break; case 'ts_reglinks': - $value = $this->TS_reglinks($value,'rte'); + $value = $this->TS_reglinks($value, 'rte'); break; case 'ts_links': $value = $this->TS_links_rte($value); @@ -344,8 +320,8 @@ break; case 'ts_transform': case 'css_transform': - $value = str_replace(CR,'',$value); // Has a very disturbing effect, so just remove all '13' - depend on '10' + $value = str_replace(CR, '', $value); // Has a very disturbing effect, so just remove all '13' - depend on '10' - $value = $this->TS_transform_rte($value,$cmd=='css_transform'); + $value = $this->TS_transform_rte($value, $cmd == 'css_transform'); break; default: break; @@ -355,14 +331,14 @@ } // In an exit-cleaner was configured, pass value through the HTMLcleaner with that: - if (is_array($exit_HTMLparser)) { + if (is_array($exit_HTMLparser)) { - $value = $this->HTMLcleaner($value,$exit_HTMLparser[0],$exit_HTMLparser[1],$exit_HTMLparser[2],$exit_HTMLparser[3]); + $value = $this->HTMLcleaner($value, $exit_HTMLparser[0], $exit_HTMLparser[1], $exit_HTMLparser[2], $exit_HTMLparser[3]); } // Final clean up of linebreaks: - if (!$this->procOptions['disableUnifyLineBreaks']) { + if (!$this->procOptions['disableUnifyLineBreaks']) { - $value = str_replace(CRLF,LF,$value); // Make sure no \r\n sequences has entered in the meantime... + $value = str_replace(CRLF, LF, $value); // Make sure no \r\n sequences has entered in the meantime... - $value = str_replace(LF,CRLF,$value); // ... and then change all \n into \r\n + $value = str_replace(LF, CRLF, $value); // ... and then change all \n into \r\n } // Return value: @@ -370,20 +346,6 @@ } - - - - - - - - - - - - - - /************************************ * * Specific RTE TRANSFORMATION functions @@ -401,101 +363,105 @@ * @param string The content from RTE going to Database * @return string Processed content */ - function TS_images_db($value) { + function TS_images_db($value) { // Split content by tags and traverse the resulting array for processing: - $imgSplit = $this->splitTags('img',$value); + $imgSplit = $this->splitTags('img', $value); - foreach($imgSplit as $k => $v) { + foreach ($imgSplit as $k => $v) { - if ($k%2) { // image found, do processing: + if ($k % 2) { // image found, do processing: // Init - $attribArray = $this->get_tag_attributes_classic($v,1); + $attribArray = $this->get_tag_attributes_classic($v, 1); $siteUrl = $this->siteUrl(); - $sitePath = str_replace (t3lib_div::getIndpEnv('TYPO3_REQUEST_HOST'), '', $siteUrl); + $sitePath = str_replace(t3lib_div::getIndpEnv('TYPO3_REQUEST_HOST'), '', $siteUrl); - $absRef = trim($attribArray['src']); // It's always a absolute URL coming from the RTE into the Database. + $absRef = trim($attribArray['src']); // It's always a absolute URL coming from the RTE into the Database. // make path absolute if it is relative and we have a site path wich is not '/' - $pI=pathinfo($absRef); + $pI = pathinfo($absRef); - if($sitePath AND !$pI['scheme'] && t3lib_div::isFirstPartOfStr($absRef,$sitePath)) { + if ($sitePath AND !$pI['scheme'] && t3lib_div::isFirstPartOfStr($absRef, $sitePath)) { // if site is in a subpath (eg. /~user_jim/) this path needs to be removed because it will be added with $siteUrl - $absRef = substr($absRef,strlen($sitePath)); + $absRef = substr($absRef, strlen($sitePath)); - $absRef = $siteUrl.$absRef; + $absRef = $siteUrl . $absRef; } // External image from another URL? In that case, fetch image (unless disabled feature). - if (!t3lib_div::isFirstPartOfStr($absRef,$siteUrl) && !$this->procOptions['dontFetchExtPictures']) { + if (!t3lib_div::isFirstPartOfStr($absRef, $siteUrl) && !$this->procOptions['dontFetchExtPictures']) { - $externalFile = $this->getUrl($absRef); // Get it + $externalFile = $this->getUrl($absRef); // Get it - if ($externalFile) { + if ($externalFile) { $pU = parse_url($absRef); - $pI=pathinfo($pU['path']); + $pI = pathinfo($pU['path']); - if (t3lib_div::inList('gif,png,jpeg,jpg',strtolower($pI['extension']))) { + if (t3lib_div::inList('gif,png,jpeg,jpg', strtolower($pI['extension']))) { - $filename = t3lib_div::shortMD5($absRef).'.'.$pI['extension']; + $filename = t3lib_div::shortMD5($absRef) . '.' . $pI['extension']; - $origFilePath = PATH_site.$this->rteImageStorageDir().'RTEmagicP_'.$filename; + $origFilePath = PATH_site . $this->rteImageStorageDir() . 'RTEmagicP_' . $filename; - $C_origFilePath = PATH_site.$this->rteImageStorageDir().'RTEmagicC_'.$filename.'.'.$pI['extension']; + $C_origFilePath = PATH_site . $this->rteImageStorageDir() . 'RTEmagicC_' . $filename . '.' . $pI['extension']; - if (!@is_file($origFilePath)) { + if (!@is_file($origFilePath)) { - t3lib_div::writeFile($origFilePath,$externalFile); + t3lib_div::writeFile($origFilePath, $externalFile); - t3lib_div::writeFile($C_origFilePath,$externalFile); + t3lib_div::writeFile($C_origFilePath, $externalFile); } - $absRef = $siteUrl.$this->rteImageStorageDir().'RTEmagicC_'.$filename.'.'.$pI['extension']; + $absRef = $siteUrl . $this->rteImageStorageDir() . 'RTEmagicC_' . $filename . '.' . $pI['extension']; - $attribArray['src']=$absRef; + $attribArray['src'] = $absRef; - $params = t3lib_div::implodeAttributes($attribArray,1); + $params = t3lib_div::implodeAttributes($attribArray, 1); - $imgSplit[$k] = ''; + $imgSplit[$k] = ''; } } } // Check image as local file (siteURL equals the one of the image) - if (t3lib_div::isFirstPartOfStr($absRef,$siteUrl)) { + if (t3lib_div::isFirstPartOfStr($absRef, $siteUrl)) { - $path = rawurldecode(substr($absRef,strlen($siteUrl))); // Rel-path, rawurldecoded for special characters. + $path = rawurldecode(substr($absRef, strlen($siteUrl))); // Rel-path, rawurldecoded for special characters. - $filepath = t3lib_div::getFileAbsFileName($path); // Abs filepath, locked to relative path of this project. + $filepath = t3lib_div::getFileAbsFileName($path); // Abs filepath, locked to relative path of this project. // Check file existence (in relative dir to this installation!) - if ($filepath && @is_file($filepath)) { + if ($filepath && @is_file($filepath)) { // If "magic image": - $pathPre=$this->rteImageStorageDir().'RTEmagicC_'; + $pathPre = $this->rteImageStorageDir() . 'RTEmagicC_'; - if (t3lib_div::isFirstPartOfStr($path,$pathPre)) { + if (t3lib_div::isFirstPartOfStr($path, $pathPre)) { - // Find original file: + // Find original file: - $pI=pathinfo(substr($path,strlen($pathPre))); + $pI = pathinfo(substr($path, strlen($pathPre))); - $filename = substr($pI['basename'],0,-strlen('.'.$pI['extension'])); + $filename = substr($pI['basename'], 0, -strlen('.' . $pI['extension'])); - $origFilePath = PATH_site.$this->rteImageStorageDir().'RTEmagicP_'.$filename; + $origFilePath = PATH_site . $this->rteImageStorageDir() . 'RTEmagicP_' . $filename; - if (@is_file($origFilePath)) { + if (@is_file($origFilePath)) { $imgObj = t3lib_div::makeInstance('t3lib_stdGraphic'); $imgObj->init(); - $imgObj->mayScaleUp=0; + $imgObj->mayScaleUp = 0; - $imgObj->tempPath=PATH_site.$imgObj->tempPath; + $imgObj->tempPath = PATH_site . $imgObj->tempPath; - $curInfo = $imgObj->getImageDimensions($filepath); // Image dimensions of the current image + $curInfo = $imgObj->getImageDimensions($filepath); // Image dimensions of the current image - $curWH = $this->getWHFromAttribs($attribArray); // Image dimensions as set in the image tag + $curWH = $this->getWHFromAttribs($attribArray); // Image dimensions as set in the image tag // Compare dimensions: - if ($curWH[0]!=$curInfo[0] || $curWH[1]!=$curInfo[1]) { + if ($curWH[0] != $curInfo[0] || $curWH[1] != $curInfo[1]) { - $origImgInfo = $imgObj->getImageDimensions($origFilePath); // Image dimensions of the current image + $origImgInfo = $imgObj->getImageDimensions($origFilePath); // Image dimensions of the current image $cW = $curWH[0]; $cH = $curWH[1]; - $cH = 1000; // Make the image based on the width solely... + $cH = 1000; // Make the image based on the width solely... - $imgI = $imgObj->imageMagickConvert($origFilePath,$pI['extension'],$cW.'m',$cH.'m'); + $imgI = $imgObj->imageMagickConvert($origFilePath, $pI['extension'], $cW . 'm', $cH . 'm'); - if ($imgI[3]) { + if ($imgI[3]) { - $fI=pathinfo($imgI[3]); + $fI = pathinfo($imgI[3]); - @copy($imgI[3],$filepath); // Override the child file + @copy($imgI[3], $filepath); // Override the child file // Removing width and heigth form style attribute $attribArray['style'] = preg_replace('/((?:^|)\s*(?:width|height)\s*:[^;]*(?:$|;))/si', '', $attribArray['style']); - $attribArray['width']=$imgI[0]; + $attribArray['width'] = $imgI[0]; - $attribArray['height']=$imgI[1]; + $attribArray['height'] = $imgI[1]; - $params = t3lib_div::implodeAttributes($attribArray,1); + $params = t3lib_div::implodeAttributes($attribArray, 1); - $imgSplit[$k]=''; + $imgSplit[$k] = ''; } } } - } elseif ($this->procOptions['plainImageMode']) { // If "plain image" has been configured: + } elseif ($this->procOptions['plainImageMode']) { // If "plain image" has been configured: // Image dimensions as set in the image tag, if any $curWH = $this->getWHFromAttribs($attribArray); - if ($curWH[0]) $attribArray['width'] = $curWH[0]; - if ($curWH[1]) $attribArray['height'] = $curWH[1]; + if ($curWH[0]) { + $attribArray['width'] = $curWH[0]; + } + if ($curWH[1]) { + $attribArray['height'] = $curWH[1]; + } // Removing width and heigth form style attribute $attribArray['style'] = preg_replace('/((?:^|)\s*(?:width|height)\s*:[^;]*(?:$|;))/si', '', $attribArray['style']); @@ -504,44 +470,48 @@ $fI = @getimagesize($filepath); // Perform corrections to aspect ratio based on configuration: - switch((string)$this->procOptions['plainImageMode']) { + switch ((string) $this->procOptions['plainImageMode']) { case 'lockDimensions': - $attribArray['width']=$fI[0]; + $attribArray['width'] = $fI[0]; - $attribArray['height']=$fI[1]; + $attribArray['height'] = $fI[1]; break; - case 'lockRatioWhenSmaller': // If the ratio has to be smaller, then first set the width...: + case 'lockRatioWhenSmaller': // If the ratio has to be smaller, then first set the width...: - if ($attribArray['width']>$fI[0]) $attribArray['width'] = $fI[0]; + if ($attribArray['width'] > $fI[0]) { + $attribArray['width'] = $fI[0]; + } case 'lockRatio': - if ($fI[0]>0) { + if ($fI[0] > 0) { - $attribArray['height']=round($attribArray['width']*($fI[1]/$fI[0])); + $attribArray['height'] = round($attribArray['width'] * ($fI[1] / $fI[0])); } break; } // Compile the image tag again: - $params = t3lib_div::implodeAttributes($attribArray,1); + $params = t3lib_div::implodeAttributes($attribArray, 1); - $imgSplit[$k]=''; + $imgSplit[$k] = ''; } - } else { // Remove image if it was not found in a proper position on the server! + } else { // Remove image if it was not found in a proper position on the server! - // Commented out; removing the image tag might not be that logical... + // Commented out; removing the image tag might not be that logical... - #$imgSplit[$k]=''; + // $imgSplit[$k]=''; } } // Convert abs to rel url - if ($imgSplit[$k]) { + if ($imgSplit[$k]) { - $attribArray=$this->get_tag_attributes_classic($imgSplit[$k],1); + $attribArray = $this->get_tag_attributes_classic($imgSplit[$k], 1); $absRef = trim($attribArray['src']); - if (t3lib_div::isFirstPartOfStr($absRef,$siteUrl)) { + if (t3lib_div::isFirstPartOfStr($absRef, $siteUrl)) { - $attribArray['src'] = $this->relBackPath.substr($absRef,strlen($siteUrl)); + $attribArray['src'] = $this->relBackPath . substr($absRef, strlen($siteUrl)); - if (!isset($attribArray['alt'])) $attribArray['alt']=''; // Must have alt-attribute for XHTML compliance. + if (!isset($attribArray['alt'])) { + $attribArray['alt'] = ''; + } // Must have alt-attribute for XHTML compliance. - $imgSplit[$k]=''; + $imgSplit[$k] = ''; } } } } - return implode('',$imgSplit); + return implode('', $imgSplit); } /** @@ -552,35 +522,37 @@ * @param string Content input * @return string Content output */ - function TS_images_rte($value) { + function TS_images_rte($value) { $siteUrl = $this->siteUrl(); - $sitePath = str_replace (t3lib_div::getIndpEnv('TYPO3_REQUEST_HOST'), '', $siteUrl); + $sitePath = str_replace(t3lib_div::getIndpEnv('TYPO3_REQUEST_HOST'), '', $siteUrl); // Split content by tags and traverse the resulting array for processing: - $imgSplit = $this->splitTags('img',$value); + $imgSplit = $this->splitTags('img', $value); - foreach($imgSplit as $k => $v) { + foreach ($imgSplit as $k => $v) { - if ($k%2) { // image found: + if ($k % 2) { // image found: // Init - $attribArray=$this->get_tag_attributes_classic($v,1); + $attribArray = $this->get_tag_attributes_classic($v, 1); $absRef = trim($attribArray['src']); // Unless the src attribute is already pointing to an external URL: - if (strtolower(substr($absRef,0,4))!='http') { + if (strtolower(substr($absRef, 0, 4)) != 'http') { - $attribArray['src'] = substr($attribArray['src'],strlen($this->relBackPath)); + $attribArray['src'] = substr($attribArray['src'], strlen($this->relBackPath)); // if site is in a subpath (eg. /~user_jim/) this path needs to be removed because it will be added with $siteUrl - $attribArray['src'] = preg_replace('#^'.preg_quote($sitePath,'#').'#','',$attribArray['src']); + $attribArray['src'] = preg_replace('#^' . preg_quote($sitePath, '#') . '#', '', $attribArray['src']); - $attribArray['src'] = $siteUrl.$attribArray['src']; + $attribArray['src'] = $siteUrl . $attribArray['src']; - if (!isset($attribArray['alt'])) $attribArray['alt']=''; + if (!isset($attribArray['alt'])) { + $attribArray['alt'] = ''; + } $params = t3lib_div::implodeAttributes($attribArray); - $imgSplit[$k]=''; + $imgSplit[$k] = ''; } } } // return processed content: - return implode('',$imgSplit); + return implode('', $imgSplit); } /** @@ -591,29 +563,29 @@ * @param string Direction of conversion; "rte" (from database to RTE) or "db" (from RTE to database) * @return string Content output */ - function TS_reglinks($value,$direction) { + function TS_reglinks($value, $direction) { $retVal = ''; - switch($direction) { + switch ($direction) { case 'rte': - $retVal = $this->TS_AtagToAbs($value,1); + $retVal = $this->TS_AtagToAbs($value, 1); break; case 'db': $siteURL = $this->siteUrl(); - $blockSplit = $this->splitIntoBlock('A',$value); + $blockSplit = $this->splitIntoBlock('A', $value); foreach ($blockSplit as $k => $v) { - if ($k%2) { // block: + if ($k % 2) { // block: - $attribArray=$this->get_tag_attributes_classic($this->getFirstTag($v),1); + $attribArray = $this->get_tag_attributes_classic($this->getFirstTag($v), 1); // If the url is local, remove url-prefix - if ($siteURL && substr($attribArray['href'],0,strlen($siteURL))==$siteURL) { + if ($siteURL && substr($attribArray['href'], 0, strlen($siteURL)) == $siteURL) { - $attribArray['href']=$this->relBackPath.substr($attribArray['href'],strlen($siteURL)); + $attribArray['href'] = $this->relBackPath . substr($attribArray['href'], strlen($siteURL)); } - $bTag=''; + $bTag = ''; - $eTag=''; + $eTag = ''; - $blockSplit[$k] = $bTag.$this->TS_reglinks($this->removeFirstAndLastTag($blockSplit[$k]),$direction).$eTag; + $blockSplit[$k] = $bTag . $this->TS_reglinks($this->removeFirstAndLastTag($blockSplit[$k]), $direction) . $eTag; } } - $retVal = implode('',$blockSplit); + $retVal = implode('', $blockSplit); break; } return $retVal; @@ -627,13 +599,13 @@ * @return string Content output * @see TS_links_rte() */ - function TS_links_db($value) { + function TS_links_db($value) { // Split content into tag blocks and process: - $blockSplit = $this->splitIntoBlock('A',$value); + $blockSplit = $this->splitIntoBlock('A', $value); - foreach($blockSplit as $k => $v) { + foreach ($blockSplit as $k => $v) { - if ($k%2) { // If an A-tag was found: + if ($k % 2) { // If an A-tag was found: - $attribArray = $this->get_tag_attributes_classic($this->getFirstTag($v),1); + $attribArray = $this->get_tag_attributes_classic($this->getFirstTag($v), 1); $info = $this->urlInfoForLinkTags($attribArray['href']); // Check options: @@ -643,38 +615,38 @@ unset($attribArray_copy['class']); unset($attribArray_copy['title']); unset($attribArray_copy['external']); - if ($attribArray_copy['rteerror']) { // Unset "rteerror" and "style" attributes if "rteerror" is set! + if ($attribArray_copy['rteerror']) { // Unset "rteerror" and "style" attributes if "rteerror" is set! unset($attribArray_copy['style']); unset($attribArray_copy['rteerror']); } - if (!count($attribArray_copy)) { // Only if href, target and class are the only attributes, we can alter the link! + if (!count($attribArray_copy)) { // Only if href, target and class are the only attributes, we can alter the link! // Quoting class and title attributes if they contain spaces $attribArray['class'] = preg_match('/ /', $attribArray['class']) ? '"' . $attribArray['class'] . '"' : $attribArray['class']; $attribArray['title'] = preg_match('/ /', $attribArray['title']) ? '"' . $attribArray['title'] . '"' : $attribArray['title']; // Creating the TYPO3 pseudo-tag "" for the link (includes href/url, target and class attributes): // If external attribute is set, keep the href unchanged - $href = $attribArray['external'] ? $attribArray['href'] : $info['url'].($info['query']?',0,'.$info['query']:''); + $href = $attribArray['external'] ? $attribArray['href'] : $info['url'] . ($info['query'] ? ',0,' . $info['query'] : ''); - $bTag=''; + $bTag = ''; - $eTag=''; + $eTag = ''; - $blockSplit[$k] = $bTag.$this->TS_links_db($this->removeFirstAndLastTag($blockSplit[$k])).$eTag; + $blockSplit[$k] = $bTag . $this->TS_links_db($this->removeFirstAndLastTag($blockSplit[$k])) . $eTag; - } else { // ... otherwise store the link as a-tag. + } else { // ... otherwise store the link as a-tag. // Unsetting 'rtekeep' attribute if that had been set. unset($attribArray['rtekeep']); if (!$attribArray['external']) { // If the url is local, remove url-prefix $siteURL = $this->siteUrl(); - if ($siteURL && substr($attribArray['href'],0,strlen($siteURL))==$siteURL) { + if ($siteURL && substr($attribArray['href'], 0, strlen($siteURL)) == $siteURL) { - $attribArray['href']=$this->relBackPath.substr($attribArray['href'],strlen($siteURL)); + $attribArray['href'] = $this->relBackPath . substr($attribArray['href'], strlen($siteURL)); } } unset($attribArray['external']); - $bTag=''; + $bTag = ''; - $eTag=''; + $eTag = ''; - $blockSplit[$k] = $bTag.$this->TS_links_db($this->removeFirstAndLastTag($blockSplit[$k])).$eTag; + $blockSplit[$k] = $bTag . $this->TS_links_db($this->removeFirstAndLastTag($blockSplit[$k])) . $eTag; } } } - return implode('',$blockSplit); + return implode('', $blockSplit); } /** @@ -685,34 +657,34 @@ * @return string Content output * @see TS_links_rte() */ - function TS_links_rte($value) { + function TS_links_rte($value) { $value = $this->TS_AtagToAbs($value); // Split content by the TYPO3 pseudo tag "": - $blockSplit = $this->splitIntoBlock('link',$value,1); + $blockSplit = $this->splitIntoBlock('link', $value, 1); $siteUrl = $this->siteUrl(); - foreach($blockSplit as $k => $v) { + foreach ($blockSplit as $k => $v) { $error = ''; - if ($k%2) { // block: + if ($k % 2) { // block: - $tagCode = t3lib_div::unQuoteFilenames(trim(substr($this->getFirstTag($v),0,-1)),true); + $tagCode = t3lib_div::unQuoteFilenames(trim(substr($this->getFirstTag($v), 0, -1)), true); $link_param = $tagCode[1]; $href = ''; // Parsing the typolink data. This parsing is roughly done like in tslib_content->typolink() - if (strstr($link_param,'@')) { // mailadr + if (strstr($link_param, '@')) { // mailadr - $href = 'mailto:'.preg_replace('/^mailto:/i','',$link_param); + $href = 'mailto:' . preg_replace('/^mailto:/i', '', $link_param); - } elseif (substr($link_param,0,1)=='#') { // check if anchor + } elseif (substr($link_param, 0, 1) == '#') { // check if anchor - $href = $siteUrl.$link_param; + $href = $siteUrl . $link_param; } else { - $fileChar=intval(strpos($link_param, '/')); + $fileChar = intval(strpos($link_param, '/')); - $urlChar=intval(strpos($link_param, '.')); + $urlChar = intval(strpos($link_param, '.')); $external = FALSE; // Parse URL: $pU = parse_url($link_param); // Detects if a file is found in site-root OR is a simulateStaticDocument. - list($rootFileDat) = explode('?',$link_param); + list($rootFileDat) = explode('?', $link_param); $rFD_fI = pathinfo($rootFileDat); - if (trim($rootFileDat) && !strstr($link_param,'/') && (@is_file(PATH_site.$rootFileDat) || t3lib_div::inList('php,html,htm',strtolower($rFD_fI['extension'])))) { + if (trim($rootFileDat) && !strstr($link_param, '/') && (@is_file(PATH_site . $rootFileDat) || t3lib_div::inList('php,html,htm', strtolower($rFD_fI['extension'])))) { - $href = $siteUrl.$link_param; + $href = $siteUrl . $link_param; } elseif ($pU['scheme'] || ($urlChar && (!$fileChar || $urlChar < $fileChar))) { // url (external): if has scheme or if a '.' comes before a '/'. $href = $link_param; @@ -720,50 +692,52 @@ $href = 'http://' . $href; } $external = TRUE; - } elseif($fileChar) { // file (internal) + } elseif ($fileChar) { // file (internal) - $href = $siteUrl.$link_param; + $href = $siteUrl . $link_param; - } else { // integer or alias (alias is without slashes or periods or commas, that is 'nospace,alphanum_x,lower,unique' according to tables.php!!) + } else { // integer or alias (alias is without slashes or periods or commas, that is 'nospace,alphanum_x,lower,unique' according to tables.php!!) // Splitting the parameter by ',' and if the array counts more than 1 element it's a id/type/parameters triplet $pairParts = t3lib_div::trimExplode(',', $link_param, TRUE); $idPart = $pairParts[0]; $link_params_parts = explode('#', $idPart); $idPart = trim($link_params_parts[0]); $sectionMark = trim($link_params_parts[1]); - if (!strcmp($idPart,'')) { $idPart=$this->recPid; } // If no id or alias is given, set it to class record pid + if (!strcmp($idPart, '')) { + $idPart = $this->recPid; + } // If no id or alias is given, set it to class record pid // Checking if the id-parameter is an alias. - if (!t3lib_div::testInt($idPart)) { + if (!t3lib_div::testInt($idPart)) { - list($idPartR) = t3lib_BEfunc::getRecordsByField('pages','alias',$idPart); + list($idPartR) = t3lib_BEfunc::getRecordsByField('pages', 'alias', $idPart); $idPart = intval($idPartR['uid']); } $page = t3lib_BEfunc::getRecord('pages', $idPart); - if (is_array($page)) { // Page must exist... + if (is_array($page)) { // Page must exist... - $href = $siteUrl .'?id=' . $idPart . ($pairParts[2] ? $pairParts[2] : '') . ($sectionMark ? '#' . $sectionMark : ''); + $href = $siteUrl . '?id=' . $idPart . ($pairParts[2] ? $pairParts[2] : '') . ($sectionMark ? '#' . $sectionMark : ''); - // linkHandler - allowing links to start with registerd linkHandler e.g.. "record:" + // linkHandler - allowing links to start with registerd linkHandler e.g.. "record:" } elseif (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['typolinkLinkHandler'][array_shift(explode(':', $link_param))])) { $href = $link_param; } else { #$href = ''; - $href = $siteUrl.'?id='.$link_param; + $href = $siteUrl . '?id=' . $link_param; - $error = 'No page found: '.$idPart; + $error = 'No page found: ' . $idPart; } } } - // Setting the A-tag: + // Setting the A-tag: - $bTag = ''; + '>'; $eTag = ''; - $blockSplit[$k] = $bTag.$this->TS_links_rte($this->removeFirstAndLastTag($blockSplit[$k])).$eTag; + $blockSplit[$k] = $bTag . $this->TS_links_rte($this->removeFirstAndLastTag($blockSplit[$k])) . $eTag; } } // Return content: - return implode('',$blockSplit); + return implode('', $blockSplit); } /** @@ -772,22 +746,24 @@ * @param string Content input * @return string Content output */ - function TS_preserve_db($value) { + function TS_preserve_db($value) { - if (!$this->preserveTags) return $value; + if (!$this->preserveTags) { + return $value; + } // Splitting into blocks for processing (span-tags are used for special tags) - $blockSplit = $this->splitIntoBlock('span',$value); + $blockSplit = $this->splitIntoBlock('span', $value); - foreach($blockSplit as $k => $v) { + foreach ($blockSplit as $k => $v) { - if ($k%2) { // block: + if ($k % 2) { // block: - $attribArray=$this->get_tag_attributes_classic($this->getFirstTag($v)); + $attribArray = $this->get_tag_attributes_classic($this->getFirstTag($v)); - if ($attribArray['specialtag']) { + if ($attribArray['specialtag']) { $theTag = rawurldecode($attribArray['specialtag']); $theTagName = $this->getFirstTagName($theTag); - $blockSplit[$k] = $theTag.$this->removeFirstAndLastTag($blockSplit[$k]).''; + $blockSplit[$k] = $theTag . $this->removeFirstAndLastTag($blockSplit[$k]) . ''; } } } - return implode('',$blockSplit); + return implode('', $blockSplit); } /** @@ -796,16 +772,18 @@ * @param string Content input * @return string Content output */ - function TS_preserve_rte($value) { + function TS_preserve_rte($value) { - if (!$this->preserveTags) return $value; + if (!$this->preserveTags) { + return $value; + } - $blockSplit = $this->splitIntoBlock($this->preserveTags,$value); + $blockSplit = $this->splitIntoBlock($this->preserveTags, $value); - foreach($blockSplit as $k => $v) { + foreach ($blockSplit as $k => $v) { - if ($k%2) { // block: + if ($k % 2) { // block: - $blockSplit[$k] = ''.$this->removeFirstAndLastTag($blockSplit[$k]).''; + $blockSplit[$k] = '' . $this->removeFirstAndLastTag($blockSplit[$k]) . ''; } } - return implode('',$blockSplit); + return implode('', $blockSplit); } /** @@ -817,65 +795,71 @@ * @return string Content output * @see TS_transform_rte() */ - function TS_transform_db($value,$css=FALSE) { + function TS_transform_db($value, $css = FALSE) { // safety... so forever loops are avoided (they should not occur, but an error would potentially do this...) $this->TS_transform_db_safecounter--; - if ($this->TS_transform_db_safecounter<0) return $value; + if ($this->TS_transform_db_safecounter < 0) { + return $value; + } // Split the content from RTE by the occurence of these blocks: - $blockSplit = $this->splitIntoBlock('TABLE,BLOCKQUOTE,'.($this->procOptions['preserveDIVSections']?'DIV,':'').$this->blockElementList,$value); + $blockSplit = $this->splitIntoBlock('TABLE,BLOCKQUOTE,' . ($this->procOptions['preserveDIVSections'] ? 'DIV,' : '') . $this->blockElementList, $value); - $cc=0; + $cc = 0; $aC = count($blockSplit); // Avoid superfluous linebreaks by transform_db after ending headListTag - while($aC && !strcmp(trim($blockSplit[$aC-1]),'')) { + while ($aC && !strcmp(trim($blockSplit[$aC - 1]), '')) { - unset($blockSplit[$aC-1]); + unset($blockSplit[$aC - 1]); $aC = count($blockSplit); } // Traverse the blocks - foreach($blockSplit as $k => $v) { + foreach ($blockSplit as $k => $v) { $cc++; - $lastBR = $cc==$aC ? '' : LF; + $lastBR = $cc == $aC ? '' : LF; - if ($k%2) { // Inside block: + if ($k % 2) { // Inside block: // Init: - $tag=$this->getFirstTag($v); + $tag = $this->getFirstTag($v); - $tagName=strtolower($this->getFirstTagName($v)); + $tagName = strtolower($this->getFirstTagName($v)); // Process based on the tag: - switch($tagName) { + switch ($tagName) { - case 'blockquote': // Keep blockquotes, but clean the inside recursively in the same manner as the main code + case 'blockquote': // Keep blockquotes, but clean the inside recursively in the same manner as the main code - case 'dd' : // Do the same on dd elements + case 'dd' : // Do the same on dd elements - case 'div': // Do the same on div sections, if they were splitted + case 'div': // Do the same on div sections, if they were splitted - $blockSplit[$k]=$tag.$this->TS_transform_db($this->removeFirstAndLastTag($blockSplit[$k]),$css).''.$lastBR; + $blockSplit[$k] = $tag . $this->TS_transform_db($this->removeFirstAndLastTag($blockSplit[$k]), $css) . '' . $lastBR; break; case 'ol': - case 'ul': // Transform lists into -tags: + case 'ul': // Transform lists into -tags: - if (!$css) { + if (!$css) { - if (!isset($this->procOptions['typolist']) || $this->procOptions['typolist']) { + if (!isset($this->procOptions['typolist']) || $this->procOptions['typolist']) { - $parts = $this->getAllParts($this->splitIntoBlock('LI',$this->removeFirstAndLastTag($blockSplit[$k])),1,0); + $parts = $this->getAllParts($this->splitIntoBlock('LI', $this->removeFirstAndLastTag($blockSplit[$k])), 1, 0); foreach ($parts as $k2 => $value) { - $parts[$k2]=preg_replace('/['.preg_quote(LF.CR).']+/','',$parts[$k2]); // remove all linesbreaks! + $parts[$k2] = preg_replace('/[' . preg_quote(LF . CR) . ']+/', '', $parts[$k2]); // remove all linesbreaks! - $parts[$k2]=$this->defaultTStagMapping($parts[$k2],'db'); + $parts[$k2] = $this->defaultTStagMapping($parts[$k2], 'db'); - $parts[$k2]=$this->cleanFontTags($parts[$k2],0,0,0); + $parts[$k2] = $this->cleanFontTags($parts[$k2], 0, 0, 0); - $parts[$k2] = $this->HTMLcleaner_db($parts[$k2],strtolower($this->procOptions['allowTagsInTypolists']?$this->procOptions['allowTagsInTypolists']:'br,font,b,i,u,a,img,span,strong,em')); + $parts[$k2] = $this->HTMLcleaner_db($parts[$k2], strtolower($this->procOptions['allowTagsInTypolists'] ? $this->procOptions['allowTagsInTypolists'] : 'br,font,b,i,u,a,img,span,strong,em')); } - if ($tagName=='ol') { $params=' type="1"'; } else { $params=''; } + if ($tagName == 'ol') { + $params = ' type="1"'; + } else { + $params = ''; + } - $blockSplit[$k]=''.LF.implode(LF,$parts).LF.''.$lastBR; + $blockSplit[$k] = '' . LF . implode(LF, $parts) . LF . '' . $lastBR; } } else { - $blockSplit[$k]=preg_replace('/['.preg_quote(LF.CR).']+/',' ',$this->transformStyledATags($blockSplit[$k])).$lastBR; + $blockSplit[$k] = preg_replace('/[' . preg_quote(LF . CR) . ']+/', ' ', $this->transformStyledATags($blockSplit[$k])) . $lastBR; } break; - case 'table': // Tables are NOT allowed in any form (unless preserveTables is set or CSS is the mode) + case 'table': // Tables are NOT allowed in any form (unless preserveTables is set or CSS is the mode) - if (!$this->procOptions['preserveTables'] && !$css) { + if (!$this->procOptions['preserveTables'] && !$css) { - $blockSplit[$k]=$this->TS_transform_db($this->removeTables($blockSplit[$k])); + $blockSplit[$k] = $this->TS_transform_db($this->removeTables($blockSplit[$k])); } else { - $blockSplit[$k]=preg_replace('/['.preg_quote(LF.CR).']+/',' ',$this->transformStyledATags($blockSplit[$k])).$lastBR; + $blockSplit[$k] = preg_replace('/[' . preg_quote(LF . CR) . ']+/', ' ', $this->transformStyledATags($blockSplit[$k])) . $lastBR; } break; case 'h1': @@ -884,50 +868,52 @@ case 'h4': case 'h5': case 'h6': - if (!$css) { + if (!$css) { - $attribArray=$this->get_tag_attributes_classic($tag); + $attribArray = $this->get_tag_attributes_classic($tag); // Processing inner content here: $innerContent = $this->HTMLcleaner_db($this->removeFirstAndLastTag($blockSplit[$k])); - if (!isset($this->procOptions['typohead']) || $this->procOptions['typohead']) { + if (!isset($this->procOptions['typohead']) || $this->procOptions['typohead']) { - $type = intval(substr($tagName,1)); + $type = intval(substr($tagName, 1)); - $blockSplit[$k]=''. + '>' . - $innerContent. + $innerContent . - ''. + '' . - $lastBR; + $lastBR; } else { - $blockSplit[$k]='<'.$tagName. + $blockSplit[$k] = '<' . $tagName . - ($attribArray['align']?' align="'.htmlspecialchars($attribArray['align']).'"':''). + ($attribArray['align'] ? ' align="' . htmlspecialchars($attribArray['align']) . '"' : '') . - ($attribArray['class']?' class="'.htmlspecialchars($attribArray['class']).'"':''). + ($attribArray['class'] ? ' class="' . htmlspecialchars($attribArray['class']) . '"' : '') . - '>'. + '>' . - $innerContent. + $innerContent . - ''. + '' . - $lastBR; + $lastBR; } } else { // Eliminate true linebreaks inside Hx tags - $blockSplit[$k]=preg_replace('/['.preg_quote(LF.CR).']+/',' ',$this->transformStyledATags($blockSplit[$k])).$lastBR; + $blockSplit[$k] = preg_replace('/[' . preg_quote(LF . CR) . ']+/', ' ', $this->transformStyledATags($blockSplit[$k])) . $lastBR; } break; default: // Eliminate true linebreaks inside other headlist tags and after hr tag - $blockSplit[$k]=preg_replace('/['.preg_quote(LF.CR).']+/',' ',$this->transformStyledATags($blockSplit[$k])).$lastBR; + $blockSplit[$k] = preg_replace('/[' . preg_quote(LF . CR) . ']+/', ' ', $this->transformStyledATags($blockSplit[$k])) . $lastBR; break; } - } else { // NON-block: + } else { // NON-block: - if (strcmp(trim($blockSplit[$k]),'')) { + if (strcmp(trim($blockSplit[$k]), '')) { - $blockSplit[$k]=$this->divideIntoLines(preg_replace('/['.preg_quote(LF.CR).']+/',' ',$blockSplit[$k])).$lastBR; + $blockSplit[$k] = $this->divideIntoLines(preg_replace('/[' . preg_quote(LF . CR) . ']+/', ' ', $blockSplit[$k])) . $lastBR; - $blockSplit[$k]=$this->transformStyledATags($blockSplit[$k]); + $blockSplit[$k] = $this->transformStyledATags($blockSplit[$k]); - } else unset($blockSplit[$k]); + } else { + unset($blockSplit[$k]); - } - } + } + } + } $this->TS_transform_db_safecounter++; - return implode('',$blockSplit); + return implode('', $blockSplit); } /** @@ -936,21 +922,21 @@ * @param string Content input * @return string Content output */ - function transformStyledATags($value) { + function transformStyledATags($value) { - $blockSplit = $this->splitIntoBlock('A',$value); + $blockSplit = $this->splitIntoBlock('A', $value); - foreach($blockSplit as $k => $v) { + foreach ($blockSplit as $k => $v) { - if ($k%2) { // If an A-tag was found: + if ($k % 2) { // If an A-tag was found: - $attribArray = $this->get_tag_attributes_classic($this->getFirstTag($v),1); + $attribArray = $this->get_tag_attributes_classic($this->getFirstTag($v), 1); - if ($attribArray['style']) { // If "style" attribute is set! + if ($attribArray['style']) { // If "style" attribute is set! $attribArray_copy['style'] = $attribArray['style']; unset($attribArray['style']); - $bTag=''; + $bTag = ''; - $eTag=''; + $eTag = ''; - $blockSplit[$k] = $bTag.$this->removeFirstAndLastTag($blockSplit[$k]).$eTag; + $blockSplit[$k] = $bTag . $this->removeFirstAndLastTag($blockSplit[$k]) . $eTag; } } } - return implode('',$blockSplit); + return implode('', $blockSplit); } /** @@ -962,14 +948,14 @@ * @return string Content output * @see TS_transform_db() */ - function TS_transform_rte($value,$css=0) { + function TS_transform_rte($value, $css = 0) { // Split the content from Database by the occurence of these blocks: - $blockSplit = $this->splitIntoBlock('TABLE,BLOCKQUOTE,TYPOLIST,TYPOHEAD,'.($this->procOptions['preserveDIVSections']?'DIV,':'').$this->blockElementList,$value); + $blockSplit = $this->splitIntoBlock('TABLE,BLOCKQUOTE,TYPOLIST,TYPOHEAD,' . ($this->procOptions['preserveDIVSections'] ? 'DIV,' : '') . $this->blockElementList, $value); // Traverse the blocks - foreach($blockSplit as $k => $v) { + foreach ($blockSplit as $k => $v) { - if ($k%2) { // Inside one of the blocks: + if ($k % 2) { // Inside one of the blocks: // Init: $tag = $this->getFirstTag($v); @@ -977,55 +963,57 @@ $attribArray = $this->get_tag_attributes_classic($tag); // Based on tagname, we do transformations: - switch($tagName) { + switch ($tagName) { - case 'blockquote': // Keep blockquotes + case 'blockquote': // Keep blockquotes - case 'dd': // Keep definitions + case 'dd': // Keep definitions - case 'div': // Keep div sections, if they were splitted + case 'div': // Keep div sections, if they were splitted - $blockSplit[$k] = $tag. + $blockSplit[$k] = $tag . - $this->TS_transform_rte($this->removeFirstAndLastTag($blockSplit[$k]),$css). + $this->TS_transform_rte($this->removeFirstAndLastTag($blockSplit[$k]), $css) . - ''; + ''; break; - case 'typolist': // Transform typolist blocks into OL/UL lists. Type 1 is expected to be numerical block + case 'typolist': // Transform typolist blocks into OL/UL lists. Type 1 is expected to be numerical block - if (!isset($this->procOptions['typolist']) || $this->procOptions['typolist']) { + if (!isset($this->procOptions['typolist']) || $this->procOptions['typolist']) { $tListContent = $this->removeFirstAndLastTag($blockSplit[$k]); - $tListContent = preg_replace('/^[ ]*'.LF.'/','',$tListContent); + $tListContent = preg_replace('/^[ ]*' . LF . '/', '', $tListContent); - $tListContent = preg_replace('/'.LF.'[ ]*$/','',$tListContent); + $tListContent = preg_replace('/' . LF . '[ ]*$/', '', $tListContent); - $lines = explode(LF,$tListContent); + $lines = explode(LF, $tListContent); - $typ = $attribArray['type']==1 ? 'ol' : 'ul'; + $typ = $attribArray['type'] == 1 ? 'ol' : 'ul'; - $blockSplit[$k] = '<'.$typ.'>'.LF. + $blockSplit[$k] = '<' . $typ . '>' . LF . - '
  • '.implode('
  • '.LF.'
  • ',$lines).'
  • '. + '
  • ' . implode('
  • ' . LF . '
  • ', $lines) . '
  • ' . - ''; + ''; } break; - case 'typohead': // Transform typohead into Hx tags. + case 'typohead': // Transform typohead into Hx tags. - if (!isset($this->procOptions['typohead']) || $this->procOptions['typohead']) { + if (!isset($this->procOptions['typohead']) || $this->procOptions['typohead']) { $tC = $this->removeFirstAndLastTag($blockSplit[$k]); - $typ = t3lib_div::intInRange($attribArray['type'],0,6); + $typ = t3lib_div::intInRange($attribArray['type'], 0, 6); - if (!$typ) $typ=6; + if (!$typ) { + $typ = 6; + } - $align = $attribArray['align']?' align="'.$attribArray['align'].'"': ''; + $align = $attribArray['align'] ? ' align="' . $attribArray['align'] . '"' : ''; - $class = $attribArray['class']?' class="'.$attribArray['class'].'"': ''; + $class = $attribArray['class'] ? ' class="' . $attribArray['class'] . '"' : ''; - $blockSplit[$k] = ''. + $blockSplit[$k] = '' . - $tC. + $tC . - ''; + ''; } break; } - $blockSplit[$k+1] = preg_replace('/^[ ]*'.LF.'/','',$blockSplit[$k+1]); // Removing linebreak if typohead + $blockSplit[$k + 1] = preg_replace('/^[ ]*' . LF . '/', '', $blockSplit[$k + 1]); // Removing linebreak if typohead - } else { // NON-block: + } else { // NON-block: - $nextFTN = $this->getFirstTagName($blockSplit[$k+1]); + $nextFTN = $this->getFirstTagName($blockSplit[$k + 1]); - $singleLineBreak = $blockSplit[$k]==LF; + $singleLineBreak = $blockSplit[$k] == LF; - if (t3lib_div::inList('TABLE,BLOCKQUOTE,TYPOLIST,TYPOHEAD,'.($this->procOptions['preserveDIVSections']?'DIV,':'').$this->blockElementList,$nextFTN)) { // Removing linebreak if typolist/typohead + if (t3lib_div::inList('TABLE,BLOCKQUOTE,TYPOLIST,TYPOHEAD,' . ($this->procOptions['preserveDIVSections'] ? 'DIV,' : '') . $this->blockElementList, $nextFTN)) { // Removing linebreak if typolist/typohead - $blockSplit[$k] = preg_replace('/'.LF.'[ ]*$/','',$blockSplit[$k]); + $blockSplit[$k] = preg_replace('/' . LF . '[ ]*$/', '', $blockSplit[$k]); } // If $blockSplit[$k] is blank then unset the line. UNLESS the line happend to be a single line break. - if (!strcmp($blockSplit[$k],'') && !$singleLineBreak) { + if (!strcmp($blockSplit[$k], '') && !$singleLineBreak) { unset($blockSplit[$k]); } else { - $blockSplit[$k] = $this->setDivTags($blockSplit[$k],($this->procOptions['useDIVasParagraphTagForRTE']?'div':'p')); + $blockSplit[$k] = $this->setDivTags($blockSplit[$k], ($this->procOptions['useDIVasParagraphTagForRTE'] ? 'div' : 'p')); } } } - return implode(LF,$blockSplit); + return implode(LF, $blockSplit); } /** @@ -1035,24 +1023,12 @@ * @param string Content input * @return string Content output */ - function TS_strip_db($value) { + function TS_strip_db($value) { - $value = strip_tags($value,'<'.implode('><',explode(',','b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote')).'>'); + $value = strip_tags($value, '<' . implode('><', explode(',', 'b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote')) . '>'); return $value; } - - - - - - - - - - - - /*************************************************************** * * Generic RTE transformation, analysis and helper functions @@ -1066,7 +1042,7 @@ * @return string The content from the resource given as input. * @see t3lib_div::getURL() */ - function getURL($url) { + function getURL($url) { return t3lib_div::getURL($url); } @@ -1080,23 +1056,23 @@ * @return string Clean content * @see getKeepTags() */ - function HTMLcleaner_db($content,$tagList='') { + function HTMLcleaner_db($content, $tagList = '') { - if (!$tagList) { + if (!$tagList) { $keepTags = $this->getKeepTags('db'); } else { - $keepTags = $this->getKeepTags('db',$tagList); + $keepTags = $this->getKeepTags('db', $tagList); } - $kUknown = $this->procOptions['dontRemoveUnknownTags_db'] ? 1 : 0; // Default: remove unknown tags. + $kUknown = $this->procOptions['dontRemoveUnknownTags_db'] ? 1 : 0; // Default: remove unknown tags. - $hSC = $this->procOptions['dontUndoHSC_db'] ? 0 : -1; // Default: re-convert literals to characters (that is < to <) + $hSC = $this->procOptions['dontUndoHSC_db'] ? 0 : -1; // Default: re-convert literals to characters (that is < to <) // Create additional configuration in order to honor the setting RTE.default.proc.HTMLparser_db.xhtml_cleaning=1 - $addConfig=array(); + $addConfig = array(); - if ((is_array($this->procOptions['HTMLparser_db.']) && $this->procOptions['HTMLparser_db.']['xhtml_cleaning']) || (is_array($this->procOptions['entryHTMLparser_db.']) && $this->procOptions['entryHTMLparser_db.']['xhtml_cleaning']) || (is_array($this->procOptions['exitHTMLparser_db.']) && $this->procOptions['exitHTMLparser_db.']['xhtml_cleaning'])) { + if ((is_array($this->procOptions['HTMLparser_db.']) && $this->procOptions['HTMLparser_db.']['xhtml_cleaning']) || (is_array($this->procOptions['entryHTMLparser_db.']) && $this->procOptions['entryHTMLparser_db.']['xhtml_cleaning']) || (is_array($this->procOptions['exitHTMLparser_db.']) && $this->procOptions['exitHTMLparser_db.']['xhtml_cleaning'])) { - $addConfig['xhtml']=1; + $addConfig['xhtml'] = 1; } - return $this->HTMLcleaner($content,$keepTags,$kUknown,$hSC,$addConfig); + return $this->HTMLcleaner($content, $keepTags, $kUknown, $hSC, $addConfig); - } + } /** * Creates an array of configuration for the HTMLcleaner function based on whether content go TO or FROM the Rich Text Editor ($direction) @@ -1107,38 +1083,42 @@ * @return array Configuration array * @see HTMLcleaner_db() */ - function getKeepTags($direction='rte',$tagList='') { + function getKeepTags($direction = 'rte', $tagList = '') { - if (!is_array($this->getKeepTags_cache[$direction]) || $tagList) { + if (!is_array($this->getKeepTags_cache[$direction]) || $tagList) { // Setting up allowed tags: - if (strcmp($tagList,'')) { // If the $tagList input var is set, this will take precedence + if (strcmp($tagList, '')) { // If the $tagList input var is set, this will take precedence - $keepTags = array_flip(t3lib_div::trimExplode(',',$tagList,1)); + $keepTags = array_flip(t3lib_div::trimExplode(',', $tagList, 1)); - } else { // Default is to get allowed/denied tags from internal array of processing options: + } else { // Default is to get allowed/denied tags from internal array of processing options: // Construct default list of tags to keep: $typoScript_list = 'b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span'; - $keepTags = array_flip(t3lib_div::trimExplode(',',$typoScript_list.','.strtolower($this->procOptions['allowTags']),1)); + $keepTags = array_flip(t3lib_div::trimExplode(',', $typoScript_list . ',' . strtolower($this->procOptions['allowTags']), 1)); // For tags to deny, remove them from $keepTags array: - $denyTags = t3lib_div::trimExplode(',',$this->procOptions['denyTags'],1); + $denyTags = t3lib_div::trimExplode(',', $this->procOptions['denyTags'], 1); - foreach($denyTags as $dKe) { + foreach ($denyTags as $dKe) { unset($keepTags[$dKe]); } } // Based on the direction of content, set further options: - switch ($direction) { + switch ($direction) { // GOING from database to Rich Text Editor: case 'rte': if (!isset($this->procOptions['transformBoldAndItalicTags']) || $this->procOptions['transformBoldAndItalicTags']) { // Transform bold/italics tags to strong/em - if (isset($keepTags['b'])) {$keepTags['b']=array('remap'=>'STRONG');} - if (isset($keepTags['i'])) {$keepTags['i']=array('remap'=>'EM');} + if (isset($keepTags['b'])) { + $keepTags['b'] = array('remap' => 'STRONG'); - } + } + if (isset($keepTags['i'])) { + $keepTags['i'] = array('remap' => 'EM'); + } + } // Transforming keepTags array so it can be understood by the HTMLcleaner function. This basically converts the format of the array from TypoScript (having .'s) to plain multi-dimensional array. - list($keepTags) = $this->HTMLparserConfig($this->procOptions['HTMLparser_rte.'],$keepTags); + list($keepTags) = $this->HTMLparserConfig($this->procOptions['HTMLparser_rte.'], $keepTags); break; // GOING from RTE to database: @@ -1146,60 +1126,72 @@ if (!isset($this->procOptions['transformBoldAndItalicTags']) || $this->procOptions['transformBoldAndItalicTags']) { // Transform strong/em back to bold/italics: - if (isset($keepTags['strong'])) { $keepTags['strong']=array('remap'=>'b'); } - if (isset($keepTags['em'])) { $keepTags['em']=array('remap'=>'i'); } + if (isset($keepTags['strong'])) { + $keepTags['strong'] = array('remap' => 'b'); - } + } + if (isset($keepTags['em'])) { + $keepTags['em'] = array('remap' => 'i'); + } + } // Setting up span tags if they are allowed: - if (isset($keepTags['span'])) { + if (isset($keepTags['span'])) { - $classes=array_merge(array(''),$this->allowedClasses); + $classes = array_merge(array(''), $this->allowedClasses); - $keepTags['span']=array( + $keepTags['span'] = array( - 'allowedAttribs' => 'id,class,style,title,lang,xml:lang,dir', + 'allowedAttribs' => 'id,class,style,title,lang,xml:lang,dir', 'fixAttrib' => Array( - 'class' => Array ( + 'class' => Array( 'list' => $classes, 'removeIfFalse' => 1 ), ), 'rmTagIfNoAttrib' => 1 ); - if (!$this->procOptions['allowedClasses']) unset($keepTags['span']['fixAttrib']['class']['list']); + if (!$this->procOptions['allowedClasses']) { + unset($keepTags['span']['fixAttrib']['class']['list']); - } + } + } // Setting up font tags if they are allowed: - if (isset($keepTags['font'])) { + if (isset($keepTags['font'])) { - $colors=array_merge(array(''),t3lib_div::trimExplode(',',$this->procOptions['allowedFontColors'],1)); + $colors = array_merge(array(''), t3lib_div::trimExplode(',', $this->procOptions['allowedFontColors'], 1)); - $keepTags['font']=array( + $keepTags['font'] = array( - 'allowedAttribs'=>'face,color,size', + 'allowedAttribs' => 'face,color,size', 'fixAttrib' => Array( - 'face' => Array ( + 'face' => Array( 'removeIfFalse' => 1 ), - 'color' => Array ( + 'color' => Array( 'removeIfFalse' => 1, - 'list'=>$colors + 'list' => $colors ), - 'size' => Array ( + 'size' => Array( 'removeIfFalse' => 1, ) ), 'rmTagIfNoAttrib' => 1 ); - if (!$this->procOptions['allowedFontColors']) unset($keepTags['font']['fixAttrib']['color']['list']); + if (!$this->procOptions['allowedFontColors']) { + unset($keepTags['font']['fixAttrib']['color']['list']); - } + } + } // Setting further options, getting them from the processiong options: $TSc = $this->procOptions['HTMLparser_db.']; - if (!$TSc['globalNesting']) $TSc['globalNesting']='b,i,u,a,center,font,sub,sup,strong,em,strike,span'; - if (!$TSc['noAttrib']) $TSc['noAttrib']='b,i,u,br,center,hr,sub,sup,strong,em,li,ul,ol,blockquote,strike'; + if (!$TSc['globalNesting']) { + $TSc['globalNesting'] = 'b,i,u,a,center,font,sub,sup,strong,em,strike,span'; + } + if (!$TSc['noAttrib']) { + $TSc['noAttrib'] = 'b,i,u,br,center,hr,sub,sup,strong,em,li,ul,ol,blockquote,strike'; + } // Transforming the array from TypoScript to regular array: - list($keepTags) = $this->HTMLparserConfig($TSc,$keepTags); + list($keepTags) = $this->HTMLparserConfig($TSc, $keepTags); break; } // Caching (internally, in object memory) the result unless tagList is set: - if (!$tagList) { + if (!$tagList) { $this->getKeepTags_cache[$direction] = $keepTags; } else { return $keepTags; @@ -1222,39 +1214,41 @@ * @return string Processed input value. * @see setDivTags() */ - function divideIntoLines($value,$count=5,$returnArray=FALSE) { + function divideIntoLines($value, $count = 5, $returnArray = FALSE) { // Internalize font tags (move them from OUTSIDE p/div to inside it that is the case): - if ($this->procOptions['internalizeFontTags']) {$value = $this->internalizeFontTags($value);} + if ($this->procOptions['internalizeFontTags']) { + $value = $this->internalizeFontTags($value); + } // Setting configuration for processing: - $allowTagsOutside = t3lib_div::trimExplode(',',strtolower($this->procOptions['allowTagsOutside']?$this->procOptions['allowTagsOutside']:'img'),1); + $allowTagsOutside = t3lib_div::trimExplode(',', strtolower($this->procOptions['allowTagsOutside'] ? $this->procOptions['allowTagsOutside'] : 'img'), 1); $remapParagraphTag = strtoupper($this->procOptions['remapParagraphTag']); - $divSplit = $this->splitIntoBlock('div,p',$value,1); // Setting the third param to 1 will eliminate false end-tags. Maybe this is a good thing to do...? + $divSplit = $this->splitIntoBlock('div,p', $value, 1); // Setting the third param to 1 will eliminate false end-tags. Maybe this is a good thing to do...? - if ($this->procOptions['keepPDIVattribs']) { + if ($this->procOptions['keepPDIVattribs']) { - $keepAttribListArr = t3lib_div::trimExplode(',',strtolower($this->procOptions['keepPDIVattribs']),1); + $keepAttribListArr = t3lib_div::trimExplode(',', strtolower($this->procOptions['keepPDIVattribs']), 1); } else { $keepAttribListArr = array(); } // Returns plainly the value if there was no div/p sections in it - if (count($divSplit)<=1 || $count<=0) { + if (count($divSplit) <= 1 || $count <= 0) { return $value; } // Traverse the splitted sections: - foreach($divSplit as $k => $v) { + foreach ($divSplit as $k => $v) { - if ($k%2) { // Inside + if ($k % 2) { // Inside - $v=$this->removeFirstAndLastTag($v); + $v = $this->removeFirstAndLastTag($v); // Fetching 'sub-lines' - which will explode any further p/div nesting... - $subLines = $this->divideIntoLines($v,$count-1,1); + $subLines = $this->divideIntoLines($v, $count - 1, 1); - if (is_array($subLines)) { // So, if there happend to be sub-nesting of p/div, this is written directly as the new content of THIS section. (This would be considered 'an error') + if (is_array($subLines)) { // So, if there happend to be sub-nesting of p/div, this is written directly as the new content of THIS section. (This would be considered 'an error') // No noting. - } else { //... but if NO subsection was found, we process it as a TRUE line without erronous content: + } else { //... but if NO subsection was found, we process it as a TRUE line without erronous content: $subLines = array($subLines); - if (!$this->procOptions['dontConvBRtoParagraph']) { // process break-tags, if configured for. Simply, the breaktags will here be treated like if each was a line of content... + if (!$this->procOptions['dontConvBRtoParagraph']) { // process break-tags, if configured for. Simply, the breaktags will here be treated like if each was a line of content... $subLines = preg_split('//i', $v); } @@ -1262,29 +1256,31 @@ foreach ($subLines as $sk => $value) { // Clear up the subline for DB. - $subLines[$sk]=$this->HTMLcleaner_db($subLines[$sk]); + $subLines[$sk] = $this->HTMLcleaner_db($subLines[$sk]); // Get first tag, attributes etc: $fTag = $this->getFirstTag($divSplit[$k]); - $tagName=strtolower($this->getFirstTagName($divSplit[$k])); + $tagName = strtolower($this->getFirstTagName($divSplit[$k])); - $attribs=$this->get_tag_attributes($fTag); + $attribs = $this->get_tag_attributes($fTag); // Keep attributes (lowercase) - $newAttribs=array(); + $newAttribs = array(); - if (count($keepAttribListArr)) { + if (count($keepAttribListArr)) { - foreach($keepAttribListArr as $keepA) { + foreach ($keepAttribListArr as $keepA) { - if (isset($attribs[0][$keepA])) { $newAttribs[$keepA] = $attribs[0][$keepA]; } + if (isset($attribs[0][$keepA])) { + $newAttribs[$keepA] = $attribs[0][$keepA]; - } - } + } + } + } // ALIGN attribute: - if (!$this->procOptions['skipAlign'] && strcmp(trim($attribs[0]['align']),'') && strtolower($attribs[0]['align'])!='left') { // Set to value, but not 'left' + if (!$this->procOptions['skipAlign'] && strcmp(trim($attribs[0]['align']), '') && strtolower($attribs[0]['align']) != 'left') { // Set to value, but not 'left' - $newAttribs['align']=strtolower($attribs[0]['align']); + $newAttribs['align'] = strtolower($attribs[0]['align']); } // CLASS attribute: - if (!$this->procOptions['skipClass'] && strcmp(trim($attribs[0]['class']),'')) { // Set to whatever value + if (!$this->procOptions['skipClass'] && strcmp(trim($attribs[0]['class']), '')) { // Set to whatever value - if (!count($this->allowedClasses) || in_array($attribs[0]['class'], $this->allowedClasses)) { + if (!count($this->allowedClasses) || in_array($attribs[0]['class'], $this->allowedClasses)) { $newAttribs['class'] = $attribs[0]['class']; } else { $classes = t3lib_div::trimExplode(' ', $attribs[0]['class'], true); @@ -1292,8 +1288,8 @@ foreach ($classes as $class) { if (in_array($class, $this->allowedClasses)) { $newClasses[] = $class; - } - } + } + } if (count($newClasses)) { $newAttribs['class'] = implode(' ', $newClasses); } @@ -1301,34 +1297,40 @@ } // Remove any line break char (10 or 13) - $subLines[$sk]=preg_replace('/'.LF.'|'.CR.'/','',$subLines[$sk]); + $subLines[$sk] = preg_replace('/' . LF . '|' . CR . '/', '', $subLines[$sk]); // If there are any attributes or if we are supposed to remap the tag, then do so: - if (count($newAttribs) && strcmp($remapParagraphTag,'1')) { + if (count($newAttribs) && strcmp($remapParagraphTag, '1')) { - if ($remapParagraphTag=='P') $tagName='p'; - if ($remapParagraphTag=='DIV') $tagName='div'; + if ($remapParagraphTag == 'P') { + $tagName = 'p'; + } + if ($remapParagraphTag == 'DIV') { + $tagName = 'div'; + } - $subLines[$sk]='<'.trim($tagName.' '.$this->compileTagAttribs($newAttribs)).'>'.$subLines[$sk].''; + $subLines[$sk] = '<' . trim($tagName . ' ' . $this->compileTagAttribs($newAttribs)) . '>' . $subLines[$sk] . ''; } } } // Add the processed line(s) - $divSplit[$k] = implode(LF,$subLines); + $divSplit[$k] = implode(LF, $subLines); // If it turns out the line is just blank (containing a   possibly) then just make it pure blank. // But, prevent filtering of lines that are blank in sense above, but whose tags contain attributes. // Those attributes should have been filtered before; if they are still there they must be considered as possible content. - if (trim(strip_tags($divSplit[$k]))==' ' && !preg_match('/\<(img)(\s[^>]*)?\/?>/si', $divSplit[$k]) && !preg_match('/\<([^>]*)?( align| class| style| id| title| dir| lang| xml:lang)([^>]*)?>/si', trim($divSplit[$k]))) { + if (trim(strip_tags($divSplit[$k])) == ' ' && !preg_match('/\<(img)(\s[^>]*)?\/?>/si', $divSplit[$k]) && !preg_match('/\<([^>]*)?( align| class| style| id| title| dir| lang| xml:lang)([^>]*)?>/si', trim($divSplit[$k]))) { - $divSplit[$k]=''; + $divSplit[$k] = ''; } - } else { // outside div: + } else { // outside div: // Remove positions which are outside div/p tags and without content - $divSplit[$k]=trim(strip_tags($divSplit[$k],'<'.implode('><',$allowTagsOutside).'>')); + $divSplit[$k] = trim(strip_tags($divSplit[$k], '<' . implode('><', $allowTagsOutside) . '>')); - if (!strcmp($divSplit[$k],'')) unset($divSplit[$k]); // Remove part if it's empty + if (!strcmp($divSplit[$k], '')) { + unset($divSplit[$k]); + } // Remove part if it's empty } } // Return value: - return $returnArray ? $divSplit : implode(LF,$divSplit); + return $returnArray ? $divSplit : implode(LF, $divSplit); } /** @@ -1340,38 +1342,40 @@ * @return string Processed value. * @see divideIntoLines() */ - function setDivTags($value,$dT='p') { + function setDivTags($value, $dT = 'p') { // First, setting configuration for the HTMLcleaner function. This will process each line between the
    /

    section on their way to the RTE $keepTags = $this->getKeepTags('rte'); - $kUknown = $this->procOptions['dontProtectUnknownTags_rte'] ? 0 : 'protect'; // Default: remove unknown tags. + $kUknown = $this->procOptions['dontProtectUnknownTags_rte'] ? 0 : 'protect'; // Default: remove unknown tags. - $hSC = $this->procOptions['dontHSC_rte'] ? 0 : 1; // Default: re-convert literals to characters (that is < to <) + $hSC = $this->procOptions['dontHSC_rte'] ? 0 : 1; // Default: re-convert literals to characters (that is < to <) - $convNBSP = !$this->procOptions['dontConvAmpInNBSP_rte']?1:0; + $convNBSP = !$this->procOptions['dontConvAmpInNBSP_rte'] ? 1 : 0; // Divide the content into lines, based on LF: - $parts = explode(LF,$value); + $parts = explode(LF, $value); - foreach($parts as $k => $v) { + foreach ($parts as $k => $v) { // Processing of line content: - if (!strcmp(trim($parts[$k]),'')) { // If the line is blank, set it to   + if (!strcmp(trim($parts[$k]), '')) { // If the line is blank, set it to   - $parts[$k]=' '; + $parts[$k] = ' '; - } else { // Clean the line content: + } else { // Clean the line content: - $parts[$k]=$this->HTMLcleaner($parts[$k],$keepTags,$kUknown,$hSC); + $parts[$k] = $this->HTMLcleaner($parts[$k], $keepTags, $kUknown, $hSC); - if ($convNBSP) $parts[$k]=str_replace('&nbsp;',' ',$parts[$k]); + if ($convNBSP) { + $parts[$k] = str_replace('&nbsp;', ' ', $parts[$k]); - } + } + } // Wrapping the line in <$dT> is not already wrapped: $testStr = strtolower(trim($parts[$k])); - if (substr($testStr,0,4)!=''.$parts[$k].''; + $parts[$k] = '<' . $dT . '>' . $parts[$k] . ''; } } } // Implode result: - return implode(LF,$parts); + return implode(LF, $parts); } /** @@ -1385,34 +1389,34 @@ * @return string Output content * @see divideIntoLines() */ - function internalizeFontTags($value) { + function internalizeFontTags($value) { // Splitting into font tag blocks: - $fontSplit = $this->splitIntoBlock('font',$value); + $fontSplit = $this->splitIntoBlock('font', $value); - foreach($fontSplit as $k => $v) { + foreach ($fontSplit as $k => $v) { - if ($k%2) { // Inside + if ($k % 2) { // Inside - $fTag = $this->getFirstTag($v); // Fint font-tag + $fTag = $this->getFirstTag($v); // Fint font-tag - $divSplit_sub = $this->splitIntoBlock('div,p',$this->removeFirstAndLastTag($v),1); + $divSplit_sub = $this->splitIntoBlock('div,p', $this->removeFirstAndLastTag($v), 1); - if (count($divSplit_sub)>1) { // If there were div/p sections inside the font-tag, do something about it... + if (count($divSplit_sub) > 1) { // If there were div/p sections inside the font-tag, do something about it... // traverse those sections: - foreach($divSplit_sub as $k2 => $v2) { + foreach ($divSplit_sub as $k2 => $v2) { - if ($k2%2) { // Inside + if ($k2 % 2) { // Inside - $div_p = $this->getFirstTag($v2); // Fint font-tag + $div_p = $this->getFirstTag($v2); // Fint font-tag - $div_p_tagname = $this->getFirstTagName($v2); // Fint font-tag + $div_p_tagname = $this->getFirstTagName($v2); // Fint font-tag - $v2=$this->removeFirstAndLastTag($v2); // ... and remove it from original. + $v2 = $this->removeFirstAndLastTag($v2); // ... and remove it from original. - $divSplit_sub[$k2]=$div_p.$fTag.$v2.''.''; + $divSplit_sub[$k2] = $div_p . $fTag . $v2 . '' . ''; } elseif (trim(strip_tags($v2))) { - $divSplit_sub[$k2]=$fTag.$v2.''; + $divSplit_sub[$k2] = $fTag . $v2 . ''; } } - $fontSplit[$k]=implode('',$divSplit_sub); + $fontSplit[$k] = implode('', $divSplit_sub); } } } - return implode('',$fontSplit); + return implode('', $fontSplit); } /** @@ -1421,7 +1425,7 @@ * @return string Value of t3lib_div::getIndpEnv('TYPO3_SITE_URL'); * @see t3lib_div::getIndpEnv() */ - function siteUrl() { + function siteUrl() { return t3lib_div::getIndpEnv('TYPO3_SITE_URL'); } @@ -1431,7 +1435,7 @@ * * @return string */ - function rteImageStorageDir() { + function rteImageStorageDir() { return $this->rte_p['imgpath'] ? $this->rte_p['imgpath'] : $GLOBALS['TYPO3_CONF_VARS']['BE']['RTE_imageStorageDir']; } @@ -1443,21 +1447,21 @@ * @param string Break character to use for linebreaks. * @return string Output value */ - function removeTables($value,$breakChar='
    ') { + function removeTables($value, $breakChar = '
    ') { // Splitting value into table blocks: - $tableSplit = $this->splitIntoBlock('table',$value); + $tableSplit = $this->splitIntoBlock('table', $value); // Traverse blocks of tables: - foreach($tableSplit as $k => $v) { + foreach ($tableSplit as $k => $v) { - if ($k%2) { + if ($k % 2) { - $tableSplit[$k]=''; + $tableSplit[$k] = ''; - $rowSplit = $this->splitIntoBlock('tr',$v); + $rowSplit = $this->splitIntoBlock('tr', $v); - foreach($rowSplit as $k2 => $v2) { + foreach ($rowSplit as $k2 => $v2) { - if ($k2%2) { + if ($k2 % 2) { - $cellSplit = $this->getAllParts($this->splitIntoBlock('td',$v2),1,0); + $cellSplit = $this->getAllParts($this->splitIntoBlock('td', $v2), 1, 0); - foreach($cellSplit as $k3 => $v3) { + foreach ($cellSplit as $k3 => $v3) { - $tableSplit[$k].=$v3.$breakChar; + $tableSplit[$k] .= $v3 . $breakChar; } } } @@ -1465,7 +1469,7 @@ } // Implode it all again: - return implode($breakChar,$tableSplit); + return implode($breakChar, $tableSplit); } /** @@ -1475,18 +1479,18 @@ * @param string Direction To databsae (db) or from database to RTE (rte) * @return string Processed value */ - function defaultTStagMapping($code,$direction='rte') { + function defaultTStagMapping($code, $direction = 'rte') { - if ($direction=='db') { + if ($direction == 'db') { - $code=$this->mapTags($code,array( // Map tags + $code = $this->mapTags($code, array( // Map tags - 'strong' => 'b', - 'em' => 'i' - )); + 'strong' => 'b', + 'em' => 'i' + )); } - if ($direction=='rte') { + if ($direction == 'rte') { - $code=$this->mapTags($code,array( // Map tags + $code = $this->mapTags($code, array( // Map tags - 'b' => 'strong', - 'i' => 'em' - )); + 'b' => 'strong', + 'i' => 'em' + )); } return $code; } @@ -1498,25 +1502,25 @@ * @param array Array of attributes from tag in which to search. More specifically the content of the key "style" is used to extract "width:xxx / height:xxx" information * @return array Integer w/h in key 0/1. Zero is returned if not found. */ - function getWHFromAttribs($attribArray) { + function getWHFromAttribs($attribArray) { - $style =trim($attribArray['style']); + $style = trim($attribArray['style']); - if ($style) { + if ($style) { - $regex='[[:space:]]*:[[:space:]]*([0-9]*)[[:space:]]*px'; + $regex = '[[:space:]]*:[[:space:]]*([0-9]*)[[:space:]]*px'; // Width $reg = array(); - preg_match('/width'.$regex.'/i',$style,$reg); + preg_match('/width' . $regex . '/i', $style, $reg); $w = intval($reg[1]); // Height - preg_match('/height'.$regex.'/i',$style,$reg); + preg_match('/height' . $regex . '/i', $style, $reg); $h = intval($reg[1]); } - if (!$w) { + if (!$w) { $w = $attribArray['width']; } - if (!$h) { + if (!$h) { $h = $attribArray['height']; } - return array(intval($w),intval($h)); + return array(intval($w), intval($h)); } /** @@ -1525,53 +1529,53 @@ * @param string URL to analyse. * @return array Information in an array about the URL */ - function urlInfoForLinkTags($url) { + function urlInfoForLinkTags($url) { $info = array(); $url = trim($url); - if (substr(strtolower($url),0,7)=='mailto:') { + if (substr(strtolower($url), 0, 7) == 'mailto:') { - $info['url']=trim(substr($url,7)); + $info['url'] = trim(substr($url, 7)); - $info['type']='email'; + $info['type'] = 'email'; } else { - $curURL = $this->siteUrl(); // 100502, removed this: 'http://'.t3lib_div::getThisUrl(); Reason: The url returned had typo3/ in the end - should be only the site's url as far as I see... + $curURL = $this->siteUrl(); // 100502, removed this: 'http://'.t3lib_div::getThisUrl(); Reason: The url returned had typo3/ in the end - should be only the site's url as far as I see... - for($a=0;$asplitIntoBlock('A',$value); + $blockSplit = $this->splitIntoBlock('A', $value); foreach ($blockSplit as $k => $v) { - if ($k%2) { // block: + if ($k % 2) { // block: - $attribArray = $this->get_tag_attributes_classic($this->getFirstTag($v),1); + $attribArray = $this->get_tag_attributes_classic($this->getFirstTag($v), 1); // Checking if there is a scheme, and if not, prepend the current url. - if (strlen($attribArray['href'])) { // ONLY do this if href has content - the tag COULD be an anchor and if so, it should be preserved... + if (strlen($attribArray['href'])) { // ONLY do this if href has content - the tag COULD be an anchor and if so, it should be preserved... $uP = parse_url(strtolower($attribArray['href'])); - if (!$uP['scheme']) { + if (!$uP['scheme']) { - $attribArray['href'] = $this->siteUrl().substr($attribArray['href'],strlen($this->relBackPath)); + $attribArray['href'] = $this->siteUrl() . substr($attribArray['href'], strlen($this->relBackPath)); } elseif ($uP['scheme'] != 'mailto') { $attribArray['external'] = 1; } } else { $attribArray['rtekeep'] = 1; } - if (!$dontSetRTEKEEP) $attribArray['rtekeep'] = 1; + if (!$dontSetRTEKEEP) { + $attribArray['rtekeep'] = 1; + } - $bTag=''; + $bTag = ''; - $eTag=''; + $eTag = ''; - $blockSplit[$k] = $bTag.$this->TS_AtagToAbs($this->removeFirstAndLastTag($blockSplit[$k])).$eTag; + $blockSplit[$k] = $bTag . $this->TS_AtagToAbs($this->removeFirstAndLastTag($blockSplit[$k])) . $eTag; } } - return implode('',$blockSplit); + return implode('', $blockSplit); } } -if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_parsehtml_proc.php']) { +if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_parsehtml_proc.php']) { include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_parsehtml_proc.php']); }