Bug #22410 » 14050_cleaning_t3lib_admin.patch
t3lib/class.t3lib_admin.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!
|
||
***************************************************************/
|
||
/**
|
||
* Contains a class for evaluation of database integrity according to $TCA
|
||
* Most of these functions are considered obsolete!
|
||
... | ... | |
*
|
||
*
|
||
* 93: class t3lib_admin
|
||
* 128: function genTree($theID, $depthData, $versions=FALSE)
|
||
* 128: function genTree($theID, $depthData, $versions=FALSE)
|
||
* 217: function genTree_records($theID, $depthData, $table='', $versions=FALSE)
|
||
* 217: function genTree_records($theID, $depthData, $table='', $versions=FALSE)
|
||
* 292: function genTreeStatus()
|
||
* 292: function genTreeStatus()
|
||
* 315: function lostRecords($pid_list)
|
||
* 315: function lostRecords($pid_list)
|
||
* 346: function fixLostRecord($table,$uid)
|
||
* 346: function fixLostRecord($table,$uid)
|
||
* 367: function countRecords($pid_list)
|
||
* 367: function countRecords($pid_list)
|
||
* 395: function getGroupFields($mode)
|
||
* 395: function getGroupFields($mode)
|
||
* 429: function getFileFields($uploadfolder)
|
||
* 429: function getFileFields($uploadfolder)
|
||
* 452: function getDBFields($theSearchTable)
|
||
* 452: function getDBFields($theSearchTable)
|
||
* 480: function selectNonEmptyRecordsWithFkeys($fkey_arrays)
|
||
* 480: function selectNonEmptyRecordsWithFkeys($fkey_arrays)
|
||
* 569: function testFileRefs ()
|
||
* 569: function testFileRefs ()
|
||
* 620: function testDBRefs($theArray)
|
||
* 620: function testDBRefs($theArray)
|
||
* 658: function whereIsRecordReferenced($searchTable,$id)
|
||
* 658: function whereIsRecordReferenced($searchTable,$id)
|
||
* 695: function whereIsFileReferenced($uploadfolder,$filename)
|
||
* 695: function whereIsFileReferenced($uploadfolder,$filename)
|
||
*
|
||
* TOTAL FUNCTIONS: 14
|
||
* (This index is automatically created/updated by the extension "extdeveval")
|
||
... | ... | |
*/
|
||
/**
|
||
* This class holds functions used by the TYPO3 backend to check the integrity of the database (The DBint module, 'lowlevel' extension)
|
||
*
|
||
... | ... | |
* @subpackage t3lib
|
||
*/
|
||
class t3lib_admin {
|
||
var $genTree_includeDeleted = TRUE; // if set, genTree() includes deleted pages. This is default.
|
||
var $genTree_includeDeleted = TRUE; // if set, genTree() includes deleted pages. This is default.
|
||
var $genTree_includeVersions = TRUE; // if set, genTree() includes verisonized pages/records. This is default.
|
||
var $genTree_includeVersions = TRUE; // if set, genTree() includes verisonized pages/records. This is default.
|
||
var $genTree_includeRecords = FALSE; // if set, genTree() includes records from pages.
|
||
var $genTree_includeRecords = FALSE; // if set, genTree() includes records from pages.
|
||
var $perms_clause = ''; // extra where-clauses for the tree-selection
|
||
var $perms_clause = ''; // extra where-clauses for the tree-selection
|
||
var $genTree_makeHTML = 0; // if set, genTree() generates HTML, that visualizes the tree.
|
||
var $genTree_makeHTML = 0; // if set, genTree() generates HTML, that visualizes the tree.
|
||
// internal
|
||
var $page_idArray = Array(); // Will hod id/rec pais from genTree()
|
||
var $rec_idArray = Array();
|
||
var $page_idArray = array(); // Will hod id/rec pais from genTree()
|
||
var $rec_idArray = array();
|
||
var $getTree_HTML = ''; // Will hold the HTML-code visualising the tree. genTree()
|
||
var $getTree_HTML = ''; // Will hold the HTML-code visualising the tree. genTree()
|
||
var $backPath = '';
|
||
// internal
|
||
var $checkFileRefs = Array();
|
||
var $checkSelectDBRefs = Array(); // From the select-fields
|
||
var $checkGroupDBRefs = Array(); // From the group-fields
|
||
var $checkFileRefs = array();
|
||
var $checkSelectDBRefs = array(); // From the select-fields
|
||
var $checkGroupDBRefs = array(); // From the group-fields
|
||
var $recStats = Array(
|
||
var $recStats = array(
|
||
'allValid' => array(),
|
||
'published_versions' => array(),
|
||
'deleted' => array(),
|
||
);
|
||
var $lRecords = Array();
|
||
var $lRecords = array();
|
||
var $lostPagesList = '';
|
||
... | ... | |
* @param boolean Internal variable, don't set from outside!
|
||
* @return void
|
||
*/
|
||
function genTree($theID, $depthData, $versions=FALSE) {
|
||
function genTree($theID, $depthData, $versions = FALSE) {
|
||
if ($versions) {
|
||
if ($versions) {
|
||
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
|
||
'uid,title,doktype,deleted,t3ver_wsid,t3ver_id,t3ver_count,t3ver_swapmode'.(t3lib_extMgm::isLoaded('cms')?',hidden':''),
|
||
'uid,title,doktype,deleted,t3ver_wsid,t3ver_id,t3ver_count,t3ver_swapmode' . (t3lib_extMgm::isLoaded('cms') ? ',hidden' : ''),
|
||
'pages',
|
||
'pid=-1 AND t3ver_oid='.intval($theID).' '.((!$this->genTree_includeDeleted)?'AND deleted=0':'').$this->perms_clause,
|
||
'pid=-1 AND t3ver_oid=' . intval($theID) . ' ' . ((!$this->genTree_includeDeleted) ? 'AND deleted=0' : '') . $this->perms_clause,
|
||
'',
|
||
'sorting'
|
||
);
|
||
} else {
|
||
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
|
||
'uid,title,doktype,deleted'.(t3lib_extMgm::isLoaded('cms')?',hidden':''),
|
||
'uid,title,doktype,deleted' . (t3lib_extMgm::isLoaded('cms') ? ',hidden' : ''),
|
||
'pages',
|
||
'pid='.intval($theID).' '.((!$this->genTree_includeDeleted)?'AND deleted=0':'').$this->perms_clause,
|
||
'pid=' . intval($theID) . ' ' . ((!$this->genTree_includeDeleted) ? 'AND deleted=0' : '') . $this->perms_clause,
|
||
'',
|
||
'sorting'
|
||
);
|
||
... | ... | |
// Traverse the records selected:
|
||
$a = 0;
|
||
$c = $GLOBALS['TYPO3_DB']->sql_num_rows($res);
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
|
||
// Prepare the additional label used in the HTML output in case of versions:
|
||
if ($versions) {
|
||
if ($versions) {
|
||
$versionLabel = '[v1.'.$row['t3ver_id'].'; WS#'.$row['t3ver_wsid'].']';
|
||
$versionLabel = '[v1.' . $row['t3ver_id'] . '; WS#' . $row['t3ver_wsid'] . ']';
|
||
} else $versionLabel='';
|
||
} else {
|
||
$versionLabel = '';
|
||
}
|
||
$a++;
|
||
$newID = $row['uid'];
|
||
// Build HTML output:
|
||
if ($this->genTree_makeHTML) {
|
||
if ($this->genTree_makeHTML) {
|
||
$this->genTree_HTML.=LF.'<div><span class="nobr">';
|
||
$this->genTree_HTML .= LF . '<div><span class="nobr">';
|
||
$PM = 'join';
|
||
$LN = ($a==$c)?'blank':'line';
|
||
$LN = ($a == $c) ? 'blank' : 'line';
|
||
$BTM = ($a==$c)?'bottom':'';
|
||
$BTM = ($a == $c) ? 'bottom' : '';
|
||
$this->genTree_HTML.= $depthData.
|
||
$this->genTree_HTML .= $depthData .
|
||
'<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/'.$PM.$BTM.'.gif','width="18" height="16"').' align="top" alt="" />'.
|
||
'<img' . t3lib_iconWorks::skinImg($this->backPath, 'gfx/ol/' . $PM . $BTM . '.gif', 'width="18" height="16"') . ' align="top" alt="" />' .
|
||
$versionLabel.
|
||
$versionLabel .
|
||
t3lib_iconWorks::getSpriteIconForRecord('pages', $row) .
|
||
t3lib_iconWorks::getSpriteIconForRecord('pages', $row) .
|
||
htmlspecialchars($row['uid'].': '.t3lib_div::fixed_lgd_cs(strip_tags($row['title']),50)).'</span></div>';
|
||
htmlspecialchars($row['uid'] . ': ' . t3lib_div::fixed_lgd_cs(strip_tags($row['title']), 50)) . '</span></div>';
|
||
}
|
||
// Register various data for this item:
|
||
$this->page_idArray[$newID]=$row;
|
||
$this->page_idArray[$newID] = $row;
|
||
$this->recStats['all_valid']['pages'][$newID] = $newID;
|
||
# if ($versions) $this->recStats['versions']['pages'][$newID] = $newID;
|
||
# if ($versions) $this->recStats['versions']['pages'][$newID] = $newID;
|
||
if ($row['deleted']) $this->recStats['deleted']['pages'][$newID] = $newID;
|
||
if ($row['deleted']) {
|
||
$this->recStats['deleted']['pages'][$newID] = $newID;
|
||
}
|
||
if ($versions && $row['t3ver_count']>=1) {
|
||
if ($versions && $row['t3ver_count'] >= 1) {
|
||
$this->recStats['published_versions']['pages'][$newID] = $newID;
|
||
}
|
||
if ($row['deleted']) {$this->recStat['deleted']++;}
|
||
if ($row['hidden']) {$this->recStat['hidden']++;}
|
||
if ($row['deleted']) {
|
||
$this->recStat['deleted']++;
|
||
}
|
||
if ($row['hidden']) {
|
||
$this->recStat['hidden']++;
|
||
}
|
||
$this->recStat['doktype'][$row['doktype']]++;
|
||
// Create the HTML code prefix for recursive call:
|
||
$genHTML = $depthData.'<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/'.$LN.'.gif','width="18" height="16"').' align="top" alt="" />'.$versionLabel;
|
||
$genHTML = $depthData . '<img' . t3lib_iconWorks::skinImg($this->backPath, 'gfx/ol/' . $LN . '.gif', 'width="18" height="16"') . ' align="top" alt="" />' . $versionLabel;
|
||
// If all records should be shown, do so:
|
||
if ($this->genTree_includeRecords) {
|
||
if ($this->genTree_includeRecords) {
|
||
foreach($GLOBALS['TCA'] as $tableName => $cfg) {
|
||
foreach ($GLOBALS['TCA'] as $tableName => $cfg) {
|
||
if ($tableName!='pages') {
|
||
if ($tableName != 'pages') {
|
||
$this->genTree_records($newID, $this->genTree_HTML ? $genHTML : '', $tableName);
|
||
}
|
||
}
|
||
... | ... | |
$this->genTree($newID, $this->genTree_HTML ? $genHTML : '');
|
||
// If versions are included in the tree, add those now:
|
||
if ($this->genTree_includeVersions) {
|
||
if ($this->genTree_includeVersions) {
|
||
$this->genTree($newID, $this->genTree_HTML ? $genHTML : '', TRUE);
|
||
}
|
||
}
|
||
... | ... | |
* @param [type] $versions: ...
|
||
* @return [type] ...
|
||
*/
|
||
function genTree_records($theID, $depthData, $table='', $versions=FALSE) {
|
||
function genTree_records($theID, $depthData, $table = '', $versions = FALSE) {
|
||
global $TCA;
|
||
if ($versions) {
|
||
if ($versions) {
|
||
// Select all records from table pointing to this page:
|
||
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
|
||
t3lib_BEfunc::getCommonSelectFields($table),
|
||
$table,
|
||
'pid=-1 AND t3ver_oid='.intval($theID).
|
||
'pid=-1 AND t3ver_oid=' . intval($theID) .
|
||
(!$this->genTree_includeDeleted?t3lib_BEfunc::deleteClause($table):'')
|
||
(!$this->genTree_includeDeleted ? t3lib_BEfunc::deleteClause($table) : '')
|
||
);
|
||
} else {
|
||
// Select all records from table pointing to this page:
|
||
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
|
||
t3lib_BEfunc::getCommonSelectFields($table),
|
||
$table,
|
||
'pid='.intval($theID).
|
||
'pid=' . intval($theID) .
|
||
(!$this->genTree_includeDeleted?t3lib_BEfunc::deleteClause($table):'')
|
||
(!$this->genTree_includeDeleted ? t3lib_BEfunc::deleteClause($table) : '')
|
||
);
|
||
}
|
||
// Traverse selected:
|
||
$a = 0;
|
||
$c = $GLOBALS['TYPO3_DB']->sql_num_rows($res);
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
|
||
// Prepare the additional label used in the HTML output in case of versions:
|
||
if ($versions) {
|
||
if ($versions) {
|
||
$versionLabel = '[v1.'.$row['t3ver_id'].'; WS#'.$row['t3ver_wsid'].']';
|
||
$versionLabel = '[v1.' . $row['t3ver_id'] . '; WS#' . $row['t3ver_wsid'] . ']';
|
||
} else $versionLabel='';
|
||
} else {
|
||
$versionLabel = '';
|
||
}
|
||
$a++;
|
||
$newID = $row['uid'];
|
||
// Build HTML output:
|
||
if ($this->genTree_makeHTML) {
|
||
if ($this->genTree_makeHTML) {
|
||
$this->genTree_HTML.=LF.'<div><span class="nobr">';
|
||
$this->genTree_HTML .= LF . '<div><span class="nobr">';
|
||
$PM = 'join';
|
||
$LN = ($a==$c)?'blank':'line';
|
||
$LN = ($a == $c) ? 'blank' : 'line';
|
||
$BTM = ($a==$c)?'bottom':'';
|
||
$BTM = ($a == $c) ? 'bottom' : '';
|
||
$this->genTree_HTML.= $depthData.
|
||
$this->genTree_HTML .= $depthData .
|
||
'<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/'.$PM.$BTM.'.gif','width="18" height="16"').' align="top" alt="" />'.
|
||
'<img' . t3lib_iconWorks::skinImg($this->backPath, 'gfx/ol/' . $PM . $BTM . '.gif', 'width="18" height="16"') . ' align="top" alt="" />' .
|
||
$versionLabel.
|
||
$versionLabel .
|
||
t3lib_iconWorks::getSpriteIconForRecord($table, $row, array('title'=> $table)) . htmlspecialchars($row['uid'] . ': ' . t3lib_BEfunc::getRecordTitle($table,$row)) . '</span></div>';
|
||
t3lib_iconWorks::getSpriteIconForRecord($table, $row, array('title' => $table)) . htmlspecialchars($row['uid'] . ': ' . t3lib_BEfunc::getRecordTitle($table, $row)) . '</span></div>';
|
||
}
|
||
// Register various data for this item:
|
||
$this->rec_idArray[$table][$newID]=$row;
|
||
$this->rec_idArray[$table][$newID] = $row;
|
||
$this->recStats['all_valid'][$table][$newID] = $newID;
|
||
# $this->recStats[$versions?'versions':'live'][$table][$newID] = $newID;
|
||
# $this->recStats[$versions?'versions':'live'][$table][$newID] = $newID;
|
||
if ($row['deleted']) $this->recStats['deleted'][$table][$newID] = $newID;
|
||
if ($row['deleted']) {
|
||
$this->recStats['deleted'][$table][$newID] = $newID;
|
||
}
|
||
if ($versions && $row['t3ver_count']>=1 && $row['t3ver_wsid']==0) {
|
||
if ($versions && $row['t3ver_count'] >= 1 && $row['t3ver_wsid'] == 0) {
|
||
$this->recStats['published_versions'][$table][$newID] = $newID;
|
||
}
|
||
# if ($row['deleted']) {$this->recStat['deleted']++;}
|
||
# if ($row['hidden']) {$this->recStat['hidden']++;}
|
||
# if ($row['deleted']) {$this->recStat['deleted']++;}
|
||
# if ($row['hidden']) {$this->recStat['hidden']++;}
|
||
// Select all versions of this record:
|
||
if ($this->genTree_includeVersions && $TCA[$table]['ctrl']['versioningWS']) {
|
||
$genHTML = $depthData.'<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/'.$LN.'.gif','width="18" height="16"').' align="top" alt="" />';
|
||
$genHTML = $depthData . '<img' . t3lib_iconWorks::skinImg($this->backPath, 'gfx/ol/' . $LN . '.gif', 'width="18" height="16"') . ' align="top" alt="" />';
|
||
$this->genTree_records($newID, $genHTML, $table, TRUE);
|
||
}
|
||
... | ... | |
*
|
||
* @return [type] ...
|
||
*/
|
||
function genTreeStatus($root=0) {
|
||
function genTreeStatus($root = 0) {
|
||
$this->genTree_includeDeleted = TRUE; // if set, genTree() includes deleted pages. This is default.
|
||
$this->genTree_includeDeleted = TRUE; // if set, genTree() includes deleted pages. This is default.
|
||
$this->genTree_includeVersions = TRUE; // if set, genTree() includes verisonized pages/records. This is default.
|
||
$this->genTree_includeVersions = TRUE; // if set, genTree() includes verisonized pages/records. This is default.
|
||
$this->genTree_includeRecords = TRUE; // if set, genTree() includes records from pages.
|
||
$this->genTree_includeRecords = TRUE; // if set, genTree() includes records from pages.
|
||
$this->perms_clause = ''; // extra where-clauses for the tree-selection
|
||
$this->perms_clause = ''; // extra where-clauses for the tree-selection
|
||
$this->genTree_makeHTML = 0; // if set, genTree() generates HTML, that visualizes the tree.
|
||
$this->genTree_makeHTML = 0; // if set, genTree() generates HTML, that visualizes the tree.
|
||
$this->genTree($root,'');
|
||
$this->genTree($root, '');
|
||
return $this->recStats;
|
||
}
|
||
/**
|
||
* Fills $this->lRecords with the records from all tc-tables that are not attached to a PID in the pid-list.
|
||
*
|
||
* @param string list of pid's (page-record uid's). This list is probably made by genTree()
|
||
* @return void
|
||
*/
|
||
function lostRecords($pid_list) {
|
||
function lostRecords($pid_list) {
|
||
global $TCA;
|
||
$this->lostPagesList='';
|
||
$this->lostPagesList = '';
|
||
if ($pid_list) {
|
||
if ($pid_list) {
|
||
foreach ($TCA as $table => $tableConf) {
|
||
t3lib_div::loadTCA($table);
|
||
$pid_list_tmp = $pid_list;
|
||
if (!isset($TCA[$table]['ctrl']['versioningWS']) || !$TCA[$table]['ctrl']['versioningWS']) {
|
||
if (!isset($TCA[$table]['ctrl']['versioningWS']) || !$TCA[$table]['ctrl']['versioningWS']) {
|
||
// Remove preceding "-1," for non-versioned tables
|
||
$pid_list_tmp = preg_replace('/^\-1,/','',$pid_list_tmp);
|
||
$pid_list_tmp = preg_replace('/^\-1,/', '', $pid_list_tmp);
|
||
}
|
||
$garbage = $GLOBALS['TYPO3_DB']->exec_SELECTquery (
|
||
$garbage = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
|
||
'uid,pid,'.$TCA[$table]['ctrl']['label'],
|
||
'uid,pid,' . $TCA[$table]['ctrl']['label'],
|
||
$table,
|
||
$table,
|
||
'pid NOT IN ('.$pid_list_tmp.')'
|
||
'pid NOT IN (' . $pid_list_tmp . ')'
|
||
);
|
||
);
|
||
$lostIdList = array();
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($garbage)) {
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($garbage)) {
|
||
$this->lRecords[$table][$row['uid']]=Array('uid'=>$row['uid'], 'pid'=>$row['pid'], 'title'=> strip_tags($row[$TCA[$table]['ctrl']['label']]) );
|
||
$this->lRecords[$table][$row['uid']] = array('uid' => $row['uid'], 'pid' => $row['pid'], 'title' => strip_tags($row[$TCA[$table]['ctrl']['label']]));
|
||
$lostIdList[]=$row['uid'];
|
||
$lostIdList[] = $row['uid'];
|
||
}
|
||
if ($table=='pages') {
|
||
if ($table == 'pages') {
|
||
$this->lostPagesList=implode(',',$lostIdList);
|
||
$this->lostPagesList = implode(',', $lostIdList);
|
||
}
|
||
}
|
||
}
|
||
... | ... | |
* @param integer The uid of the record which will have the PID value set to 0 (zero)
|
||
* @return boolean True if done.
|
||
*/
|
||
function fixLostRecord($table,$uid) {
|
||
function fixLostRecord($table, $uid) {
|
||
if ($table && $GLOBALS['TCA'][$table] && $uid && is_array($this->lRecords[$table][$uid]) && $GLOBALS['BE_USER']->user['admin']) {
|
||
if ($table && $GLOBALS['TCA'][$table] && $uid && is_array($this->lRecords[$table][$uid]) && $GLOBALS['BE_USER']->user['admin']) {
|
||
$updateFields = array();
|
||
$updateFields['pid'] = 0;
|
||
if ($GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled']) { // If possible a lost record restored is hidden as default
|
||
if ($GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled']) { // If possible a lost record restored is hidden as default
|
||
$updateFields[$GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled']] = 1;
|
||
}
|
||
$GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, 'uid='.intval($uid), $updateFields);
|
||
$GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, 'uid=' . intval($uid), $updateFields);
|
||
return TRUE;
|
||
} else return FALSE;
|
||
} else {
|
||
return FALSE;
|
||
}
|
||
}
|
||
}
|
||
/**
|
||
* Counts records from $TCA-tables that ARE attached to an existing page.
|
||
... | ... | |
* @param string list of pid's (page-record uid's). This list is probably made by genTree()
|
||
* @return array an array with the number of records from all $TCA-tables that are attached to a PID in the pid-list.
|
||
*/
|
||
function countRecords($pid_list) {
|
||
function countRecords($pid_list) {
|
||
global $TCA;
|
||
$list=Array();
|
||
$list_n=Array();
|
||
$list = array();
|
||
$list_n = array();
|
||
if ($pid_list) {
|
||
if ($pid_list) {
|
||
foreach ($TCA as $table => $tableConf) {
|
||
t3lib_div::loadTCA($table);
|
||
$pid_list_tmp = $pid_list;
|
||
if (!isset($TCA[$table]['ctrl']['versioningWS']) || !$TCA[$table]['ctrl']['versioningWS']) {
|
||
if (!isset($TCA[$table]['ctrl']['versioningWS']) || !$TCA[$table]['ctrl']['versioningWS']) {
|
||
// Remove preceding "-1," for non-versioned tables
|
||
$pid_list_tmp = preg_replace('/^\-1,/','',$pid_list_tmp);
|
||
$pid_list_tmp = preg_replace('/^\-1,/', '', $pid_list_tmp);
|
||
}
|
||
$count = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows('uid', $table, 'pid IN ('.$pid_list_tmp.')');
|
||
$count = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows('uid', $table, 'pid IN (' . $pid_list_tmp . ')');
|
||
if ($count) {
|
||
$list[$table] = $count;
|
||
}
|
||
$count = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows('uid', $table, 'pid IN ('.$pid_list_tmp.')' . t3lib_BEfunc::deleteClause($table));
|
||
$count = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows('uid', $table, 'pid IN (' . $pid_list_tmp . ')' . t3lib_BEfunc::deleteClause($table));
|
||
if ($count) {
|
||
$list_n[$table] = $count;
|
||
}
|
||
... | ... | |
* @param string $mode = file, $mode = db, $mode = '' (all...)
|
||
* @return array An array with all fields listed that somehow are references to other records (foreign-keys) or files
|
||
*/
|
||
function getGroupFields($mode) {
|
||
function getGroupFields($mode) {
|
||
global $TCA;
|
||
$result = Array();
|
||
$result = array();
|
||
foreach ($TCA as $table => $tableConf) {
|
||
t3lib_div::loadTCA($table);
|
||
$cols = $TCA[$table]['columns'];
|
||
foreach ($cols as $field => $config) {
|
||
if ($config['config']['type']=='group') {
|
||
if ($config['config']['type'] == 'group') {
|
||
if (
|
||
((!$mode||$mode=='file') && $config['config']['internal_type']=='file') ||
|
||
((!$mode || $mode == 'file') && $config['config']['internal_type'] == 'file') ||
|
||
((!$mode||$mode=='db') && $config['config']['internal_type']=='db')
|
||
((!$mode || $mode == 'db') && $config['config']['internal_type'] == 'db')
|
||
) {
|
||
) {
|
||
$result[$table][]=$field;
|
||
$result[$table][] = $field;
|
||
}
|
||
}
|
||
if ( (!$mode||$mode=='db') && $config['config']['type']=='select' && $config['config']['foreign_table']) {
|
||
if ((!$mode || $mode == 'db') && $config['config']['type'] == 'select' && $config['config']['foreign_table']) {
|
||
$result[$table][]=$field;
|
||
$result[$table][] = $field;
|
||
}
|
||
}
|
||
if ($result[$table]) {
|
||
if ($result[$table]) {
|
||
$result[$table] = implode(',',$result[$table]);
|
||
$result[$table] = implode(',', $result[$table]);
|
||
}
|
||
}
|
||
return $result;
|
||
... | ... | |
* @param string Path to uploadfolder
|
||
* @return array An array with all fields listed that have references to files in the $uploadfolder
|
||
*/
|
||
function getFileFields($uploadfolder) {
|
||
function getFileFields($uploadfolder) {
|
||
global $TCA;
|
||
$result = Array();
|
||
$result = array();
|
||
foreach ($TCA as $table => $tableConf) {
|
||
t3lib_div::loadTCA($table);
|
||
$cols = $TCA[$table]['columns'];
|
||
foreach ($cols as $field => $config) {
|
||
if ($config['config']['type']=='group' && $config['config']['internal_type']=='file' && $config['config']['uploadfolder']==$uploadfolder) {
|
||
if ($config['config']['type'] == 'group' && $config['config']['internal_type'] == 'file' && $config['config']['uploadfolder'] == $uploadfolder) {
|
||
$result[]=Array($table,$field);
|
||
$result[] = array($table, $field);
|
||
}
|
||
}
|
||
}
|
||
... | ... | |
* @param string Table name
|
||
* @return array
|
||
*/
|
||
function getDBFields($theSearchTable) {
|
||
function getDBFields($theSearchTable) {
|
||
global $TCA;
|
||
$result = Array();
|
||
$result = array();
|
||
reset ($TCA);
|
||
reset($TCA);
|
||
foreach ($TCA as $table => $tableConf) {
|
||
t3lib_div::loadTCA($table);
|
||
$cols = $TCA[$table]['columns'];
|
||
foreach ($cols as $field => $config) {
|
||
if ($config['config']['type']=='group' && $config['config']['internal_type']=='db') {
|
||
if ($config['config']['type'] == 'group' && $config['config']['internal_type'] == 'db') {
|
||
if (trim($config['config']['allowed'])=='*' || strstr($config['config']['allowed'],$theSearchTable)) {
|
||
if (trim($config['config']['allowed']) == '*' || strstr($config['config']['allowed'], $theSearchTable)) {
|
||
$result[]=Array($table,$field);
|
||
$result[] = array($table, $field);
|
||
}
|
||
} else if ($config['config']['type']=='select' && $config['config']['foreign_table']==$theSearchTable) {
|
||
} elseif ($config['config']['type'] == 'select' && $config['config']['foreign_table'] == $theSearchTable) {
|
||
$result[]=Array($table,$field);
|
||
$result[] = array($table, $field);
|
||
}
|
||
}
|
||
}
|
||
... | ... | |
* @return void
|
||
* @see getGroupFields()
|
||
*/
|
||
function selectNonEmptyRecordsWithFkeys($fkey_arrays) {
|
||
function selectNonEmptyRecordsWithFkeys($fkey_arrays) {
|
||
global $TCA;
|
||
if (is_array($fkey_arrays)) {
|
||
if (is_array($fkey_arrays)) {
|
||
foreach ($fkey_arrays as $table => $field_list) {
|
||
if ($TCA[$table] && trim($field_list)) {
|
||
if ($TCA[$table] && trim($field_list)) {
|
||
t3lib_div::loadTCA($table);
|
||
$fieldArr = explode(',',$field_list);
|
||
$fieldArr = explode(',', $field_list);
|
||
if(t3lib_extMgm::isLoaded('dbal')) {
|
||
if (t3lib_extMgm::isLoaded('dbal')) {
|
||
$fields = $GLOBALS['TYPO3_DB']->admin_get_fields($table);
|
||
$field = array_shift($fieldArr);
|
||
$cl_fl = ($GLOBALS['TYPO3_DB']->MetaType($fields[$field]['type'],$table) == 'I' || $GLOBALS['TYPO3_DB']->MetaType($fields[$field]['type'],$table) == 'N' || $GLOBALS['TYPO3_DB']->MetaType($fields[$field]['type'],$table) == 'R') ?
|
||
$cl_fl = ($GLOBALS['TYPO3_DB']->MetaType($fields[$field]['type'], $table) == 'I' || $GLOBALS['TYPO3_DB']->MetaType($fields[$field]['type'], $table) == 'N' || $GLOBALS['TYPO3_DB']->MetaType($fields[$field]['type'], $table) == 'R') ?
|
||
$field.'!=0' : $field.'!=\'\'';
|
||
$field . '!=0' : $field . '!=\'\'';
|
||
foreach ($fieldArr as $field) {
|
||
$cl_fl .= ($GLOBALS['TYPO3_DB']->MetaType($fields[$field]['type'],$table) == 'I' || $GLOBALS['TYPO3_DB']->MetaType($fields[$field]['type'],$table) == 'N' || $GLOBALS['TYPO3_DB']->MetaType($fields[$field]['type'],$table) == 'R') ?
|
||
$cl_fl .= ($GLOBALS['TYPO3_DB']->MetaType($fields[$field]['type'], $table) == 'I' || $GLOBALS['TYPO3_DB']->MetaType($fields[$field]['type'], $table) == 'N' || $GLOBALS['TYPO3_DB']->MetaType($fields[$field]['type'], $table) == 'R') ?
|
||
' OR '.$field.'!=0' : ' OR '.$field.'!=\'\'';
|
||
' OR ' . $field . '!=0' : ' OR ' . $field . '!=\'\'';
|
||
}
|
||
unset($fields);
|
||
}
|
||
else {
|
||
$cl_fl = implode ('!=\'\' OR ',$fieldArr). '!=\'\'';
|
||
$cl_fl = implode('!=\'\' OR ', $fieldArr) . '!=\'\'';
|
||
}
|
||
$mres = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid,'.$field_list, $table, $cl_fl);
|
||
$mres = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid,' . $field_list, $table, $cl_fl);
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres)) {
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres)) {
|
||
foreach ($fieldArr as $field) {
|
||
if (trim($row[$field])) {
|
||
if (trim($row[$field])) {
|
||
$fieldConf = $TCA[$table]['columns'][$field]['config'];
|
||
if ($fieldConf['type']=='group') {
|
||
if ($fieldConf['type'] == 'group') {
|
||
if ($fieldConf['internal_type']=='file') {
|
||
if ($fieldConf['internal_type'] == 'file') {
|
||
// files...
|
||
// files...
|
||
if ($fieldConf['MM']) {
|
||
if ($fieldConf['MM']) {
|
||
$tempArr=array();
|
||
$tempArr = array();
|
||
$dbAnalysis = t3lib_div::makeInstance('t3lib_loadDBGroup');
|
||
$dbAnalysis->start('','files',$fieldConf['MM'],$row['uid']);
|
||
$dbAnalysis->start('', 'files', $fieldConf['MM'], $row['uid']);
|
||
foreach ($dbAnalysis->itemArray as $somekey => $someval) {
|
||
if ($someval['id']) {
|
||
if ($someval['id']) {
|
||
$tempArr[]=$someval['id'];
|
||
$tempArr[] = $someval['id'];
|
||
}
|
||
}
|
||
} else {
|
||
$tempArr = explode(',',trim($row[$field]));
|
||
$tempArr = explode(',', trim($row[$field]));
|
||
}
|
||
foreach ($tempArr as $file) {
|
||
$file = trim($file);
|
||
if ($file) {
|
||
if ($file) {
|
||
$this->checkFileRefs[$fieldConf['uploadfolder']][$file]+=1;
|
||
$this->checkFileRefs[$fieldConf['uploadfolder']][$file] += 1;
|
||
}
|
||
}
|
||
}
|
||
if ($fieldConf['internal_type']=='db') {
|
||
if ($fieldConf['internal_type'] == 'db') {
|
||
// dbs - group
|
||
// dbs - group
|
||
$dbAnalysis = t3lib_div::makeInstance('t3lib_loadDBGroup');
|
||
$dbAnalysis->start($row[$field],$fieldConf['allowed'],$fieldConf['MM'],$row['uid'], $table, $fieldConf);
|
||
$dbAnalysis->start($row[$field], $fieldConf['allowed'], $fieldConf['MM'], $row['uid'], $table, $fieldConf);
|
||
foreach ($dbAnalysis->itemArray as $tempArr) {
|
||
$this->checkGroupDBRefs[$tempArr['table']][$tempArr['id']]+=1;
|
||
$this->checkGroupDBRefs[$tempArr['table']][$tempArr['id']] += 1;
|
||
}
|
||
}
|
||
}
|
||
if ($fieldConf['type']=='select' && $fieldConf['foreign_table']) {
|
||
if ($fieldConf['type'] == 'select' && $fieldConf['foreign_table']) {
|
||
// dbs - select
|
||
// dbs - select
|
||
$dbAnalysis = t3lib_div::makeInstance('t3lib_loadDBGroup');
|
||
$dbAnalysis->start($row[$field],$fieldConf['foreign_table'],$fieldConf['MM'],$row['uid'], $table, $fieldConf);
|
||
$dbAnalysis->start($row[$field], $fieldConf['foreign_table'], $fieldConf['MM'], $row['uid'], $table, $fieldConf);
|
||
foreach ($dbAnalysis->itemArray as $tempArr) {
|
||
if ($tempArr['id']>0) {
|
||
if ($tempArr['id'] > 0) {
|
||
$this->checkGroupDBRefs[$fieldConf['foreign_table']][$tempArr['id']]+=1;
|
||
$this->checkGroupDBRefs[$fieldConf['foreign_table']][$tempArr['id']] += 1;
|
||
}
|
||
}
|
||
}
|
||
... | ... | |
*
|
||
* @return array Report over files; keys are "moreReferences", "noReferences", "noFile", "error"
|
||
*/
|
||
function testFileRefs () {
|
||
function testFileRefs() {
|
||
$output=Array();
|
||
$output = array();
|
||
// handle direct references with upload folder setting (workaround)
|
||
$newCheckFileRefs = array();
|
||
foreach ($this->checkFileRefs as $folder => $files) {
|
||
... | ... | |
$this->checkFileRefs = $newCheckFileRefs;
|
||
foreach ($this->checkFileRefs as $folder => $fileArr) {
|
||
$path = PATH_site.$folder;
|
||
$path = PATH_site . $folder;
|
||
if (@is_dir($path)) {
|
||
if (@is_dir($path)) {
|
||
$d = dir($path);
|
||
while($entry=$d->read()) {
|
||
while ($entry = $d->read()) {
|
||
if (@is_file($path.'/'.$entry)) {
|
||
if (@is_file($path . '/' . $entry)) {
|
||
if (isset($fileArr[$entry])) {
|
||
if (isset($fileArr[$entry])) {
|
||
if ($fileArr[$entry] > 1) {
|
||
if ($fileArr[$entry] > 1) {
|
||
$temp = $this->whereIsFileReferenced($folder,$entry);
|
||
$temp = $this->whereIsFileReferenced($folder, $entry);
|
||
$tempList = '';
|
||
foreach ($temp as $inf) {
|
||
$tempList.='['.$inf['table'].']['.$inf['uid'].']['.$inf['field'].'] (pid:'.$inf['pid'].') - ';
|
||
$tempList .= '[' . $inf['table'] . '][' . $inf['uid'] . '][' . $inf['field'] . '] (pid:' . $inf['pid'] . ') - ';
|
||
}
|
||
$output['moreReferences'][] = Array($path,$entry,$fileArr[$entry],$tempList);
|
||
$output['moreReferences'][] = array($path, $entry, $fileArr[$entry], $tempList);
|
||
}
|
||
unset($fileArr[$entry]);
|
||
} else {
|
||
// contains workaround for direct references
|
||
if (!strstr($entry, 'index.htm') && !preg_match('/^' . preg_quote($GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'], '/') . '/', $folder)) {
|
||
$output['noReferences'][] = Array($path,$entry);
|
||
$output['noReferences'][] = array($path, $entry);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
$d->close();
|
||
$tempCounter=0;
|
||
$tempCounter = 0;
|
||
foreach ($fileArr as $file => $value) {
|
||
// workaround for direct file references
|
||
if (preg_match('/^' . preg_quote($GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'], '/') . '/', $folder)) {
|
||
$file = $folder . '/' . $file;
|
||
$folder = '';
|
||
$path = substr(PATH_site, 0, - 1);
|
||
$path = substr(PATH_site, 0, -1);
|
||
}
|
||
$temp = $this->whereIsFileReferenced($folder,$file);
|
||
$temp = $this->whereIsFileReferenced($folder, $file);
|
||
$tempList = '';
|
||
foreach ($temp as $inf) {
|
||
$tempList.='['.$inf['table'].']['.$inf['uid'].']['.$inf['field'].'] (pid:'.$inf['pid'].') - ';
|
||
$tempList .= '[' . $inf['table'] . '][' . $inf['uid'] . '][' . $inf['field'] . '] (pid:' . $inf['pid'] . ') - ';
|
||
}
|
||
$tempCounter++;
|
||
$output['noFile'][substr($path,-3).'_'.substr($file,0,3).'_'.$tempCounter] = Array($path,$file,$tempList);
|
||
$output['noFile'][substr($path, -3) . '_' . substr($file, 0, 3) . '_' . $tempCounter] = array($path, $file, $tempList);
|
||
}
|
||
} else {
|
||
$output['error'][] = Array($path);
|
||
$output['error'][] = array($path);
|
||
}
|
||
}
|
||
return $output;
|
||
... | ... | |
* @param array Table with key/value pairs being table names and arrays with uid numbers
|
||
* @return string HTML Error message
|
||
*/
|
||
function testDBRefs($theArray) {
|
||
function testDBRefs($theArray) {
|
||
global $TCA;
|
||
foreach ($theArray as $table => $dbArr) {
|
||
if ($TCA[$table]) {
|
||
if ($TCA[$table]) {
|
||
$idlist = array_keys($dbArr);
|
||
$theList = implode(',',$idlist);
|
||
$theList = implode(',', $idlist);
|
||
if ($theList) {
|
||
if ($theList) {
|
||
$mres = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid', $table, 'uid IN ('.$theList.')'.t3lib_BEfunc::deleteClause($table));
|
||
$mres = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid', $table, 'uid IN (' . $theList . ')' . t3lib_BEfunc::deleteClause($table));
|
||
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres)) {
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres)) {
|
||
if (isset($dbArr[$row['uid']])) {
|
||
if (isset($dbArr[$row['uid']])) {
|
||
unset ($dbArr[$row['uid']]);
|
||
} else {
|
||
$result.='Strange Error. ...<br />';
|
||
$result .= 'Strange Error. ...<br />';
|
||
}
|
||
}
|
||
foreach ($dbArr as $theId => $theC) {
|
||
$result.='There are '.$theC.' records pointing to this missing or deleted record; ['.$table.']['.$theId.']<br />';
|
||
$result .= 'There are ' . $theC . ' records pointing to this missing or deleted record; [' . $table . '][' . $theId . ']<br />';
|
||
}
|
||
}
|
||
} else {
|
||
$result.='Codeerror. Table is not a table...<br />';
|
||
$result .= 'Codeerror. Table is not a table...<br />';
|
||
}
|
||
}
|
||
return $result;
|
||
... | ... | |
* @param integer Uid of database record
|
||
* @return array Array with other arrays containing information about where references was found
|
||
*/
|
||
function whereIsRecordReferenced($searchTable,$id) {
|
||
function whereIsRecordReferenced($searchTable, $id) {
|
||
global $TCA;
|
||
$fileFields = $this->getDBFields($searchTable); // Gets tables / Fields that reference to files...
|
||
$fileFields = $this->getDBFields($searchTable); // Gets tables / Fields that reference to files...
|
||
$theRecordList=Array();
|
||
$theRecordList = array();
|
||
foreach ($fileFields as $info) {
|
||
$table=$info[0]; $field=$info[1];
|
||
$table = $info[0];
|
||
$field = $info[1];
|
||
t3lib_div::loadTCA($table);
|
||
$mres = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
|
||
'uid,pid,'.$TCA[$table]['ctrl']['label'].','.$field,
|
||
'uid,pid,' . $TCA[$table]['ctrl']['label'] . ',' . $field,
|
||
$table,
|
||
$table,
|
||
$field.' LIKE \'%'.$GLOBALS['TYPO3_DB']->quoteStr($id, $table).'%\''
|
||
$field . ' LIKE \'%' . $GLOBALS['TYPO3_DB']->quoteStr($id, $table) . '%\''
|
||
);
|
||
);
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres)) {
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres)) {
|
||
// Now this is the field, where the reference COULD come from. But we're not garanteed, so we must carefully examine the data.
|
||
$fieldConf = $TCA[$table]['columns'][$field]['config'];
|
||
$allowedTables = ($fieldConf['type']=='group') ? $fieldConf['allowed'] : $fieldConf['foreign_table'];
|
||
$allowedTables = ($fieldConf['type'] == 'group') ? $fieldConf['allowed'] : $fieldConf['foreign_table'];
|
||
$dbAnalysis = t3lib_div::makeInstance('t3lib_loadDBGroup');
|
||
$dbAnalysis->start($row[$field],$allowedTables,$fieldConf['MM'],$row['uid'], $table, $fieldConf);
|
||
$dbAnalysis->start($row[$field], $allowedTables, $fieldConf['MM'], $row['uid'], $table, $fieldConf);
|
||
foreach ($dbAnalysis->itemArray as $tempArr) {
|
||
if ($tempArr['table']==$searchTable && $tempArr['id']==$id) {
|
||
if ($tempArr['table'] == $searchTable && $tempArr['id'] == $id) {
|
||
$theRecordList[]=Array('table'=>$table,'uid'=>$row['uid'],'field'=>$field,'pid'=>$row['pid']);
|
||
$theRecordList[] = array('table' => $table, 'uid' => $row['uid'], 'field' => $field, 'pid' => $row['pid']);
|
||
}
|
||
}
|
||
}
|
||
... | ... | |
* @param string Filename to search for
|
||
* @return array Array with other arrays containing information about where references was found
|
||
*/
|
||
function whereIsFileReferenced($uploadfolder,$filename) {
|
||
function whereIsFileReferenced($uploadfolder, $filename) {
|
||
global $TCA;
|
||
$fileFields = $this->getFileFields($uploadfolder); // Gets tables / Fields that reference to files...
|
||
$fileFields = $this->getFileFields($uploadfolder); // Gets tables / Fields that reference to files...
|
||
$theRecordList=Array();
|
||
$theRecordList = array();
|
||
foreach ($fileFields as $info) {
|
||
$table=$info[0]; $field=$info[1];
|
||
$table = $info[0];
|
||
$field = $info[1];
|
||
$mres = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
|
||
'uid,pid,'.$TCA[$table]['ctrl']['label'].','.$field,
|
||
'uid,pid,' . $TCA[$table]['ctrl']['label'] . ',' . $field,
|
||
$table,
|
||
$table,
|
||
$field.' LIKE \'%'.$GLOBALS['TYPO3_DB']->quoteStr($filename, $table).'%\''
|
||
$field . ' LIKE \'%' . $GLOBALS['TYPO3_DB']->quoteStr($filename, $table) . '%\''
|
||
);
|
||
);
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres)) {
|
||
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres)) {
|
||
// Now this is the field, where the reference COULD come from. But we're not garanteed, so we must carefully examine the data.
|
||
// Now this is the field, where the reference COULD come from. But we're not garanteed, so we must carefully examine the data.
|
||
$tempArr = explode(',',trim($row[$field]));
|
||
$tempArr = explode(',', trim($row[$field]));
|
||
foreach ($tempArr as $file) {
|
||
$file = trim($file);
|
||
if ($file==$filename) {
|
||
if ($file == $filename) {
|
||
$theRecordList[]=Array('table'=>$table,'uid'=>$row['uid'],'field'=>$field,'pid'=>$row['pid']);
|
||
$theRecordList[] = array('table' => $table, 'uid' => $row['uid'], 'field' => $field, 'pid' => $row['pid']);
|
||
}
|
||
}
|
||
}
|
||
... | ... | |
}
|
||
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_admin.php']) {
|
||
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_admin.php']) {
|
||
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_admin.php']);
|
||
}
|
||
?>
|