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

📄 class.missing_files.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: Missing files * 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] * * * *   56: class tx_lowlevel_missing_files extends tx_lowlevel_cleaner_core *   65:     function tx_lowlevel_missing_files() *   98:     function main() *  154:     function main_autoFix($resultArray) * * TOTAL FUNCTIONS: 3 * (This index is automatically created/updated by the extension "extdeveval") * *//** * Looking for missing files. * * @author	Kasper Sk氓rh酶j <kasperYYYY@typo3.com> * @package TYPO3 * @subpackage tx_lowlevel */class tx_lowlevel_missing_files extends tx_lowlevel_cleaner_core {	var $checkRefIndex = TRUE;	/**	 * Constructor	 *	 * @return	void	 */	function tx_lowlevel_missing_files()	{		parent::tx_lowlevel_cleaner_core();			// Setting up help:		$this->cli_help['name'] = 'missing_files -- Find all file references from records pointing to a missing (non-existing) file.';		$this->cli_help['description'] = trim('Assumptions:- a perfect integrity of the reference index table (always update the reference index table before using this tool!)- relevant soft reference parsers applied everywhere file references are used inlineFiles may be missing for these reasons (except software bugs):- someone manually deleted the file inside fileadmin/ or another user maintained folder. If the reference was a soft reference (opposite to a TCEmain managed file relation from "group" type fields), technically it is not an error although it might be a mistake that someone did so.- someone manually deleted the file inside the uploads/ folder (typically containing managed files) which is an error since no user interaction should take place there.Automatic Repair of Errors:- Managed files (TCA/FlexForm attachments): Will silently remove the reference from the record since the file is missing. For this reason you might prefer a manual approach instead.- Soft References: Requires manual fix if you consider it an error.Manual repair suggestions:- Managed files: You might be able to locate the file and re-insert it in the correct location. However, no automatic fix can do that for you.- Soft References: You should investigate each case and edit the content accordingly. A soft reference to a file could be in an HTML image tag (for example <img src="missing_file.jpg" />) and you would have to either remove the whole tag, change the filename or re-create the missing file.');		$this->cli_help['examples'] = '/.../cli_dispatch.phpsh lowlevel_cleaner missing_files -s -rThis will show you missing files in the TYPO3 system and only report back if errors were found.';	}	/**	 * Find file references that points to non-existing files in system	 * Fix methods: API in t3lib_refindex that allows to change the value of a reference (or remove it)	 *	 * @return	array	 */	function main() {		global $TYPO3_DB;			// Initialize result array:		$listExplain = ' Shows the relative filename of missing file as header and under a list of record fields in which the references are found. '.$this->label_infoString;		$resultArray = array(			'message' => $this->cli_help['name'].chr(10).chr(10).$this->cli_help['description'],			'headers' => array(				'managedFilesMissing' => array('List of missing files managed by TCEmain', $listExplain, 3),				'softrefFilesMissing' => array('List of missing files registered as a soft reference', $listExplain, 2),			),			'managedFilesMissing' => array(),			'softrefFilesMissing' => array(),		);			// Select all files in the reference table		$recs = $TYPO3_DB->exec_SELECTgetRows(			'*',			'sys_refindex',			'ref_table='.$TYPO3_DB->fullQuoteStr('_FILE', 'sys_refindex'),			'',			'sorting DESC'		);			// Traverse the files and put into a large table:		if (is_array($recs)) {			foreach($recs as $rec)	{					// Compile info string for location of reference:				$infoString = $this->infoStr($rec);					// Handle missing file:				if (!@is_file(PATH_site.$rec['ref_string']))	{					if ((string)$rec['softref_key']=='')	{						$resultArrayIndex = 'managedFilesMissing';					} else {						$resultArrayIndex = 'softrefFilesMissing';					}					$resultArray[$resultArrayIndex][$rec['ref_string']][$rec['hash']] = $infoString;				}			}		}		return $resultArray;	}	/**	 * 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['managedFilesMissing'] as $key => $value)	{			echo 'Processing file: '.$key.chr(10);			$c=0;			foreach($value as $hash => $recReference)	{				echo '	Removing reference in record "'.$recReference.'": ';				if ($bypass = $this->cli_noExecutionCheck($recReference))	{					echo $bypass;				} else {					$sysRefObj = t3lib_div::makeInstance('t3lib_refindex');					$error = $sysRefObj->setReferenceValue($hash,NULL);					if ($error)	{						echo '		t3lib_refindex::setReferenceValue(): '.$error.chr(10);						echo 'missing_files: exit on error'.chr(10);						exit;					} else echo "DONE";				}				echo chr(10);			}		}	}}?>

⌨️ 快捷键说明

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