210 lines
4.5 KiB
PHP
Executable File
210 lines
4.5 KiB
PHP
Executable File
<?php
|
|
if (!defined('MOD_INDEX')) {
|
|
// Example of use
|
|
require_once 'defaults.php';
|
|
require_once (INCLUDES_DIR . 'includes.php');
|
|
|
|
system_init();
|
|
search_main();
|
|
search_display();
|
|
}
|
|
|
|
function search_title($title, $sep) {
|
|
global $lang;
|
|
return "$title $sep {$lang['search']['head']}";
|
|
}
|
|
|
|
function search_display() {
|
|
global $smarty;
|
|
theme_init($smarty);
|
|
|
|
$smarty->display('default.tpl');
|
|
|
|
unset($smarty);
|
|
|
|
do_action('shutdown');
|
|
}
|
|
|
|
function search_main() {
|
|
global $lang, $smarty;
|
|
|
|
add_action('wp_title', 'search_title', 0, 2);
|
|
|
|
if (empty($_GET)) {
|
|
// display form
|
|
$title = $lang ['search'] ['head'];
|
|
$content = "shared:search.tpl";
|
|
} else {
|
|
// validate
|
|
if (isset($_GET ['q']) && $kw = trim($_GET ['q'])) {
|
|
$title = $lang ['search'] ['head'];
|
|
$content = "shared:search_results.tpl";
|
|
|
|
$kw = strtolower($kw);
|
|
search_do($kw);
|
|
} else {
|
|
$smarty->assign('error', $lang ['search'] ['error'] ['keywords']);
|
|
$title = $lang ['search'] ['headres'];
|
|
$content = "shared:search.tpl";
|
|
}
|
|
}
|
|
|
|
$smarty->assign(array(
|
|
'subject' => $title,
|
|
'content' => $content
|
|
));
|
|
return 'default.tpl';
|
|
}
|
|
|
|
function search_do($keywords) {
|
|
global $smarty, $srchresults;
|
|
|
|
// get parameters
|
|
|
|
$srchkeywords = $keywords;
|
|
|
|
$params = array();
|
|
$params ['start'] = 0;
|
|
$params ['count'] = -1;
|
|
|
|
(!empty($_GET ['Date_Day'])) && ($_GET ['Date_Day'] != '--') ? $params ['d'] = $_GET ['Date_Day'] : null;
|
|
isset($_GET ['Date_Month']) && ($_GET ['Date_Month'] != '--') ? $params ['m'] = $_GET ['Date_Month'] : null;
|
|
!empty($_GET ['Date_Year']) && ($_GET ['Date_Year'] != '--') ? $params ['y'] = substr($_GET ['Date_Year'], 2) : null;
|
|
|
|
// isset($_GET['cats'])? $params = $_GET['cats']: null;
|
|
isset($_GET ['cats']) ? $params ['cats'] = $_GET ['cats'] : null;
|
|
|
|
$params ['fullparse'] = false;
|
|
|
|
if (!empty($_GET ['stype']) && $_GET ['stype'] == 'full') {
|
|
$params ['fullparse'] = true;
|
|
$fts = "yes";
|
|
} else {
|
|
$params ['fullparse'] = false;
|
|
$fts = "no";
|
|
}
|
|
|
|
$srchparams = $params;
|
|
|
|
$list = array();
|
|
|
|
$q = new FPDB_Query($params, null);
|
|
|
|
while ($q->hasMore()) {
|
|
|
|
list ($id, $e) = $q->getEntry();
|
|
|
|
$match = false;
|
|
|
|
if ($keywords == '*') {
|
|
$match = true;
|
|
} else {
|
|
$match = strpos(strtolower($e ['subject']), $keywords) !== false;
|
|
|
|
// if (!$match && $params['fullparse']) {
|
|
if (!$match && ($fts === "yes")) {
|
|
|
|
$match = strpos(strtolower($e ['content']), $keywords) !== false;
|
|
}
|
|
}
|
|
|
|
if ($match)
|
|
$list [$id] = $e;
|
|
}
|
|
|
|
$smarty->registerPlugin('block', 'search_result_block', 'smarty_search_results_block');
|
|
$smarty->registerPlugin('block', 'search_result', 'smarty_search_result');
|
|
|
|
if (!$list)
|
|
$smarty->assign('noresults', true);
|
|
|
|
$srchresults = $list;
|
|
}
|
|
|
|
function smarty_search_results_block($params, $content, &$smarty, &$repeat) {
|
|
global $srchresults;
|
|
|
|
if ($srchresults) {
|
|
return $content;
|
|
}
|
|
}
|
|
|
|
function smarty_search_result($params, $content, &$smarty, &$repeat) {
|
|
global $srchresults, $post;
|
|
$repeat = false;
|
|
|
|
// check if we have at least one more search result
|
|
// (current pointer position must not be after the last element)
|
|
if (current($srchresults)) {
|
|
// get the current search result details
|
|
$id = key($srchresults);
|
|
$e = $srchresults [$id];
|
|
// assign values to template
|
|
$smarty->assign('id', $id);
|
|
$post = $e;
|
|
$smarty->assign($e);
|
|
$repeat = true;
|
|
// advance pointer to next search result element
|
|
next($srchresults);
|
|
}
|
|
return $content;
|
|
}
|
|
|
|
/*
|
|
* class rawsearchbot extends fs_filelister {
|
|
*
|
|
* var $_varname = 'cache';
|
|
* var $_cachefile = null;
|
|
* var $_directory = CONTENT_DIR;
|
|
* var $_constrained_list = array();
|
|
*
|
|
* function rawsearchbot($keywords, $fullparse, $searchjusthese=array()) {
|
|
*
|
|
* $this->keywords = strtolower($keywords);
|
|
* $this->fullparse = $fullparse;
|
|
* $o = new entry_indexer;
|
|
* $this->entry_arr = $o->getList();
|
|
*
|
|
*
|
|
* if ($searchjusthese) {
|
|
* $this->_constrained_list = $searchjusthese;
|
|
* }
|
|
* return parent::__construct();
|
|
*
|
|
* }
|
|
*
|
|
* function _checkFile($directory, $file) {
|
|
*
|
|
* $f = "$directory/$file";
|
|
*
|
|
* if ( is_dir($f) && ctype_digit($file)) {
|
|
* return 1;
|
|
* }
|
|
*
|
|
* if (fnmatch('entry*'.EXT, $file)) {
|
|
* $id=basename($file,EXT);
|
|
* $arr = $this->entry_arr[$id];
|
|
*
|
|
* if (in_array('draft',$arr['categories'])) return 0;
|
|
*
|
|
* if ($this->fullparse) {
|
|
* $str = strtolower(io_load_file(bdb_idtofile($id, BDB_ENTRY)));
|
|
*
|
|
* if (strpos($str, $this->keywords)!==false) {
|
|
* $this->_list[$id] = $arr['subject'];
|
|
* }
|
|
*
|
|
* } else {
|
|
* if (strpos(strtolower($arr['subject']), $this->keywords)!==false) {
|
|
* $this->_list[$id] = $arr['subject'];
|
|
* }
|
|
* }
|
|
* return 0;
|
|
* }
|
|
* }
|
|
*
|
|
* }
|
|
*/
|
|
|
|
?>
|