PageRenderTime 52ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/typo3/show_item.php

https://bitbucket.org/linxpinx/mercurial
PHP | 571 lines | 330 code | 85 blank | 156 comment | 47 complexity | f6223ebf6602a31715ec96bff28ce1e6 MD5 | raw file
Possible License(s): BSD-3-Clause, GPL-2.0, Unlicense, LGPL-2.1, Apache-2.0
  1. <?php
  2. /***************************************************************
  3. * Copyright notice
  4. *
  5. * (c) 1999-2010 Kasper Skaarhoj (kasperYYYY@typo3.com)
  6. * All rights reserved
  7. *
  8. * This script is part of the TYPO3 project. The TYPO3 project is
  9. * free software; you can redistribute it and/or modify
  10. * it under the terms of the GNU General Public License as published by
  11. * the Free Software Foundation; either version 2 of the License, or
  12. * (at your option) any later version.
  13. *
  14. * The GNU General Public License can be found at
  15. * http://www.gnu.org/copyleft/gpl.html.
  16. * A copy is found in the textfile GPL.txt and important notices to the license
  17. * from the author is found in LICENSE.txt distributed with these scripts.
  18. *
  19. *
  20. * This script is distributed in the hope that it will be useful,
  21. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  22. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  23. * GNU General Public License for more details.
  24. *
  25. * This copyright notice MUST APPEAR in all copies of the script!
  26. ***************************************************************/
  27. /**
  28. * Shows information about a database or file item
  29. *
  30. * $Id: show_item.php 8429 2010-07-28 09:19:00Z ohader $
  31. * Revised for TYPO3 3.7 May/2004 by Kasper Skaarhoj
  32. *
  33. * @author Kasper Skaarhoj <kasperYYYY@typo3.com>
  34. */
  35. /**
  36. * [CLASS/FUNCTION INDEX of SCRIPT]
  37. *
  38. *
  39. *
  40. * 84: class transferData extends t3lib_transferData
  41. * 101: function regItem($table, $id, $field, $content)
  42. *
  43. *
  44. * 135: class SC_show_item
  45. * 160: function init()
  46. * 225: function main()
  47. * 273: function renderDBInfo()
  48. * 327: function renderFileInfo($returnLinkTag)
  49. * 449: function printContent()
  50. * 462: function makeRef($table,$ref)
  51. * 524: function makeRefFrom($table,$ref)
  52. *
  53. * TOTAL FUNCTIONS: 8
  54. * (This index is automatically created/updated by the extension "extdeveval")
  55. *
  56. */
  57. $BACK_PATH = '';
  58. require($BACK_PATH.'init.php');
  59. require($BACK_PATH.'template.php');
  60. /**
  61. * Extension of transfer data class
  62. *
  63. * @author Kasper Skaarhoj <kasperYYYY@typo3.com>
  64. * @package TYPO3
  65. * @subpackage core
  66. */
  67. class transferData extends t3lib_transferData {
  68. var $formname = 'loadform';
  69. var $loading = 1;
  70. // Extra for show_item.php:
  71. var $theRecord = Array();
  72. /**
  73. * Register item function.
  74. *
  75. * @param string Table name
  76. * @param integer Record uid
  77. * @param string Field name
  78. * @param string Content string.
  79. * @return void
  80. */
  81. function regItem($table, $id, $field, $content) {
  82. t3lib_div::loadTCA($table);
  83. $config = $GLOBALS['TCA'][$table]['columns'][$field]['config'];
  84. switch($config['type']) {
  85. case 'input':
  86. if (isset($config['checkbox']) && $content==$config['checkbox']) {$content=''; break;}
  87. if (t3lib_div::inList($config['eval'],'date')) {$content = Date($GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'],$content); }
  88. break;
  89. case 'group':
  90. break;
  91. case 'select':
  92. break;
  93. }
  94. $this->theRecord[$field]=$content;
  95. }
  96. }
  97. /**
  98. * Script Class for showing information about an item.
  99. *
  100. * @author Kasper Skaarhoj <kasperYYYY@typo3.com>
  101. * @package TYPO3
  102. * @subpackage core
  103. */
  104. class SC_show_item {
  105. // GET vars:
  106. var $table; // Record table (or filename)
  107. var $uid; // Record uid (or '' when filename)
  108. // Internal, static:
  109. var $perms_clause; // Page select clause
  110. var $access; // If true, access to element is granted
  111. var $type; // Which type of element: "file" or "db"
  112. var $doc; // Document Template Object
  113. // Internal, dynamic:
  114. var $content; // Content Accumulation
  115. var $file; // For type "file": Filename
  116. var $pageinfo; // For type "db": Set to page record of the parent page of the item set (if type="db")
  117. var $row; // For type "db": The database record row.
  118. /**
  119. * Initialization of the class
  120. * 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.
  121. *
  122. * @return void
  123. */
  124. function init() {
  125. global $BE_USER,$BACK_PATH,$TCA;
  126. // Setting input variables.
  127. $this->table = t3lib_div::_GET('table');
  128. $this->uid = t3lib_div::_GET('uid');
  129. // Initialize:
  130. $this->perms_clause = $BE_USER->getPagePermsClause(1);
  131. $this->access = 0; // Set to true if there is access to the record / file.
  132. $this->type = ''; // Sets the type, "db" or "file". If blank, nothing can be shown.
  133. // Checking if the $table value is really a table and if the user has access to it.
  134. if (isset($TCA[$this->table])) {
  135. t3lib_div::loadTCA($this->table);
  136. $this->type = 'db';
  137. $this->uid = intval($this->uid);
  138. // Check permissions and uid value:
  139. if ($this->uid && $BE_USER->check('tables_select',$this->table)) {
  140. if ((string)$this->table=='pages') {
  141. $this->pageinfo = t3lib_BEfunc::readPageAccess($this->uid,$this->perms_clause);
  142. $this->access = is_array($this->pageinfo) ? 1 : 0;
  143. $this->row = $this->pageinfo;
  144. } else {
  145. $this->row = t3lib_BEfunc::getRecord($this->table,$this->uid);
  146. if ($this->row) {
  147. $this->pageinfo = t3lib_BEfunc::readPageAccess($this->row['pid'],$this->perms_clause);
  148. $this->access = is_array($this->pageinfo) ? 1 : 0;
  149. }
  150. }
  151. $treatData = t3lib_div::makeInstance('t3lib_transferData');
  152. $treatData->renderRecord($this->table, $this->uid, 0, $this->row);
  153. $cRow = $treatData->theRecord;
  154. }
  155. } else {
  156. // if the filereference $this->file is relative, we correct the path
  157. if (substr($this->table,0,3)=='../') {
  158. $this->file = PATH_site.preg_replace('/^\.\.\//','',$this->table);
  159. } else {
  160. $this->file = $this->table;
  161. }
  162. if (@is_file($this->file) && t3lib_div::isAllowedAbsPath($this->file)) {
  163. $this->type = 'file';
  164. $this->access = 1;
  165. }
  166. }
  167. // Initialize document template object:
  168. $this->doc = t3lib_div::makeInstance('template');
  169. $this->doc->backPath = $BACK_PATH;
  170. // Starting the page by creating page header stuff:
  171. $this->content.=$this->doc->startPage($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.viewItem'));
  172. $this->content.='<h3 class="t3-row-header">' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.viewItem') . '</h3>';
  173. $this->content.=$this->doc->spacer(5);
  174. }
  175. /**
  176. * Main function. Will generate the information to display for the item set internally.
  177. *
  178. * @return void
  179. */
  180. function main() {
  181. if ($this->access) {
  182. $returnLink = t3lib_div::sanitizeLocalUrl(t3lib_div::_GP('returnUrl'));
  183. $returnLinkTag = $returnLink ? '<a href="' . $returnLink . '" class="typo3-goBack">' : '<a href="#" onclick="window.close();">';
  184. // render type by user func
  185. $typeRendered = false;
  186. if (is_array ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/show_item.php']['typeRendering'])) {
  187. foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/show_item.php']['typeRendering'] as $classRef) {
  188. $typeRenderObj = t3lib_div::getUserObj($classRef);
  189. if(is_object($typeRenderObj) && method_exists($typeRenderObj, 'isValid') && method_exists($typeRenderObj, 'render')) {
  190. if ($typeRenderObj->isValid($this->type, $this)) {
  191. $this->content .= $typeRenderObj->render($this->type, $this);
  192. $typeRendered = true;
  193. break;
  194. }
  195. }
  196. }
  197. }
  198. // if type was not rendered use default rendering functions
  199. if(!$typeRendered) {
  200. // Branch out based on type:
  201. switch($this->type) {
  202. case 'db':
  203. $this->renderDBInfo();
  204. break;
  205. case 'file':
  206. $this->renderFileInfo($returnLinkTag);
  207. break;
  208. }
  209. }
  210. // If return Url is set, output link to go back:
  211. if (t3lib_div::sanitizeLocalUrl(t3lib_div::_GP('returnUrl'))) {
  212. $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;
  213. $this->content .= $this->doc->section('','<br />'.$returnLinkTag.'<strong>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.goBack',1).'</strong></a>');
  214. }
  215. }
  216. }
  217. /**
  218. * Main function. Will generate the information to display for the item set internally.
  219. *
  220. * @return void
  221. */
  222. function renderDBInfo() {
  223. global $TCA;
  224. // Print header, path etc:
  225. $code = $this->doc->getHeader($this->table,$this->row,$this->pageinfo['_thePath'],1).'<br />';
  226. $this->content.= $this->doc->section('',$code);
  227. // Initialize variables:
  228. $tableRows = Array();
  229. $i = 0;
  230. // Traverse the list of fields to display for the record:
  231. $fieldList = t3lib_div::trimExplode(',',$TCA[$this->table]['interface']['showRecordFieldList'],1);
  232. foreach($fieldList as $name) {
  233. $name = trim($name);
  234. if ($TCA[$this->table]['columns'][$name]) {
  235. if (!$TCA[$this->table]['columns'][$name]['exclude'] || $GLOBALS['BE_USER']->check('non_exclude_fields',$this->table.':'.$name)) {
  236. $i++;
  237. $tableRows[] = '
  238. <tr>
  239. <td class="t3-col-header">' . $GLOBALS['LANG']->sL(t3lib_BEfunc::getItemLabel($this->table, $name), 1) . '</td>
  240. <td>' . htmlspecialchars(t3lib_BEfunc::getProcessedValue($this->table, $name, $this->row[$name])) . '</td>
  241. </tr>';
  242. }
  243. }
  244. }
  245. // Create table from the information:
  246. $tableCode = '
  247. <table border="0" cellpadding="0" cellspacing="0" id="typo3-showitem" class="t3-table-info">
  248. '.implode('',$tableRows).'
  249. </table>';
  250. $this->content.=$this->doc->section('',$tableCode);
  251. // Add path and table information in the bottom:
  252. $code = '';
  253. $code.= $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.path').': '.t3lib_div::fixed_lgd_cs($this->pageinfo['_thePath'],-48).'<br />';
  254. $code.= $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:labels.table').': '.$GLOBALS['LANG']->sL($TCA[$this->table]['ctrl']['title']).' ('.$this->table.') - UID: '.$this->uid.'<br />';
  255. $this->content.= $this->doc->section('', $code);
  256. // References:
  257. $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']));
  258. // References:
  259. $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']));
  260. }
  261. /**
  262. * Main function. Will generate the information to display for the item set internally.
  263. *
  264. * @param string <a> tag closing/returning.
  265. * @return void
  266. */
  267. function renderFileInfo($returnLinkTag) {
  268. // Initialize object to work on the image:
  269. $imgObj = t3lib_div::makeInstance('t3lib_stdGraphic');
  270. $imgObj->init();
  271. $imgObj->mayScaleUp = 0;
  272. $imgObj->absPrefix = PATH_site;
  273. // Read Image Dimensions (returns false if file was not an image type, otherwise dimensions in an array)
  274. $imgInfo = '';
  275. $imgInfo = $imgObj->getImageDimensions($this->file);
  276. // File information
  277. $fI = t3lib_div::split_fileref($this->file);
  278. $ext = $fI['fileext'];
  279. $code = '';
  280. // Setting header:
  281. $icon = t3lib_BEfunc::getFileIcon($ext);
  282. $url = 'gfx/fileicons/'.$icon;
  283. $fileName = '<img src="'.$url.'" width="18" height="16" align="top" alt="" /><strong>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.file', 1).':</strong> '.$fI['file'];
  284. if (t3lib_div::isFirstPartOfStr($this->file,PATH_site)) {
  285. $code.= '<a href="../'.substr($this->file,strlen(PATH_site)).'" target="_blank">'.$fileName.'</a>';
  286. } else {
  287. $code.= $fileName;
  288. }
  289. $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 />
  290. ';
  291. if (is_array($imgInfo)) {
  292. $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');
  293. }
  294. $this->content.=$this->doc->section('',$code);
  295. $this->content.=$this->doc->divider(2);
  296. // If the file was an image...:
  297. if (is_array($imgInfo)) {
  298. $imgInfo = $imgObj->imageMagickConvert($this->file,'web','346','200m','','','',1);
  299. $imgInfo[3] = '../'.substr($imgInfo[3],strlen(PATH_site));
  300. $code = '<br />
  301. <div align="center">'.$returnLinkTag.$imgObj->imgTag($imgInfo).'</a></div>';
  302. $this->content.= $this->doc->section('', $code);
  303. } else {
  304. $this->content.= $this->doc->spacer(10);
  305. $lowerFilename = strtolower($this->file);
  306. // Archive files:
  307. if (TYPO3_OS!='WIN' && !$GLOBALS['TYPO3_CONF_VARS']['BE']['disable_exec_function']) {
  308. if ($ext=='zip') {
  309. $code = '';
  310. $t = array();
  311. exec('unzip -l '.$this->file, $t);
  312. if (is_array($t)) {
  313. reset($t);
  314. next($t);
  315. next($t);
  316. next($t);
  317. while(list(,$val)=each($t)) {
  318. $parts = explode(' ',trim($val),7);
  319. $code.= '
  320. '.$parts[6].'<br />';
  321. }
  322. $code = '
  323. <span class="nobr">'.$code.'
  324. </span>
  325. <br /><br />';
  326. }
  327. $this->content.= $this->doc->section('', $code);
  328. } elseif($ext=='tar' || $ext=='tgz' || substr($lowerFilename,-6)=='tar.gz' || substr($lowerFilename,-5)=='tar.z') {
  329. $code = '';
  330. if ($ext=='tar') {
  331. $compr = '';
  332. } else {
  333. $compr = 'z';
  334. }
  335. $t = array();
  336. exec('tar t'.$compr.'f '.$this->file, $t);
  337. if (is_array($t)) {
  338. foreach($t as $val) {
  339. $code.='
  340. '.$val.'<br />';
  341. }
  342. $code.='
  343. -------<br/>
  344. '.count($t).' '.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.files');
  345. $code = '
  346. <span class="nobr">'.$code.'
  347. </span>
  348. <br /><br />';
  349. }
  350. $this->content.= $this->doc->section('',$code);
  351. }
  352. } elseif ($GLOBALS['TYPO3_CONF_VARS']['BE']['disable_exec_function']) {
  353. $this->content.= $this->doc->section('',$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.cannotDisplayArchive'));
  354. }
  355. // Font files:
  356. if ($ext=='ttf') {
  357. $thumbScript = 'thumbs.php';
  358. $check = basename($this->file).':'.filemtime($this->file).':'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'];
  359. $params = '&file='.rawurlencode($this->file);
  360. $params.= '&md5sum='.t3lib_div::shortMD5($check);
  361. $url = $thumbScript.'?&dummy='.$GLOBALS['EXEC_TIME'].$params;
  362. $thumb = '<br />
  363. <div align="center">'.$returnLinkTag.'<img src="'.htmlspecialchars($url).'" border="0" title="'.htmlspecialchars(trim($this->file)).'" alt="" /></a></div>';
  364. $this->content.= $this->doc->section('',$thumb);
  365. }
  366. }
  367. // References:
  368. $this->content.= $this->doc->section($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.referencesToThisItem'),$this->makeRef('_FILE',$this->file));
  369. }
  370. /**
  371. * End page and print content
  372. *
  373. * @return void
  374. */
  375. function printContent() {
  376. $this->content.= $this->doc->endPage();
  377. $this->content = $this->doc->insertStylesAndJS($this->content);
  378. echo $this->content;
  379. }
  380. /**
  381. * Make reference display
  382. *
  383. * @param string Table name
  384. * @param string Filename or uid
  385. * @return string HTML
  386. */
  387. function makeRef($table,$ref) {
  388. if ($table==='_FILE') {
  389. // First, fit path to match what is stored in the refindex:
  390. $fullIdent = $ref;
  391. if (t3lib_div::isFirstPartOfStr($fullIdent,PATH_site)) {
  392. $fullIdent = substr($fullIdent,strlen(PATH_site));
  393. }
  394. // Look up the path:
  395. $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
  396. '*',
  397. 'sys_refindex',
  398. 'ref_table='.$GLOBALS['TYPO3_DB']->fullQuoteStr('_FILE','sys_refindex').
  399. ' AND ref_string='.$GLOBALS['TYPO3_DB']->fullQuoteStr($fullIdent,'sys_refindex').
  400. ' AND deleted=0'
  401. );
  402. } else {
  403. // Look up the path:
  404. $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
  405. '*',
  406. 'sys_refindex',
  407. 'ref_table='.$GLOBALS['TYPO3_DB']->fullQuoteStr($table,'sys_refindex').
  408. ' AND ref_uid='.intval($ref).
  409. ' AND deleted=0'
  410. );
  411. }
  412. // Compile information for title tag:
  413. $infoData = array();
  414. if (count($rows)) {
  415. $infoData[] = '<tr class="bgColor5 tableheader">' .
  416. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.table').'</td>' .
  417. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.uid').'</td>' .
  418. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.field').'</td>'.
  419. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.flexpointer').'</td>'.
  420. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.softrefKey').'</td>'.
  421. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.sorting').'</td>'.
  422. '</tr>';
  423. }
  424. foreach($rows as $row) {
  425. $infoData[] = '<tr class="bgColor4"">' .
  426. '<td>'.$row['tablename'].'</td>' .
  427. '<td>'.$row['recuid'].'</td>' .
  428. '<td>'.$row['field'].'</td>'.
  429. '<td>'.$row['flexpointer'].'</td>'.
  430. '<td>'.$row['softref_key'].'</td>'.
  431. '<td>'.$row['sorting'].'</td>'.
  432. '</tr>';
  433. }
  434. return count($infoData) ? '<table border="0" cellpadding="1" cellspacing="1">'.implode('',$infoData).'</table>' : '';
  435. }
  436. /**
  437. * Make reference display (what this elements points to)
  438. *
  439. * @param string Table name
  440. * @param string Filename or uid
  441. * @return string HTML
  442. */
  443. function makeRefFrom($table,$ref) {
  444. // Look up the path:
  445. $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
  446. '*',
  447. 'sys_refindex',
  448. 'tablename='.$GLOBALS['TYPO3_DB']->fullQuoteStr($table,'sys_refindex').
  449. ' AND recuid='.intval($ref)
  450. );
  451. // Compile information for title tag:
  452. $infoData = array();
  453. if (count($rows)) {
  454. $infoData[] = '<tr class="bgColor5 tableheader">' .
  455. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.field').'</td>'.
  456. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.flexpointer').'</td>'.
  457. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.softrefKey').'</td>'.
  458. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.sorting').'</td>'.
  459. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.refTable').'</td>' .
  460. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.refUid').'</td>' .
  461. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.refString').'</td>' .
  462. '</tr>';
  463. }
  464. foreach($rows as $row) {
  465. $infoData[] = '<tr class="bgColor4"">' .
  466. '<td>'.$row['field'].'</td>'.
  467. '<td>'.$row['flexpointer'].'</td>'.
  468. '<td>'.$row['softref_key'].'</td>'.
  469. '<td>'.$row['sorting'].'</td>'.
  470. '<td>'.$row['ref_table'].'</td>' .
  471. '<td>'.$row['ref_uid'].'</td>' .
  472. '<td>'.$row['ref_string'].'</td>' .
  473. '</tr>';
  474. }
  475. return count($infoData) ? '<table border="0" cellpadding="1" cellspacing="1">'.implode('',$infoData).'</table>' : '';
  476. }
  477. }
  478. if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/show_item.php']) {
  479. include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/show_item.php']);
  480. }
  481. // Make instance:
  482. $SOBE = t3lib_div::makeInstance('SC_show_item');
  483. $SOBE->init();
  484. $SOBE->main();
  485. $SOBE->printContent();
  486. ?>