Project

General

Profile

Feature #19465 » 0009574_v7.patch

Administrator Admin, 2009-11-06 14:52

View differences:

typo3/sysext/indexed_search/ext_tables.php (working copy)
<?php
if (!defined ('TYPO3_MODE')) die ('Access denied.');
t3lib_extMgm::addPlugin(Array('LLL:EXT:indexed_search/locallang.php:mod_indexed_search', $_EXTKEY));
t3lib_extMgm::addPlugin(Array('LLL:EXT:indexed_search/locallang.xml:mod_indexed_search', $_EXTKEY));
t3lib_extMgm::addPlugin(Array('LLL:EXT:indexed_search/locallang.xml:mod_indexed_search_box', $_EXTKEY . 'box'));
t3lib_div::loadTCA('tt_content');
$TCA['tt_content']['types']['list']['subtypes_excludelist'][$_EXTKEY] = 'layout,select_key,pages';
$TCA['tt_content']['types']['list']['subtypes_excludelist'][$_EXTKEY . '_box'] = 'layout,select_key,recursive';
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY] = 'pi_flexform';
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY . '_box'] = 'pi_flexform';
t3lib_extMgm::addPiFlexFormValue($_EXTKEY ,'FILE:EXT:' . $_EXTKEY . '/flexform.xml');
t3lib_extMgm::addPiFlexFormValue($_EXTKEY. '_box' ,'FILE:EXT:' . $_EXTKEY . '/flexform_box.xml');
if (TYPO3_MODE=='BE') {
t3lib_extMgm::addModule('tools','isearch','after:log',t3lib_extMgm::extPath($_EXTKEY).'mod/');
typo3/sysext/indexed_search/flexform.xml (revision 0)
<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sVIEW>
<ROOT>
<TCEforms>
<sheetTitle>LLL:EXT:indexed_search/locallang.xml:flexform_indexed_search.sheetTitle</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<showForm>
<TCEforms>
<label>LLL:EXT:indexed_search/locallang.xml:flexform_indexed_search.showForm</label>
<config>
<type>check</type>
<default>1</default>
</config>
</TCEforms>
</showForm>
<extendedForm>
<TCEforms>
<label>LLL:EXT:indexed_search/locallang.xml:flexform_indexed_search.extendedForm</label>
<config>
<type>check</type>
<default>0</default>
</config>
</TCEforms>
</extendedForm>
<showRules>
<TCEforms>
<label>LLL:EXT:indexed_search/locallang.xml:flexform_indexed_search.showRules</label>
<config>
<type>check</type>
<default>1</default>
</config>
</TCEforms>
</showRules>
<showResult>
<TCEforms>
<label>LLL:EXT:indexed_search/locallang.xml:flexform_indexed_search.showResults</label>
<config>
<type>check</type>
<default>1</default>
</config>
</TCEforms>
</showResult>
</el>
</ROOT>
</sVIEW>
</sheets>
</T3DataStructure>
typo3/sysext/indexed_search/hooks/class.tx_indexedsearch_tslib_fe_hook.php (working copy)
}
}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/indexed_search/hooks/class.tx_indexedsearch_tslib_fe_hook.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/indexed_search/hooks/class.tx_indexedsearch_tslib_fe_hook.php']);
}
?>
typo3/sysext/indexed_search/flexform_box.xml (revision 0)
<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sVIEW>
<ROOT>
<TCEforms>
<sheetTitle>Indexed Search Box settings</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<extendedForm>
<TCEforms>
<label>Extended searchform</label>
<config>
<type>check</type>
</config>
</TCEforms>
</extendedForm>
</el>
</ROOT>
</sVIEW>
</sheets>
</T3DataStructure>
typo3/sysext/indexed_search/locallang.xml (working copy)
</meta>
<data type="array">
<languageKey index="default" type="array">
<label index="mod_indexed_search">Indexed search</label>
<label index="mod2_indexed_search">Indexed search statistics</label>
<label index="mod_indexed_search">Indexed Search</label>
<label index="mod_indexed_search_box">Searchbox for Indexed Search</label>
<label index="mod2_indexed_search">Indexed Search statistics</label>
<label index="flexform_indexed_search.sheetTitle">Indexed Search settings</label>
<label index="flexform_indexed_search.showForm">Show searchform</label>
<label index="flexform_indexed_search.extendedForm">Extended searchform</label>
<label index="flexform_indexed_search.showRules">Show rules</label>
<label index="flexform_indexed_search.showResults">Show results</label>
<label index="flexform_indexed_search_box.sheetTitle">Searchbox settings</label>
<label index="flexform_indexed_search_box.extendedForm">Extended searchform</label>
<label index="ignoreExtensions">Extension %s was set to be ignored.</label>
<label index="pdfToolsNotFound">PDF tools was not found in paths '%1$spdftotext' and/or '%1$spdfinfo'"</label>
<label index="pdfToolsDisabled">PDF tools disabled</label>
typo3/sysext/indexed_search/ext_typoscript_setup.txt (working copy)
plugin.tx_indexedsearch {
templateFile = EXT:indexed_search/pi/indexed_search.tmpl
# what section should be displayed
code = form,rules,results
# if results should be outputted on a different page, define the pid for the result page here
resultPid =
show {
form = 1
rules = 1
results = 1
results {
resultList = 1
resultBrowserTop = 1
resultBrowserBottom = 1
}
parsetimes = 0
L2sections = 0
L1sections = 1
......
clearSearchBox = 0
clearSearchBox.enableSubSearchCheckBox = 0
forbiddenRecords = 0
alwaysShowPageLinks = 0
# deprecated / not in use anymore
# alwaysShowPageLinks = 0
advancedSearchLink = 1
resultNumber = 0
mediaList =
......
}
sectionlinks_stdWrap {
}
linkSectionTitles = 1
path_stdWrap {
}
# Display the searchword in results, like: Search for "searchword"
whatIs_stdWrap {
wrap = <div class="tx-indexedsearch-whatis">|</div>
}
searchWord_stdWrap {
wrap = <span class="tx-indexedsearch-sw">"|"</span>
}
markup_stdWrap {
wrap = <strong class="tx-indexedsearch-redMarkup">|</strong>
}
listcontent_stdWrap {
wrap = |
}
# Paging
resultsPerPage = 10
pageBrowser {
doNotLinkCurrent = 1
general_stdWrap {
wrap = <ul class="browsebox">|</ul>
}
previous_stdWrap {
wrap = <li>|</li>
}
next_stdWrap {
wrap = <li>|</li>
}
pages_stdWrap {
wrap = <li>|</li>
}
current_stdWrap {
wrap = <li class="tx-indexedsearch-browselist-currentPage"><strong>|</strong></li>
}
pageLinks_stdWrap {
preCObject = TEXT
preCObject.data = LLL:EXT:indexed_search/pi/locallang.xml:pi_list_browseresults_page
preCObject.noTrimWrap = | ||
}
makePointerLinksWithHref = 0
makePointerLinksWithHref {
ATagParams = class="tx-indexedsearch-pointerLink"
}
makePointerLinksWithForm = 0
makePointerLinksWithForm {
submit_params = class="tx-indexedsearch-pointerButton"
}
}
search {
rootPidList =
page_links = 10
......
}
result_link_target =
# various crop settings for single result items
results {
summaryCropAfter = 50
summaryCropSignifier =
titleCropAfter = 180
titleCropSignifier = ...
markupSW_summaryMax = 300
markupSW_postPreLgd = 60
markupSW_postPreLgd_offset = 5
markupSW_divider =
}
/*
flagRendering = CASE
flagRendering {
......
}
*/
forwardSearchWordsInResultLink = 0
forwardSearchWordsInResultLink_no_cache = 1
# Setting default values for piVars (please see the source code for the form-field names which you can preset values for here)
_DEFAULT_PI_VARS {
......
_LOCAL_LANG {
}
}
plugin.tx_indexedsearchbox < plugin.tx_indexedsearch
plugin.tx_indexedsearchbox.code = form
typo3/sysext/indexed_search/class.doublemetaphone.php (working copy)
return preg_match('/W|K|CZ|WITZ/', $string);
}
} // end of class MetaPhone
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/indexed_search/class.doublemetaphone.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/indexed_search/class.doublemetaphone.php']);
}
?>
typo3/sysext/indexed_search/ext_localconf.php (working copy)
if (!defined ('TYPO3_MODE')) die ('Access denied.');
t3lib_extMgm::addPItoST43($_EXTKEY);
t3lib_extMgm::addPItoST43($_EXTKEY . 'box');
t3lib_extMgm::addTypoScript($_EXTKEY,'editorcfg','
tt_content.CSS_editor.ch.tx_indexedsearch = < plugin.tx_indexedsearch.CSS_editor
typo3/sysext/indexed_search/pi/indexed_search.tmpl (working copy)
<p><em>Template for the search result list.</em></p>
<!-- ###RESULT_OUTPUT### begin -->
<div class="tx-indexedsearch-res">
<div class="tx-indexedsearch-res###CSSCLASS_EVEN_ODD###">
<table cellpadding="0" cellspacing="0" border="0" summary="Result row">
<!-- ###HEADER_ROW### begin -->
<tr>
......
<!-- ###RESULT_OUTPUT### end -->
<br /><br />
<h2>TEMPLATE_SEARCH_FORM_INVISIBLE</h2>
<p><em>Template for hidden search form used by page browser</em></p>
<!-- ###SEARCH_FORM_HIDDEN### begin -->
<div style="display:none">
<form action="###ACTION_URL###" method="post" name="tx_indexedsearch">
<input type="hidden" name="tx_indexedsearch[_sections]" value="0" />
<input type="hidden" name="tx_indexedsearch[_freeIndexUid]" value="_" />
<input type="hidden" name="tx_indexedsearch[pointer]" value="0" />
<!-- ###HIDDEN_FIELDS### begin -->
<input type="hidden" name="###HIDDEN_FIELDNAME###" value="###HIDDEN_VALUE###" />
<!-- ###HIDDEN_FIELDS### end -->
<form>
</div>
<!-- ###SEARCH_FORM_HIDDEN### end -->
<!-- ###BROWSE_BOX_TOP### begin-->
<div class="tx-indexedsearch-browsebox">
<p>###RESULTCOUNT### ###ADDSTRING###</p>
###ADDPART###
<!-- ###BROWSE_LINKS### -->###PREVIOUS### ###PAGES### ###NEXT###<!-- ###BROWSE_LINKS### -->
</div>
<!-- ###BROWSE_BOX_TOP### end-->
<!-- ###BROWSE_BOX_BOTTOM### begin-->
<div class="tx-indexedsearch-browsebox">
<!-- ###BROWSE_LINKS### -->###PREVIOUS### ###PAGES### ###NEXT###<!-- ###BROWSE_LINKS### -->
</div>
<!-- ###BROWSE_BOX_BOTTOM### end-->
<h2>Search Results</h2>
<!-- ###SEARCH_RESULTS### begin-->
###WHATIS###
###PAGEBROWSER_TOP###
###RESULTS###
###PAGEBROWSER_BOTTOM###
<!-- ###SEARCH_RESULTS### end-->
<!-- ###SEARCH_NO_RESULTS### begin-->
<p ###CLASS###>###NO_RESULT_MESSAGE###</p>
<!-- ###SEARCH_NO_RESULTS### end-->
</body>
</html>
typo3/sysext/indexed_search/pi/class.tx_indexedsearch.php (working copy)
// Internals:
var $sWArr = array(); // Search Words and operators
var $optValues = array(); // Selector box values for search configuration form
var $firstRow = Array(); // Will hold the first row in result - used to calculate relative hit-ratings.
var $firstRow = array(); // Will hold the first row in result - used to calculate relative hit-ratings.
var $code = ''; // Given code for render
var $cache_path = array(); // Caching of page path
var $cache_rl = array(); // Caching of root line data
var $fe_groups_required = array(); // Required fe_groups memberships for display of a result.
......
var $resultSections = array(); // Page tree sections for search result.
var $external_parsers = array(); // External parser objects
var $iconFileNameCache = array(); // Storage of icons....
var $pointerVars = array(); // contains piVars required for page browser links
/**
* Lexer object
......
$this->conf = $conf;
$this->pi_loadLL();
$this->pi_setPiVarDefaults();
$this->pi_initPIflexForm();
// Initialize the indexer-class - just to use a few function (for making hashes)
$this->indexerObj = t3lib_div::makeInstance('tx_indexedsearch_indexer');
......
// Initialize:
$this->initialize();
// Do search:
// If there were any search words entered...
if (is_array($this->sWArr)) {
$content = $this->doSearch($this->sWArr);
// Finally compile all the content, form, messages and results:
$this->code = t3lib_div::trimExplode(',', $this->conf['code'], true);
if (!is_array($this->code)) {
return '';
}
// Finally compile all the content, form, messages and results:
$content = $this->makeSearchForm($this->optValues).
$this->printRules().
$content;
$content = '';
foreach ($this->code as $code) {
switch (t3lib_div::strtolower($code)) {
case 'form':
// if conf has only 'form' it's the plugin indexedsearch_box which needs the form all the time,
// when code has more components, make it dependend from the setting 'showForm'
if ($this->conf['code'] != 'form' && !$this->conf['show.']['form']) {
break;
}
$content .= $this->makeSearchForm($this->optValues);
break;
case 'rules':
if ($this->conf['show.']['rules']) {
$content .= $this->printRules();
}
break;
case 'results':
if ($this->conf['show.']['results']) {
// Do search, if there were any search words entered...
if (is_array($this->sWArr)) {
$content .= $this->doSearch($this->sWArr);
}
}
break;
}
}
return $this->pi_wrapInBaseClass($content);
}
return $this->pi_wrapInBaseClass($content);
}
/**
* Initialize internal variables, especially selector box values for the search form and search words
......
function initialize() {
global $TYPO3_CONF_VARS;
// use flexfom settings to overwrite conf
if ($this->cObj->data['CType'] === 'list') {
// it's a plugin using flexform (TS object won't have it)
$this->piVars['ext'] = $this->piVars['ext'] ? $this->piVars['ext'] : $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'extendedForm', 'sVIEW') ? 1 : 0;
$this->conf['show.']['form'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'showForm', 'sVIEW') ? 1 : 0;
$this->conf['show.']['rules'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'showRules', 'sVIEW') ? 1 : 0;
$this->conf['show.']['results'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'showResult', 'sVIEW') ? 1 : 0;
if (intval($this->cObj->data['pages'])) {
$this->conf['resultPid'] = intval($this->cObj->data['pages']);
}
}
if (!isset($this->conf['resultPid'])) {
$this->conf['resultPid'] = $GLOBALS['TSFE']->id;
}
// make sure that some cropping and markup constants used later are defined
if (!is_array($this->conf['results.'])) {
$this->conf['results.'] = array();
}
$this->conf['results.']['summaryCropAfter'] = t3lib_div::intInRange($this->conf['results.']['summaryCropAfter'], 10, 5000, 180);
$this->conf['results.']['summaryCropSignifier'] = ($this->conf['results.']['summaryCropSignifier']) ? $this->conf['results.']['summaryCropSignifier'] : '';
$this->conf['results.']['titleCropAfter'] = t3lib_div::intInRange($this->conf['results.']['titleCropAfter'], 10, 500, 50);
$this->conf['results.']['titleCropSignifier'] = ($this->conf['results.']['titleCropSignifier']) ? $this->conf['results.']['titleCropSignifier'] : '...';
$this->conf['results.']['markupSW_summaryMax'] = t3lib_div::intInRange($this->conf['results.']['markupSW_summaryMax'], 10, 5000, 300);
$this->conf['results.']['markupSW_postPreLgd'] = t3lib_div::intInRange($this->conf['results.']['markupSW_postPreLgd'], 1, 500, 60);
$this->conf['results.']['markupSW_postPreLgd_offset'] = t3lib_div::intInRange($this->conf['results.']['markupSW_postPreLgd_offset'], 1, 50, 5);
$this->conf['results.']['markupSW_divider'] = ($this->conf['results.']['markupSW_divider']) ? $this->conf['results.']['markupSW_divider'] : ' ... ';
// Initialize external document parsers for icon display and other soft operations
if (is_array($TYPO3_CONF_VARS['EXTCONF']['indexed_search']['external_parsers'])) {
foreach ($TYPO3_CONF_VARS['EXTCONF']['indexed_search']['external_parsers'] as $extension => $_objRef) {
......
$this->piVars['sword'] = trim($this->piVars['sword_prev']).' '.$this->piVars['sword'];
}
$this->piVars['results'] = t3lib_div::intInRange($this->piVars['results'],1,100000,$this->defaultResultNumber);
$this->piVars['results'] = t3lib_div::intInRange($this->piVars['results'], 1, 100000, $this->conf['resultsPerPage']);
// Selector-box values defined here:
$this->optValues = Array(
......
* @return string HTML content to display result.
*/
function getDisplayResults($sWArr, $resData, $freeIndexUid=-1) {
$markerArray = array();
$html_results = $this->cObj->getSubpart($this->templateCode, '###SEARCH_RESULTS###');
$html_no_results = $this->cObj->getSubpart($this->templateCode, '###SEARCH_NO_RESULTS###');
// Print a message telling which words we searched for, and in which sections etc.
$what = $this->tellUsWhatIsSeachedFor($sWArr) .
(substr($this->piVars['sections'], 0, 2) == 'rl' ? ' ' . $this->pi_getLL('inSection', '', 1) . ' "' .
substr($this->getPathFromPageId(substr($this->piVars['sections'], 4)), 1) . '"' : '');
$markerArray['###WHATIS###'] = $this->cObj->stdWrap($what, $this->conf['whatis_stdWrap.']);
$markerArray['###SEARCH_FOR###'] = $this->tellUsWhatIsSeachedFor($sWArr);
// Perform display of result rows array:
if ($resData) {
$GLOBALS['TT']->push('Display Final result');
if ($resData['count']) {
// Set first selected row (for calculation of ranking later)
$this->firstRow = $resData['firstRow'];
// Set first selected row (for calculation of ranking later)
$this->firstRow = $resData['firstRow'];
// Result display here:
$rowcontent = '';
$rowcontent.= $this->compileResult($resData['resultRows'], $freeIndexUid);
// Result display here:
$markerArray['###RESULTS###'] = ($this->conf['show.']['results.']['resultList']) ? $this->compileResult($resData['resultRows'], $freeIndexUid) : '';
// Browsing box:
if ($resData['count']) {
// Browsing boxes top and bottom:
$this->internal['res_count'] = $resData['count'];
$this->internal['results_at_a_time'] = $this->piVars['results'];
$this->internal['maxPages'] = t3lib_div::intInRange($this->conf['search.']['page_links'],1,100,10);
$addString = ($resData['count']&&$this->piVars['group']=='sections'&&$freeIndexUid<=0 ? ' '.sprintf($this->pi_getLL(count($this->resultSections)>1?'inNsections':'inNsection'),count($this->resultSections)):'');
$browseBox1 = $this->pi_list_browseresults(1,$addString,$this->printResultSectionLinks(),$freeIndexUid);
$browseBox2 = $this->pi_list_browseresults(0,'','',$freeIndexUid);
}
// Browsing nav, bottom.
if ($resData['count']) {
$content = $browseBox1.$rowcontent.$browseBox2;
$addString = ($resData['count'] && $this->piVars['group'] == 'sections' && $freeIndexUid <= 0 ? ' ' .
sprintf($this->pi_getLL(count($this->resultSections) > 1 ? 'inNsections' : 'inNsection'),
count($this->resultSections)) : '');
$markerArray['###PAGEBROWSER_TOP###'] = ($this->conf['show.']['results.']['resultBrowserTop']) ? $this->pi_list_browseresults(1, $addString, $this->printResultSectionLinks(), $freeIndexUid) : '';
$markerArray['###PAGEBROWSER_BOTTOM###'] = ($this->conf['show.']['results.']['resultBrowserBottom']) ? $this->pi_list_browseresults(0, '', '', $freeIndexUid) : '';
$content = $this->cObj->substituteMarkerArrayCached($html_results, $markerArray, array(), array());
} else {
$content = '<p'.$this->pi_classParam('noresults').'>'.$this->pi_getLL('noResults','',1).'</p>';
$markerArray['###CLASS###'] = $this->pi_classParam('noresults');
$markerArray['###NO_RESULT_MESSAGE###'] = $this->pi_getLL('noResults', '', 1);
$content = $this->cObj->substituteMarkerArrayCached($html_no_results, $markerArray, array(), array());
}
$GLOBALS['TT']->pull();
} else {
$content.='<p'.$this->pi_classParam('noresults').'>'.$this->pi_getLL('noResults','',1).'</p>';
$markerArray['###CLASS###'] = $this->pi_classParam('noresults');
$markerArray['###NO_RESULT_MESSAGE###'] = $this->pi_getLL('noResults', '', 1);
$content = $this->cObj->substituteMarkerArrayCached($html_no_results, $markerArray, array(), array());
}
// Print a message telling which words we searched for, and in which sections etc.
$what = $this->tellUsWhatIsSeachedFor($sWArr).
(substr($this->piVars['sections'],0,2)=='rl'?' '.$this->pi_getLL('inSection','',1).' "'.substr($this->getPathFromPageId(substr($this->piVars['sections'],4)),1).'"':'');
$what = '<div'.$this->pi_classParam('whatis').'>'.$this->cObj->stdWrap($what, $this->conf['whatis_stdWrap.']).'</div>';
$content = $what.$content;
// Return content:
return $content;
}
......
}
$resultRows = $newResultRows;
$this->resultSections = array();
$GLOBALS['TSFE']->register['indexed_search_RESULTCOUNT'] = 0;
if ($freeIndexUid<=0) {
switch($this->piVars['group']) {
case 'sections':
......
if (!trim($sectionName)) {
$sectionTitleLinked = $this->pi_getLL('unnamedSection','',1).':';
} elseif ($this->conf['linkSectionTitles']) {
$onclick = 'document.' . $this->prefixId . '[\'' . $this->prefixId . '[_sections]\'].value=\'' . $theRLid . '\';document.' . $this->prefixId . '.submit();return false;';
$sectionTitleLinked = '<a href="#" onclick="' . htmlspecialchars($onclick) . '">' . htmlspecialchars($sectionName) . ':</a>';
} else {
$onclick = 'document.'.$this->prefixId.'[\''.$this->prefixId.'[_sections]\'].value=\''.$theRLid.'\';document.'.$this->prefixId.'.submit();return false;';
$sectionTitleLinked = '<a href="#" onclick="'.htmlspecialchars($onclick).'">'.htmlspecialchars($sectionName).':</a>';
$sectionTitleLinked = htmlspecialchars($sectionName);
}
$this->resultSections[$id] = array($sectionName,count($resultRows));
......
$content.= $this->makeSectionHeader($id,$sectionTitleLinked,count($resultRows));
// Render result rows:
foreach ($resultRows as $row) {
$content.= $this->printResultRow($row);
$listcontent = '';
$GLOBALS['TSFE']->register['indexed_search_RESULTCOUNT'] = 0;
foreach ($resultRows as $row) {
$GLOBALS['TSFE']->register['indexed_search_RESULTCOUNT']++;
$listcontent .= $this->printResultRow($row);
}
$content .= $this->cObj->stdWrap($listcontent, $this->conf['listcontent_stdWrap.']);
}
break;
default: // flat:
foreach ($resultRows as $row) {
$content.= $this->printResultRow($row);
$listcontent = '';
foreach ($resultRows as $row) {
$GLOBALS['TSFE']->register['indexed_search_RESULTCOUNT']++;
$listcontent .= $this->printResultRow($row);
}
$content .= $this->cObj->stdWrap($listcontent, $this->conf['listcontent_stdWrap.']);
break;
}
} else {
foreach ($resultRows as $row) {
$content.= $this->printResultRow($row);
$listcontent = '';
foreach ($resultRows as $row) {
$GLOBALS['TSFE']->register['indexed_search_RESULTCOUNT']++;
$listcontent .= $this->printResultRow($row);
}
$content .= $this->cObj->stdWrap($listcontent, $this->conf['listcontent_stdWrap.']);
}
return '<div'.$this->pi_classParam('res').'>'.$content.'</div>';
}
......
$html = $this->cObj->substituteSubpart($html, '###ADDITONAL_KEYWORD###', '');
}
$markerArray['###ACTION_URL###'] = htmlspecialchars($this->pi_getPageLink($GLOBALS['TSFE']->id, $GLOBALS['TSFE']->sPre));
$markerArray['###ACTION_URL###'] = htmlspecialchars($this->pi_getPageLink($this->conf['resultPid'], $GLOBALS['TSFE']->sPre));
$hiddenFieldCode = $this->cObj->getSubpart($this->templateCode, '###HIDDEN_FIELDS###');
$hiddenFieldCode = preg_replace('/^\n\t(.+)/ms', '$1', $hiddenFieldCode); // Remove first newline and tab (cosmetical issue)
......
// Write all hidden fields
$html = $this->cObj->substituteSubpart($html, '###HIDDEN_FIELDS###', implode('',$hiddenFieldArr));
$substitutedContent = $this->cObj->substituteMarkerArrayCached($html, $markerArray, array(), array());
return $this->cObj->substituteMarkerArrayCached($html, $markerArray, array(), array());
}
return $substitutedContent;
/**
* Make hidden search form HTML. This form is needed when page browser is displayed.
*
* @param array Value/Labels pairs for search form selector boxes.
* @return string Search form HTML
*/
function makeHiddenSearchForm($optValues) {
$html = $this->cObj->getSubpart($this->templateCode, '###SEARCH_FORM_HIDDEN###');
$markerArray['###ACTION_URL###'] = htmlspecialchars($this->pi_getPageLink($this->conf['resultPid'], $GLOBALS['TSFE']->sPre));
$hiddenFieldCode = $this->cObj->getSubpart($this->templateCode, '###HIDDEN_FIELDS###');
$hiddenFieldCode = preg_replace('/^\n\t(.+)/ms', '$1', $hiddenFieldCode); // Remove first newline and tab (cosmetical issue)
$hiddenFieldArr = array();
// put search params to hidden fields
$hiddenFieldList = $this->hiddenFieldList . ',sword';
foreach (t3lib_div::trimExplode(',', $hiddenFieldList) as $fieldName) {
$hiddenFieldMarkerArray = array();
$hiddenFieldMarkerArray['###HIDDEN_FIELDNAME###'] = $this->prefixId . '[' . $fieldName . ']';
$hiddenFieldMarkerArray['###HIDDEN_VALUE###'] = htmlspecialchars((string)$this->piVars[$fieldName]);
$hiddenFieldArr[$fieldName] = $this->cObj->substituteMarkerArrayCached($hiddenFieldCode, $hiddenFieldMarkerArray, array(), array());
}
// Write all hidden fields
$html = $this->cObj->substituteSubpart($html, '###HIDDEN_FIELDS###', implode('', $hiddenFieldArr));
return $this->cObj->substituteMarkerArrayCached($html, $markerArray, array(), array());
}
/**
......
$markerArray['###TEXT_ITEM_MTIME###'] = $this->pi_getLL('res_modified','',1);
$markerArray['###TEXT_ITEM_PATH###'] = $this->pi_getLL('res_path','',1);
// even odd css class marker
$markerArray['###CSSCLASS_EVEN_ODD###'] = ($GLOBALS['TSFE']->register['indexed_search_RESULTCOUNT'] % 2) ?
' tx-indexedsearch-oddrow' :
' tx-indexedsearch-evenrow';
$html = $this->cObj->substituteMarkerArrayCached($html, $markerArray, array(), array());
// If there are subrows (eg. subpages in a PDF-file or if a duplicate page is selected due to user-login (phash_grouping))
......
* @param string List of integers pointing to free indexing configurations to search. -1 represents no filtering, 0 represents TYPO3 pages only, any number above zero is a uid of an indexing configuration!
* @return string HTML output
*/
function pi_list_browseresults($showResultCount=1,$addString='',$addPart='',$freeIndexUid=-1) {
function pi_list_browseresults($renderTopBrowseBox=1, $addString='', $addPart='', $freeIndexUid=-1) {
$markerArray = $subpartArray = array();
$html = $this->cObj->getSubpart($this->templateCode, '###BROWSE_BOX_' . ($renderTopBrowseBox ? 'TOP' : 'BOTTOM') . '###');
$browseLinks = $this->cObj->getSubpart($html, '###BROWSE_LINKS###');
// Initializing variables:
$pointer=$this->piVars['pointer'];
$count=$this->internal['res_count'];
......
$maxPages = t3lib_div::intInRange($this->internal['maxPages'],1,100);
$pageCount = ceil($count/$results_at_a_time);
$sTables = '';
$markerArray['###HIDDENFORM###'] = '';
if ($pageCount > 1) { // only show the result browser if more than one page is needed
// look if form is present, if not display a hidden form
$markerArray['###HIDDENFORM###'] = (in_array('form', $this->code) && $this->conf['show.']['form']) ? '' : $this->makeHiddenSearchForm($this->optValues);
$pointer=intval($pointer);
$links=array();
// Make browse-table/links:
if ($pointer>0) { // all pages after the 1st one
$links[]='<li>'.$this->makePointerSelector_link($this->pi_getLL('pi_list_browseresults_prev','< Previous',1),$pointer-1,$freeIndexUid).'</li>';
$markerArray['###PREVIOUS###'] = $this->cObj->stdWrap($this->makePointerSelector_link($this->pi_getLL('pi_list_browseresults_prev', '< Previous', 1), $pointer - 1, $freeIndexUid), $this->conf['pageBrowser.']['previous_stdWrap.']);
} else {
$markerArray['###PREVIOUS###'] = '';
}
$markerArray['###PAGES###'] = '';
for($a=0;$a<$pageCount;$a++) {
$min = max(0, $pointer+1-ceil($maxPages/2));
$max = $min+$maxPages;
......
$min = $min - ($max-$pageCount);
}
$linkText = $this->cObj->stdWrap($a+1, $this->conf['pageBrowser.']['pageLinks_stdWrap.']);
if($a >= $min && $a < $max) {
if($a==$pointer) {
$links[]='<li'.$this->pi_classParam('browselist-currentPage').'><strong>'.$this->makePointerSelector_link(trim($this->pi_getLL('pi_list_browseresults_page','Page',1).' '.($a+1)),$a,$freeIndexUid).'</strong></li>';
if($a == $pointer) {
// current page
$markerArray['###PAGES###'] .= $this->cObj->stdWrap($this->conf['pageBrowser.']['doNotLinkCurrent'] ? $linkText : $this->makePointerSelector_link($linkText, $a, $freeIndexUid), $this->conf['pageBrowser.']['current_stdWrap.']);
} else {
$links[]='<li>'.$this->makePointerSelector_link(trim($this->pi_getLL('pi_list_browseresults_page','Page',1).' '.($a+1)),$a,$freeIndexUid).'</li>';
$markerArray['###PAGES###'] .= $this->cObj->stdWrap($this->makePointerSelector_link($linkText, $a, $freeIndexUid), $this->conf['pageBrowser.']['pages_stdWrap.']);
}
}
}
if ($pointer+1 < $pageCount) {
$links[]='<li>'.$this->makePointerSelector_link($this->pi_getLL('pi_list_browseresults_next','Next >',1),$pointer+1,$freeIndexUid).'</li>';
$markerArray['###NEXT###'] = $this->cObj->stdWrap($this->makePointerSelector_link($this->pi_getLL('pi_list_browseresults_next', 'Next >', 1), $pointer + 1, $freeIndexUid), $this->conf['pageBrowser.']['next_stdWrap.']);
} else {
$markerArray['###NEXT###'] = '';
}
$subpartArray['###BROWSE_LINKS###'] = $this->cObj->stdWrap($this->cObj->substituteMarkerArrayCached($browseLinks, $markerArray, array(), array()), $this->conf['pageBrowser.']['general_stdWrap.']);
} else {
$subpartArray['###BROWSE_LINKS###'] = '';
}
$pR1 = $pointer*$results_at_a_time+1;
$pR2 = $pointer*$results_at_a_time+$results_at_a_time;
if(is_array($links)) {
$addPart .= '
<ul class="browsebox">
'.implode('',$links).'
</ul>';
}
$label = $this->pi_getLL('pi_list_browseresults_display','Displaying results ###TAG_BEGIN###%s to %s###TAG_END### out of ###TAG_BEGIN###%s###TAG_END###');
$label = str_replace('###TAG_BEGIN###','<strong>',$label);
$label = str_replace('###TAG_END###','</strong>',$label);
$sTables = '<div'.$this->pi_classParam('browsebox').'>'.
($showResultCount ? '<p>'.sprintf(
$label,
$pR1,
min(array($this->internal['res_count'],$pR2)),
$this->internal['res_count']
).$addString.'</p>':''
).$addPart.'</div>';
$markerArray['###RESULTCOUNT###'] = sprintf(
$label,
$pR1,
min(array($this->internal['res_count'], $pR2)),
$this->internal['res_count']
);
$markerArray['###ADDSTRING###'] = $addString;
$markerArray['###ADDPART###'] = $addPart;
return $sTables;
return $this->cObj->substituteMarkerArrayCached($html, $markerArray, $subpartArray, array());
}
......
// Prepare search words for markup in content:
if ($this->conf['forwardSearchWordsInResultLink']) {
$markUpSwParams = array('no_cache' => 1);
if ($this->conf['forwardSearchWordsInResultLink_no_cache']) {
$markUpSwParams = array('no_cache' => 1);
}
foreach ($this->sWArr as $d) {
$markUpSwParams['sword_list'][] = $d['sword'];
}
......
$tmplContent['result_number'] = $this->conf['show.']['resultNumber'] ? $row['result_number'].': ' : '&nbsp;';
$tmplContent['icon'] = $this->makeItemTypeIcon($row['item_type'],'',$specRowConf);
$tmplContent['rating'] = $this->makeRating($row);
$tmplContent['description'] = $this->makeDescription($row,$this->piVars['extResume'] && !$headerOnly?0:1);
$tmplContent['description'] = $this->makeDescription(
$row,
($this->piVars['extResume'] && !$headerOnly) ? false : true,
$this->conf['results.']['summaryCropAfter']
);
$tmplContent = $this->makeInfo($row,$tmplContent);
$tmplContent['access'] = $this->makeAccessIndication($row['page_id']);
$tmplContent['language'] = $this->makeLanguageIndication($row);
......
if ($c) {
switch($v['oper']) {
case 'OR':
$searchingFor.= ' '.$this->pi_getLL('searchFor_or','',1).' '.$this->wrapSW($this->utf8_to_currentCharset($v['sword']));
$searchingFor .= ' ' . $this->pi_getLL('searchFor_or', '', 1) . ' ' . $this->cObj->stdWrap($this->utf8_to_currentCharset($v['sword']), $this->conf['searchWord_stdWrap.']);
break;
case 'AND NOT':
$searchingFor.= ' '.$this->pi_getLL('searchFor_butNot','',1).' '.$this->wrapSW($this->utf8_to_currentCharset($v['sword']));
$searchingFor .= ' ' . $this->pi_getLL('searchFor_butNot', '', 1) . ' ' . $this->cObj->stdWrap($this->utf8_to_currentCharset($v['sword']), $this->conf['searchWord_stdWrap.']);
break;
default: // AND...
$searchingFor.= ' '.$this->pi_getLL('searchFor_and','',1).' '.$this->wrapSW($this->utf8_to_currentCharset($v['sword']));
$searchingFor .= ' ' . $this->pi_getLL('searchFor_and', '', 1) . ' ' . $this->cObj->stdWrap($this->utf8_to_currentCharset($v['sword']), $this->conf['searchWord_stdWrap.']);
break;
}
} else {
$searchingFor = $this->pi_getLL('searchFor','',1).' '.$this->wrapSW($this->utf8_to_currentCharset($v['sword']));
$searchingFor = $this->pi_getLL('searchFor','',1).' '.$this->cObj->stdWrap($this->utf8_to_currentCharset($v['sword']), $this->conf['searchWord_stdWrap.']);
}
$c++;
}
......
}
/**
* Wraps the search words in the search-word list display (from ->tellUsWhatIsSeachedFor())
*
* @param string search word to wrap (in local charset!)
* @return string Search word wrapped in <span> tag.
*/
function wrapSW($str) {
return '"<span'.$this->pi_classParam('sw').'>'.htmlspecialchars($str).'</span>"';
}
/**
* Makes a selector box
*
* @param string Name of selector box
......
* @param string String to wrap in <a> tag
* @param integer Pointer value
* @param string List of integers pointing to free indexing configurations to search. -1 represents no filtering, 0 represents TYPO3 pages only, any number above zero is a uid of an indexing configuration!
* @return string Input string wrapped in <a> tag with onclick event attribute set.
* @return string Input string wrapped in <a> tag with onclick event attribute set (default) or a normal hyperlink (browseLinks_setUrl) or a submit button with hidden form (browseLinks_useForms).
*/
function makePointerSelector_link($str,$p,$freeIndexUid) {
$onclick = 'document.'.$this->prefixId.'[\''.$this->prefixId.'[pointer]\'].value=\''.$p.'\';'.
'document.'.$this->prefixId.'[\''.$this->prefixId.'[_freeIndexUid]\'].value=\''.rawurlencode($freeIndexUid).'\';'.
'document.'.$this->prefixId.'.submit();return false;';
return '<a href="#" onclick="'.htmlspecialchars($onclick).'">'.$str.'</a>';
function makePointerSelector_link($pointerText, $pointer, $freeIndexUid) {
$pointerSelector_link = '';
if ($this->conf['pageBrowser.']['makePointerLinksWithHref']) {
// pointerSelector_link is a normal hyperlink (no JavaScript required)
if (!$this->pointerVars) {
// create pointerVars only once, which need to be transferred as GET parameters of the URL
$this->pointerVars = $this->piVars;
unset($this->pointerVars['submit_button']);
unset($this->pointerVars['pointer']);
unset($this->pointerVars['_freeIndexUid']);
// only use non-default values for generating URLs as short as possible without losing user input
foreach ($this->pointerVars as $paramKey => $value) {
if (
(is_array($this->optValues[$paramKey]) && $this->piVars[$paramKey] == (string) array_shift(array_keys($this->optValues[$paramKey]))) ||
(isset($this->conf['_DEFAULT_PI_VARS.'][$paramKey]) && $this->conf['_DEFAULT_PI_VARS'][$paramKey] == $value)
) {
unset($this->pointerVars[$paramKey]);
}
}
}
$this->pointerVars['pointer'] = $pointer;
$this->pointerVars['_freeIndexUid'] = $freeIndexUid;
$linkArray = array (
'parameter' => $GLOBALS['TSFE']->id,
'additionalParams' => t3lib_div::implodeArrayForUrl($this->prefixId, $this->pointerVars)
);
$linkArray = array_merge((array) $this->conf['pageBrowser.']['makePointerLinksWithHref.'], $linkArray);
$pointerSelector_link = $this->cObj->typolink($pointerText, $linkArray);
} elseif ($this->conf['pageBrowser.']['makePointerLinksWithForm']) {
// pointerSelector_link is a submit button of a pointer form (no JavaScript required; URL will stay "clean" after submission)
$blindPointerForm = '';
foreach ($this->piVars as $paramKey => $value) {
if ($paramKey != 'pointer' && $paramKey != '_freeIndexUid') {
$blindPointerForm .= '<input type="hidden" name="' . $this->prefixId . '[' . $paramKey . ']" value="' . $value . '" />';
}
}
$blindPointerForm .= '<input type="hidden" name="' . $this->prefixId . '[pointer]" value=' . $pointer . '" />';
$blindPointerForm .= '<input type="hidden" name="' . $this->prefixId . '[_freeIndexUid]" value=' . $freeIndexUid . '" />';
$pointerSelector_link = '<form method="post" class="tx-indexedsearch-browseresults-form" ' .
' action="' . $this->cObj->getTypoLink_URL($GLOBALS['TSFE']->id, array(), '_self') . '">' .
'<div style="display:none;">' . $blindPointerForm . '</div>' .
'<input type="submit" value="' . $pointerText . '" title="' . $pointerText . '"' .
($this->conf['pageBrowser.']['makePointerLinksWithForm.']['submit_params'] ? ' ' . $this->conf['pageBrowser.']['makePointerLinksWithForm.']['submit_params'] : '') .
' />' .
'</form>';
} else {
// pointerSelector_link is a JavaScript onclick event (the default way)
$onclick = 'document.' . $this->prefixId . '[\'' . $this->prefixId . '[pointer]\'].value=\'' . $pointer . '\';' .
'document.' . $this->prefixId . '[\'' . $this->prefixId . '[_freeIndexUid]\'].value=\'' . rawurlencode($freeIndexUid) . '\';' .
'document.' . $this->prefixId . '.submit();return false;';
$pointerSelector_link = '<a href="#" onclick="' . htmlspecialchars($onclick) . '">' . $pointerText . '</a>';
}
return $pointerSelector_link;
}
/**
......
}
if (!trim($markedSW)) {
$outputStr = $GLOBALS['TSFE']->csConvObj->crop('utf-8',$row['item_description'],$lgd);
$outputStr = $GLOBALS['TSFE']->csConvObj->crop('utf-8', $row['item_description'], $lgd, $this->conf['results.']['summaryCropSignifier']);
$outputStr = htmlspecialchars($outputStr);
}
$output = $this->utf8_to_currentCharset($outputStr ? $outputStr : $markedSW);
......
$parts = preg_split('/'.$regExString.'/i', ' '.$str.' ', 20000, PREG_SPLIT_DELIM_CAPTURE);
// debug($parts,$regExString);
// Constants:
$summaryMax = 300;
$postPreLgd = 60;
$postPreLgd_offset = 5;
$divider = ' ... ';
$summaryMax = $this->conf['results.']['markupSW_summaryMax'];
$postPreLgd = $this->conf['results.']['markupSW_postPreLgd'];
$postPreLgd_offset = $this->conf['results.']['markupSW_postPreLgd_offset'];
$divider = $this->conf['results.']['markupSW_divider'];
$occurencies = (count($parts)-1)/2;
if ($occurencies) {
......
}
} else {
$summaryLgd+= $GLOBALS['TSFE']->csConvObj->strlen('utf-8',$strP);
$output[$k] = '<strong class="tx-indexedsearch-redMarkup">'.htmlspecialchars($parts[$k]).'</strong>';
$output[$k] = $this->cObj->stdWrap(htmlspecialchars($parts[$k]), $this->conf['markup_stdWrap.']);
}
}
......
} else $add=', '.$this->pi_getLL('word_page').' '.$pp[0];
}
$outputString = $GLOBALS['TSFE']->csConvObj->crop('utf-8',$row['item_title'],50,'...');
$outputString = $GLOBALS['TSFE']->csConvObj->crop('utf-8', $row['item_title'], $this->conf['results.']['titleCropAfter'], $this->conf['results.']['titleCropSignifier']);
return $this->utf8_to_currentCharset($outputString).$add;
}
......
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/indexed_search/pi/class.tx_indexedsearch.php']);
}
?>
?>
typo3/sysext/indexed_search/pi/template_css.tmpl (working copy)
<br /><br />
<h2>TEMPLATE_SEARCH_FORM_INVISIBLE</h2>
<p><em>Template for hidden search form used by page browser</em></p>
<!-- ###SEARCH_FORM_HIDDEN### begin -->
<div style="display:none">
<form action="###ACTION_URL###" method="post" name="tx_indexedsearch">
<input type="hidden" name="tx_indexedsearch[_sections]" value="0" />
<input type="hidden" name="tx_indexedsearch[_freeIndexUid]" value="_" />
<input type="hidden" name="tx_indexedsearch[pointer]" value="0" />
<!-- ###HIDDEN_FIELDS### begin -->
<input type="hidden" name="###HIDDEN_FIELDNAME###" value="###HIDDEN_VALUE###" />
<!-- ###HIDDEN_FIELDS### end -->
<form>
</div>
<!-- ###SEARCH_FORM_HIDDEN### end -->
<br /><br />
<h2>TEMPLATE_RULES</h2>
<p><em>Template for displaying the search rules.</em></p>
......
<br /><br />
<h2>Browsebox for the top</h2>
<!-- ###BROWSE_BOX_TOP### begin-->
###HIDDENFORM###
<div class="tx-indexedsearch-browsebox">
<p>###RESULTCOUNT### ###ADDSTRING###</p>
###ADDPART###
<!-- ###BROWSE_LINKS### -->###PREVIOUS### ###PAGES### ###NEXT###<!-- ###BROWSE_LINKS### -->
</div>
<!-- ###BROWSE_BOX_TOP### end-->
<h2>Browsebox for the bottom</h2>
<!-- ###BROWSE_BOX_BOTTOM### begin-->
<div class="tx-indexedsearch-browsebox">
<!-- ###BROWSE_LINKS### -->###PREVIOUS### ###PAGES### ###NEXT###<!-- ###BROWSE_LINKS### -->
</div>
<!-- ###BROWSE_BOX_BOTTOM### end-->
<h2>TEMPLATE_RESULT_OUTPUT</h2>
<p><em>Template for the search result list.</em></p>
<!-- ###RESULT_OUTPUT### begin -->
<div class="tx-indexedsearch-res res res-tmpl-css">
<div class="tx-indexedsearch-res res res-tmpl-css###CSSCLASS_EVEN_ODD###">
<!-- ###HEADER_ROW### begin -->
<h3><span class="tx-indexedsearch-icon icon">###ICON###</span> <span class="tx-indexedsearch-result-number result-number">###RESULT_NUMBER###</span> <span class="tx-indexedsearch-title title">###TITLE###</span> <span class="tx-indexedsearch-percent percent percent-tmpl-css">###RATING###</span></h3>
<!-- ###HEADER_ROW### end -->
......
<br /><br />
<h2>Search Results with Browseboxes - this is the main utput for the search results</h2>
<!-- ###SEARCH_RESULTS### begin-->
###PAGEBROWSER_TOP###
###RESULTS###
###PAGEBROWSER_BOTTOM###
<!-- ###SEARCH_RESULTS### end-->
<!-- ###SEARCH_NO_RESULTS### begin-->
<p ###CLASS###>###NO_RESULT_MESSAGE###</p>
<!-- ###SEARCH_NO_RESULTS### end-->
</body>
</html>
typo3/sysext/indexed_search/ext_emconf.php (working copy)
'author_company' => 'Curby Soft Multimedia',
'CGLcompliance' => '',
'CGLcompliance_note' => '',
'version' => '2.12.0',
'version' => '2.13.0',
'_md5_values_when_last_written' => 'a:56:{s:9:"ChangeLog";s:4:"fd4b";s:17:"class.crawler.php";s:4:"68ea";s:25:"class.doublemetaphone.php";s:4:"28e4";s:25:"class.external_parser.php";s:4:"7774";s:17:"class.indexer.php";s:4:"ac85";s:15:"class.lexer.php";s:4:"7377";s:21:"ext_conf_template.txt";s:4:"0c64";s:12:"ext_icon.gif";s:4:"4cbf";s:17:"ext_localconf.php";s:4:"4c42";s:14:"ext_tables.php";s:4:"3a84";s:14:"ext_tables.sql";s:4:"2e41";s:28:"ext_typoscript_editorcfg.txt";s:4:"0a34";s:24:"ext_typoscript_setup.txt";s:4:"c2e7";s:13:"locallang.xml";s:4:"cd0c";s:26:"locallang_csh_indexcfg.xml";s:4:"f4f3";s:16:"locallang_db.xml";s:4:"f142";s:7:"tca.php";s:4:"f24a";s:12:"cli/conf.php";s:4:"19fe";s:21:"cli/indexer_cli.phpsh";s:4:"d236";s:14:"doc/README.txt";s:4:"a737";s:12:"doc/TODO.txt";s:4:"c804";s:29:"example/class.crawlerhook.php";s:4:"cf58";s:24:"example/class.pihook.php";s:4:"2897";s:46:"hooks/class.tx_indexedsearch_tslib_fe_hook.php";s:4:"2e20";s:13:"mod/clear.gif";s:4:"cc11";s:12:"mod/conf.php";s:4:"9062";s:13:"mod/index.php";s:4:"76bd";s:15:"mod/isearch.gif";s:4:"4cbf";s:21:"mod/locallang_mod.xml";s:4:"1624";s:21:"mod/mod_template.html";s:4:"a7f2";s:44:"modfunc1/class.tx_indexedsearch_modfunc1.php";s:4:"e1e8";s:22:"modfunc1/locallang.xml";s:4:"4806";s:44:"modfunc2/class.tx_indexedsearch_modfunc2.php";s:4:"c0e9";s:22:"modfunc2/locallang.xml";s:4:"a889";s:29:"pi/class.tx_indexedsearch.php";s:4:"2d2f";s:21:"pi/considerations.txt";s:4:"e3df";s:22:"pi/indexed_search.tmpl";s:4:"7ada";s:16:"pi/locallang.xml";s:4:"4f34";s:20:"pi/template_css.tmpl";s:4:"14aa";s:14:"pi/res/csv.gif";s:4:"e413";s:14:"pi/res/doc.gif";s:4:"0975";s:15:"pi/res/html.gif";s:4:"5647";s:14:"pi/res/jpg.gif";s:4:"23ac";s:17:"pi/res/locked.gif";s:4:"c212";s:16:"pi/res/pages.gif";s:4:"1923";s:14:"pi/res/pdf.gif";s:4:"9451";s:14:"pi/res/pps.gif";s:4:"926b";s:14:"pi/res/ppt.gif";s:4:"ada5";s:14:"pi/res/rtf.gif";s:4:"f660";s:14:"pi/res/sxc.gif";s:4:"00a6";s:14:"pi/res/sxi.gif";s:4:"ef83";s:14:"pi/res/sxw.gif";s:4:"4a8f";s:14:"pi/res/tif.gif";s:4:"533b";s:14:"pi/res/txt.gif";s:4:"c576";s:14:"pi/res/xls.gif";s:4:"4a22";s:14:"pi/res/xml.gif";s:4:"2e7b";}',
'constraints' => array(
'depends' => array(
(6-6/6)