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

/typo3/show_item.php

https://github.com/andreaswolf/typo3-tceforms
PHP | 569 lines | 328 code | 85 blank | 156 comment | 47 complexity | a2322328b55e6ae0e11c9a20142ecc0e MD5 | raw file
Possible License(s): Apache-2.0, BSD-2-Clause, LGPL-3.0
  1. <?php
  2. /***************************************************************
  3. * Copyright notice
  4. *
  5. * (c) 1999-2011 Kasper Skårhøj (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$
  31. * Revised for TYPO3 3.7 May/2004 by Kasper Skårhøj
  32. *
  33. * @author Kasper Skårhøj <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 Skårhøj <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 Skårhøj <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::getRecordWSOL($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], 0, 0, FALSE, $this->row['uid'])) . '</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. $fileName = t3lib_iconWorks::getSpriteIconForFile($ext) . '<strong>' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.file', TRUE) . ':</strong> ' . $fI['file'];
  282. if (t3lib_div::isFirstPartOfStr($this->file,PATH_site)) {
  283. $code.= '<a href="../'.substr($this->file,strlen(PATH_site)).'" target="_blank">'.$fileName.'</a>';
  284. } else {
  285. $code.= $fileName;
  286. }
  287. $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 />
  288. ';
  289. if (is_array($imgInfo)) {
  290. $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');
  291. }
  292. $this->content.=$this->doc->section('',$code);
  293. $this->content.=$this->doc->divider(2);
  294. // If the file was an image...:
  295. if (is_array($imgInfo)) {
  296. $imgInfo = $imgObj->imageMagickConvert($this->file,'web','346','200m','','','',1);
  297. $imgInfo[3] = '../'.substr($imgInfo[3],strlen(PATH_site));
  298. $code = '<br />
  299. <div align="center">'.$returnLinkTag.$imgObj->imgTag($imgInfo).'</a></div>';
  300. $this->content.= $this->doc->section('', $code);
  301. } else {
  302. $this->content.= $this->doc->spacer(10);
  303. $lowerFilename = strtolower($this->file);
  304. // Archive files:
  305. if (TYPO3_OS!='WIN' && !$GLOBALS['TYPO3_CONF_VARS']['BE']['disable_exec_function']) {
  306. if ($ext=='zip') {
  307. $code = '';
  308. $t = array();
  309. t3lib_utility_Command::exec('unzip -l ' . $this->file, $t);
  310. if (is_array($t)) {
  311. reset($t);
  312. next($t);
  313. next($t);
  314. next($t);
  315. while(list(,$val)=each($t)) {
  316. $parts = explode(' ',trim($val),7);
  317. $code.= '
  318. '.$parts[6].'<br />';
  319. }
  320. $code = '
  321. <span class="nobr">'.$code.'
  322. </span>
  323. <br /><br />';
  324. }
  325. $this->content.= $this->doc->section('', $code);
  326. } elseif($ext=='tar' || $ext=='tgz' || substr($lowerFilename,-6)=='tar.gz' || substr($lowerFilename,-5)=='tar.z') {
  327. $code = '';
  328. if ($ext=='tar') {
  329. $compr = '';
  330. } else {
  331. $compr = 'z';
  332. }
  333. $t = array();
  334. t3lib_utility_Command::exec('tar t' . $compr . 'f ' . $this->file, $t);
  335. if (is_array($t)) {
  336. foreach($t as $val) {
  337. $code.='
  338. '.$val.'<br />';
  339. }
  340. $code.='
  341. -------<br/>
  342. '.count($t).' '.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.files');
  343. $code = '
  344. <span class="nobr">'.$code.'
  345. </span>
  346. <br /><br />';
  347. }
  348. $this->content.= $this->doc->section('',$code);
  349. }
  350. } elseif ($GLOBALS['TYPO3_CONF_VARS']['BE']['disable_exec_function']) {
  351. $this->content.= $this->doc->section('',$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.cannotDisplayArchive'));
  352. }
  353. // Font files:
  354. if ($ext=='ttf') {
  355. $thumbScript = 'thumbs.php';
  356. $check = basename($this->file).':'.filemtime($this->file).':'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'];
  357. $params = '&file='.rawurlencode($this->file);
  358. $params.= '&md5sum='.t3lib_div::shortMD5($check);
  359. $url = $thumbScript.'?&dummy='.$GLOBALS['EXEC_TIME'].$params;
  360. $thumb = '<br />
  361. <div align="center">'.$returnLinkTag.'<img src="'.htmlspecialchars($url).'" border="0" title="'.htmlspecialchars(trim($this->file)).'" alt="" /></a></div>';
  362. $this->content.= $this->doc->section('',$thumb);
  363. }
  364. }
  365. // References:
  366. $this->content.= $this->doc->section($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.referencesToThisItem'),$this->makeRef('_FILE',$this->file));
  367. }
  368. /**
  369. * End page and print content
  370. *
  371. * @return void
  372. */
  373. function printContent() {
  374. $this->content.= $this->doc->endPage();
  375. $this->content = $this->doc->insertStylesAndJS($this->content);
  376. echo $this->content;
  377. }
  378. /**
  379. * Make reference display
  380. *
  381. * @param string Table name
  382. * @param string Filename or uid
  383. * @return string HTML
  384. */
  385. function makeRef($table,$ref) {
  386. if ($table==='_FILE') {
  387. // First, fit path to match what is stored in the refindex:
  388. $fullIdent = $ref;
  389. if (t3lib_div::isFirstPartOfStr($fullIdent,PATH_site)) {
  390. $fullIdent = substr($fullIdent,strlen(PATH_site));
  391. }
  392. // Look up the path:
  393. $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
  394. '*',
  395. 'sys_refindex',
  396. 'ref_table='.$GLOBALS['TYPO3_DB']->fullQuoteStr('_FILE','sys_refindex').
  397. ' AND ref_string='.$GLOBALS['TYPO3_DB']->fullQuoteStr($fullIdent,'sys_refindex').
  398. ' AND deleted=0'
  399. );
  400. } else {
  401. // Look up the path:
  402. $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
  403. '*',
  404. 'sys_refindex',
  405. 'ref_table='.$GLOBALS['TYPO3_DB']->fullQuoteStr($table,'sys_refindex').
  406. ' AND ref_uid='.intval($ref).
  407. ' AND deleted=0'
  408. );
  409. }
  410. // Compile information for title tag:
  411. $infoData = array();
  412. if (count($rows)) {
  413. $infoData[] = '<tr class="t3-row-header">' .
  414. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.table').'</td>' .
  415. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.uid').'</td>' .
  416. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.field').'</td>'.
  417. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.flexpointer').'</td>'.
  418. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.softrefKey').'</td>'.
  419. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.sorting').'</td>'.
  420. '</tr>';
  421. }
  422. foreach($rows as $row) {
  423. $infoData[] = '<tr class="bgColor4"">' .
  424. '<td>'.$row['tablename'].'</td>' .
  425. '<td>'.$row['recuid'].'</td>' .
  426. '<td>'.$row['field'].'</td>'.
  427. '<td>'.$row['flexpointer'].'</td>'.
  428. '<td>'.$row['softref_key'].'</td>'.
  429. '<td>'.$row['sorting'].'</td>'.
  430. '</tr>';
  431. }
  432. return count($infoData) ? '<table border="0" cellpadding="0" cellspacing="0" class="typo3-dblist">' . implode('', $infoData) . '</table>' : '';
  433. }
  434. /**
  435. * Make reference display (what this elements points to)
  436. *
  437. * @param string Table name
  438. * @param string Filename or uid
  439. * @return string HTML
  440. */
  441. function makeRefFrom($table,$ref) {
  442. // Look up the path:
  443. $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
  444. '*',
  445. 'sys_refindex',
  446. 'tablename='.$GLOBALS['TYPO3_DB']->fullQuoteStr($table,'sys_refindex').
  447. ' AND recuid='.intval($ref)
  448. );
  449. // Compile information for title tag:
  450. $infoData = array();
  451. if (count($rows)) {
  452. $infoData[] = '<tr class="t3-row-header">' .
  453. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.field').'</td>'.
  454. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.flexpointer').'</td>'.
  455. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.softrefKey').'</td>'.
  456. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.sorting').'</td>'.
  457. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.refTable').'</td>' .
  458. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.refUid').'</td>' .
  459. '<td>'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:show_item.php.refString').'</td>' .
  460. '</tr>';
  461. }
  462. foreach($rows as $row) {
  463. $infoData[] = '<tr class="bgColor4"">' .
  464. '<td>'.$row['field'].'</td>'.
  465. '<td>'.$row['flexpointer'].'</td>'.
  466. '<td>'.$row['softref_key'].'</td>'.
  467. '<td>'.$row['sorting'].'</td>'.
  468. '<td>'.$row['ref_table'].'</td>' .
  469. '<td>'.$row['ref_uid'].'</td>' .
  470. '<td>'.$row['ref_string'].'</td>' .
  471. '</tr>';
  472. }
  473. return count($infoData) ? '<table border="0" cellpadding="0" cellspacing="0" class="typo3-dblist">' . implode('', $infoData) . '</table>' : '';
  474. }
  475. }
  476. if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/show_item.php'])) {
  477. include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/show_item.php']);
  478. }
  479. // Make instance:
  480. $SOBE = t3lib_div::makeInstance('SC_show_item');
  481. $SOBE->init();
  482. $SOBE->main();
  483. $SOBE->printContent();
  484. ?>