Documentation TYPO3 par Ameos

index.php

00001 <?php
00002 /***************************************************************
00003 *  Copyright notice
00004 *
00005 *  (c) 1999-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
00006 *  All rights reserved
00007 *
00008 *  This script is part of the TYPO3 project. The TYPO3 project is
00009 *  free software; you can redistribute it and/or modify
00010 *  it under the terms of the GNU General Public License as published by
00011 *  the Free Software Foundation; either version 2 of the License, or
00012 *  (at your option) any later version.
00013 *
00014 *  The GNU General Public License can be found at
00015 *  http://www.gnu.org/copyleft/gpl.html.
00016 *  A copy is found in the textfile GPL.txt and important notices to the license
00017 *  from the author is found in LICENSE.txt distributed with these scripts.
00018 *
00019 *
00020 *  This script is distributed in the hope that it will be useful,
00021 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00022 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023 *  GNU General Public License for more details.
00024 *
00025 *  This copyright notice MUST APPEAR in all copies of the script!
00026 ***************************************************************/
00111 unset($MCONF);
00112 require ('conf.php');
00113 require ($BACK_PATH.'init.php');
00114 require ($BACK_PATH.'template.php');
00115 $LANG->includeLLFile('EXT:impexp/app/locallang.php');
00116 require_once (PATH_t3lib.'class.t3lib_scbase.php');
00117 require_once (t3lib_extMgm::extPath('impexp').'class.tx_impexp.php');
00118 require_once (PATH_t3lib.'class.t3lib_browsetree.php');
00119 require_once (PATH_t3lib.'class.t3lib_pagetree.php');
00120 
00121 require_once (PATH_t3lib.'class.t3lib_basicfilefunc.php');
00122 require_once (PATH_t3lib.'class.t3lib_extfilefunc.php');
00123 
00124 t3lib_extMgm::isLoaded('impexp',1);
00125 
00126 
00127 
00128 
00129 
00137 class localPageTree extends t3lib_browseTree {
00138 
00144         function localPageTree() {
00145                 $this->init();
00146         }
00147 
00155         function wrapTitle($title,$v)   {
00156                 $title = (!strcmp(trim($title),'')) ? '<em>['.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.no_title',1).']</em>' : htmlspecialchars($title);
00157                 return $title;
00158         }
00159 
00168         function PM_ATagWrap($icon,$cmd,$bMark='')      {
00169                 return $icon;
00170         }
00171 
00179         function wrapIcon($icon,$row)   {
00180                 return $icon;
00181         }
00182 
00188         function permsC()       {
00189                 return $this->BE_USER->getPagePermsClause(1);
00190         }
00191 
00199         function ext_tree($pid, $clause='')     {
00200 
00201                         // Initialize:
00202                 $this->init(' AND '.$this->permsC().$clause);
00203 
00204                         // Get stored tree structure:
00205                 $this->stored = unserialize($this->BE_USER->uc['browseTrees']['browsePages']);
00206 
00207                         // PM action:
00208                 $PM = t3lib_div::intExplode('_',t3lib_div::_GP('PM'));
00209 
00210                         // traverse mounts:
00211                 $titleLen = intval($this->BE_USER->uc['titleLen']);
00212                 $treeArr = array();
00213 
00214                 $idx = 0;
00215 
00216                         // Set first:
00217                 $this->bank = $idx;
00218                 $isOpen = $this->stored[$idx][$pid] || $this->expandFirst;
00219 
00220                 $curIds = $this->ids;   // save ids
00221                 $this->reset();
00222                 $this->ids = $curIds;
00223 
00224                         // Set PM icon:
00225                 $cmd = $this->bank.'_'.($isOpen?'0_':'1_').$pid;
00226                 $icon = '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/'.($isOpen?'minus':'plus').'only.gif','width="18" height="16"').' align="top" alt="" />';
00227                 $firstHtml = $this->PM_ATagWrap($icon,$cmd);
00228 
00229                 if ($pid>0)     {
00230                         $rootRec = t3lib_befunc::getRecordWSOL('pages',$pid);
00231                         $firstHtml.= $this->wrapIcon(t3lib_iconWorks::getIconImage('pages',$rootRec,$this->backPath,'align="top"'),$rootRec);
00232                 } else {
00233                         $rootRec = array(
00234                                 'title' => $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'],
00235                                 'uid' => 0
00236                         );
00237                         $firstHtml.= $this->wrapIcon('<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/i/_icon_website.gif','width="18" height="16"').' align="top" alt="" />',$rootRec);
00238                 }
00239                 $this->tree[] = array('HTML'=>$firstHtml, 'row'=>$rootRec);
00240                 if ($isOpen)    {
00241                                 // Set depth:
00242                         $depthD = '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/blank.gif','width="18" height="16"').' align="top" alt="" />';
00243                         if ($this->addSelfId)   $this->ids[] = $pid;
00244                         $this->getTree($pid,999,$depthD);
00245 
00246                         $idH = array();
00247                         $idH[$pid]['uid'] = $pid;
00248                         if (count($this->buffer_idH))   $idH[$pid]['subrow'] = $this->buffer_idH;
00249                         $this->buffer_idH = $idH;
00250 
00251                 }
00252 
00253                         // Add tree:
00254                 $treeArr = array_merge($treeArr,$this->tree);
00255 
00256                 return $treeArr;
00257         }
00258 }
00259 
00260 
00261 
00262 
00263 
00264 
00265 
00266 
00267 
00268 
00269 
00270 
00271 
00272 
00280 class SC_mod_tools_log_index extends t3lib_SCbase {
00281 
00282         var $pageinfo;                  // array containing the current page.
00283 
00289         function main() {
00290                 global $BE_USER,$LANG,$BACK_PATH;
00291 
00292                         // Start document template object:
00293                 $this->doc = t3lib_div::makeInstance('mediumDoc');
00294                 $this->doc->backPath = $BACK_PATH;
00295                 $this->doc->docType = 'xhtml_trans';
00296 
00297                                 // JavaScript
00298                 $this->doc->JScode = $this->doc->wrapScriptTags('
00299                         script_ended = 0;
00300                         function jumpToUrl(URL) {       //
00301                                 window.location.href = URL;
00302                         }
00303                 ');
00304 
00305                         // Set up JS for dynamic tab menu
00306                 $this->doc->JScode .= $this->doc->getDynTabMenuJScode();
00307 
00308                 $this->doc->postCode = $this->doc->wrapScriptTags('
00309                         script_ended = 1;
00310                         if (top.fsMod) top.fsMod.recentIds["web"] = '.intval($this->id).';
00311                 ');
00312                 $this->doc->form = '<form action="index.php" method="post" enctype="'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'].'"><input type="hidden" name="id" value="'.$this->id.'" />';
00313 
00314                 $this->content.= $this->doc->startPage($LANG->getLL('title'));
00315                 $this->content.= $this->doc->header($LANG->getLL('title'));
00316                 $this->content.= $this->doc->spacer(5);
00317 
00318                         // Input data grabbed:
00319                 $inData = t3lib_div::_GP('tx_impexp');
00320 
00321                 $this->checkUpload();
00322 
00323                 switch((string)$inData['action'])       {
00324                         case 'export':
00325 
00326                                         // Finally: If upload went well, set the new file as the thumbnail in the $inData array:
00327                                 if (is_object($this->fileProcessor) && $this->fileProcessor->internalUploadMap[1])      {
00328                                         $inData['meta']['thumbnail'] = md5($this->fileProcessor->internalUploadMap[1]);
00329                                 }
00330 
00331                                         // Call export interface
00332                                 $this->exportData($inData);
00333                         break;
00334                         case 'import':
00335 
00336                                         // Finally: If upload went well, set the new file as the import file:
00337                                 if (is_object($this->fileProcessor) && $this->fileProcessor->internalUploadMap[1])      {
00338                                         $fI = pathinfo($this->fileProcessor->internalUploadMap[1]);
00339                                         if (t3lib_div::inList('t3d,xml',strtolower($fI['extension'])))  {       // Only allowed extensions....
00340                                                 $inData['file'] = $this->fileProcessor->internalUploadMap[1];
00341                                         }
00342                                 }
00343 
00344                                         // Call import interface:
00345                                 $this->importData($inData);
00346                         break;
00347                 }
00348 
00349                 if ($BE_USER->mayMakeShortcut())        {
00350                         $this->content.=$this->doc->spacer(20).$this->doc->section('',$this->doc->makeShortcutIcon('tx_impexp','',$this->MCONF['name']));
00351                 }
00352         }
00353 
00359         function printContent() {
00360 
00361                 $this->content.= $this->doc->spacer(20);
00362                 $this->content.= $this->doc->endPage();
00363                 echo $this->content;
00364         }
00365 
00366 
00367 
00368 
00369 
00370 
00371 
00372 
00373 
00374 
00375         /**************************
00376          *
00377          * EXPORT FUNCTIONS
00378          *
00379          **************************/
00380 
00387         function exportData($inData)    {
00388                 global $TCA, $LANG;
00389 
00390                         // BUILDING EXPORT DATA:
00391 
00392                         // Processing of InData array values:
00393                 $inData['pagetree']['maxNumber'] = t3lib_div::intInRange($inData['pagetree']['maxNumber'],1,10000,100);
00394                 $inData['listCfg']['maxNumber'] = t3lib_div::intInRange($inData['listCfg']['maxNumber'],1,10000,100);
00395                 $inData['maxFileSize'] = t3lib_div::intInRange($inData['maxFileSize'],1,10000,1000);
00396                 $inData['filename'] = trim(ereg_replace('[^[:alnum:]./_-]*','',ereg_replace('\.(t3d|xml)$','',$inData['filename'])));
00397                 if (strlen($inData['filename']))        {
00398                         $inData['filename'].= $inData['filetype']=='xml' ? '.xml' : '.t3d';
00399                 }
00400 
00401                         // Set exclude fields in export object:
00402                 if (!is_array($inData['exclude']))      {
00403                         $inData['exclude'] = array();
00404                 }
00405 
00406 
00407                         // Saving/Loading/Deleting presets:
00408                 $this->processPresets($inData);
00409 
00410                         // Create export object and configure it:
00411                 $this->export = t3lib_div::makeInstance('tx_impexp');
00412                 $this->export->init(0,'export');
00413                 $this->export->setCharset($LANG->charSet);
00414 
00415                 $this->export->maxFileSize = $inData['maxFileSize']*1024;
00416                 $this->export->excludeMap = (array)$inData['exclude'];
00417                 $this->export->softrefCfg = (array)$inData['softrefCfg'];
00418                 $this->export->extensionDependencies = (array)$inData['extension_dep'];
00419                 $this->export->showStaticRelations = $inData['showStaticRelations'];
00420 
00421                 $this->export->includeExtFileResources = !$inData['excludeHTMLfileResources'];
00422 #debug($inData);
00423                         // Static tables:
00424                 if (is_array($inData['external_static']['tables']))     {
00425                         $this->export->relStaticTables = $inData['external_static']['tables'];
00426                 }
00427 
00428                         // Configure which tables external relations are included for:
00429                 if (is_array($inData['external_ref']['tables']))        {
00430                         $this->export->relOnlyTables = $inData['external_ref']['tables'];
00431                 }
00432                 $this->export->setHeaderBasics();
00433 
00434                         // Meta data setting:
00435                 $this->export->setMetaData(
00436                         $inData['meta']['title'],
00437                         $inData['meta']['description'],
00438                         $inData['meta']['notes'],
00439                         $GLOBALS['BE_USER']->user['username'],
00440                         $GLOBALS['BE_USER']->user['realName'],
00441                         $GLOBALS['BE_USER']->user['email']
00442                 );
00443                 if ($inData['meta']['thumbnail'])       {
00444                         $tempDir = $this->userTempFolder();
00445                         if ($tempDir)   {
00446                                 $thumbnails = t3lib_div::getFilesInDir($tempDir,'png,gif,jpg',1);
00447                                 $theThumb = $thumbnails[$inData['meta']['thumbnail']];
00448                                 if ($theThumb)  {
00449                                         $this->export->addThumbnail($theThumb);
00450                                 }
00451                         }
00452                 }
00453 
00454 
00455                         // Configure which records to export
00456                 if (is_array($inData['record']))        {
00457                         foreach($inData['record'] as $ref)      {
00458                                 $rParts = explode(':',$ref);
00459                                 $this->export->export_addRecord($rParts[0],t3lib_BEfunc::getRecord($rParts[0],$rParts[1]));
00460                         }
00461                 }
00462 
00463                         // Configure which tables to export
00464                 if (is_array($inData['list']))  {
00465                         foreach($inData['list'] as $ref)        {
00466                                 $rParts = explode(':',$ref);
00467                                 if ($GLOBALS['BE_USER']->check('tables_select',$rParts[0]))     {
00468                                         $res = $this->exec_listQueryPid($rParts[0],$rParts[1],t3lib_div::intInRange($inData['listCfg']['maxNumber'],1));
00469                                         while($subTrow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))   {
00470                                                 $this->export->export_addRecord($rParts[0],$subTrow);
00471                                         }
00472                                 }
00473                         }
00474                 }
00475 
00476                         // Pagetree
00477                 if (isset($inData['pagetree']['id']))   {
00478                         if ($inData['pagetree']['levels']==-1)  {       // Based on click-expandable tree
00479                                 $pagetree = t3lib_div::makeInstance('localPageTree');
00480 
00481                                 $tree = $pagetree->ext_tree($inData['pagetree']['id'],$this->filterPageIds($this->export->excludeMap));
00482                                 $this->treeHTML = $pagetree->printTree($tree);
00483 
00484                                 $idH = $pagetree->buffer_idH;
00485 #                               debug($pagetree->buffer_idH);
00486                         } elseif ($inData['pagetree']['levels']==-2)    {       // Only tables on page
00487                                 $this->addRecordsForPid($inData['pagetree']['id'],$inData['pagetree']['tables'],$inData['pagetree']['maxNumber']);
00488                         } else {        // Based on depth
00489                                         // Drawing tree:
00490                                         // If the ID is zero, export root
00491                                 if (!$inData['pagetree']['id'] && $GLOBALS['BE_USER']->isAdmin())       {
00492                                         $sPage = array(
00493                                                 'uid' => 0,
00494                                                 'title' => 'ROOT'
00495                                         );
00496                                 } else {
00497                                         $sPage = t3lib_BEfunc::getRecordWSOL('pages',$inData['pagetree']['id'],'*',' AND '.$this->perms_clause);
00498                                 }
00499                                 if (is_array($sPage))   {
00500                                         $pid = $inData['pagetree']['id'];
00501                                         $tree = t3lib_div::makeInstance('t3lib_pageTree');
00502                                         $tree->init('AND '.$this->perms_clause.$this->filterPageIds($this->export->excludeMap));
00503 
00504                                         $HTML = t3lib_iconWorks::getIconImage('pages',$sPage,$GLOBALS['BACK_PATH'],'align="top"');
00505                                         $tree->tree[] = Array('row'=>$sPage,'HTML'=>$HTML);
00506                                         $tree->buffer_idH = array();
00507                                         if ($inData['pagetree']['levels']>0)    {
00508                                                 $tree->getTree($pid,$inData['pagetree']['levels'],'');
00509                                         }
00510 
00511                                         $idH = array();
00512                                         $idH[$pid]['uid'] = $pid;
00513                                         if (count($tree->buffer_idH))   {
00514                                                 $idH[$pid]['subrow'] = $tree->buffer_idH;
00515                                         }
00516 
00517                                         $pagetree = t3lib_div::makeInstance('localPageTree');
00518                                         $this->treeHTML = $pagetree->printTree($tree->tree);
00519 #debug($idH);
00520                                 }
00521                         }
00522                                 // In any case we should have a multi-level array, $idH, with the page structure here (and the HTML-code loaded into memory for nice display...)
00523                         if (is_array($idH))     {
00524                                 $flatList = $this->export->setPageTree($idH);   // Sets the pagetree and gets a 1-dim array in return with the pages (in correct submission order BTW...)
00525                                 reset($flatList);
00526                                 while(list($k)=each($flatList)) {
00527                                         $this->export->export_addRecord('pages',t3lib_BEfunc::getRecord('pages',$k));
00528                                         $this->addRecordsForPid($k,$inData['pagetree']['tables'],$inData['pagetree']['maxNumber']);
00529                                 }
00530                         }
00531                 }
00532 
00533                         // After adding ALL records we set relations:
00534 #               debug($this->export->relOnlyTables);
00535 #               if (count($this->export->relOnlyTables))        {
00536                         for($a=0;$a<10;$a++)    {
00537                                 $addR = $this->export->export_addDBRelations($a);
00538                                 if (!count($addR)) break;
00539                         }
00540 #               }
00541 
00542                         // Finally files are added:
00543                 $this->export->export_addFilesFromRelations();  // MUST be after the DBrelations are set so that files from ALL added records are included!
00544 #debug($this->export->dat['header']);
00545                         // If the download button is clicked, return file
00546                 if ($inData['download_export'] || $inData['save_export'])       {
00547                         switch((string)$inData['filetype'])     {
00548                                 case 'xml':
00549                                         $out = $this->export->compileMemoryToFileContent('xml');
00550                                         $fExt = '.xml';
00551                                 break;
00552                                 case 't3d':
00553                                         $this->export->dontCompress = 1;
00554                                 default:
00555                                         $out = $this->export->compileMemoryToFileContent();
00556                                         $fExt = ($this->export->doOutputCompress()?'-z':'').'.t3d';
00557                                 break;
00558                         }
00559 
00560                                 // Filename:
00561                         $dlFile = $inData['filename'] ? $inData['filename'] : 'T3D_'.substr(ereg_replace('[^[:alnum:]_]','-',$inData['download_export_name']),0,20).'_'.date('d-m-H-i-s').$fExt;
00562 
00563                                 // Export for download:
00564                         if ($inData['download_export']) {
00565                                 $mimeType = 'application/octet-stream';
00566                                 Header('Content-Type: '.$mimeType);
00567                                 Header('Content-Length: '.strlen($out));
00568                                 Header('Content-Disposition: attachment; filename='.basename($dlFile));
00569 
00570                                 echo $out;
00571                                 exit;
00572                         }
00573 
00574                                 // Export by saving:
00575                         if ($inData['save_export'])     {
00576                                 $savePath = $this->userSaveFolder();
00577                                 $fullName = $savePath.$dlFile;
00578 
00579                                 if (t3lib_div::isAllowedAbsPath($savePath) && @is_dir(dirname($fullName)) && t3lib_div::isAllowedAbsPath($fullName))    {
00580                                         t3lib_div::writeFile($fullName, $out);
00581                                         $this->content.= $this->doc->section($LANG->getLL('exportdata_savedFile'),sprintf($LANG->getLL('exportdata_savedInSBytes',1), substr($savePath.$dlFile,strlen(PATH_site)), t3lib_div::formatSize(strlen($out))),0,1);
00582                                 } else {
00583                                         $this->content.= $this->doc->section($LANG->getLL('exportdata_problemsSavingFile'),sprintf($LANG->getLL('exportdata_badPathS',1),$fullName),0,1,2);
00584                                 }
00585                         }
00586                 }
00587 
00588 
00589                         // OUTPUT to BROWSER:
00590                         // Now, if we didn't make download file, show configuration form based on export:
00591                 $menuItems = array();
00592 
00593                         // Export configuration
00594                 $row = array();
00595                 $this->makeConfigurationForm($inData, $row);
00596                 $menuItems[] = array(
00597                         'label' => $LANG->getLL('tableselec_configuration'),
00598                         'content' => '
00599                                 <table border="0" cellpadding="1" cellspacing="1">
00600                                         '.implode('
00601                                         ',$row).'
00602                                 </table>
00603                         '
00604                 );
00605 
00606                         // File options
00607                 $row = array();
00608                 $this->makeSaveForm($inData, $row);
00609                 $menuItems[] = array(
00610                         'label' => $LANG->getLL('exportdata_filePreset'),
00611                         'content' => '
00612                                 <table border="0" cellpadding="1" cellspacing="1">
00613                                         '.implode('
00614                                         ',$row).'
00615                                 </table>
00616                         '
00617                 );
00618 
00619                         // File options
00620                 $row = array();
00621                 $this->makeAdvancedOptionsForm($inData, $row);
00622                 $menuItems[] = array(
00623                         'label' => $LANG->getLL('exportdata_advancedOptions'),
00624                         'content' => '
00625                                 <table border="0" cellpadding="1" cellspacing="1">
00626                                         '.implode('
00627                                         ',$row).'
00628                                 </table>
00629                         '
00630                 );
00631 
00632                         // Generate overview:
00633                 $overViewContent = $this->export->displayContentOverview();
00634 
00635                         // Print errors that might be:
00636                 $errors = $this->export->printErrorLog();
00637                 $menuItems[] = array(
00638                         'label' => $LANG->getLL('exportdata_messages'),
00639                         'content' => $errors,
00640                         'stateIcon' => $errors ? 2 : 0
00641                 );
00642 
00643                         // Add hidden fields and create tabs:
00644                 $content = $this->doc->getDynTabMenu($menuItems,'tx_impexp_export',-1);
00645                 $content.= '<input type="hidden" name="tx_impexp[action]" value="export" />';
00646                 $this->content.= $this->doc->section('',$content,0,1);
00647 
00648                         // Output Overview:
00649                 $this->content.= $this->doc->section($LANG->getLL('execlistqu_structureToBeExported'),$overViewContent,0,1);
00650 
00651         }
00652 
00661         function addRecordsForPid($k, $tables, $maxNumber)      {
00662                 global $TCA;
00663 
00664                 if (is_array($tables))  {
00665                         reset($TCA);
00666                         while(list($table)=each($TCA))  {
00667                                 if ($table!='pages' && (in_array($table,$tables) || in_array('_ALL',$tables)))  {
00668                                         if ($GLOBALS['BE_USER']->check('tables_select',$table) && !$TCA[$table]['ctrl']['is_static'])   {
00669                                                 $res = $this->exec_listQueryPid($table,$k,t3lib_div::intInRange($maxNumber,1));
00670                                                 while($subTrow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))   {
00671                                                         $this->export->export_addRecord($table,$subTrow);
00672                                                 }
00673                                         }
00674                                 }
00675                         }
00676                 }
00677         }
00678 
00687         function exec_listQueryPid($table,$pid,$limit)  {
00688                 global $TCA, $LANG;
00689 
00690                 $orderBy = $TCA[$table]['ctrl']['sortby'] ? 'ORDER BY '.$TCA[$table]['ctrl']['sortby'] : $TCA[$table]['ctrl']['default_sortby'];
00691                 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
00692                                 '*',
00693                                 $table,
00694                                 'pid='.intval($pid).
00695                                         t3lib_BEfunc::deleteClause($table).
00696                                         t3lib_BEfunc::versioningPlaceholderClause($table),
00697                                 '',
00698                                 $GLOBALS['TYPO3_DB']->stripOrderBy($orderBy),
00699                                 $limit
00700                         );
00701 
00702                         // Warning about hitting limit:
00703                 if ($GLOBALS['TYPO3_DB']->sql_num_rows($res) == $limit) {
00704                         $this->content.= $this->doc->section($LANG->getLL('execlistqu_maxNumberLimit'),sprintf($LANG->getLL('makeconfig_anSqlQueryReturned',1),$limit),0,1, 2);
00705                 }
00706 
00707                 return $res;
00708         }
00709 
00717         function makeConfigurationForm($inData, &$row)  {
00718                 global $LANG;
00719 
00720                 $nameSuggestion = '';
00721 
00722                         // Page tree export options:
00723                 if (isset($inData['pagetree']['id']))   {
00724 
00725                         $nameSuggestion.= 'tree_PID'.$inData['pagetree']['id'].'_L'.$inData['pagetree']['levels'];
00726 
00727                         $row[] = '
00728                                 <tr class="tableheader bgColor5">
00729                                         <td colspan="2">'.$LANG->getLL('makeconfig_exportPagetreeConfiguration',1).t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'pageTreeCfg', $GLOBALS['BACK_PATH'],'').'</td>
00730                                 </tr>';
00731 
00732                         $row[] = '
00733                                 <tr class="bgColor4">
00734                                         <td><strong>'.$LANG->getLL('makeconfig_pageId',1).'</strong></td>
00735                                         <td>'.htmlspecialchars($inData['pagetree']['id']).
00736                                                 '<input type="hidden" value="'.htmlspecialchars($inData['pagetree']['id']).'" name="tx_impexp[pagetree][id]" /></td>
00737                                 </tr>';
00738 
00739                         $row[] = '
00740                                 <tr class="bgColor4">
00741                                         <td><strong>'.$LANG->getLL('makeconfig_tree',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'pageTreeDisplay', $GLOBALS['BACK_PATH'],'').'</td>
00742                                         <td>'.($this->treeHTML ? $this->treeHTML : $LANG->getLL('makeconfig_noTreeExportedOnly',1)).'</td>
00743                                 </tr>';
00744 
00745                         $opt = array(
00746                                 '-2' => $LANG->getLL('makeconfig_tablesOnThisPage'),
00747                                 '-1' => $LANG->getLL('makeconfig_expandedTree'),
00748                                 '0' => $LANG->getLL('makeconfig_onlyThisPage'),
00749                                 '1' => $LANG->getLL('makeconfig_1Level'),
00750                                 '2' => $LANG->getLL('makeconfig_2Levels'),
00751                                 '3' => $LANG->getLL('makeconfig_3Levels'),
00752                                 '4' => $LANG->getLL('makeconfig_4Levels'),
00753                                 '999' => $LANG->getLL('makeconfig_infinite')
00754                         );
00755                         $row[] = '
00756                                 <tr class="bgColor4">
00757                                         <td><strong>'.$LANG->getLL('makeconfig_levels',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'pageTreeMode', $GLOBALS['BACK_PATH'],'').'</td>
00758                                         <td>'.$this->renderSelectBox('tx_impexp[pagetree][levels]',$inData['pagetree']['levels'],$opt).'</td>
00759                                 </tr>';
00760 
00761                         $row[] = '
00762                                 <tr class="bgColor4">
00763                                         <td><strong>'.$LANG->getLL('makeconfig_includeTables',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'pageTreeRecordLimit', $GLOBALS['BACK_PATH'],'').'</td>
00764                                         <td>'.$this->tableSelector('tx_impexp[pagetree][tables]',$inData['pagetree']['tables'],'pages').'<br/>
00765                                                 '.$LANG->getLL('makeconfig_maxNumberOfRecords',1).'<br/>
00766                                                 <input type="text" name="tx_impexp[pagetree][maxNumber]" value="'.htmlspecialchars($inData['pagetree']['maxNumber']).'"'.$this->doc->formWidth(10).' /><br/>
00767                                         </td>
00768                                 </tr>';
00769                 }
00770 
00771                         // Single record export:
00772                 if (is_array($inData['record']))        {
00773                         $row[] = '
00774                                 <tr class="tableheader bgColor5">
00775                                         <td colspan="2">'.$LANG->getLL('makeconfig_exportSingleRecord',1).t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'singleRecord', $GLOBALS['BACK_PATH'],'').'</td>
00776                                 </tr>';
00777                         foreach($inData['record'] as $ref)      {
00778                                 $rParts = explode(':', $ref);
00779                                 $tName = $rParts[0];
00780                                 $rUid = $rParts[1];
00781                                 $nameSuggestion.= $tName.'_'.$rUid;
00782                                 $rec = t3lib_BEfunc::getRecordWSOL($tName,$rUid);
00783 
00784                                 $row[] = '
00785                                 <tr class="bgColor4">
00786                                         <td><strong>'.$LANG->getLL('makeconfig_record',1).'</strong></td>
00787                                         <td>'.t3lib_iconworks::getIconImage($tName,$rec,$GLOBALS['BACK_PATH'],' align="top"').
00788                                                 t3lib_BEfunc::getRecordTitle($tName,$rec,1).
00789                                                 '<input type="hidden" name="tx_impexp[record][]" value="'.htmlspecialchars($tName.':'.$rUid).'" /></td>
00790                                 </tr>';
00791                         }
00792                 }
00793 
00794                         // Single tables/pids:
00795                 if (is_array($inData['list']))  {
00796                         $row[] = '
00797                                 <tr class="tableheader bgColor5">
00798                                         <td colspan="2">'.$LANG->getLL('makeconfig_exportTablesFromPages',1).'</td>
00799                                 </tr>';
00800 
00801                         $tblList = '';
00802                         foreach($inData['list'] as $ref)        {
00803                                 $rParts = explode(':', $ref);
00804                                 $tName = $rParts[0];
00805 
00806                                 if ($GLOBALS['BE_USER']->check('tables_select',$tName)) {
00807                                         $rec = t3lib_BEfunc::getRecordWSOL('pages', $rParts[1]);
00808                                         $tblList.='Table "'.$tName.'" from '.t3lib_iconworks::getIconImage('pages',$rec,$GLOBALS['BACK_PATH'],' align="top"').
00809                                         t3lib_BEfunc::getRecordTitle('pages',$rec,1).
00810                                         '<input type="hidden" name="tx_impexp[list][]" value="'.htmlspecialchars($ref).'" /><br/>';
00811                                 }
00812                         }
00813                         $row[] = '
00814                         <tr class="bgColor4">
00815                                 <td><strong>'.$LANG->getLL('makeconfig_tablePids',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'tableList', $GLOBALS['BACK_PATH'],'').'</td>
00816                                 <td>'.$tblList.'</td>
00817                         </tr>';
00818 
00819                         $row[] = '
00820                                 <tr class="bgColor4">
00821                                         <td><strong>'.$LANG->getLL('makeconfig_maxNumberOfRecords',1).t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'tableListMaxNumber', $GLOBALS['BACK_PATH'],'').'</strong></td>
00822                                         <td>
00823                                                 <input type="text" name="tx_impexp[listCfg][maxNumber]" value="'.htmlspecialchars($inData['listCfg']['maxNumber']).'"'.$this->doc->formWidth(10).' /><br/>
00824                                         </td>
00825                                 </tr>';
00826                 }
00827 
00828 
00829                 $row[] = '
00830                         <tr class="tableheader bgColor5">
00831                                 <td colspan="2">'.$LANG->getLL('makeconfig_relationsAndExclusions',1).'</td>
00832                         </tr>';
00833 
00834                         // Add relation selector:
00835                 $row[] = '
00836                                 <tr class="bgColor4">
00837                                         <td><strong>'.$LANG->getLL('makeconfig_includeRelationsToTables',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'inclRelations', $GLOBALS['BACK_PATH'],'').'</td>
00838                                         <td>'.$this->tableSelector('tx_impexp[external_ref][tables]',$inData['external_ref']['tables']).'</td>
00839                                 </tr>';
00840 
00841                         // Add static relation selector:
00842                 $row[] = '
00843                                 <tr class="bgColor4">
00844                                         <td><strong>'.$LANG->getLL('makeconfig_useStaticRelationsFor',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'staticRelations', $GLOBALS['BACK_PATH'],'').'</td>
00845                                         <td>'.$this->tableSelector('tx_impexp[external_static][tables]',$inData['external_static']['tables']).'<br/>
00846                                                 '.$LANG->getLL('makeconfig_showStaticRelations',1).' <input type="checkbox" name="tx_impexp[showStaticRelations]" value="1"'.($inData['showStaticRelations'] ? ' checked="checked"' : '').' />
00847                                                 </td>
00848                                 </tr>';
00849 
00850                         // Exclude:
00851                 $excludeHiddenFields = '';
00852                 if (is_array($inData['exclude']))       {
00853                         foreach($inData['exclude'] as $key => $value)   {
00854                                 $excludeHiddenFields.= '<input type="hidden" name="tx_impexp[exclude]['.$key.']" value="1" />';
00855                         }
00856                 }
00857                 $row[] = '
00858                                 <tr class="bgColor4">
00859                                         <td><strong>'.$LANG->getLL('makeconfig_excludeElements',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'excludedElements', $GLOBALS['BACK_PATH'],'').'</td>
00860                                         <td>'.$excludeHiddenFields.'
00861                                         '.(count($inData['exclude']) ? '<em>'.implode(', ',array_keys($inData['exclude'])).'</em><hr/>'.$LANG->getLL('makeconfig_clearAllExclusions',1).' <input type="checkbox" name="tx_impexp[exclude]" value="1" />' : $LANG->getLL('makeconfig_noExcludedElementsYet',1)).'
00862                                         </td>
00863                                 </tr>';
00864 
00865 
00866                         // Add buttons:
00867                 $row[] = '
00868                                 <tr class="bgColor4">
00869                                         <td>&nbsp;</td>
00870                                         <td>
00871                                                 <input type="submit" value="'.$LANG->getLL('makeadvanc_update',1).'" />
00872                                                 <input type="hidden" name="tx_impexp[download_export_name]" value="'.substr($nameSuggestion,0,30).'" />
00873                                         </td>
00874                                 </tr>';
00875 
00876         }
00877 
00885         function makeAdvancedOptionsForm($inData, &$row)        {
00886                 global $LANG;
00887 
00888                         // Soft references
00889                 $row[] = '
00890                         <tr class="tableheader bgColor5">
00891                                 <td colspan="2">'.$LANG->getLL('makeadvanc_softReferences',1).'</td>
00892                         </tr>';
00893                 $row[] = '
00894                                 <tr class="bgColor4">
00895                                         <td><strong>'.$LANG->getLL('makeadvanc_excludeHtmlCssFile',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'htmlCssResources', $GLOBALS['BACK_PATH'],'').'</td>
00896                                         <td><input type="checkbox" name="tx_impexp[excludeHTMLfileResources]" value="1"'.($inData['excludeHTMLfileResources'] ? ' checked="checked"' : '').' /></td>
00897                                 </tr>';
00898 
00899 
00900                         // Extensions
00901                 $row[] = '
00902                         <tr class="tableheader bgColor5">
00903                                 <td colspan="2">'.$LANG->getLL('makeadvanc_extensionDependencies',1).'</td>
00904                         </tr>';
00905                 $row[] = '
00906                                 <tr class="bgColor4">
00907                                         <td><strong>'.$LANG->getLL('makeadvanc_selectExtensionsThatThe',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'extensionDependencies', $GLOBALS['BACK_PATH'],'').'</td>
00908                                         <td>'.$this->extensionSelector('tx_impexp[extension_dep]',$inData['extension_dep']).'</td>
00909                                 </tr>';
00910 
00911 
00912 
00913                         // Add buttons:
00914                 $row[] = '
00915                                 <tr class="bgColor4">
00916                                         <td>&nbsp;</td>
00917                                         <td>
00918                                                 <input type="submit" value="'.$LANG->getLL('makesavefo_update',1).'" />
00919                                                 <input type="hidden" name="tx_impexp[download_export_name]" value="'.substr($nameSuggestion,0,30).'" />
00920                                         </td>
00921                                 </tr>';
00922 
00923 
00924         }
00925 
00933         function makeSaveForm($inData, &$row)   {
00934                 global $LANG;
00935 
00936                         // Presets:
00937                 $row[] = '
00938                         <tr class="tableheader bgColor5">
00939                                 <td colspan="2">'.$LANG->getLL('makesavefo_presets',1).'</td>
00940                         </tr>';
00941 
00942                 $opt = array('');
00943                 $presets = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
00944                                                 '*',
00945                                                 'tx_impexp_presets',
00946                                                 '(public>0 || user_uid='.intval($GLOBALS['BE_USER']->user['uid']).')'.
00947                                                         ($inData['pagetree']['id'] ? ' AND (item_uid='.intval($inData['pagetree']['id']).' OR item_uid=0)' : '')
00948 
00949                                         );
00950                 if (is_array($presets)) {
00951                         foreach($presets as $presetCfg) {
00952                                 $opt[$presetCfg['uid']] = $presetCfg['title'].' ['.$presetCfg['uid'].']'.
00953                                                                                         ($presetCfg['public'] ? ' [Public]' : '').
00954                                                                                         ($presetCfg['user_uid']===$GLOBALS['BE_USER']->user['uid'] ? ' [Own]' : '');
00955                         }
00956                 }
00957 
00958                 $row[] = '
00959                                 <tr class="bgColor4">
00960                                         <td><strong>'.$LANG->getLL('makesavefo_presets',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'presets', $GLOBALS['BACK_PATH'],'').'</td>
00961                                         <td>
00962                                                 '.$LANG->getLL('makesavefo_selectPreset',1).'<br/>
00963                                                 '.$this->renderSelectBox('preset[select]','',$opt).'
00964                                                 <br/>
00965                                                 <input type="submit" value="'.$LANG->getLL('makesavefo_load',1).'" name="preset[load]" />
00966                                                 <input type="submit" value="'.$LANG->getLL('makesavefo_save',1).'" name="preset[save]" onclick="return confirm(\''.$LANG->getLL('makesavefo_areYouSure',1).'\');" />
00967                                                 <input type="submit" value="'.$LANG->getLL('makesavefo_delete',1).'" name="preset[delete]" onclick="return confirm(\''.$LANG->getLL('makesavefo_areYouSure',1).'\');" />
00968                                                 <input type="submit" value="'.$LANG->getLL('makesavefo_merge',1).'" name="preset[merge]" onclick="return confirm(\''.$LANG->getLL('makesavefo_areYouSure',1).'\');" />
00969                                                 <br/>
00970                                                 '.$LANG->getLL('makesavefo_titleOfNewPreset',1).'
00971                                                 <input type="text" name="tx_impexp[preset][title]" value="'.htmlspecialchars($inData['preset']['title']).'"'.$this->doc->formWidth(30).' /><br/>
00972                                                 '.$LANG->getLL('makesavefo_public',1).'
00973                                                 <input type="checkbox" name="tx_impexp[preset][public]" value="1"'.($inData['preset']['public'] ? ' checked="checked"' : '').' /><br/>
00974                                         </td>
00975                                 </tr>';
00976 
00977                         // Output options:
00978                 $row[] = '
00979                         <tr class="tableheader bgColor5">
00980                                 <td colspan="2">'.$LANG->getLL('makesavefo_outputOptions',1).'</td>
00981                         </tr>';
00982 
00983                         // Meta data:
00984                 $tempDir = $this->userTempFolder();
00985                 if ($tempDir)   {
00986                         $thumbnails = t3lib_div::getFilesInDir($tempDir,'png,gif,jpg');
00987                         array_unshift($thumbnails,'');
00988                 } else $thumbnails = FALSE;
00989                 $row[] = '
00990                                 <tr class="bgColor4">
00991                                         <td><strong>'.$LANG->getLL('makesavefo_metaData',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'metadata', $GLOBALS['BACK_PATH'],'').'</td>
00992                                         <td>
00993                                                         '.$LANG->getLL('makesavefo_title',1).' <br/>
00994                                                         <input type="text" name="tx_impexp[meta][title]" value="'.htmlspecialchars($inData['meta']['title']).'"'.$this->doc->formWidth(30).' /><br/>
00995                                                         '.$LANG->getLL('makesavefo_description',1).' <br/>
00996                                                         <input type="text" name="tx_impexp[meta][description]" value="'.htmlspecialchars($inData['meta']['description']).'"'.$this->doc->formWidth(30).' /><br/>
00997                                                         '.$LANG->getLL('makesavefo_notes',1).' <br/>
00998                                                         <textarea name="tx_impexp[meta][notes]"'.$this->doc->formWidth(30,1).'>'.t3lib_div::formatForTextarea($inData['meta']['notes']).'</textarea><br/>
00999                                                         '.(is_array($thumbnails) ? '
01000                                                         '.$LANG->getLL('makesavefo_thumbnail',1).'<br/>
01001                                                         '.$this->renderSelectBox('tx_impexp[meta][thumbnail]',$inData['meta']['thumbnail'],$thumbnails).'<br/>
01002                                                         '.($inData['meta']['thumbnail'] ? '<img src="'.$this->doc->backPath.'../'.substr($tempDir,strlen(PATH_site)).$thumbnails[$inData['meta']['thumbnail']].'" vspace="5" style="border: solid black 1px;" alt="" /><br/>' : '').'
01003                                                         '.$LANG->getLL('makesavefo_uploadThumbnail',1).'<br/>
01004                                                         <input type="file" name="upload_1" '.$this->doc->formWidth(30).' size="30" /><br/>
01005                                                                 <input type="hidden" name="file[upload][1][target]" value="'.htmlspecialchars($tempDir).'" />
01006                                                                 <input type="hidden" name="file[upload][1][data]" value="1" /><br />
01007                                                         ' : '').'
01008                                                 </td>
01009                                 </tr>';
01010 
01011                         // Add file options:
01012                 $savePath = $this->userSaveFolder();
01013                 $opt = array();
01014                 if ($this->export->compress)    {
01015                         $opt['t3d_compressed'] = $LANG->getLL('makesavefo_t3dFileCompressed');
01016                 }
01017                 $opt['t3d'] = $LANG->getLL('makesavefo_t3dFile');
01018                 $opt['xml'] = $LANG->getLL('makesavefo_xml');
01019                 $row[] = '
01020                                 <tr class="bgColor4">
01021                                         <td><strong>'.$LANG->getLL('makesavefo_fileFormat',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'fileFormat', $GLOBALS['BACK_PATH'],'').'</td>
01022                                         <td>'.$this->renderSelectBox('tx_impexp[filetype]',$inData['filetype'],$opt).'<br/>
01023                                                 '.$LANG->getLL('makesavefo_maxSizeOfFiles',1).'<br/>
01024                                                 <input type="text" name="tx_impexp[maxFileSize]" value="'.htmlspecialchars($inData['maxFileSize']).'"'.$this->doc->formWidth(10).' /><br/>
01025                                                 '.($savePath ? sprintf($LANG->getLL('makesavefo_filenameSavedInS',1),substr($savePath,strlen(PATH_site))).'<br/>
01026                                                 <input type="text" name="tx_impexp[filename]" value="'.htmlspecialchars($inData['filename']).'"'.$this->doc->formWidth(30).' /><br/>' : '').'
01027                                         </td>
01028                                 </tr>';
01029 
01030 
01031                         // Add buttons:
01032                 $row[] = '
01033                                 <tr class="bgColor4">
01034                                         <td>&nbsp;</td>
01035                                         <td><input type="submit" value="'.$LANG->getLL('makesavefo_update',1).'" /> - <input type="submit" value="'.$LANG->getLL('makesavefo_downloadExport',1).'" name="tx_impexp[download_export]" />'.
01036                                                 ($savePath ? ' - <input type="submit" value="'.$LANG->getLL('importdata_saveToFilename',1).'" name="tx_impexp[save_export]" />' : '').'</td>
01037                                 </tr>';
01038         }
01039 
01040 
01041 
01042 
01043 
01044 
01045 
01046 
01047 
01048 
01049 
01050 
01051 
01052         /**************************
01053          *
01054          * IMPORT FUNCTIONS
01055          *
01056          **************************/
01057 
01064         function importData($inData)    {
01065                 global $TCA,$LANG,$BE_USER;
01066 
01067                 $this->pageinfo = t3lib_BEfunc::readPageAccess($this->id,$this->perms_clause);
01068                 $access = is_array($this->pageinfo) ? 1 : 0;
01069 
01070                 if (($this->id && $access) || ($BE_USER->user['admin'] && !$this->id))  {
01071                         if ($BE_USER->user['admin'] && !$this->id)      {
01072                                 $this->pageinfo=array('title' => '[root-level]','uid'=>0,'pid'=>0);
01073                         }
01074 
01075                         $headerSection = $this->doc->getHeader('pages',$this->pageinfo,$this->pageinfo['_thePath']).'<br />'.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.path').': '.t3lib_div::fixed_lgd_cs($this->pageinfo['_thePath'],-50);
01076                         $this->content.= $this->doc->section('',$headerSection);
01077 
01078                         if ($inData['new_import'])      {
01079                                 unset($inData['import_mode']);
01080                         }
01081 
01082                         $import = t3lib_div::makeInstance('tx_impexp');
01083                         $import->init(0,'import');
01084                         $import->update = $inData['do_update'];
01085                         $import->import_mode = $inData['import_mode'];
01086                         $import->enableLogging = $inData['enableLogging'];
01087                         $import->global_ignore_pid = $inData['global_ignore_pid'];
01088                         $import->force_all_UIDS = $inData['force_all_UIDS'];
01089                         $import->showDiff = !$inData['notShowDiff'];
01090                         $import->allowPHPScripts = $inData['allowPHPScripts'];
01091                         $import->softrefInputValues = $inData['softrefInputValues'];
01092 
01093 
01094                                 // OUTPUT creation:
01095                         $menuItems = array();
01096 
01097 
01098                                 // Make input selector:
01099                         $path = 'fileadmin/';   // must have trailing slash.
01100                         $filesInDir = t3lib_div::getFilesInDir(PATH_site.$path,'t3d,xml',1,1);
01101                         if (is_dir(PATH_site.$path.'export/'))  {
01102                                 $filesInDir = array_merge($filesInDir, t3lib_div::getFilesInDir(PATH_site.$path.'export/','t3d,xml',1,1));
01103                         }
01104                         $tempFolder = $this->userTempFolder();
01105                         if ($tempFolder)        {
01106                                 $temp_filesInDir = t3lib_div::getFilesInDir($tempFolder,'t3d,xml',1,1);
01107                                 $filesInDir = array_merge($filesInDir, $temp_filesInDir);
01108                         }
01109 
01110                                 // Configuration
01111                         $row = array();
01112                         $opt = array('');
01113                         foreach($filesInDir as $file)   {
01114                                 $opt[$file] = substr($file,strlen(PATH_site));
01115                         }
01116 
01117                         $row[] = '<tr class="bgColor5">
01118                                         <td colspan="2"><strong>'.$LANG->getLL('importdata_selectFileToImport',1).'</strong></td>
01119                                 </tr>';
01120 
01121                         $row[] = '<tr class="bgColor4">
01122                                 <td><strong>'.$LANG->getLL('importdata_file',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'importFile', $GLOBALS['BACK_PATH'],'').'</td>
01123                                 <td>'.
01124                                         $this->renderSelectBox('tx_impexp[file]',$inData['file'],$opt).'<br />'.sprintf($LANG->getLL('importdata_fromPathS',1),$path).
01125                                         (!$import->compress ? '<br /><span class="typo3-red">'.$LANG->getLL('importdata_noteNoDecompressorAvailable',1).'</span>':'').
01126                                 '</td>
01127                                 </tr>';
01128 
01129                         $row[] = '<tr class="bgColor5">
01130                                         <td colspan="2"><strong>'.$LANG->getLL('importdata_importOptions',1).'</strong></td>
01131                                 </tr>';
01132 
01133                         $row[] = '<tr class="bgColor4">
01134                                 <td><strong>'.$LANG->getLL('importdata_update',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'update', $GLOBALS['BACK_PATH'],'').'</td>
01135                                 <td>
01136                                         <input type="checkbox" name="tx_impexp[do_update]" value="1"'.($inData['do_update'] ? ' checked="checked"' : '').' />
01137                                         '.$LANG->getLL('importdata_updateRecords',1).'<br/>
01138                                 <em>('.$LANG->getLL('importdata_thisOptionRequiresThat',1).')</em>'.
01139                                 ($inData['do_update'] ?
01140                                 '       <hr/>
01141                                         <input type="checkbox" name="tx_impexp[global_ignore_pid]" value="1"'.($inData['global_ignore_pid'] ? ' checked="checked"' : '').' />
01142                                         '.$LANG->getLL('importdata_ignorePidDifferencesGlobally',1).'<br/>
01143                                         <em>('.$LANG->getLL('importdata_ifYouSetThis',1).')</em>
01144                                         ' : ''
01145                                 ).'</td>
01146                                 </tr>';
01147 
01148                         $row[] = '<tr class="bgColor4">
01149                                 <td><strong>'.$LANG->getLL('importdata_options',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'options', $GLOBALS['BACK_PATH'],'').'</td>
01150                                 <td>
01151                                         <input type="checkbox" name="tx_impexp[notShowDiff]" value="1"'.($inData['notShowDiff'] ? ' checked="checked"' : '').' />
01152                                         '.$LANG->getLL('importdata_doNotShowDifferences',1).'<br/>
01153                                         <em>('.$LANG->getLL('importdata_greenValuesAreFrom',1).')</em>
01154                                         <br/><br/>
01155 
01156                                         '.($GLOBALS['BE_USER']->isAdmin() ? '
01157                                         <input type="checkbox" name="tx_impexp[allowPHPScripts]" value="1"'.($inData['allowPHPScripts'] ? ' checked="checked"' : '').' />
01158                                         '.$LANG->getLL('importdata_allowToWriteBanned',1).'<br/>' : '').
01159 
01160                                         (!$inData['do_update'] && $GLOBALS['BE_USER']->isAdmin() ? '
01161                                         <br/>
01162                                         <input type="checkbox" name="tx_impexp[force_all_UIDS]" value="1"'.($inData['force_all_UIDS'] ? ' checked="checked"' : '').' />
01163                                         <span class="typo3-red">'.$LANG->getLL('importdata_force_all_UIDS',1).'</span><br/>
01164                                         <em>('.$LANG->getLL('importdata_force_all_UIDS_descr',1).')</em>' : '').
01165                                         '
01166                                 </td>
01167                                 </tr>';
01168 
01169                         $row[] = '<tr class="bgColor4">
01170                                 <td><strong>'.$LANG->getLL('importdata_action',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'action', $GLOBALS['BACK_PATH'],'').'</td>
01171                                 <td>'.
01172                                         (!$inData['import_file'] ? '<input type="submit" value="'.$LANG->getLL('importdata_preview',1).'" />'.($inData['file'] ? ' - <input type="submit" value="'.($inData['do_update']?$LANG->getLL('importdata_update_299e',1):$LANG->getLL('importdata_import',1)).'" name="tx_impexp[import_file]" onclick="return confirm(\''.$LANG->getLL('importdata_areYouSure',1).'\');" />':''):'<input type="submit" name="tx_impexp[new_import]" value="'.$LANG->getLL('importdata_newImport',1).'" />').'
01173                                         <input type="hidden" name="tx_impexp[action]" value="import" /></td>
01174                                 </tr>';
01175 
01176                         $row[] = '<tr class="bgColor4">
01177                                 <td><strong>'.$LANG->getLL('importdata_enableLogging',1).'</strong>'.t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'enableLogging', $GLOBALS['BACK_PATH'],'').'</td>
01178                                 <td>
01179                                         <input type="checkbox" name="tx_impexp[enableLogging]" value="1"'.($inData['enableLogging'] ? ' checked="checked"' : '').' />
01180                                         '.$LANG->getLL('importdata_writeIndividualDbActions',1).'<br/>
01181                                         <em>('.$LANG->getLL('importdata_thisIsDisabledBy',1).')</em>
01182                                 </td>
01183                                 </tr>';
01184 
01185                         $menuItems[] = array(
01186                                 'label' => $LANG->getLL('importdata_import',1),
01187                                 'content' => '
01188                                         <table border="0" cellpadding="1" cellspacing="1">
01189                                                 '.implode('
01190                                                 ',$row).'
01191                                         </table>
01192                                 '
01193                         );
01194 
01195                                 // Upload file:
01196                         $tempFolder = $this->userTempFolder();
01197                         if ($tempFolder)        {
01198                                 $row = array();
01199 
01200                                 $row[] = '<tr class="bgColor5">
01201                                                 <td colspan="2"><strong>'.$LANG->getLL('importdata_uploadFileFromLocal',1).'</strong></td>
01202                                         </tr>';
01203 
01204                                 $row[] = '<tr class="bgColor4">
01205                                                 <td>'.$LANG->getLL('importdata_browse',1).t3lib_BEfunc::cshItem('xMOD_tx_impexp', 'upload', $GLOBALS['BACK_PATH'],'').'</td>
01206                                                 <td>
01207 
01208                                                                 <input type="file" name="upload_1"'.$this->doc->formWidth(35).' size="40" />
01209                                                                 <input type="hidden" name="file[upload][1][target]" value="'.htmlspecialchars($tempFolder).'" />
01210                                                                 <input type="hidden" name="file[upload][1][data]" value="1" /><br />
01211 
01212                                                                 <input type="submit" name="_upload" value="'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:file_upload.php.submit',1).'" />
01213                                                                 <input type="checkbox" name="overwriteExistingFiles" value="1" checked="checked" /> '.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_misc.php:overwriteExistingFiles',1).'
01214                                                 </td>
01215                                         </tr>';
01216 
01217                                 if (t3lib_div::_POST('_upload'))        {
01218                                         $row[] = '<tr class="bgColor4">
01219                                                         <td>'.$LANG->getLL('importdata_uploadStatus',1).'</td>
01220                                                         <td>'.($this->fileProcessor->internalUploadMap[1] ? $LANG->getLL('importdata_success',1).' '.substr($this->fileProcessor->internalUploadMap[1],strlen(PATH_site)) : '<span class="typo3-red">'.$LANG->getLL('importdata_failureNoFileUploaded',1).'</span>').'</td>
01221                                                 </tr>';
01222                                 }
01223 
01224                                 $menuItems[] = array(
01225                                         'label' => $LANG->getLL('importdata_upload'),
01226                                         'content' => '
01227                                                 <table border="0" cellpadding="1" cellspacing="1">
01228                                                         '.implode('
01229                                                         ',$row).'
01230                                                 </table>
01231                                         '
01232                                 );
01233                         }
01234 
01235 
01236                                 // Perform import or preview depending:
01237                         $overviewContent = '';
01238                         $extensionInstallationMessage = '';
01239                         $emURL = '';
01240                         $inFile = t3lib_div::getFileAbsFileName($inData['file']);
01241                         if ($inFile && @is_file($inFile))       {
01242                                 $trow = array();
01243                                 if ($import->loadFile($inFile,1))       {
01244 
01245                                                 // Check extension dependencies:
01246                                         $extKeysToInstall = array();
01247                                         if (is_array($import->dat['header']['extensionDependencies']))  {
01248                                                 foreach($import->dat['header']['extensionDependencies'] as $extKey)     {
01249                                                         if (!t3lib_extMgm::isLoaded($extKey))   {
01250                                                                 $extKeysToInstall[] = $extKey;
01251                                                         }
01252                                                 }
01253                                         }
01254 
01255                                         if (count($extKeysToInstall)) {
01256                                                 $passParams = t3lib_div::_POST('tx_impexp');
01257                                                 unset($passParams['import_mode']);
01258                                                 unset($passParams['import_file']);
01259 
01260                                                 $thisScriptUrl = t3lib_div::getIndpEnv('REQUEST_URI').'?id='.$this->id.t3lib_div::implodeArrayForUrl('tx_impexp',$passParams);
01261                                                 $emURL = $this->doc->backPath.'mod/tools/em/index.php?CMD[requestInstallExtensions]='.implode(',',$extKeysToInstall).'&returnUrl='.rawurlencode($thisScriptUrl);
01262                                                 $extensionInstallationMessage = 'Before you can install this T3D file you need to install the extensions "'.implode('", "',$extKeysToInstall).'". Clicking Import will first take you to the Extension Manager so these dependencies can be resolved.';
01263                                         } 
01264 
01265                                         if ($inData['import_file'])     {
01266                                                 if (!count($extKeysToInstall))  {
01267                                                         $import->importData($this->id);
01268                                                         t3lib_BEfunc::getSetUpdateSignal('updatePageTree');
01269                                                 } else {
01270                                                         header('Location: '.t3lib_div::locationHeaderUrl($emURL));
01271                                                         exit;
01272                                                 }
01273                                         }
01274 
01275                                         $import->display_import_pid_record = $this->pageinfo;
01276                                         $overviewContent = $import->displayContentOverview();
01277                                 }
01278 
01279                                         // Meta data output:
01280                                 $trow[] = '<tr class="bgColor5">
01281                                                 <td colspan="2"><strong>'.$LANG->getLL('importdata_metaData',1).'</strong></td>
01282                                         </tr>';
01283 
01284                                 $opt = array('');
01285                                 foreach($filesInDir as $file)   {
01286                                         $opt[$file] = substr($file,strlen(PATH_site));
01287                                 }
01288 
01289                                 $trow[] = '<tr class="bgColor4">
01290                                         <td><strong>'.$LANG->getLL('importdata_title',1).'</strong></td>
01291                                         <td width="95%">'.nl2br(htmlspecialchars($import->dat['header']['meta']['title'])).'</td>
01292                                         </tr>';
01293 
01294                                 $trow[] = '<tr class="bgColor4">
01295                                         <td><strong>'.$LANG->getLL('importdata_description',1).'</strong></td>
01296                                         <td width="95%">'.nl2br(htmlspecialchars($import->dat['header']['meta']['description'])).'</td>
01297                                         </tr>';
01298 
01299                                 $trow[] = '<tr class="bgColor4">
01300                                         <td><strong>'.$LANG->getLL('importdata_notes',1).'</strong></td>
01301                                         <td width="95%">'.nl2br(htmlspecialchars($import->dat['header']['meta']['notes'])).'</td>
01302                                         </tr>';
01303 
01304                                 $trow[] = '<tr class="bgColor4">
01305                                         <td><strong>'.$LANG->getLL('importdata_packager',1).'</strong></td>
01306                                         <td width="95%">'.nl2br(htmlspecialchars($import->dat['header']['meta']['packager_name'].' ('.$import->dat['header']['meta']['packager_username'].')')).'<br/>
01307                                                 '.$LANG->getLL('importdata_email',1).' '.$import->dat['header']['meta']['packager_email'].'</td>
01308                                         </tr>';
01309 
01310                                         // Thumbnail icon:
01311                                 if (is_array($import->dat['header']['thumbnail']))      {
01312                                         $pI = pathinfo($import->dat['header']['thumbnail']['filename']);
01313                                         if (t3lib_div::inList('gif,jpg,png,jpeg',strtolower($pI['extension']))) {
01314 
01315                                                         // Construct filename and write it:
01316                                                 $fileName = PATH_site.
01317                                                                         'typo3temp/importthumb.'.$pI['extension'];
01318                                                 t3lib_div::writeFile($fileName, $import->dat['header']['thumbnail']['content']);
01319 
01320                                                         // Check that the image really is an image and not a malicious PHP script...
01321                                                 if (getimagesize($fileName))    {
01322                                                                 // Create icon tag:
01323                                                         $iconTag = '<img src="'.$this->doc->backPath.'../'.substr($fileName,strlen(PATH_site)).'" '.$import->dat['header']['thumbnail']['imgInfo'][3].' vspace="5" style="border: solid black 1px;" alt="" />';
01324 
01325                                                         $trow[] = '<tr class="bgColor4">
01326                                                                 <td><strong>'.$LANG->getLL('importdata_icon',1).'</strong></td>
01327                                                                 <td>'.$iconTag.'</td>
01328                                                                 </tr>';
01329                                                 } else {
01330                                                         t3lib_div::unlink_tempfile($fileName);
01331                                                 }
01332                                         }
01333                                 }
01334 
01335                                 $menuItems[] = array(
01336                                         'label' => $LANG->getLL('importdata_metaData_1387'),
01337                                         'content' => '
01338                                                 <table border="0" cellpadding="1" cellspacing="1">
01339                                                         '.implode('
01340                                                         ',$trow).'
01341                                                 </table>
01342                                         '
01343                                 );
01344                         }
01345 
01346                                 // Print errors that might be:
01347                         $errors = $import->printErrorLog();
01348                         $menuItems[] = array(
01349                                 'label' => $LANG->getLL('importdata_messages'),
01350                                 'content' => $errors,
01351                                 'stateIcon' => $errors ? 2 : 0
01352                         );
01353 
01354                                 // Output tabs:
01355                         $content = $this->doc->getDynTabMenu($menuItems,'tx_impexp_import',-1);
01356                         if ($extensionInstallationMessage)      {
01357                                 $content = '<div style="border: 1px black solid; margin: 10px 10px 10px 10px; padding: 10px 10px 10px 10px;">'.$this->doc->icons(1).htmlspecialchars($extensionInstallationMessage).'</div>'.$content;
01358                         }
01359                         $this->content.= $this->doc->section('',$content,0,1);
01360 
01361 
01362                                 // Print overview:
01363                         if ($overviewContent) {
01364                                 $this->content.= $this->doc->section($inData['import_file'] ? $LANG->getLL('importdata_structureHasBeenImported',1) : $LANG->getLL('filterpage_structureToBeImported',1), $overviewContent, 0, 1);
01365                         }
01366                 }
01367         }
01368 
01369 
01370 
01371 
01372 
01373 
01374 
01375 
01376 
01377 
01378 
01379 
01380 
01381         /****************************
01382          *
01383          * Preset functions
01384          *
01385          ****************************/
01386 
01393         function processPresets(&$inData)       {
01394 
01395                 $presetData = t3lib_div::_GP('preset');
01396                 $err = FALSE;
01397 
01398                         // Save preset
01399                 if (isset($presetData['save'])) {
01400                         $preset = $this->getPreset($presetData['select']);
01401                         if (is_array($preset))  {       // Update existing
01402                                 if ($GLOBALS['BE_USER']->isAdmin() || $preset['user_uid'] === $GLOBALS['BE_USER']->user['uid']) {
01403                                         $fields_values = array(
01404                                                 'public' => $inData['preset']['public'],
01405                                                 'title' => $inData['preset']['title'],
01406                                                 'item_uid' => $inData['pagetree']['id'],
01407                                                 'preset_data' => serialize($inData)
01408                                         );
01409                                         $GLOBALS['TYPO3_DB']->exec_UPDATEquery('tx_impexp_presets','uid='.intval($preset['uid']),$fields_values);
01410                                         $msg = 'Preset #'.$preset['uid'].' saved!';
01411                                 } else {
01412                                         $msg = 'ERROR: The preset was not saved because you were not the owner of it!';
01413                                         $err = TRUE;
01414                                 }
01415                         } else {        // Insert new:
01416                                 $fields_values = array(
01417                                         'user_uid' => $GLOBALS['BE_USER']->user['uid'],
01418                                         'public' => $inData['preset']['public'],
01419                                         'title' => $inData['preset']['title'],
01420                                         'item_uid' => $inData['pagetree']['id'],
01421                                         'preset_data' => serialize($inData)
01422                                 );
01423                                 $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_impexp_presets',$fields_values);
01424                                 $msg = 'New preset "'.$inData['preset']['title'].'" is created';
01425                         }
01426                 }
01427 
01428                         // Delete preset:
01429                 if (isset($presetData['delete']))       {
01430                         $preset = $this->getPreset($presetData['select']);
01431                         if (is_array($preset))  {       // Update existing
01432                                 if ($GLOBALS['BE_USER']->isAdmin() || $preset['user_uid'] === $GLOBALS['BE_USER']->user['uid']) {
01433                                         $GLOBALS['TYPO3_DB']->exec_DELETEquery('tx_impexp_presets','uid='.intval($preset['uid']));
01434                                         $msg = 'Preset #'.$preset['uid'].' deleted!';
01435                                 } else {
01436                                         $msg = 'ERROR: You were not the owner of the preset so you could not delete it.';
01437                                         $err = TRUE;
01438                                 }
01439                         } else {
01440                                 $msg = 'ERROR: No preset selected for deletion.';
01441                                 $err = TRUE;
01442                         }
01443                 }
01444 
01445                         // Load preset
01446                 if (isset($presetData['load']) || isset($presetData['merge']))  {
01447                         $preset = $this->getPreset($presetData['select']);
01448                         if (is_array($preset))  {       // Update existing
01449                                 $inData_temp = unserialize($preset['preset_data']);
01450                                 if (is_array($inData_temp))     {
01451                                         if (isset($presetData['merge']))        {
01452 
01453                                                         // Merge records in:
01454                                                 if (is_array($inData_temp['record']))   {
01455                                                         $inData['record'] = array_merge((array)$inData['record'], $inData_temp['record']);
01456                                                 }
01457 
01458                                                         // Merge lists in:
01459                                                 if (is_array($inData_temp['list']))     {
01460                                                         $inData['list'] = array_merge((array)$inData['list'], $inData_temp['list']);
01461                                                 }
01462                                         } else {
01463                                                 $msg = 'Preset #'.$preset['uid'].' loaded!';
01464                                                 $inData = $inData_temp;
01465                                         }
01466                                 } else {
01467                                         $msg = 'ERROR: No configuratio data found in preset record!';
01468                                         $err = TRUE;
01469                                 }
01470                         } else {
01471                                 $msg = 'ERROR: No preset selected for loading.';
01472                                 $err = TRUE;
01473                         }
01474                 }
01475 
01476                         // Show message:
01477                 if (strlen($msg))       {
01478                         $this->content.= $this->doc->section('Presets',$msg,0,1,$err ? 3 : 1);
01479                 }
01480         }
01481 
01488         function getPreset($uid)        {
01489                 list($preset) = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('*','tx_impexp_presets','uid='.intval($uid));
01490                 return $preset;
01491         }
01492 
01493 
01494 
01495 
01496 
01497 
01498 
01499 
01500 
01501 
01502 
01503         /****************************
01504          *
01505          * Helper functions
01506          *
01507          ****************************/
01508 
01514         function userTempFolder()       {
01515                 global $FILEMOUNTS;
01516 
01517                 foreach($FILEMOUNTS as $filePathInfo)   {
01518                         $tempFolder = $filePathInfo['path'].'_temp_/';
01519                         if (@is_dir($tempFolder))       {
01520                                 return $tempFolder;
01521                         }
01522                 }
01523         }
01524 
01530         function userSaveFolder()       {
01531                 global $FILEMOUNTS;
01532 
01533                 reset($FILEMOUNTS);
01534                 $filePathInfo = current($FILEMOUNTS);
01535 
01536                 if (is_array($filePathInfo))    {
01537                         $tempFolder = $filePathInfo['path'].'export/';
01538                         if (!@is_dir($tempFolder))      {
01539                                 $tempFolder = $filePathInfo['path'];
01540                                 if (!@is_dir($tempFolder))      {
01541                                         return FALSE;
01542                                 }
01543                         }
01544                         return $tempFolder;
01545                 }
01546         }
01547 
01553         function checkUpload()  {
01554                 global $FILEMOUNTS,$TYPO3_CONF_VARS,$BE_USER;
01555 
01556                 $file = t3lib_div::_GP('file');
01557 
01558                         // Initializing:
01559                 $this->fileProcessor = t3lib_div::makeInstance('t3lib_extFileFunctions');
01560                 $this->fileProcessor->init($FILEMOUNTS, $TYPO3_CONF_VARS['BE']['fileExtensions']);
01561                 $this->fileProcessor->init_actionPerms($BE_USER->user['fileoper_perms']);
01562                 $this->fileProcessor->dontCheckForUnique = t3lib_div::_GP('overwriteExistingFiles') ? 1 : 0;
01563 
01564                         // Checking referer / executing:
01565                 $refInfo = parse_url(t3lib_div::getIndpEnv('HTTP_REFERER'));
01566                 $httpHost = t3lib_div::getIndpEnv('TYPO3_HOST_ONLY');
01567                 if ($httpHost!=$refInfo['host'] && $this->vC!=$BE_USER->veriCode() && !$TYPO3_CONF_VARS['SYS']['doNotCheckReferer'])    {
01568                         $this->fileProcessor->writeLog(0,2,1,'Referer host "%s" and server host "%s" did not match!',array($refInfo['host'],$httpHost));
01569                 } else {
01570                         $this->fileProcessor->start($file);
01571                         $this->fileProcessor->processData();
01572                 }
01573         }
01574 
01583         function renderSelectBox($prefix,$value,$optValues)     {
01584                 $opt = array();
01585                 $isSelFlag = 0;
01586                 reset($optValues);
01587                 while(list($k,$v) = each($optValues))   {
01588                         $sel = (!strcmp($k,$value) ? ' selected="selected"' : '');
01589                         if ($sel)       $isSelFlag++;
01590                         $opt[] = '<option value="'.htmlspecialchars($k).'"'.$sel.'>'.htmlspecialchars($v).'</option>';
01591                 }
01592                 if (!$isSelFlag && strcmp('',$value))   {
01593                         $opt[] = '<option value="'.htmlspecialchars($value).'" selected="selected">'.htmlspecialchars("['".$value."']").'</option>';
01594                 }
01595                 return '<select name="'.$prefix.'">'.implode('',$opt).'</select>';
01596         }
01597 
01606         function tableSelector($prefix,$value,$excludeList='')  {
01607                 global $TCA, $LANG;
01608 
01609                 reset($TCA);
01610                 $optValues = array();
01611 
01612                 if (!t3lib_div::inList($excludeList,'_ALL'))    {
01613                         $optValues['_ALL'] = '['.$LANG->getLL('ALL_tables').']';
01614                 }
01615 
01616                 while(list($table) = each($TCA))        {
01617                         if ($GLOBALS['BE_USER']->check('tables_select',$table) && !t3lib_div::inList($excludeList,$table))      {
01618                                 $optValues[$table] = $table;
01619                         }
01620                 }
01621 
01622                         // make box:
01623                 $opt = array();
01624                 $opt[] = '<option value=""></option>';
01625                 reset($optValues);
01626                 while(list($k,$v)=each($optValues))     {
01627                         if (is_array($value))   {
01628                                 $sel = in_array($k,$value)?' selected="selected"':'';
01629                         }
01630                         $opt[] = '<option value="'.htmlspecialchars($k).'"'.$sel.'>'.htmlspecialchars($v).'</option>';
01631                 }
01632                 return '<select name="'.$prefix.'[]" multiple="multiple" size="'.t3lib_div::intInRange(count($opt),5,10).'">'.implode('',$opt).'</select>';
01633         }
01634 
01642         function extensionSelector($prefix,$value)      {
01643                 global $TYPO3_LOADED_EXT;
01644 
01645                 $extTrav = array_keys($TYPO3_LOADED_EXT);
01646 
01647                         // make box:
01648                 $opt = array();
01649                 $opt[] = '<option value=""></option>';
01650                 foreach($extTrav as $v) {
01651                         if ($v!=='_CACHEFILE')  {
01652                                 if (is_array($value))   {
01653                                         $sel = in_array($v,$value)?' selected="selected"':'';
01654                                 }
01655                                 $opt[] = '<option value="'.htmlspecialchars($v).'"'.$sel.'>'.htmlspecialchars($v).'</option>';
01656                         }
01657                 }
01658                 return '<select name="'.$prefix.'[]" multiple="multiple" size="'.t3lib_div::intInRange(count($opt),5,10).'">'.implode('',$opt).'</select>';
01659         }
01660 
01667         function filterPageIds($exclude)        {
01668 
01669                         // Get keys:
01670                 $exclude = array_keys($exclude);
01671 
01672                         // Traverse
01673                 $pageIds = array();
01674                 foreach($exclude as $element)   {
01675                         list($table,$uid) = explode(':', $element);
01676                         if ($table==='pages')   {
01677                                 $pageIds[] = intval($uid);
01678                         }
01679                 }
01680 
01681                         // Add to clause:
01682                 if (count($pageIds))    {
01683                         return ' AND uid NOT IN ('.implode(',', $pageIds).')';
01684                 }
01685         }
01686 }
01687 
01688 // Include extension?
01689 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/impexp/app/index.php'])        {
01690         include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/impexp/app/index.php']);
01691 }
01692 
01693 
01694 
01695 
01696 
01697 
01698 
01699 
01700 
01701 
01702 
01703 
01704 // Make instance:
01705 $SOBE = t3lib_div::makeInstance('SC_mod_tools_log_index');
01706 $SOBE->init();
01707 $SOBE->main();
01708 $SOBE->printContent();
01709 ?>


Généré par Le spécialiste TYPO3 avec  doxygen 1.4.6