[ Index ]
 

Code source de Typo3 4.1.3

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/t3lib/ -> class.t3lib_fullsearch.php (source)

   1  <?php
   2  /***************************************************************
   3  *  Copyright notice
   4  *
   5  *  (c) 1999-2006 Kasper Skaarhoj (kasperYYYY@typo3.com)
   6  *  All rights reserved
   7  *
   8  *  This script is part of the TYPO3 project. The TYPO3 project is
   9  *  free software; you can redistribute it and/or modify
  10  *  it under the terms of the GNU General Public License as published by
  11  *  the Free Software Foundation; either version 2 of the License, or
  12  *  (at your option) any later version.
  13  *
  14  *  The GNU General Public License can be found at
  15  *  http://www.gnu.org/copyleft/gpl.html.
  16  *  A copy is found in the textfile GPL.txt and important notices to the license
  17  *  from the author is found in LICENSE.txt distributed with these scripts.
  18  *
  19  *
  20  *  This script is distributed in the hope that it will be useful,
  21  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  22  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  23  *  GNU General Public License for more details.
  24  *
  25  *  This copyright notice MUST APPEAR in all copies of the script!
  26  ***************************************************************/
  27  /**
  28   * Class used in module tools/dbint (advanced search) and which may hold code specific for that module
  29   * However the class has a general principle in it which may be used in the web/export module.
  30   *
  31   * $Id: class.t3lib_fullsearch.php 1421 2006-04-10 09:27:15Z mundaun $
  32   *
  33   * @author    Kasper Skaarhoj <kasperYYYY@typo3.com>
  34   * @coauthor    Jo Hasenau <info@cybercraft.de>
  35   */
  36  /**
  37   * [CLASS/FUNCTION INDEX of SCRIPT]
  38   *
  39   *
  40   *
  41   *   88: class t3lib_fullsearch
  42   *  103:     function form()
  43   *  117:     function makeStoreControl()
  44   *  156:     function initStoreArray()
  45   *  176:     function cleanStoreQueryConfigs($storeQueryConfigs,$storeArray)
  46   *  193:     function addToStoreQueryConfigs($storeQueryConfigs,$index)
  47   *  209:     function saveQueryInAction($uid)
  48   *  256:     function loadStoreQueryConfigs($storeQueryConfigs,$storeIndex,$writeArray)
  49   *  272:     function procesStoreControl()
  50   *  344:     function queryMaker()
  51   *  414:     function getQueryResultCode($mQ,$res,$table)
  52   *  534:     function csvValues($row, $delim=',', $quote='"', $conf=array(), $table='')
  53   *  550:     function tableWrap($str)
  54   *  559:     function search()
  55   *  614:     function resultRowDisplay($row,$conf,$table)
  56   *  662:     function getProcessedValueExtra($table, $fN, $fV, $conf, $splitString)
  57   *  781:     function getTreeList($id, $depth, $begin = 0, $perms_clause)
  58   *  818:     function makeValueList($fN, $fV, $conf, $table, $splitString)
  59   * 1028:     function resultRowTitles($row,$conf,$table)
  60   * 1058:     function csvRowTitles($row, $conf, $table)
  61   *
  62   * TOTAL FUNCTIONS: 19
  63   * (This index is automatically created/updated by the extension "extdeveval")
  64   *
  65   */
  66  
  67  
  68  
  69  
  70  
  71  
  72  
  73  
  74  
  75  
  76  
  77  
  78  
  79  
  80  /**
  81   * Class used in module tools/dbint (advanced search) and which may hold code specific for that module
  82   * However the class has a general principle in it which may be used in the web/export module.
  83   *
  84   * @author    Kasper Skaarhoj <kasperYYYY@typo3.com>
  85   * @package TYPO3
  86   * @subpackage t3lib
  87   */
  88  class t3lib_fullsearch {
  89      var $storeList = 'search_query_smallparts,search_result_labels,labels_noprefix,show_deleted,queryConfig,queryTable,queryFields,queryLimit,queryOrder,queryOrderDesc,queryOrder2,queryOrder2Desc,queryGroup,search_query_makeQuery';
  90      var $downloadScript = 'index.php';
  91      var $formW=48;
  92      var $noDownloadB=0;
  93  
  94  
  95  
  96  
  97  
  98      /**
  99       * [Describe function...]
 100       *
 101       * @return    [type]        ...
 102       */
 103  	function form()    {
 104          $out='
 105          Search Word:<BR>
 106          <input type="text" name="SET[sword]" value="'.htmlspecialchars($GLOBALS['SOBE']->MOD_SETTINGS['sword']).'"'.$GLOBALS['TBE_TEMPLATE']->formWidth(20).'><input type="submit" name="submit" value="Search All Records">
 107          ';
 108  
 109          return $out;
 110      }
 111  
 112      /**
 113       * [Describe function...]
 114       *
 115       * @return    [type]        ...
 116       */
 117  	function makeStoreControl()    {
 118              // Load/Save
 119          $storeArray = $this->initStoreArray();
 120          $cur='';
 121  
 122              // Store Array:
 123          $opt=array();
 124          reset($storeArray);
 125          while(list($k,$v)=each($storeArray))    {
 126              $opt[]='<option value="'.$k.'"'.(!strcmp($cur,$v)?' selected':'').'>'.htmlspecialchars($v).'</option>';
 127          }
 128  
 129              // Actions:
 130          if (t3lib_extMgm::isLoaded('sys_action') && $GLOBALS['BE_USER']->isAdmin())    {
 131              $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_action', 'type=2', '', 'title');
 132              if ($GLOBALS['TYPO3_DB']->sql_num_rows($res))    {
 133                  $opt[]='<option value="0">__Save to Action:__</option>';
 134                  while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))    {
 135                      $opt[]='<option value="-'.$row['uid'].'"'.(!strcmp($cur,'-'.$row['uid'])?' selected':'').'>'.htmlspecialchars($row['title'].' ['.$row['uid'].']').'</option>';
 136                  }
 137              }
 138              $GLOBALS['TYPO3_DB']->sql_free_result($res);
 139          }
 140  
 141          $TDparams=' nowrap="nowrap" class="bgColor4"';
 142          $tmpCode='
 143          <table border="0" cellpadding="3" cellspacing="1">
 144          <tr'.$TDparams.'><td><select name="storeControl[STORE]" onChange="document.forms[0][\'storeControl[title]\'].value= this.options[this.selectedIndex].value!=0 ? this.options[this.selectedIndex].text : \'\';">'.implode(chr(10),$opt).'</select><input type="submit" name="storeControl[LOAD]" value="Load"></td></tr>
 145          <tr'.$TDparams.'><td nowrap><input name="storeControl[title]" value="" type="text" max="80"'.$GLOBALS['SOBE']->doc->formWidth().'><input type="submit" name="storeControl[SAVE]" value="Save" onClick="if (document.forms[0][\'storeControl[STORE]\'].options[document.forms[0][\'storeControl[STORE]\'].selectedIndex].value<0) return confirm(\'Are you sure you want to overwrite the existing query in this action?\');"><input type="submit" name="storeControl[REMOVE]" value="Remove"></td></tr>
 146          </table>
 147          ';
 148          return $tmpCode;
 149      }
 150  
 151      /**
 152       * [Describe function...]
 153       *
 154       * @return    [type]        ...
 155       */
 156  	function initStoreArray()    {
 157          $storeArray=array(
 158              '0' => '[New]'
 159          );
 160  
 161          $savedStoreArray = unserialize($GLOBALS['SOBE']->MOD_SETTINGS['storeArray']);
 162  
 163          if (is_array($savedStoreArray))    {
 164              $storeArray = array_merge($storeArray,$savedStoreArray);
 165          }
 166          return $storeArray;
 167      }
 168  
 169      /**
 170       * [Describe function...]
 171       *
 172       * @param    [type]        $storeQueryConfigs: ...
 173       * @param    [type]        $storeArray: ...
 174       * @return    [type]        ...
 175       */
 176  	function cleanStoreQueryConfigs($storeQueryConfigs,$storeArray)    {
 177          if (is_array($storeQueryConfigs))    {
 178              reset($storeQueryConfigs);
 179              while(list($k,$v)=each($storeQueryConfigs))    {
 180                  if (!isset($storeArray[$k]))    unset($storeQueryConfigs[$k]);
 181              }
 182          }
 183          return $storeQueryConfigs;
 184      }
 185  
 186      /**
 187       * [Describe function...]
 188       *
 189       * @param    [type]        $storeQueryConfigs: ...
 190       * @param    [type]        $index: ...
 191       * @return    [type]        ...
 192       */
 193  	function addToStoreQueryConfigs($storeQueryConfigs,$index)    {
 194          $keyArr = explode(',',$this->storeList);
 195          reset($keyArr);
 196          $storeQueryConfigs[$index]=array();
 197          while(list(,$k)=each($keyArr))    {
 198              $storeQueryConfigs[$index][$k]=$GLOBALS['SOBE']->MOD_SETTINGS[$k];
 199          }
 200          return $storeQueryConfigs;
 201      }
 202  
 203      /**
 204       * [Describe function...]
 205       *
 206       * @param    [type]        $uid: ...
 207       * @return    [type]        ...
 208       */
 209  	function saveQueryInAction($uid)    {
 210          if (t3lib_extMgm::isLoaded('sys_action'))    {
 211              $keyArr = explode(',',$this->storeList);
 212              reset($keyArr);
 213              $saveArr=array();
 214              while(list(,$k)=each($keyArr))    {
 215                  $saveArr[$k]=$GLOBALS['SOBE']->MOD_SETTINGS[$k];
 216              }
 217  
 218              $qOK = 0;
 219                  // Show query
 220              if ($saveArr['queryTable'])    {
 221                  $qGen = t3lib_div::makeInstance('t3lib_queryGenerator');
 222                  $qGen->init('queryConfig',$saveArr['queryTable']);
 223                  $qGen->makeSelectorTable($saveArr);
 224  
 225                  $qGen->enablePrefix=1;
 226                  $qString = $qGen->getQuery($qGen->queryConfig);
 227                  $qCount = $GLOBALS['TYPO3_DB']->SELECTquery('count(*)', $qGen->table, $qString.t3lib_BEfunc::deleteClause($qGen->table));
 228                  $qSelect = $qGen->getSelectQuery($qString);
 229  
 230                  $res = @$GLOBALS['TYPO3_DB']->sql(TYPO3_db,$qCount);
 231                  if (!$GLOBALS['TYPO3_DB']->sql_error())    {
 232                      $dA = array();
 233                      $dA['t2_data'] = serialize(array(
 234                          'qC'=>$saveArr,
 235                          'qCount' => $qCount,
 236                          'qSelect' => $qSelect,
 237                          'qString' => $qString
 238                      ));
 239                      $GLOBALS['TYPO3_DB']->exec_UPDATEquery('sys_action', 'uid='.intval($uid), $dA);
 240                      $qOK=1;
 241                  }
 242              }
 243  
 244              return $qOK;
 245          }
 246      }
 247  
 248      /**
 249       * [Describe function...]
 250       *
 251       * @param    [type]        $storeQueryConfigs: ...
 252       * @param    [type]        $storeIndex: ...
 253       * @param    [type]        $writeArray: ...
 254       * @return    [type]        ...
 255       */
 256  	function loadStoreQueryConfigs($storeQueryConfigs,$storeIndex,$writeArray)    {
 257          if ($storeQueryConfigs[$storeIndex])    {
 258              $keyArr = explode(',',$this->storeList);
 259              reset($keyArr);
 260              while(list(,$k)=each($keyArr))    {
 261                  $writeArray[$k]=$storeQueryConfigs[$storeIndex][$k];
 262              }
 263          }
 264          return $writeArray;
 265      }
 266  
 267      /**
 268       * [Describe function...]
 269       *
 270       * @return    [type]        ...
 271       */
 272  	function procesStoreControl()    {
 273          $storeArray = $this->initStoreArray();
 274          $storeQueryConfigs = unserialize($GLOBALS['SOBE']->MOD_SETTINGS['storeQueryConfigs']);
 275  
 276          $storeControl = t3lib_div::_GP('storeControl');
 277          $storeIndex = intval($storeControl['STORE']);
 278          $saveStoreArray=0;
 279          $writeArray=array();
 280          if (is_array($storeControl))    {
 281              if ($storeControl['LOAD'])    {
 282                  if ($storeIndex>0)    {
 283                      $writeArray=$this->loadStoreQueryConfigs($storeQueryConfigs,$storeIndex,$writeArray);
 284                      $saveStoreArray=1;
 285                      $msg="'".htmlspecialchars($storeArray[$storeIndex])."' query loaded!";
 286                  } elseif ($storeIndex<0 && t3lib_extMgm::isLoaded('sys_action'))    {
 287                      $actionRecord=t3lib_BEfunc::getRecord('sys_action',abs($storeIndex));
 288                      if (is_array($actionRecord))    {
 289                          $dA = unserialize($actionRecord['t2_data']);
 290                          $dbSC=array();
 291                          if (is_array($dA['qC']))    {
 292                              $dbSC[0] = $dA['qC'];
 293                          }
 294                          $writeArray=$this->loadStoreQueryConfigs($dbSC,'0',$writeArray);
 295                          $saveStoreArray=1;
 296                          $acTitle=htmlspecialchars($actionRecord['title']);
 297                          $msg="Query from action '".$acTitle."' loaded!";
 298                      }
 299                  }
 300              } elseif ($storeControl['SAVE'])    {
 301                  if ($storeIndex<0)    {
 302                      $qOK = $this->saveQueryInAction(abs($storeIndex));
 303                      if ($qOK)    {
 304                          $msg='Query OK and saved.';
 305                      } else {
 306                          $msg='No query saved!';
 307                      }
 308                  } else {
 309                      if (trim($storeControl['title']))    {
 310                          if ($storeIndex>0)    {
 311                              $storeArray[$storeIndex]=$storeControl['title'];
 312                          } else {
 313                              $storeArray[]=$storeControl['title'];
 314                              end($storeArray);
 315                              $storeIndex=key($storeArray);
 316                          }
 317                          $storeQueryConfigs=$this->addToStoreQueryConfigs($storeQueryConfigs,$storeIndex);
 318                          $saveStoreArray=1;
 319                          $msg="'".htmlspecialchars($storeArray[$storeIndex])."' query saved!";
 320                      }
 321                  }
 322              } elseif ($storeControl['REMOVE'])    {
 323                  if ($storeIndex>0)    {
 324                      $msg="'".$storeArray[$storeControl['STORE']]."' query entry removed!";
 325                      unset($storeArray[$storeControl['STORE']]);    // Removing
 326                      $saveStoreArray=1;
 327                  }
 328              }
 329          }
 330          if ($saveStoreArray)    {
 331              unset($storeArray[0]);    // making sure, index 0 is not set!
 332              $writeArray['storeArray']=serialize($storeArray);
 333              $writeArray['storeQueryConfigs']=serialize($this->cleanStoreQueryConfigs($storeQueryConfigs,$storeArray));
 334              $GLOBALS['SOBE']->MOD_SETTINGS = t3lib_BEfunc::getModuleData($GLOBALS['SOBE']->MOD_MENU, $writeArray, $GLOBALS['SOBE']->MCONF['name'], 'ses');
 335          }
 336          return $msg;
 337      }
 338  
 339      /**
 340       * [Describe function...]
 341       *
 342       * @return    [type]        ...
 343       */
 344  	function queryMaker()    {
 345          global $TCA;
 346  
 347          if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['t3lib_fullsearch']))    {
 348              $this->hookArray = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['t3lib_fullsearch'];
 349          }
 350          $msg=$this->procesStoreControl();
 351  
 352          if (!$GLOBALS['BE_USER']->userTS['mod.']['dbint.']['disableStoreControl']) {
 353              $output.= $GLOBALS['SOBE']->doc->section('Load/Save Query',$this->makeStoreControl(),0,1);
 354              if ($msg)    {
 355                  $output.= $GLOBALS['SOBE']->doc->section('','<font color=red><strong>'.$msg.'</strong></font>');
 356              }
 357              $output.= $GLOBALS['SOBE']->doc->spacer(20);
 358          }
 359  
 360  
 361              // Query Maker:
 362          $qGen = t3lib_div::makeInstance('t3lib_queryGenerator');
 363          $qGen->init('queryConfig',$GLOBALS['SOBE']->MOD_SETTINGS['queryTable']);
 364          $tmpCode=$qGen->makeSelectorTable($GLOBALS['SOBE']->MOD_SETTINGS);
 365          $output.= $GLOBALS['SOBE']->doc->section('Make query',$tmpCode,0,1);
 366  
 367          $mQ = $GLOBALS['SOBE']->MOD_SETTINGS['search_query_makeQuery'];
 368  
 369              // Make form elements:
 370          if ($qGen->table && is_array($TCA[$qGen->table]))    {
 371              if ($mQ)    {
 372                      // Show query
 373                  $qGen->enablePrefix=1;
 374                  $qString = $qGen->getQuery($qGen->queryConfig);
 375  //                debug($qGen->queryConfig);
 376  
 377                  switch($mQ)    {
 378                      case 'count':
 379                          $qExplain = $GLOBALS['TYPO3_DB']->SELECTquery('count(*)', $qGen->table, $qString.t3lib_BEfunc::deleteClause($qGen->table));
 380                      break;
 381                      default:
 382                          $qExplain = $qGen->getSelectQuery($qString);
 383                          if ($mQ=='explain')    {
 384                              $qExplain='EXPLAIN '.$qExplain;
 385                          }
 386                      break;
 387                  }
 388  
 389          if (!$GLOBALS['BE_USER']->userTS['mod.']['dbint.']['disableShowSQLQuery'])    {
 390                  $output.= $GLOBALS['SOBE']->doc->section('SQL query',$this->tableWrap(htmlspecialchars($qExplain)),0,1);
 391          }
 392  
 393                  $res = @$GLOBALS['TYPO3_DB']->sql(TYPO3_db,$qExplain);
 394                  if ($GLOBALS['TYPO3_DB']->sql_error())    {
 395                      $out.='<BR><strong>Error:</strong><BR><font color="red"><strong>'.$GLOBALS['TYPO3_DB']->sql_error().'</strong></font>';
 396                      $output.= $GLOBALS['SOBE']->doc->section('SQL error',$out,0,1);
 397                  } else {
 398                      $cPR = $this->getQueryResultCode($mQ,$res,$qGen->table);
 399                      $output.=$GLOBALS['SOBE']->doc->section($cPR['header'],$cPR['content'],0,1);
 400                  }
 401              }
 402          }
 403          return $output;
 404      }
 405  
 406      /**
 407       * [Describe function...]
 408       *
 409       * @param    [type]        $mQ: ...
 410       * @param    [type]        $res: ...
 411       * @param    [type]        $table: ...
 412       * @return    [type]        ...
 413       */
 414  	function getQueryResultCode($mQ,$res,$table)    {
 415          global $TCA;
 416          $output='';
 417          $cPR=array();
 418          switch($mQ)    {
 419              case 'count':
 420                  $row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
 421                  $cPR['header']='Count';
 422                  $cPR['content']='<BR><strong>'.$row[0]. '</strong> records selected.';
 423              break;
 424              case 'all':
 425                  $rowArr=array();
 426                  while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))    {
 427                      $rowArr[]=$this->resultRowDisplay($row,$TCA[$table],$table);
 428                      $lrow=$row;
 429                  }
 430                  if (is_array($this->hookArray['beforeResultTable']))    {
 431                      foreach ($this->hookArray['beforeResultTable'] as $_funcRef)    {
 432                          $out.=t3lib_div::callUserFunction($_funcRef, $GLOBALS['SOBE']->MOD_SETTINGS, $this);
 433                      }
 434                  }
 435                  if (count($rowArr))    {
 436                      $out.='<table border="0" cellpadding="2" cellspacing="1" width="100%">'.$this->resultRowTitles($lrow, $TCA[$table], $table).implode(chr(10), $rowArr).'</table>';
 437                  }
 438                  if (!$out)    $out='<em>No rows selected!</em>';
 439                  $cPR['header']='Result';
 440                  $cPR['content']=$out;
 441              break;
 442              case 'csv':
 443                  $rowArr=array();
 444                  $first=1;
 445                  while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))    {
 446                      if ($first)    {
 447                          $rowArr[]=$this->csvValues(array_keys($row),',','');
 448                          $first=0;
 449                      }
 450                      $rowArr[]=$this->csvValues($row, ',', '"', $TCA[$table], $table);
 451                  }
 452                  if (count($rowArr))    {
 453                      $out.='<textarea name="whatever" rows="20" wrap="off"'.$GLOBALS['SOBE']->doc->formWidthText($this->formW,'','off').' class="fixed-font">'.t3lib_div::formatForTextarea(implode(chr(10),$rowArr)).'</textarea>';
 454                      if (!$this->noDownloadB)    {
 455                          $out.='<BR><input type="submit" name="download_file" value="Click to download file" onClick="window.location.href=\''.$this->downloadScript.'\';">';        // document.forms[0].target=\'_blank\';
 456                      }
 457                          // Downloads file:
 458                      if (t3lib_div::_GP('download_file'))    {
 459                          $filename='TYPO3_'.$table.'_export_'.date('dmy-Hi').'.csv';
 460                          $mimeType = 'application/octet-stream';
 461                          header('Content-Type: '.$mimeType);
 462                          header('Content-Disposition: attachment; filename='.$filename);
 463                          echo implode(chr(13).chr(10),$rowArr);
 464                          exit;
 465                      }
 466                  }
 467                  if (!$out)    $out='<em>No rows selected!</em>';
 468                  $cPR['header']='Result';
 469                  $cPR['content']=$out;
 470              break;
 471              case 'xml':
 472                  $className=t3lib_div::makeInstanceClassName('t3lib_xml');
 473                  $xmlObj = new $className('typo3_export');
 474                  $xmlObj->includeNonEmptyValues=1;
 475                  $xmlObj->renderHeader();
 476                  $first=1;
 477                  while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))    {
 478                      if ($first)    {
 479                          $xmlObj->setRecFields($table,implode(',',array_keys($row)));
 480          //                debug($xmlObj->XML_recFields);
 481                          $first=0;
 482                      }
 483                      $valueArray = $row;
 484                      if ($GLOBALS['SOBE']->MOD_SETTINGS['search_result_labels'])    {
 485                          foreach ($valueArray as $key => $val)    {
 486                              $valueArray[$key] = $this->getProcessedValueExtra($table, $key, $val, $conf, ',');
 487                          }
 488                      }
 489                      $xmlObj->addRecord($table, $valueArray);
 490                  }
 491                  $xmlObj->renderFooter();
 492                  if ($GLOBALS['TYPO3_DB']->sql_num_rows($res))    {
 493                      $xmlData=$xmlObj->getResult();
 494                      $out.='<textarea name="whatever" rows="20" wrap="off"'.$GLOBALS['SOBE']->doc->formWidthText($this->formW,'','off').' class="fixed-font">'.t3lib_div::formatForTextarea($xmlData).'</textarea>';
 495                      if (!$this->noDownloadB)    {
 496                          $out.='<BR><input type="submit" name="download_file" value="Click to download file" onClick="window.location.href=\''.$this->downloadScript.'\';">';        // document.forms[0].target=\'_blank\';
 497                      }
 498                          // Downloads file:
 499                      if (t3lib_div::_GP('download_file'))    {
 500                          $filename='TYPO3_'.$table.'_export_'.date('dmy-Hi').'.xml';
 501                          $mimeType = 'application/octet-stream';
 502                          header('Content-Type: '.$mimeType);
 503                          header('Content-Disposition: attachment; filename='.$filename);
 504                          echo $xmlData;
 505                          exit;
 506                      }
 507                  }
 508                  if (!$out)    $out='<em>No rows selected!</em>';
 509                  $cPR['header']='Result';
 510                  $cPR['content']=$out;
 511              break;
 512              case 'explain':
 513              default:
 514                  while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))    {
 515                      $out.='<BR>'.t3lib_div::view_array($row);
 516                  }
 517                  $cPR['header']='Explain SQL query';
 518                  $cPR['content']=$out;
 519              break;
 520          }
 521          return $cPR;
 522      }
 523  
 524      /**
 525       * [Describe function...]
 526       *
 527       * @param    [type]        $row: ...
 528       * @param    [type]        $delim: ...
 529       * @param    [type]        $quote: ...
 530       * @param    [type]        $conf: ...
 531       * @param    [type]        $table: ...
 532       * @return    [type]        ...
 533       */
 534  	function csvValues($row, $delim=',', $quote='"', $conf=array(), $table='')    {
 535          $valueArray = $row;
 536          if ($GLOBALS['SOBE']->MOD_SETTINGS['search_result_labels'] && $table)    {
 537              foreach ($valueArray as $key => $val)    {
 538                  $valueArray[$key] = $this->getProcessedValueExtra($table, $key, $val, $conf, ';');
 539              }
 540          }
 541          return t3lib_div::csvValues($valueArray, $delim, $quote);
 542      }
 543  
 544      /**
 545       * [Describe function...]
 546       *
 547       * @param    [type]        $str: ...
 548       * @return    [type]        ...
 549       */
 550  	function tableWrap($str)    {
 551          return '<table border="0" cellpadding="10" cellspacing="0" class="bgColor4"><tr><td nowrap><pre>'.$str.'</pre></td></tr></table>';
 552      }
 553  
 554      /**
 555       * [Describe function...]
 556       *
 557       * @return    [type]        ...
 558       */
 559  	function search()    {
 560          global $TCA;
 561          $SET = $GLOBALS['SOBE']->MOD_SETTINGS;
 562          $swords = $SET['sword'];
 563  
 564          $limit=200;
 565          $showAlways=0;
 566          if ($swords)    {
 567              reset($TCA);
 568              while(list($table)=each($TCA))    {
 569                      // Get fields list
 570                  t3lib_div::loadTCA($table);
 571                  $conf=$TCA[$table];
 572  
 573                  reset($conf['columns']);
 574                  $list=array();
 575                  while(list($field,)=each($conf['columns']))    {
 576                      $list[]=$field;
 577                  }
 578                      // Get query
 579                  $qp = $GLOBALS['TYPO3_DB']->searchQuery(array($swords), $list, $table);
 580  
 581                      // Count:
 582                  $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', $table, $qp.t3lib_BEfunc::deleteClause($table));
 583                  list($count) = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
 584                  if($count || $showAlways)    {
 585                          // Output header:
 586                      $out.='<strong>TABLE:</strong> '.$GLOBALS['LANG']->sL($conf['ctrl']['title']).'<BR>';
 587                      $out.='<strong>Results:</strong> '.$count.'<BR>';
 588  
 589                          // Show to limit
 590                      if ($count)    {
 591                          $rowArr = array();
 592                          $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid,'.$conf['ctrl']['label'], $table, $qp.t3lib_BEfunc::deleteClause($table), '', '', $limit);
 593                          while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))    {
 594                              $rowArr[]=$this->resultRowDisplay($row,$conf,$table);
 595                              $lrow=$row;
 596                          }
 597                          $out.='<table border="0" cellpadding="2" cellspacing="1">'.$this->resultRowTitles($lrow,$conf,$table).implode(chr(10),$rowArr).'</table>';
 598                      }
 599                      $out.='<HR>';
 600                  }
 601              }
 602          }
 603          return $out;
 604      }
 605  
 606      /**
 607       * [Describe function...]
 608       *
 609       * @param    [type]        $row: ...
 610       * @param    [type]        $conf: ...
 611       * @param    [type]        $table: ...
 612       * @return    [type]        ...
 613       */
 614  	function resultRowDisplay($row,$conf,$table)    {
 615          $tce = t3lib_div::makeInstance('t3lib_TCEmain');
 616          $SET = $GLOBALS['SOBE']->MOD_SETTINGS;
 617          $out='<tr class="bgColor4">';
 618          reset($row);
 619          while(list($fN,$fV)=each($row))    {
 620              if (t3lib_div::inList($SET['queryFields'], $fN) || (!$SET['queryFields'] && $fN!='pid' && $fN!='deleted'))    {
 621                  if ($SET['search_result_labels'])    {
 622                      $fVnew = $this->getProcessedValueExtra($table, $fN, $fV, $conf, '<br />');
 623                  } else {
 624                      $fVnew = $fV;
 625                  }
 626                  $out.='<td'.$TDparams.'>'.$fVnew.'</td>';
 627              }
 628          }
 629          $params = '&edit['.$table.']['.$row['uid'].']=edit';
 630          $out.='<td nowrap>';
 631          if (!$row['deleted'])    {
 632              $out .= '<a href="#" onClick="top.launchView(\''.$table.'\','.$row['uid'].',\''.$GLOBALS['BACK_PATH'].'\');return false;"><img src="'.$GLOBALS['BACK_PATH'].'gfx/zoom2.gif" width="12" height="12" alt="" /></a>';
 633              $out .= '<a href="#" onClick="'.t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'], t3lib_div::getIndpEnv('REQUEST_URI').t3lib_div::implodeArrayForUrl('SET', t3lib_div::_POST('SET'))).'"><img src="'.$GLOBALS['BACK_PATH'].'gfx/edit2.gif" width="11" height="12" border="0" alt=""></a>';
 634          } else {
 635              $out.= '<a href="'.t3lib_div::linkThisUrl($GLOBALS['BACK_PATH'].'tce_db.php', array('cmd['.$table.']['.$row['uid'].'][undelete]' => '1', 'redirect' => t3lib_div::linkThisScript(array()))).'">';
 636              $out.= '<img src="'.$GLOBALS['BACK_PATH'].'gfx/undelete.gif" width="13" height="12" border="0" alt="undelete" only></A>';
 637              $out.= '<a href="'.t3lib_div::linkThisUrl($GLOBALS['BACK_PATH'].'tce_db.php', array('cmd['.$table.']['.$row['uid'].'][undelete]' => '1', 'redirect' => t3lib_div::linkThisUrl('alt_doc.php', array('edit['.$table.']['.$row['uid'].']' => 'edit', 'returnUrl' => t3lib_div::linkThisScript(array()))))).'">';
 638              $out.= '<img src="'.$GLOBALS['BACK_PATH'].'gfx/undelete_and_edit.gif" width="13" height="12" border="0" alt="undelete and edit">';
 639          }
 640          $_params = array($table=>$row);
 641          if (is_array($this->hookArray['additionalButtons']))    {
 642              foreach ($this->hookArray['additionalButtons'] as $_funcRef)    {
 643                  $out.=t3lib_div::callUserFunction($_funcRef, $_params, $this);
 644              }
 645          }
 646          $out.='</td>
 647          </tr>
 648          ';
 649          return $out;
 650      }
 651  
 652      /**
 653       * [Describe function...]
 654       *
 655       * @param    [type]        $table: ...
 656       * @param    [type]        $fN: ...
 657       * @param    [type]        $fV: ...
 658       * @param    [type]        $conf: ...
 659       * @param    [type]        $splitString: ...
 660       * @return    [type]        ...
 661       */
 662  	function getProcessedValueExtra($table, $fN, $fV, $conf, $splitString)    {
 663          global $TCA;
 664              // Analysing the fields in the table.
 665          if (is_array($TCA[$table]))    {
 666              t3lib_div::loadTCA($table);
 667              $fC = $TCA[$table]['columns'][$fN];
 668              $fields = $fC['config'];
 669              $fields['exclude'] = $fC['exclude'];
 670              if (is_array($fC) && $fC['label'])    {
 671                  $fields['label'] = ereg_replace(":$", '', trim($GLOBALS['LANG']->sL($fC['label'])));
 672  
 673                  switch ($fields['type'])    {
 674                      case 'input':
 675                          if (eregi('int|year', $fields['eval']))    {
 676                              $fields['type'] = 'number';
 677                          } elseif (eregi('time', $fields['eval']))    {
 678                              $fields['type'] = 'time';
 679                          } elseif (eregi('date', $fields['eval']))    {
 680                              $fields['type'] = 'date';
 681                          } else {
 682                              $fields['type'] = 'text';
 683                          }
 684                      break;
 685                      case 'check':
 686                          if (!$fields['items'])    {
 687                              $fields['type'] = 'boolean';
 688                          } else {
 689                              $fields['type'] = 'binary';
 690                          }
 691                      break;
 692                      case 'radio':
 693                          $fields['type'] = 'multiple';
 694                      break;
 695                      case 'select':
 696                          $fields['type'] = 'multiple';
 697                          if ($fields['foreign_table'])    {
 698                              $fields['type'] = 'relation';
 699                          }
 700                          if ($fields['special'])    {
 701                              $fields['type'] = 'text';
 702                          }
 703                      break;
 704                      case 'group':
 705                          $fields['type'] = 'files';
 706                          if ($fields['internal_type']=='db')    {
 707                              $fields['type'] = 'relation';
 708                          }
 709                      break;
 710                      case 'user':
 711                      case 'flex':
 712                      case 'passthrough':
 713                      case 'none':
 714                      case 'text':
 715                      default:
 716                          $fields['type'] = 'text';
 717                      break;
 718                  }
 719              } else {
 720                  $fields['label'] = '[FIELD: '.$fN.']';
 721                  switch ($fN)    {
 722                      case 'pid':
 723                          $fields['type'] = 'relation';
 724                          $fields['allowed'] = 'pages';
 725                      break;
 726                      case 'cruser_id':
 727                          $fields['type'] = 'relation';
 728                          $fields['allowed'] = 'be_users';
 729                      break;
 730                      case 'tstamp':
 731                      case 'crdate':
 732                          $fields['type'] = 'time';
 733                      break;
 734                      default:
 735                          $fields['type'] = 'number';
 736                      break;
 737                  }
 738              }
 739          }
 740  
 741          switch ($fields['type'])    {
 742              case 'date':
 743                  if ($fV != -1)    {
 744                      $out = strftime('%e-%m-%Y', $fV);
 745                  }
 746              break;
 747              case 'time':
 748                  if ($fV != -1)    {
 749                      if ($splitString=='<br />')    {
 750                          $out = strftime('%H:%M'.$splitString.'%e-%m-%Y', $fV);
 751                      } else {
 752                          $out = strftime('%H:%M %e-%m-%Y', $fV);
 753                      }
 754                  }
 755              break;
 756              case 'multiple':
 757              case 'binary':
 758              case 'relation':
 759                  $out = $this->makeValueList($fN, $fV, $fields, $table, $splitString);
 760              break;
 761              case 'boolean':
 762                  $out = $fV ? 'True' : 'False';
 763              break;
 764              case 'files':
 765              default:
 766                  $out = htmlspecialchars($fV);
 767              break;
 768          }
 769          return $out;
 770      }
 771  
 772      /*
 773      * [Describe function...]
 774      *
 775      * @param    [type]        $qString: ...
 776      * @param    [type]        $depth: ...
 777      * @param    [type]        $begin: ...
 778      * @param    [type]        $perms_clause: ...
 779      * @return    [type]        ...
 780      */
 781  	function getTreeList($id, $depth, $begin = 0, $perms_clause)    {
 782          $depth = intval($depth);
 783          $begin = intval($begin);
 784          $id = intval($id);
 785          if ($begin == 0)    {
 786              $theList = $id;
 787          } else {
 788              $theList = '';
 789          }
 790          if ($id && $depth > 0)    {
 791              $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
 792                  'uid',
 793                  'pages',
 794                  'pid='.$id.' '.t3lib_BEfunc::deleteClause('pages').' AND '.$perms_clause
 795              );
 796              while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))    {
 797                  if ($begin <= 0)    {
 798                      $theList .= ','.$row['uid'];
 799                  }
 800                  if ($depth > 1)    {
 801                      $theList .= $this->getTreeList($row['uid'], $depth-1, $begin-1, $perms_clause);
 802                  }
 803              }
 804          }
 805          return $theList;
 806      }
 807  
 808      /**
 809       * [Describe function...]
 810       *
 811       * @param    [type]        $fN: ...
 812       * @param    [type]        $fV: ...
 813       * @param    [type]        $conf: ...
 814       * @param    [type]        $table: ...
 815       * @param    [type]        $splitString: ...
 816       * @return    [type]        ...
 817       */
 818  	function makeValueList($fN, $fV, $conf, $table, $splitString) {
 819          $fieldSetup = $conf;
 820          if ($fieldSetup['type'] == 'files') {
 821              $d = dir(t3lib_div::getIndpEnv(TYPO3_DOCUMENT_ROOT).'/'.$fieldSetup['uploadfolder']);
 822              while (false !== ($entry = $d->read())) {
 823                  if ($entry == '.' || $entry == '..') {
 824                      continue;
 825                  }
 826                  $fileArray[] = $entry;
 827              }
 828              $d->close();
 829              natcasesort($fileArray);
 830              while (list(, $fileName) = each($fileArray)) {
 831                  if (t3lib_div::inList($fV, $fileName) || $fV == $fileName) {
 832                      if (!$out) {
 833                          $out = htmlspecialchars($fileName);
 834                      } else {
 835                          $out .= $splitString.htmlspecialchars($fileName);
 836                      }
 837                  }
 838              }
 839          }
 840          if ($fieldSetup['type'] == 'multiple') {
 841              foreach ($fieldSetup['items'] as $key => $val) {
 842                  if (substr($val[0], 0, 4) == 'LLL:') {
 843                      $value = $GLOBALS['LANG']->sL($val[0]);
 844                  } else {
 845                      $value = $val[0];
 846                  }
 847                  if (t3lib_div::inList($fV, $val[1]) || $fV == $val[1]) {
 848                      if (!$out) {
 849                          $out = htmlspecialchars($value);
 850                      } else {
 851                          $out .= $splitString.htmlspecialchars($value);
 852                      }
 853                  }
 854              }
 855          }
 856          if ($fieldSetup['type'] == 'binary') {
 857              foreach($fieldSetup['items'] as $Key => $val) {
 858                  if (substr($val[0], 0, 4) == 'LLL:') {
 859                      $value = $GLOBALS['LANG']->sL($val[0]);
 860                  } else {
 861                      $value = $val[0];
 862                  }
 863                  if (!$out) {
 864                      $out = htmlspecialchars($value);
 865                  } else {
 866                      $out .= $splitString.htmlspecialchars($value);
 867                  }
 868              }
 869          }
 870          if ($fieldSetup['type']=='relation')    {
 871              if ($fieldSetup['items'])    {
 872                  foreach($fieldSetup['items'] as $key => $val)    {
 873                      if (substr($val[0], 0, 4) == 'LLL:')    {
 874                          $value = $GLOBALS['LANG']->sL($val[0]);
 875                      } else {
 876                          $value = $val[0];
 877                      }
 878                      if (t3lib_div::inList($fV, $value) || $fV == $value) {
 879                          if (!$out) {
 880                              $out = htmlspecialchars($value);
 881                          } else {
 882                              $out .= $splitString.htmlspecialchars($value);
 883                          }
 884                      }
 885                  }
 886              }
 887              global $TCA;
 888              if (stristr($fieldSetup['allowed'], ',')) {
 889                  $from_table_Arr = explode(',', $fieldSetup['allowed']);
 890                  $useTablePrefix = 1;
 891                  if (!$fieldSetup['prepend_tname']) {
 892                      $checkres = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fN, $table, 'uid '.t3lib_BEfunc::deleteClause($table), $groupBy = '', $orderBy = '', $limit = '');
 893                      if ($checkres) {
 894                          while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($checkres)) {
 895                              if (stristr($row[$fN], ',')) {
 896                                  $checkContent = explode(',', $row[$fN]);
 897                                  foreach($checkContent as $singleValue) {
 898                                      if (!stristr($singleValue, '_')) {
 899                                          $dontPrefixFirstTable = 1;
 900                                      }
 901                                  }
 902                              } else {
 903                                  $singleValue = $row[$fN];
 904                                  if (strlen($singleValue) && !stristr($singleValue, '_')) {
 905                                      $dontPrefixFirstTable = 1;
 906                                  }
 907                              }
 908                          }
 909                      }
 910                  }
 911              } else {
 912                  $from_table_Arr[0] = $fieldSetup['allowed'];
 913              }
 914              if ($fieldSetup['prepend_tname']) {
 915                  $useTablePrefix = 1;
 916              }
 917              if ($fieldSetup['foreign_table']) {
 918                  $from_table_Arr[0] = $fieldSetup['foreign_table'];
 919              }
 920              $counter = 0;
 921              foreach($from_table_Arr as $from_table) {
 922                  if (($useTablePrefix && !$dontPrefixFirstTable && $counter != 1) || $counter == 1) {
 923                      $tablePrefix = $from_table.'_';
 924                  }
 925                  $counter = 1;
 926                  if (is_array($TCA[$from_table])) {
 927                      t3lib_div::loadTCA($from_table);
 928                      $labelField = $TCA[$from_table]['ctrl']['label'];
 929                      $altLabelField = $TCA[$from_table]['ctrl']['label_alt'];
 930                      if ($TCA[$from_table]['columns'][$labelField]['config']['items']) {
 931                          reset($TCA[$from_table]['columns'][$labelField]['config']['items']);
 932                          while (list(, $labelArray) = each($TCA[$from_table]['columns'][$labelField]['config']['items'])) {
 933                              if (substr($labelArray[0], 0, 4) == 'LLL:') {
 934                                  $labelFieldSelect[$labelArray[1]] = $GLOBALS['LANG']->sL($labelArray[0]);
 935                              } else {
 936                                  $labelFieldSelect[$labelArray[1]] = $labelArray[0];
 937                              }
 938                          }
 939                          $useSelectLabels = 1;
 940                      }
 941                      if ($TCA[$from_table]['columns'][$altLabelField]['config']['items']) {
 942                          reset($TCA[$from_table]['columns'][$altLabelField]['config']['items']);
 943                          foreach($TCA[$from_table]['columns'][$altLabelField]['config']['items'] as $altLabelArray) {
 944                              if (substr($altLabelArray[0], 0, 4) == 'LLL:') {
 945                                  $altLabelFieldSelect[$altLabelArray[1]] = $GLOBALS['LANG']->sL($altLabelArray[0]);
 946                              } else {
 947                                  $altLabelFieldSelect[$altLabelArray[1]] = $altLabelArray[0];
 948                              }
 949                          }
 950                          $useAltSelectLabels = 1;
 951                      }
 952                      $altLabelFieldSelect = $altLabelField ? ','.$altLabelField : '';
 953                      $select_fields = 'uid,'.$labelField.$altLabelFieldSelect;
 954                      if (!$GLOBALS['BE_USER']->isAdmin() && $GLOBALS['TYPO3_CONF_VARS']['BE']['lockBeUserToDBmounts']) {
 955                          $webMounts = $GLOBALS['BE_USER']->returnWebmounts();
 956                          $perms_clause = $GLOBALS['BE_USER']->getPagePermsClause(1);
 957                          foreach($webMounts as $key => $val) {
 958                              if ($webMountPageTree) {
 959                                  $webMountPageTreePrefix = ',';
 960                              }
 961                              $webMountPageTree .= $webMountPageTreePrefix.$this->getTreeList($val, 999, $begin = 0, $perms_clause);
 962                          }
 963                          if ($from_table == 'pages') {
 964                              $where_clause = 'uid IN ('.$webMountPageTree.') '.t3lib_BEfunc::deleteClause($from_table).' AND '.$perms_clause;
 965                          } else {
 966                              $where_clause = 'pid IN ('.$webMountPageTree.') '.t3lib_BEfunc::deleteClause($from_table);
 967                          }
 968                      } else {
 969                          $where_clause = 'uid'.t3lib_BEfunc::deleteClause($from_table);
 970                      }
 971                      $orderBy = 'uid';
 972                      if (!$this->tableArray[$from_table]) {
 973                          $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($select_fields, $from_table, $where_clause, $groupBy = '', $orderBy, $limit = '');
 974                          $this->tableArray[$from_table] = array();
 975                      }
 976                      if ($res) {
 977                          while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
 978                              $this->tableArray[$from_table][] = $row;
 979                          }
 980                      }
 981                      reset($this->tableArray[$from_table]);
 982                      foreach ($this->tableArray[$from_table] as $key => $val) {
 983                          $GLOBALS['SOBE']->MOD_SETTINGS['labels_noprefix'] = $GLOBALS['SOBE']->MOD_SETTINGS['labels_noprefix'] == 1 ? 'on' :
 984                          $GLOBALS['SOBE']->MOD_SETTINGS['labels_noprefix'];
 985                          $prefixString = $GLOBALS['SOBE']->MOD_SETTINGS['labels_noprefix'] == 'on' ? '' : ' ['.$tablePrefix.$val['uid'].'] ';
 986                          if (t3lib_div::inList($fV, $tablePrefix.$val['uid']) || $fV == $tablePrefix.$val['uid']) {
 987                              if ($useSelectLabels) {
 988                                  if (!$out) {
 989                                      $out = htmlspecialchars($prefixString.$labelFieldSelect[$val[$labelField]]);
 990                                  } else {
 991                                      $out .= $splitString.htmlspecialchars($prefixString.$labelFieldSelect[$val[$labelField]]);
 992                                  }
 993                              } elseif ($val[$labelField]) {
 994                                  if (!$out) {
 995                                      $out = htmlspecialchars($prefixString.$val[$labelField]);
 996                                  } else {
 997                                      $out .= $splitString.htmlspecialchars($prefixString.$val[$labelField]);
 998                                  }
 999                              } elseif ($useAltSelectLabels) {
1000                                  if (!$out) {
1001                                      $out = htmlspecialchars($prefixString.$altLabelFieldSelect[$val[$altLabelField]]);
1002                                  } else {
1003                                      $out .= $splitString.htmlspecialchars($prefixString.$altLabelFieldSelect[$val[$altLabelField]]);
1004                                  }
1005                              } else {
1006                                  if (!$out) {
1007                                      $out = htmlspecialchars($prefixString.$val[$altLabelField]);
1008                                  } else {
1009                                      $out .= $splitString.htmlspecialchars($prefixString.$val[$altLabelField]);
1010                                  }
1011                              }
1012                          }
1013                      }
1014                  }
1015              }
1016          }
1017          return $out;
1018      }
1019  
1020       /**
1021   * [Describe function...]
1022   *
1023   * @param    [type]        $row: ...
1024   * @param    [type]        $conf: ...
1025   * @param    [type]        $table: ...
1026   * @return    [type]        ...
1027   */
1028  	function resultRowTitles($row,$conf,$table)    {
1029          $SET = $GLOBALS['SOBE']->MOD_SETTINGS;
1030          $out='<tr class="bgColor5">';
1031          reset($row);
1032          while(list($fN,$fV)=each($row))    {
1033              if (t3lib_div::inList($SET['queryFields'], $fN) || (!$SET['queryFields'] && $fN!='pid' && $fN!='deleted'))    {
1034                  if (strlen($fV) < 50)    $TDparams = ' nowrap';
1035                  else $TDparams = '';
1036  
1037                  if ($GLOBALS['SOBE']->MOD_SETTINGS['search_result_labels'])    {
1038                       $out.='<td'.$TDparams.'><strong>'.$GLOBALS['LANG']->sL($conf['columns'][$fN]['label']?$conf['columns'][$fN]['label']:$fN,1).'</strong></td>';
1039                  } else {
1040                      $out.='<td'.$TDparams.'><strong>'.$GLOBALS['LANG']->sL($fN, 1).'</strong></td>';
1041                  }
1042              }
1043          }
1044          $out.='<td nowrap></td>
1045          </tr>
1046          ';
1047          return $out;
1048      }
1049  
1050      /**
1051       * [Describe function...]
1052       *
1053       * @param    [type]        $row: ...
1054       * @param    [type]        $conf: ...
1055       * @param    [type]        $table: ...
1056       * @return    [type]        ...
1057       */
1058  	function csvRowTitles($row, $conf, $table)    {
1059          $SET = $GLOBALS['SOBE']->MOD_SETTINGS;
1060          foreach ($row as $fN => $fV)    {
1061              if (t3lib_div::inList($SET['queryFields'], $fN) || (!$SET['queryFields'] && $fN!='pid'))    {
1062                  if (!$out)    {
1063                      if ($GLOBALS['SOBE']->MOD_SETTINGS['search_result_labels'])    {
1064                          $out = $GLOBALS['LANG']->sL($conf['columns'][$fN]['label']?$conf['columns'][$fN]['label']:$fN, 1);
1065                      } else {
1066                          $out = $GLOBALS['LANG']->sL($fN, 1);
1067                      }
1068                  } else {
1069                      if ($GLOBALS['SOBE']->MOD_SETTINGS['search_result_labels'])    {
1070                          $out.= ','.$GLOBALS['LANG']->sL($conf['columns'][$fN]['label']?$conf['columns'][$fN]['label']:$fN, 1);
1071                      } else {
1072                          $out.= ','.$GLOBALS['LANG']->sL($fN, 1);
1073                      }
1074                  }
1075              }
1076          }
1077          return $out;
1078      }
1079  }
1080  
1081  if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_fullsearch.php'])    {
1082      include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_fullsearch.php']);
1083  }
1084  ?>


Généré le : Sun Nov 25 17:13:16 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics