<?php
/**
* ECSHOP 搜索程序
* ============================================================================
* 版权所有 2005-2008 上海商派网络科技有限公司,并保留所有权利。
* 网站地址: http://www.ecshop.com;
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
* 使用;不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* $Author: testyang $
* $Id: article_search.php 15183 2008-11-17 09:01:24Z testyang $
*/
define('IN_ECS', true);
if (empty($_GET['encode']))
{
$string = array_merge($_GET, $_POST);
if (get_magic_quotes_gpc())
{
require(dirname(__FILE__) . '/includes/lib_base.php');
//require(dirname(__FILE__) . '/includes/lib_common.php');
$string = stripslashes_deep($string);
}
$string['search_encode_time'] = time();
$string = str_replace('+', '%2b', base64_encode(serialize($string)));
header("Location: article_search.php?encode=$string\n");
exit;
}
else
{
$string = base64_decode(trim($_GET['encode']));
if ($string !== false)
{
$string = unserialize($string);
if ($string !== false)
{
/* 用户在重定向的情况下当作一次访问 */
if (!empty($string['search_encode_time']))
{
if (time() > $string['search_encode_time'] + 2)
{
define('INGORE_VISIT_STATS', true);
}
}
else
{
define('INGORE_VISIT_STATS', true);
}
}
else
{
$string = array();
}
}
else
{
$string = array();
}
}
require(dirname(__FILE__) . '/includes/init.php');
$_REQUEST = array_merge($_REQUEST, addslashes_deep($string));
$_REQUEST['act'] = !empty($_REQUEST['act']) ? trim($_REQUEST['act']) : '';
/*------------------------------------------------------ */
//-- 搜索结果
/*------------------------------------------------------ */
$_REQUEST['article_keywords'] = !empty($_REQUEST['article_keywords']) ? trim($_REQUEST['article_keywords']) : '';
$_REQUEST['category'] = !empty($_REQUEST['article_category']) ? intval($_REQUEST['article_category']) : 0;
$action = '';
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'form')
{
/* 要显示高级搜索栏 */
$adv_value['art_key'] = htmlspecialchars(stripcslashes($_REQUEST['article_keywords']));
$adv_value['art_cat'] = $_REQUEST['article_category'];
/* 将提交数据重新赋值 */
/*处理文章属性*/
$smarty->assign('adv_val', $adv_value);
$smarty->assign('action', 'form');
$action = 'form';
}
/* 初始化搜索条件 */
$keywords = '';
$tag_where = '';
if (!empty($_REQUEST['article_keywords']))
{
$arr = array();
if (stristr($_REQUEST['article_keywords'], ' AND ') !== false)
{
/* 检查关键字中是否有AND,如果存在就是并 */
$arr = explode('AND', $_REQUEST['article_keywords']);
$operator = " AND ";
}
elseif (stristr($_REQUEST['article_keywords'], ' OR ') !== false)
{
/* 检查关键字中是否有OR,如果存在就是或 */
$arr = explode('OR', $_REQUEST['article_keywords']);
$operator = " OR ";
}
elseif (stristr($_REQUEST['article_keywords'], ' + ') !== false)
{
/* 检查关键字中是否有加号,如果存在就是并 */
$arr = explode('+', $_REQUEST['article_keywords']);
$operator = " AND ";
}
else
{
/* 检查关键字中是否有空格,如果存在就是或 */
$arr = explode(' ', $_REQUEST['article_keywords']);
$operator = " OR ";
}
$keywords = 'AND (';
$article_ids = array();
foreach ($arr AS $key => $val)
{
if ($key > 0 && $key < count($arr) && count($arr) > 1)
{
$keywords .= $operator;
}
$val = mysql_like_quote(trim($val));
$keywords .= "(title LIKE '%$val%' OR content LIKE '%$val%')";
$sql = 'SELECT DISTINCT article_id FROM ' . $ecs->table('article') . " WHERE title LIKE '%$val%' OR content LIKE '%$val%'";
$res = $db->query($sql);
while ($row = $db->FetchRow($res))
{
$article_ids[] = $row['article_id'];
}
$db->autoReplace($ecs->table('keywords'), array('date' => local_date('Y-m-d'),
'searchengine' => 'ecshop', 'keyword' => $val, 'count' => 1), array('count' => 1));
}
$keywords .= ')';
$article_ids = array_unique($article_ids);
$tag_where = implode(',', $article_ids);
if (!empty($tag_where))
{
$tag_where = 'OR article_id ' . db_create_in($tag_where);
}
}
$category = !empty($_REQUEST['category']) ? intval($_REQUEST['category']) : 0;
$categories = ($category > 0) ? ' AND ' . get_article_children($category) : '';
$page = !empty($_REQUEST['page']) && intval($_REQUEST['page']) > 0 ? intval($_REQUEST['page']) : 1;
$size = !empty($_CFG['page_size']) && intval($_CFG['page_size']) > 0 ? intval($_CFG['page_size']) : 20;
//统计文章数量
$sql = "SELECT COUNT(*) FROM " .$ecs->table('article').
"WHERE is_open = 1 AND article_type = 0 ".
"AND ( 1 " . $categories . $keywords ." ) ";
$count = $db->getOne($sql);
//①获得第几页
$page = isset($_REQUEST['page']) && intval($_REQUEST['page']) > 0 ? intval($_REQUEST['page']) : 1;
//②分页大小
$size = 30;
//③总的记录数,你可以用sql查询出来
$record_count = $GLOBALS['db']->getOne($sql);
//④生成分页
$pager = get_pager('article_search.php', array(), $record_count, $page,30);
//⑤赋值到模板
$smarty->assign('pager', $pager);
$max_page = ($count> 0) ? ceil($count / $size) : 1;
if ($page > $max_page)
{
$page = $max_page;
}
/* 查询文章 */
$sql = "SELECT article_id, cat_id, title FROM " .$ecs->table('article').
"WHERE is_open = 1 AND article_type = 0 ".
"AND ( 1 " . $categories . $keywords ." ) ".
"ORDER BY article_id";;
$res = $db->SelectLimit($sql, $size, ($page - 1) * $size);
//给文章的一些属性赋值
$arr = array();
while ($row = $db->FetchRow($res))
{
$arr[$row['article_id']]['article_id'] = $row['article_id'];
$arr[$row['article_id']]['title'] = $row['title'];
$arr[$row['article_id']]['cat_id'] = $row['cat_id'];
$arr[$row['article_id']]['url'] = build_uri('article', array('aid' => $row['article_id']), $row['title']);
}
//if(count($arr) % 2 != 0)
//{
// $arr[] = array();
//}
assign_template();
//var_dump($keywords);
$smarty->assign('search_article_list', $arr); //搜索的文章列表
$smarty->assign('category', $category);
$smarty->assign('keys',$val);
$smarty->assign('keywords', htmlspecialchars(stripslashes($_REQUEST['keywords'])));
$smarty->assign('search_keywords', stripslashes($_REQUEST['keywords']));
$smarty->assign('url_format', $url_format);
$smarty->assign('pager', $pager);
assign_dynamic('article_search');
$position = assign_ur_here(0, $ur_here);
$smarty->assign('page_title', $position['title']); // 页面标题
$smarty->assign('ur_here', $position['ur_here']); // 当前位置
$smarty->assign('intromode', $intromode);
$smarty->assign('helps', get_shop_help()); // 网店帮助
$smarty->assign('top_goods', get_top10()); // 销售排行
$smarty->assign('navigator_list', get_navigator($ctype, $catlist)); //自定义导航栏
$smarty->display('article_search.dwt');
/*------------------------------------------------------ */
//-- PRIVATE FUNCTION
/*------------------------------------------------------ */
/**
*看搜索字符是否为空
*
* @access public
* @param
*
* @return void
*/
function is_not_null($value)
{
if (is_array($value))
{
return (!empty($value['from'])) || (!empty($value['to']));
}
else
{
return !empty($value);
}
}
?>
/**
* ECSHOP 搜索程序
* ============================================================================
* 版权所有 2005-2008 上海商派网络科技有限公司,并保留所有权利。
* 网站地址: http://www.ecshop.com;
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
* 使用;不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* $Author: testyang $
* $Id: article_search.php 15183 2008-11-17 09:01:24Z testyang $
*/
define('IN_ECS', true);
if (empty($_GET['encode']))
{
$string = array_merge($_GET, $_POST);
if (get_magic_quotes_gpc())
{
require(dirname(__FILE__) . '/includes/lib_base.php');
//require(dirname(__FILE__) . '/includes/lib_common.php');
$string = stripslashes_deep($string);
}
$string['search_encode_time'] = time();
$string = str_replace('+', '%2b', base64_encode(serialize($string)));
header("Location: article_search.php?encode=$string\n");
exit;
}
else
{
$string = base64_decode(trim($_GET['encode']));
if ($string !== false)
{
$string = unserialize($string);
if ($string !== false)
{
/* 用户在重定向的情况下当作一次访问 */
if (!empty($string['search_encode_time']))
{
if (time() > $string['search_encode_time'] + 2)
{
define('INGORE_VISIT_STATS', true);
}
}
else
{
define('INGORE_VISIT_STATS', true);
}
}
else
{
$string = array();
}
}
else
{
$string = array();
}
}
require(dirname(__FILE__) . '/includes/init.php');
$_REQUEST = array_merge($_REQUEST, addslashes_deep($string));
$_REQUEST['act'] = !empty($_REQUEST['act']) ? trim($_REQUEST['act']) : '';
/*------------------------------------------------------ */
//-- 搜索结果
/*------------------------------------------------------ */
$_REQUEST['article_keywords'] = !empty($_REQUEST['article_keywords']) ? trim($_REQUEST['article_keywords']) : '';
$_REQUEST['category'] = !empty($_REQUEST['article_category']) ? intval($_REQUEST['article_category']) : 0;
$action = '';
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'form')
{
/* 要显示高级搜索栏 */
$adv_value['art_key'] = htmlspecialchars(stripcslashes($_REQUEST['article_keywords']));
$adv_value['art_cat'] = $_REQUEST['article_category'];
/* 将提交数据重新赋值 */
/*处理文章属性*/
$smarty->assign('adv_val', $adv_value);
$smarty->assign('action', 'form');
$action = 'form';
}
/* 初始化搜索条件 */
$keywords = '';
$tag_where = '';
if (!empty($_REQUEST['article_keywords']))
{
$arr = array();
if (stristr($_REQUEST['article_keywords'], ' AND ') !== false)
{
/* 检查关键字中是否有AND,如果存在就是并 */
$arr = explode('AND', $_REQUEST['article_keywords']);
$operator = " AND ";
}
elseif (stristr($_REQUEST['article_keywords'], ' OR ') !== false)
{
/* 检查关键字中是否有OR,如果存在就是或 */
$arr = explode('OR', $_REQUEST['article_keywords']);
$operator = " OR ";
}
elseif (stristr($_REQUEST['article_keywords'], ' + ') !== false)
{
/* 检查关键字中是否有加号,如果存在就是并 */
$arr = explode('+', $_REQUEST['article_keywords']);
$operator = " AND ";
}
else
{
/* 检查关键字中是否有空格,如果存在就是或 */
$arr = explode(' ', $_REQUEST['article_keywords']);
$operator = " OR ";
}
$keywords = 'AND (';
$article_ids = array();
foreach ($arr AS $key => $val)
{
if ($key > 0 && $key < count($arr) && count($arr) > 1)
{
$keywords .= $operator;
}
$val = mysql_like_quote(trim($val));
$keywords .= "(title LIKE '%$val%' OR content LIKE '%$val%')";
$sql = 'SELECT DISTINCT article_id FROM ' . $ecs->table('article') . " WHERE title LIKE '%$val%' OR content LIKE '%$val%'";
$res = $db->query($sql);
while ($row = $db->FetchRow($res))
{
$article_ids[] = $row['article_id'];
}
$db->autoReplace($ecs->table('keywords'), array('date' => local_date('Y-m-d'),
'searchengine' => 'ecshop', 'keyword' => $val, 'count' => 1), array('count' => 1));
}
$keywords .= ')';
$article_ids = array_unique($article_ids);
$tag_where = implode(',', $article_ids);
if (!empty($tag_where))
{
$tag_where = 'OR article_id ' . db_create_in($tag_where);
}
}
$category = !empty($_REQUEST['category']) ? intval($_REQUEST['category']) : 0;
$categories = ($category > 0) ? ' AND ' . get_article_children($category) : '';
$page = !empty($_REQUEST['page']) && intval($_REQUEST['page']) > 0 ? intval($_REQUEST['page']) : 1;
$size = !empty($_CFG['page_size']) && intval($_CFG['page_size']) > 0 ? intval($_CFG['page_size']) : 20;
//统计文章数量
$sql = "SELECT COUNT(*) FROM " .$ecs->table('article').
"WHERE is_open = 1 AND article_type = 0 ".
"AND ( 1 " . $categories . $keywords ." ) ";
$count = $db->getOne($sql);
//①获得第几页
$page = isset($_REQUEST['page']) && intval($_REQUEST['page']) > 0 ? intval($_REQUEST['page']) : 1;
//②分页大小
$size = 30;
//③总的记录数,你可以用sql查询出来
$record_count = $GLOBALS['db']->getOne($sql);
//④生成分页
$pager = get_pager('article_search.php', array(), $record_count, $page,30);
//⑤赋值到模板
$smarty->assign('pager', $pager);
$max_page = ($count> 0) ? ceil($count / $size) : 1;
if ($page > $max_page)
{
$page = $max_page;
}
/* 查询文章 */
$sql = "SELECT article_id, cat_id, title FROM " .$ecs->table('article').
"WHERE is_open = 1 AND article_type = 0 ".
"AND ( 1 " . $categories . $keywords ." ) ".
"ORDER BY article_id";;
$res = $db->SelectLimit($sql, $size, ($page - 1) * $size);
//给文章的一些属性赋值
$arr = array();
while ($row = $db->FetchRow($res))
{
$arr[$row['article_id']]['article_id'] = $row['article_id'];
$arr[$row['article_id']]['title'] = $row['title'];
$arr[$row['article_id']]['cat_id'] = $row['cat_id'];
$arr[$row['article_id']]['url'] = build_uri('article', array('aid' => $row['article_id']), $row['title']);
}
//if(count($arr) % 2 != 0)
//{
// $arr[] = array();
//}
assign_template();
//var_dump($keywords);
$smarty->assign('search_article_list', $arr); //搜索的文章列表
$smarty->assign('category', $category);
$smarty->assign('keys',$val);
$smarty->assign('keywords', htmlspecialchars(stripslashes($_REQUEST['keywords'])));
$smarty->assign('search_keywords', stripslashes($_REQUEST['keywords']));
$smarty->assign('url_format', $url_format);
$smarty->assign('pager', $pager);
assign_dynamic('article_search');
$position = assign_ur_here(0, $ur_here);
$smarty->assign('page_title', $position['title']); // 页面标题
$smarty->assign('ur_here', $position['ur_here']); // 当前位置
$smarty->assign('intromode', $intromode);
$smarty->assign('helps', get_shop_help()); // 网店帮助
$smarty->assign('top_goods', get_top10()); // 销售排行
$smarty->assign('navigator_list', get_navigator($ctype, $catlist)); //自定义导航栏
$smarty->display('article_search.dwt');
/*------------------------------------------------------ */
//-- PRIVATE FUNCTION
/*------------------------------------------------------ */
/**
*看搜索字符是否为空
*
* @access public
* @param
*
* @return void
*/
function is_not_null($value)
{
if (is_array($value))
{
return (!empty($value['from'])) || (!empty($value['to']));
}
else
{
return !empty($value);
}
}
?>