⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class.cleanflexform.php

📁 Typo3, 开源里边最强大的
💻 PHP
字号:
<?php/****************************************************************  Copyright notice**  (c) 1999-2005 Kasper Skaarhoj (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!***************************************************************//** * Cleaner module: cleanflexform * User function called from tx_lowlevel_cleaner_core configured in ext_localconf.php * * @author	Kasper Sk氓rh酶j <kasperYYYY@typo3.com> *//** * [CLASS/FUNCTION INDEX of SCRIPT] * * * *   57: class tx_lowlevel_cleanflexform extends tx_lowlevel_cleaner_core *   64:     function tx_lowlevel_cleanflexform() *   89:     function main() *  122:     function main_parseTreeCallBack($tableName,$uid,$echoLevel,$versionSwapmode,$rootIsVersion) *  154:     function main_autoFix($resultArray) * * TOTAL FUNCTIONS: 4 * (This index is automatically created/updated by the extension "extdeveval") * *//** * cleanflexform * * @author	Kasper Sk氓rh酶j <kasperYYYY@typo3.com> * @package TYPO3 * @subpackage tx_lowlevel */class tx_lowlevel_cleanflexform extends tx_lowlevel_cleaner_core {	/**	 * Constructor	 *	 * @return	void	 */	function tx_lowlevel_cleanflexform()	{		parent::tx_lowlevel_cleaner_core();			// Setting up help:		$this->cli_options[] = array('--echotree level', 'When "level" is set to 1 or higher you will see the page of the page tree outputted as it is traversed. A value of 2 for "level" will show even more information.');		$this->cli_options[] = array('--pid id', 'Setting start page in page tree. Default is the page tree root, 0 (zero)');		$this->cli_options[] = array('--depth int', 'Setting traversal depth. 0 (zero) will only analyse start page (see --pid), 1 will traverse one level of subpages etc.');		$this->cli_help['name'] = 'cleanflexform -- Find flexform fields with unclean XML';		$this->cli_help['description'] = trim('Traversing page tree and finding records with FlexForm fields with XML that could be cleaned up. This will just remove obsolete data garbage.Automatic Repair:Cleaning XML for FlexForm fields.');		$this->cli_help['examples'] = '';	}	/**	 * Find orphan records	 * VERY CPU and memory intensive since it will look up the whole page tree!	 *	 * @return	array	 */	function main() {		global $TYPO3_DB;			// Initialize result array:		$resultArray = array(			'message' => $this->cli_help['name'].chr(10).chr(10).$this->cli_help['description'],			'headers' => array(				'dirty' => array('','',2),			),			'dirty' => array()		);		$startingPoint = $this->cli_isArg('--pid') ? t3lib_div::intInRange($this->cli_argValue('--pid'),0) : 0;		$depth = $this->cli_isArg('--depth') ? t3lib_div::intInRange($this->cli_argValue('--depth'),0) : 1000;		$this->cleanFlexForm_dirtyFields = &$resultArray['dirty'];		$this->genTree_traverseDeleted = FALSE;	// Do not repair flexform data in deleted records.		$this->genTree($startingPoint,$depth,(int)$this->cli_argValue('--echotree'),'main_parseTreeCallBack');		return $resultArray;	}	/**	 * Call back function for page tree traversal!	 *	 * @param	string		Table name	 * @param	integer		UID of record in processing	 * @param	integer		Echo level  (see calling function	 * @param	string		Version swap mode on that level (see calling function	 * @param	integer		Is root version (see calling function	 * @return	void	 */	function main_parseTreeCallBack($tableName,$uid,$echoLevel,$versionSwapmode,$rootIsVersion)	{		t3lib_div::loadTCA($tableName);		foreach($GLOBALS['TCA'][$tableName]['columns'] as $colName => $config)	{			if ($config['config']['type']=='flex')	{				if ($echoLevel>2)	echo chr(10).'			[cleanflexform:] Field "'.$colName.'" in '.$tableName.':'.$uid.' was a flexform and...';				$recRow = t3lib_BEfunc::getRecordRaw($tableName,'uid='.intval($uid));				$flexObj = t3lib_div::makeInstance('t3lib_flexformtools');				if ($recRow[$colName])	{						// Clean XML:					$newXML = $flexObj->cleanFlexFormXML($tableName,$colName,$recRow);					if (md5($recRow[$colName])!=md5($newXML))	{						if ($echoLevel>2)	echo ' was DIRTY, needs cleanup!';						$this->cleanFlexForm_dirtyFields[] = $tableName.':'.$uid.':'.$colName;					} else {						if ($echoLevel>2)	echo ' was CLEAN';					}				} else if ($echoLevel>2)	echo ' was EMPTY';			}		}	}	/**	 * Mandatory autofix function	 * Will run auto-fix on the result array. Echos status during processing.	 *	 * @param	array		Result array from main() function	 * @return	void	 */	function main_autoFix($resultArray)	{		foreach($resultArray['dirty'] as $fieldID)	{			list($table, $uid, $field) = explode(':',$fieldID);			echo 'Cleaning XML in "'.$fieldID.'": ';			if ($bypass = $this->cli_noExecutionCheck($fieldID))	{				echo $bypass;			} else {					// Clean XML:				$data = array();				$recRow = t3lib_BEfunc::getRecordRaw($table,'uid='.intval($uid));				$flexObj = t3lib_div::makeInstance('t3lib_flexformtools');				if ($recRow[$field])	{					$data[$table][$uid][$field] = $flexObj->cleanFlexFormXML($table,$field,$recRow);				}					// Execute Data array:				$tce = t3lib_div::makeInstance('t3lib_TCEmain');				$tce->stripslashes_values = FALSE;				$tce->dontProcessTransformations = TRUE;				$tce->bypassWorkspaceRestrictions = TRUE;				$tce->bypassFileHandling = TRUE;				$tce->start($data,array());	// check has been done previously that there is a backend user which is Admin and also in live workspace				$tce->process_datamap();					// Return errors if any:				if (count($tce->errorLog))	{					echo '	ERROR from "TCEmain":'.chr(10).'TCEmain:'.implode(chr(10).'TCEmain:',$tce->errorLog);				} else echo 'DONE';			}			echo chr(10);		}	}}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -