[TASK] Use external Core Project DBAL as Git submodule
[Packages/TYPO3.CMS.git] / typo3 / show_item.php
old mode 100755 (executable)
new mode 100644 (file)
index 5b1c020..4268987
@@ -1,22 +1,22 @@
 <?php
 /***************************************************************
 *  Copyright notice
-*  
-*  (c) 1999-2003 Kasper Skårhøj (kasper@typo3.com)
+*
+*  (c) 1999-2011 Kasper Skårhøj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
-*  This script is part of the TYPO3 project. The TYPO3 project is 
+*  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 
+*  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
 *
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
-/** 
+/**
  * Shows information about a database or file item
  *
- * HTTP_GET_VARS:
- * $table      :               Record table (or filename)
- * $uid        :               Record uid  (or "" when filename)
+ * Revised for TYPO3 3.7 May/2004 by Kasper Skårhøj
+ *
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
+ */
+/**
+ * [CLASS/FUNCTION INDEX of SCRIPT]
+ *
  *
- * @author     Kasper Skårhøj <kasper@typo3.com>
- * @package TYPO3
- * @subpackage core
+ *
+ *   84: class transferData extends t3lib_transferData
+ *  101:     function regItem($table, $id, $field, $content)
+ *
+ *
+ *  135: class SC_show_item
+ *  160:     function init()
+ *  225:     function main()
+ *  273:     function renderDBInfo()
+ *  327:     function renderFileInfo($returnLinkTag)
+ *  449:     function printContent()
+ *  462:     function makeRef($table,$ref)
+ *  524:     function makeRefFrom($table,$ref)
+ *
+ * TOTAL FUNCTIONS: 8
+ * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
 
-$BACK_PATH="";
-require ($BACK_PATH."init.php");
-require ($BACK_PATH."template.php");
-require_once (PATH_t3lib."class.t3lib_page.php");
-require_once (PATH_t3lib."class.t3lib_loaddbgroup.php");
-require_once (PATH_t3lib."class.t3lib_transferdata.php");
+
+$BACK_PATH = '';
+require($BACK_PATH.'init.php');
+require($BACK_PATH.'template.php');
+
+
+
 
 
-// ***************************
-// Script Classes
-// ***************************
+
+
+
+
+
+
+
+/**
+ * Extension of transfer data class
+ *
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
+ * @package TYPO3
+ * @subpackage core
+ */
 class transferData extends t3lib_transferData  {
-       var $formname = "loadform";
+
+       var $formname = 'loadform';
        var $loading = 1;
-       
 
                // Extra for show_item.php:
        var $theRecord = Array();
 
+       /**
+        * Register item function.
+        *
+        * @param       string          Table name
+        * @param       integer         Record uid
+        * @param       string          Field name
+        * @param       string          Content string.
+        * @return      void
+        */
        function regItem($table, $id, $field, $content) {
                t3lib_div::loadTCA($table);
-               $config = $GLOBALS["TCA"][$table]["columns"][$field]["config"];
-               switch($config["type"]) {
-                       case "input":
-                               if (isset($config["checkbox"]) && $content==$config["checkbox"])        {$content=""; break;}
-                               if (t3lib_div::inList($config["eval"],"date"))  {$content = Date($GLOBALS["TYPO3_CONF_VARS"]["SYS"]["ddmmyy"],$content); }
+               $config = $GLOBALS['TCA'][$table]['columns'][$field]['config'];
+               switch($config['type']) {
+                       case 'input':
+                               if (isset($config['checkbox']) && $content == $config['checkbox']) {
+                                       $content = '';
+                                       break;
+                               }
+                               if (t3lib_div::inList($config['eval'],'date')) {
+                                       $content = Date($GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'], $content);
+                               }
                        break;
-                       case "group":
+                       case 'group':
                        break;
-                       case "select":
-                               
+                       case 'select':
                        break;
                }
                $this->theRecord[$field]=$content;
        }
 }
+
+
+
+
+
+
+
+
+
+
+
+/**
+ * Script Class for showing information about an item.
+ *
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
+ * @package TYPO3
+ * @subpackage core
+ */
 class SC_show_item {
-       var $include_once=array();
-       var $content;
-
-       var $perms_clause;
-       var $access;
-       var $pageinfo;
-       var $type;
-       var $file;
-       var $relPath;
-       var $row;
-       var $table;
-       var $uid;
-       var $doc;       
-       
+
+               // GET vars:
+       var $table;                     // Record table (or filename)
+       var $uid;                       // Record uid  (or '' when filename)
+
+               // Internal, static:
+       var $perms_clause;      // Page select clause
+       var $access;            // If TRUE, access to element is granted
+       var $type;                      // Which type of element: "file" or "db"
+       var $doc;                       // Document Template Object
+
+               // Internal, dynamic:
+       var $content;           // Content Accumulation
+       var $file;                      // For type "file": Filename
+       var $pageinfo;          // For type "db": Set to page record of the parent page of the item set (if type="db")
+       var $row;                       // For type "db": The database record row.
+
+
+       /**
+        * Initialization of the class
+        * Will determine if table/uid GET vars are database record or a file and if the user has access to view information about the item.
+        *
+        * @return      void
+        */
        function init() {
-               global $BE_USER,$LANG,$BACK_PATH,$TCA_DESCR,$TCA,$HTTP_GET_VARS,$HTTP_POST_VARS,$CLIENT,$TYPO3_CONF_VARS;
-               
-               $this->perms_clause = $BE_USER->getPagePermsClause(1);
-               $this->table = t3lib_div::GPvar("table");
-               $this->uid = t3lib_div::GPvar("uid");
-               
-               $this->access=0;
-               $this->type="";
-               if (isset($TCA[$this->table]) && $BE_USER->check("tables_select",$this->table)) {
+               global $BACK_PATH;
+
+                       // Setting input variables.
+               $this->table = t3lib_div::_GET('table');
+               $this->uid = t3lib_div::_GET('uid');
+
+                       // Initialize:
+               $this->perms_clause = $GLOBALS['BE_USER']->getPagePermsClause(1);
+               $this->access = 0;      // Set to TRUE if there is access to the record / file.
+               $this->type = '';       // Sets the type, "db" or "file". If blank, nothing can be shown.
+
+                       // Checking if the $table value is really a table and if the user has access to it.
+               if (isset($GLOBALS['TCA'][$this->table])) {
                        t3lib_div::loadTCA($this->table);
-                       $this->type="db";
-                       $this->uid=intval($this->uid);
-                       if ($this->uid) {
-                               if ((string)$this->table=="pages")      {
+                       $this->type = 'db';
+                       $this->uid = intval($this->uid);
+
+                               // Check permissions and uid value:
+                       if ($this->uid && $GLOBALS['BE_USER']->check('tables_select',$this->table)) {
+                               if ((string)$this->table=='pages')      {
                                        $this->pageinfo = t3lib_BEfunc::readPageAccess($this->uid,$this->perms_clause);
                                        $this->access = is_array($this->pageinfo) ? 1 : 0;
-                                       $this->row=$this->pageinfo;
+                                       $this->row = $this->pageinfo;
                                } else {
-                                       $this->row=t3lib_BEfunc::getRecord ($this->table,$this->uid);
+                                       $this->row = t3lib_BEfunc::getRecordWSOL($this->table, $this->uid);
                                        if ($this->row) {
-                                               $this->pageinfo = t3lib_BEfunc::readPageAccess($this->row["pid"],$this->perms_clause);
+                                               $this->pageinfo = t3lib_BEfunc::readPageAccess($this->row['pid'],$this->perms_clause);
                                                $this->access = is_array($this->pageinfo) ? 1 : 0;
                                        }
                                }
-                               
-                               
-                               $treatData = t3lib_div::makeInstance("t3lib_transferData");
+
+                               $treatData = t3lib_div::makeInstance('t3lib_transferData');
                                $treatData->renderRecord($this->table, $this->uid, 0, $this->row);
                                $cRow = $treatData->theRecord;
                        }
                } else  {
                        // if the filereference $this->file is relative, we correct the path
-                       if (substr($this->table,0,3)=="../")    {
-                               $this->file = PATH_site.ereg_replace("^\.\./","",$this->table);
-                               $this->relPath=1;
+                       if (substr($this->table,0,3)=='../')    {
+                               $this->file = PATH_site.preg_replace('/^\.\.\//','',$this->table);
                        } else {
                                $this->file = $this->table;
-                               $this->relPath=0;
                        }
-                       if (@is_file($this->file))      {
-                               $this->type="file";
-                               $this->access=1;
-
-                               $this->include_once[]=PATH_t3lib."class.t3lib_stdgraphic.php";
+                       if (@is_file($this->file) && t3lib_div::isAllowedAbsPath($this->file))  {
+                               $this->type = 'file';
+                               $this->access = 1;
                        }
                }
-               
-               
-               $this->doc = t3lib_div::makeInstance("smallDoc");
+
+                       // Initialize document template object:
+               $this->doc = t3lib_div::makeInstance('template');
                $this->doc->backPath = $BACK_PATH;
-               $this->doc->tableLayout = Array (
-                       "defRow" => Array (
-                               "0" => Array('<TD valign="top">','</td>'),
-                               "defCol" => Array('<TD><img src="'.$this->backPath.'clear.gif" width=15 height=1></td><td valign="top">','</td>')
-                       )
-               );
-               
-               
-               $this->content.=$this->doc->startPage($LANG->sL("LLL:EXT:lang/locallang_core.php:show_item.php.viewItem"));
-               $this->content.=$this->doc->header($LANG->sL("LLL:EXT:lang/locallang_core.php:show_item.php.viewItem"));
+
+                       // Starting the page by creating page header stuff:
+               $this->content.=$this->doc->startPage($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.viewItem'));
+               $this->content.='<h3 class="t3-row-header">' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.viewItem') . '</h3>';
                $this->content.=$this->doc->spacer(5);
        }
+
+       /**
+        * Main function. Will generate the information to display for the item set internally.
+        *
+        * @return      void
+        */
        function main() {
-               global $BE_USER,$LANG,$BACK_PATH,$TCA_DESCR,$TCA,$HTTP_GET_VARS,$HTTP_POST_VARS,$CLIENT,$TYPO3_CONF_VARS;
-               
+
                if ($this->access)      {
-                       $returnLinkTag = t3lib_div::GPvar("returnUrl") ? '<a href="'.t3lib_div::GPvar("returnUrl").'" class="typo3-goBack">' : '<a href="#" onClick="window.close();">';
-                       
-                       if ($this->type=="db")  {
-                               $code=$this->doc->getHeader($this->table,$this->row,$this->pageinfo["_thePath"],1).'<BR>';
-                               $this->content.=$this->doc->section('',$code);
-               
-                               $codeArr=Array();
-                               $i=0;
-               
-                               $fieldList=explode(",",$TCA[$this->table]["interface"]["showRecordFieldList"]);
-                               while(list(,$name)=each($fieldList))    {
-                                       $name=trim($name);
-                                       if ($TCA[$this->table]["columns"][$name])       {
-                                               if (!$TCA[$this->table]["columns"][$name]["exclude"] || $GLOBALS["BE_USER"]->check("non_exclude_fields",$this->table.":".$name))        {               
-                                                       $i++;
-                                                       $codeArr[$i][]=stripslashes($LANG->sL(t3lib_BEfunc::getItemLabel($this->table,$name)));
-                                                       $codeArr[$i][]=t3lib_BEfunc::getProcessedValue($this->table,$name,$this->row[$name]);
+                       $returnLink =  t3lib_div::sanitizeLocalUrl(t3lib_div::_GP('returnUrl'));
+                       $returnLinkTag = $returnLink ? '<a href="' . $returnLink . '" class="typo3-goBack">' : '<a href="#" onclick="window.close();">';
+
+                               // render type by user func
+                       $typeRendered = FALSE;
+                       if (is_array ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/show_item.php']['typeRendering'])) {
+                               foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/show_item.php']['typeRendering'] as $classRef) {
+                                       $typeRenderObj = t3lib_div::getUserObj($classRef);
+                                       if(is_object($typeRenderObj) && method_exists($typeRenderObj, 'isValid') && method_exists($typeRenderObj, 'render'))    {
+                                               if ($typeRenderObj->isValid($this->type, $this)) {
+                                                       $this->content .=  $typeRenderObj->render($this->type, $this);
+                                                       $typeRendered = TRUE;
+                                                       break;
                                                }
                                        }
                                }
-                               $this->content.=$this->doc->section('',$this->doc->table($codeArr));
-                               $this->content.=$this->doc->divider(2);
-                               
-                               $code="";
-                               $code.='Path: '.t3lib_div::fixed_lgd_pre($this->pageinfo["_thePath"],48).'<BR>';
-                               $code.='Table: '.$LANG->sL($TCA[$this->table]["ctrl"]["title"]).' ('.$this->table.') - UID: '.$this->uid.'<BR>';
-                               $this->content.=$this->doc->section('',$code);
                        }
-                       if ($this->type=="file")        {
-                               $imgInfo="";
-               
-                               $imgObj = t3lib_div::makeInstance("t3lib_stdGraphic");
-                               $imgObj->init();
-                               $imgObj->mayScaleUp=0;
-                               $imgObj->tempPath=PATH_site.$imgObj->tempPath;
-               
-                               $imgInfo = $imgObj->getImageDimensions($this->file);            
-               
-                               $fI = t3lib_div::split_fileref($this->file);
-                               $ext = $fI["fileext"];
-               //              debug($fI);
-                               if ($imgInfo)   {
-                                       $code="";
-                                       if ($this->relPath || t3lib_div::isFirstPartOfStr($this->file,PATH_site))       {
-                                               $code.='<a href="../'.substr($this->file,strlen(PATH_site)).'" target="_blank"><b>'.$LANG->sL("LLL:EXT:lang/locallang_core.php:show_item.php.file").':</b> '.$fI["file"].'</a>';
+
+                               // if type was not rendered use default rendering functions
+                       if(!$typeRendered) {
+                                       // Branch out based on type:
+                               switch($this->type)     {
+                                       case 'db':
+                                               $this->renderDBInfo();
+                                       break;
+                                       case 'file':
+                                               $this->renderFileInfo($returnLinkTag);
+                                       break;
+                               }
+                       }
+
+                               // If return Url is set, output link to go back:
+                       if (t3lib_div::sanitizeLocalUrl(t3lib_div::_GP('returnUrl')))   {
+                               $this->content = $this->doc->section('',$returnLinkTag.'<strong>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.goBack',1).'</strong></a><br /><br />').$this->content;
+
+                               $this->content .= $this->doc->section('','<br />'.$returnLinkTag.'<strong>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.goBack',1).'</strong></a>');
+                       }
+               }
+       }
+
+       /**
+        * Main function. Will generate the information to display for the item set internally.
+        *
+        * @return      void
+        */
+       function renderDBInfo() {
+
+                       // Print header, path etc:
+               $code = $this->doc->getHeader($this->table,$this->row,$this->pageinfo['_thePath'],1).'<br />';
+               $this->content.= $this->doc->section('',$code);
+
+                       // Initialize variables:
+               $tableRows = Array();
+               $i = 0;
+
+                       // Traverse the list of fields to display for the record:
+               $fieldList = t3lib_div::trimExplode(',', $GLOBALS['TCA'][$this->table]['interface']['showRecordFieldList'], 1);
+               foreach ($fieldList as $name) {
+                       $name = trim($name);
+                       if ($GLOBALS['TCA'][$this->table]['columns'][$name]) {
+                               if (!$GLOBALS['TCA'][$this->table]['columns'][$name]['exclude'] || $GLOBALS['BE_USER']->check('non_exclude_fields', $this->table . ':' . $name)) {
+                                       $i++;
+                                       $tableRows[] = '
+                                               <tr>
+                                                       <td class="t3-col-header">' . $GLOBALS['LANG']->sL(t3lib_BEfunc::getItemLabel($this->table, $name), 1) . '</td>
+                                                       <td>' . htmlspecialchars(t3lib_BEfunc::getProcessedValue($this->table, $name, $this->row[$name], 0, 0, FALSE, $this->row['uid'])) . '</td>
+                                               </tr>';
+                               }
+                       }
+               }
+
+                       // Create table from the information:
+               $tableCode = '
+                                       <table border="0" cellpadding="0" cellspacing="0" id="typo3-showitem" class="t3-table-info">
+                                               '.implode('',$tableRows).'
+                                       </table>';
+               $this->content.=$this->doc->section('',$tableCode);
+
+                       // Add path and table information in the bottom:
+               $code = '';
+               $code .= $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.path') . ': ' . t3lib_div::fixed_lgd_cs($this->pageinfo['_thePath'], -48) . '<br />';
+               $code .= $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.table') . ': ' . $GLOBALS['LANG']->sL($GLOBALS['TCA'][$this->table]['ctrl']['title']) . ' (' . $this->table . ') - UID: ' . $this->uid . '<br />';
+               $this->content.= $this->doc->section('', $code);
+
+                       // References:
+               $this->content.= $this->doc->section($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.referencesToThisItem'),$this->makeRef($this->table,$this->row['uid']));
+
+                       // References:
+               $this->content.= $this->doc->section($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.referencesFromThisItem'),$this->makeRefFrom($this->table,$this->row['uid']));
+       }
+
+       /**
+        * Main function. Will generate the information to display for the item set internally.
+        *
+        * @param       string          <a> tag closing/returning.
+        * @return      void
+        */
+       function renderFileInfo($returnLinkTag) {
+
+                       // Initialize object to work on the image:
+               $imgObj = t3lib_div::makeInstance('t3lib_stdGraphic');
+               $imgObj->init();
+               $imgObj->mayScaleUp = 0;
+               $imgObj->absPrefix = PATH_site;
+
+                       // Read Image Dimensions (returns FALSE if file was not an image type, otherwise dimensions in an array)
+               $imgInfo = '';
+               $imgInfo = $imgObj->getImageDimensions($this->file);
+
+                       // File information
+               $fI = t3lib_div::split_fileref($this->file);
+               $ext = $fI['fileext'];
+
+               $code = '';
+
+                       // Setting header:
+               $fileName = t3lib_iconWorks::getSpriteIconForFile($ext) . '<strong>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.file', TRUE) . ':</strong> ' . $fI['file'];
+               if (t3lib_div::isFirstPartOfStr($this->file,PATH_site)) {
+                       $code.= '<a href="../'.substr($this->file,strlen(PATH_site)).'" target="_blank">'.$fileName.'</a>';
+               } else {
+                       $code.= $fileName;
+               }
+               $code.=' &nbsp;&nbsp;<strong>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.filesize').':</strong> '.t3lib_div::formatSize(@filesize($this->file)).'<br />
+                       ';
+               if (is_array($imgInfo)) {
+                       $code.= '<strong>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.dimensions').':</strong> '.$imgInfo[0].'x'.$imgInfo[1].' '.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.pixels');
+               }
+               $this->content.=$this->doc->section('',$code);
+               $this->content.=$this->doc->divider(2);
+
+                       // If the file was an image...:
+               if (is_array($imgInfo)) {
+
+                       $imgInfo = $imgObj->imageMagickConvert($this->file,'web','346','200m','','','',1);
+                       $imgInfo[3] = '../'.substr($imgInfo[3],strlen(PATH_site));
+                       $code = '<br />
+                               <div align="center">'.$returnLinkTag.$imgObj->imgTag($imgInfo).'</a></div>';
+                       $this->content.= $this->doc->section('', $code);
+               } else {
+                       $this->content.= $this->doc->spacer(10);
+                       $lowerFilename = strtolower($this->file);
+
+                               // Archive files:
+                       if (TYPO3_OS!='WIN' && !$GLOBALS['TYPO3_CONF_VARS']['BE']['disable_exec_function'])     {
+                               if ($ext=='zip')        {
+                                       $code = '';
+                                       $t = array();
+                                       t3lib_utility_Command::exec('unzip -l ' . $this->file, $t);
+                                       if (is_array($t))       {
+                                               reset($t);
+                                               next($t);
+                                               next($t);
+                                               next($t);
+                                               while(list(,$val)=each($t))     {
+                                                       $parts = explode(' ',trim($val),7);
+                                                       $code.= '
+                                                               '.$parts[6].'<br />';
+                                               }
+                                               $code = '
+                                                       <span class="nobr">'.$code.'
+                                                       </span>
+                                                       <br /><br />';
+                                       }
+                                       $this->content.= $this->doc->section('', $code);
+                               } elseif($ext=='tar' || $ext=='tgz' || substr($lowerFilename,-6)=='tar.gz' || substr($lowerFilename,-5)=='tar.z')       {
+                                       $code = '';
+                                       if ($ext=='tar')        {
+                                               $compr = '';
                                        } else {
-                                               $code.='<b>'.$LANG->sL("LLL:EXT:lang/locallang_core.php:show_item.php.file").':</b> '.$fI["file"];
+                                               $compr = 'z';
                                        }
-                                       $code.=' &nbsp;&nbsp;<b>'.$LANG->sL("LLL:EXT:lang/locallang_core.php:show_item.php.filesize").':</b> '.t3lib_div::formatSize(@filesize($this->file));
-                                       $code.='<BR>';
-                                       $code.='<b>'.$LANG->sL("LLL:EXT:lang/locallang_core.php:show_item.php.dimensions").':</b> '.$imgInfo[0].'x'.$imgInfo[1].' pixels';
-                                       $this->content.=$this->doc->section('',$code);
-               
-                                       $this->content.=$this->doc->divider(2);
-                       
-                                       $imgInfo = $imgObj->imageMagickConvert($this->file,"web","346","200m","","","",1);
-                                       $imgInfo[3] = "../".substr($imgInfo[3],strlen(PATH_site));
-                                       $code= '<BR><div align="center">'.$returnLinkTag.$imgObj->imgTag($imgInfo).'</a></div>';
-                                       $this->content.=$this->doc->section('',$code);
-                               } else {
-                                       $code="";
-                                       $icon = t3lib_BEfunc::getFileIcon($ext);        
-                                       $url = 'gfx/fileicons/'.$icon;
-                                       $code.='<a href="../'.substr($this->file,strlen(PATH_site)).'" target="_blank"><img src="'.$url.'" width=18 height=16 align="top" border=0> <b>File:</b> '.$fI["file"].'</a> &nbsp;&nbsp;<b>Size:</b> '.t3lib_div::formatSize(@filesize($this->file)).'<BR>';
-                                       $this->content.=$this->doc->section('',$code);
-               
-                                       $lowerFilename = strtolower($this->file);
-                                       if (TYPO3_OS!="WIN" && !$GLOBALS["TYPO3_CONF_VARS"]["BE"]["disable_exec_function"])     {
-                                               if ($ext=="zip")        {
-                                                       $this->content.=$this->doc->divider(10);
-                                                       $code="";
-                                                       exec("unzip -l ".$this->file, $t);
-                                                       if (is_array($t))       {
-                                                               reset($t);
-                                                               next($t);
-                                                               next($t);
-                                                               next($t);
-                                                               while(list(,$val)=each($t))     {
-                                                                       $parts = explode(" ",trim($val),7);
-                                                                       $code.=$parts[6]."<BR>";
-                                                               }
-                                                               $code="<nobr>".$code."</nobr>";
-                                                       }
-                                                       $this->content.=$this->doc->section('',$code);
-                                               } elseif($ext=="tar" || $ext=="tgz" || substr($lowerFilename,-6)=="tar.gz" || substr($lowerFilename,-5)=="tar.z")       {
-                                                       $this->content.=$this->doc->divider(10);
-                                                       $code="";
-                                                       if ($ext=="tar")        {
-                                                               $compr="";
-                                                       } else {
-                                                               $compr="z";
-                                                       }
-                                                       exec("tar t".$compr."f ".$this->file, $t);
-                                                       if (is_array($t))       {
-                                                               reset($t);
-                                                               while(list(,$val)=each($t))     {
-                                                                       $code.=$val."<BR>";
-                                                               }
-                                                               $code="<nobr>".$code."</nobr>";
-                                                       }
-                                                       $this->content.=$this->doc->section('',$code);
+                                       $t = array();
+                                       t3lib_utility_Command::exec('tar t' . $compr . 'f ' . $this->file, $t);
+                                       if (is_array($t))       {
+                                               foreach($t as $val)     {
+                                                       $code.='
+                                                               '.$val.'<br />';
                                                }
+
+                                               $code.='
+                                                                -------<br/>
+                                                                '.count($t).' '.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.files');
+
+                                               $code = '
+                                                       <span class="nobr">'.$code.'
+                                                       </span>
+                                                       <br /><br />';
                                        }
-                                       if ($ext=="ttf")        {
-                                               $thumbScript="thumbs.php";
-                                               $params = "&file=".rawurlencode($this->file);
-                                               $url = $thumbScript.'?&dummy='.$GLOBALS["EXEC_TIME"].$params;
-                                               $thumb='<BR><img src="'.$url.'" hspace=40 border=0 title="'.trim($this->file).'">';
-               //                              $thumb = t3lib_BEfunc::thumbCode(array("resources"=>$fI["file"]),"sys_template","resources","","",$fI["path"],1);
-                                               $this->content.=$this->doc->section('',$thumb);
-                                       }
+                                       $this->content.= $this->doc->section('',$code);
                                }
+                       } elseif ($GLOBALS['TYPO3_CONF_VARS']['BE']['disable_exec_function']) {
+                               $this->content.= $this->doc->section('',$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.cannotDisplayArchive'));
                        }
-               
-                       if (t3lib_div::GPvar("returnUrl"))      {
-                               $this->content.=$this->doc->section('','<BR>'.$returnLinkTag.'<strong>&lt; '.$LANG->sL("LLL:EXT:lang/locallang_core.php:labels.goBack").'</strong></a>');
+
+                               // Font files:
+                       if ($ext=='ttf')        {
+                               $thumbScript = 'thumbs.php';
+                               $check = basename($this->file).':'.filemtime($this->file).':'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'];
+                               $params = '&file='.rawurlencode($this->file);
+                               $params.= '&md5sum='.t3lib_div::shortMD5($check);
+                               $url = $thumbScript.'?&dummy='.$GLOBALS['EXEC_TIME'].$params;
+                               $thumb = '<br />
+                                       <div align="center">'.$returnLinkTag.'<img src="'.htmlspecialchars($url).'" border="0" title="'.htmlspecialchars(trim($this->file)).'" alt="" /></a></div>';
+                               $this->content.= $this->doc->section('',$thumb);
                        }
-               }               
+               }
+
+
+                       // References:
+               $this->content.= $this->doc->section($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.referencesToThisItem'),$this->makeRef('_FILE',$this->file));
        }
-       function printContent() {
-               global $SOBE;
 
-               $this->content.=$this->doc->spacer(8);
-               $this->content.=$this->doc->middle();
-               $this->content.=$this->doc->endPage();
+       /**
+        * End page and print content
+        *
+        * @return      void
+        */
+       function printContent() {
+               $this->content.= $this->doc->endPage();
+               $this->content = $this->doc->insertStylesAndJS($this->content);
                echo $this->content;
        }
-       
-       // ***************************
-       // OTHER FUNCTIONS:     
-       // ***************************
-}
 
-// Include extension?
-if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["typo3/show_item.php"])    {
-       include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["typo3/show_item.php"]);
-}
+       /**
+        * Make reference display
+        *
+        * @param       string          Table name
+        * @param       string          Filename or uid
+        * @return      string          HTML
+        */
+       function makeRef($table,$ref)   {
+
+               if ($table==='_FILE')   {
+                               // First, fit path to match what is stored in the refindex:
+                       $fullIdent = $ref;
 
+                       if (t3lib_div::isFirstPartOfStr($fullIdent,PATH_site))  {
+                               $fullIdent = substr($fullIdent,strlen(PATH_site));
+                       }
 
+                               // Look up the path:
+                       $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
+                               '*',
+                               'sys_refindex',
+                               'ref_table='.$GLOBALS['TYPO3_DB']->fullQuoteStr('_FILE','sys_refindex').
+                                       ' AND ref_string='.$GLOBALS['TYPO3_DB']->fullQuoteStr($fullIdent,'sys_refindex').
+                                       ' AND deleted=0'
+                       );
+               } else {
+                               // Look up the path:
+                       $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
+                               '*',
+                               'sys_refindex',
+                               'ref_table='.$GLOBALS['TYPO3_DB']->fullQuoteStr($table,'sys_refindex').
+                                       ' AND ref_uid='.intval($ref).
+                                       ' AND deleted=0'
+                       );
+               }
 
+                       // Compile information for title tag:
+               $infoData = array();
+               if (count($rows))       {
+                       $infoData[] = '<tr class="t3-row-header">' .
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.table').'</td>' .
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.uid').'</td>' .
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.field').'</td>'.
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.flexpointer').'</td>'.
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.softrefKey').'</td>'.
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.sorting').'</td>'.
+                                       '</tr>';
+               }
+               foreach($rows as $row)  {
+                       $infoData[] = '<tr class="bgColor4"">' .
+                                       '<td>'.$row['tablename'].'</td>' .
+                                       '<td>'.$row['recuid'].'</td>' .
+                                       '<td>'.$row['field'].'</td>'.
+                                       '<td>'.$row['flexpointer'].'</td>'.
+                                       '<td>'.$row['softref_key'].'</td>'.
+                                       '<td>'.$row['sorting'].'</td>'.
+                                       '</tr>';
+               }
 
+               return count($infoData) ? '<table border="0" cellpadding="0" cellspacing="0" class="typo3-dblist">' . implode('', $infoData) . '</table>' : '';
+       }
 
+       /**
+        * Make reference display (what this elements points to)
+        *
+        * @param       string          Table name
+        * @param       string          Filename or uid
+        * @return      string          HTML
+        */
+       function makeRefFrom($table,$ref)       {
 
+                       // Look up the path:
+               $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
+                       '*',
+                       'sys_refindex',
+                       'tablename='.$GLOBALS['TYPO3_DB']->fullQuoteStr($table,'sys_refindex').
+                               ' AND recuid='.intval($ref)
+               );
 
+                       // Compile information for title tag:
+               $infoData = array();
+               if (count($rows))       {
+                       $infoData[] = '<tr class="t3-row-header">' .
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.field').'</td>'.
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.flexpointer').'</td>'.
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.softrefKey').'</td>'.
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.sorting').'</td>'.
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.refTable').'</td>' .
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.refUid').'</td>' .
+                                       '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.refString').'</td>' .
+                                       '</tr>';
+               }
+               foreach($rows as $row)  {
+                       $infoData[] = '<tr class="bgColor4"">' .
+                                       '<td>'.$row['field'].'</td>'.
+                                       '<td>'.$row['flexpointer'].'</td>'.
+                                       '<td>'.$row['softref_key'].'</td>'.
+                                       '<td>'.$row['sorting'].'</td>'.
+                                       '<td>'.$row['ref_table'].'</td>' .
+                                       '<td>'.$row['ref_uid'].'</td>' .
+                                       '<td>'.$row['ref_string'].'</td>' .
+                                       '</tr>';
+               }
 
+               return count($infoData) ? '<table border="0" cellpadding="0" cellspacing="0" class="typo3-dblist">' . implode('', $infoData) . '</table>' : '';
+       }
+}
 
 
+if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/show_item.php'])) {
+       include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/show_item.php']);
+}
+
 
 
 // Make instance:
-$SOBE = t3lib_div::makeInstance("SC_show_item");
+$SOBE = t3lib_div::makeInstance('SC_show_item');
 $SOBE->init();
-
-// Include files?
-reset($SOBE->include_once);    
-while(list(,$INC_FILE)=each($SOBE->include_once))      {include_once($INC_FILE);}
-
 $SOBE->main();
 $SOBE->printContent();
+
 ?>
\ No newline at end of file