
Updated calls to current Smarty API (register_function()/register_modifier()/register_block() -> registerPlugin(); assign_by_ref() -> assignByRef()). Fixed file includes in templates with quotes. Removed SmartyValidate.class.php includes. Still work in progress as some errors still appear!
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;
|
|
* }
|
|
* }
|
|
*
|
|
* }
|
|
*/
|
|
|
|
?>
|