flatpress/search.php
2022-06-25 12:43:46 +02:00

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;
* }
* }
*
* }
*/
?>