You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
5.8 KiB
178 lines
5.8 KiB
<?php
|
|
|
|
/**
|
|
* ECSHOP 搜索引擎关键字统计
|
|
* ============================================================================
|
|
* * 版权所有 2005-2016 上海商创网络科技有限公司,并保留所有权利。
|
|
* 网站地址: http://www.ecmoban.com;
|
|
* ----------------------------------------------------------------------------
|
|
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
|
|
* 使用;不允许对程序代码以任何形式任何目的的再发布。
|
|
* ============================================================================
|
|
* $Author: liubo $
|
|
* $Id: searchengine_stats.php 17217 2011-01-19 06:29:08Z liubo $
|
|
*/
|
|
|
|
define('IN_ECS', true);
|
|
|
|
require(dirname(__FILE__) . '/includes/init.php');
|
|
require_once(ROOT_PATH . 'languages/' .$_CFG['lang']. '/admin/statistic.php');
|
|
|
|
/* act操作项的初始化 */
|
|
if (empty($_REQUEST['act']))
|
|
{
|
|
$_REQUEST['act'] = 'view';
|
|
}
|
|
else
|
|
{
|
|
$_REQUEST['act'] = trim($_REQUEST['act']);
|
|
}
|
|
|
|
if ($_REQUEST['act'] == 'view')
|
|
{
|
|
admin_priv('client_flow_stats');
|
|
|
|
/* 时间参数 */
|
|
/* TODO: 时间需要改 */
|
|
if (isset($_POST) && !empty($_POST))
|
|
{
|
|
$start_date = $_POST['start_date'];
|
|
$end_date = $_POST['end_date'];
|
|
}
|
|
else
|
|
{
|
|
$start_date = local_date('Y-m-d', strtotime('-1 week'));
|
|
$end_date = local_date('Y-m-d');
|
|
}
|
|
/* ------------------------------------- */
|
|
/* --综合流量
|
|
/* ------------------------------------- */
|
|
$max = 0;
|
|
$general_xml = "<chart caption='$_LANG[tab_keywords]' shownames='1' showvalues='0' decimals='0' numberPrefix='' outCnvBaseFontSize='12' baseFontSize='12'>";
|
|
$sql = "SELECT keyword, count, searchengine ".
|
|
" FROM " .$ecs->table('keywords').
|
|
" WHERE date >= '$start_date' AND date <= '" .$end_date. "'";
|
|
if (isset($_POST['filter']))
|
|
{
|
|
$sql .= ' AND '. db_create_in($_POST['filter'], 'searchengine');
|
|
}
|
|
$res = $db->query($sql);
|
|
$search = array();
|
|
$searchengine = array();
|
|
$keyword = array();
|
|
|
|
while ($val = $db->fetchRow($res))
|
|
{
|
|
$keyword[$val['keyword']] = 1;
|
|
$searchengine[$val['searchengine']][$val['keyword']] = $val['count'];
|
|
}
|
|
|
|
$general_xml .= "<categories>";
|
|
foreach($keyword AS $key => $val)
|
|
{
|
|
$key = str_replace('&','&',$key);
|
|
$key = str_replace('>','>',$key);
|
|
$key = str_replace('<','<',$key);
|
|
$key =htmlspecialchars($key);
|
|
$general_xml .= "<category label='".str_replace('\'','',$key)."' />";
|
|
}
|
|
$general_xml .= "</categories>\n";
|
|
|
|
$i = 0;
|
|
|
|
foreach($searchengine AS $key => $val)
|
|
{
|
|
$general_xml .= "<dataset seriesName='$key' color='" . chart_color($i) . "' showValues='0'>";
|
|
foreach($keyword AS $k => $v)
|
|
{
|
|
$count = 0;
|
|
if(!empty($searchengine[$key][$k]))
|
|
{
|
|
$count = $searchengine[$key][$k];
|
|
}
|
|
$general_xml .= "<set value='$count' />";
|
|
}
|
|
$general_xml .= "</dataset>";
|
|
$i++;
|
|
}
|
|
|
|
$general_xml .= '</chart>';
|
|
|
|
/* 模板赋值 */
|
|
$smarty->assign('ur_here', $_LANG['searchengine_stats']);
|
|
$smarty->assign('general_data', $general_xml);
|
|
|
|
$searchengines = array('ecshop' => false,
|
|
'MSLIVE' => false,
|
|
'BAIDU' => false,
|
|
'GOOGLE' => false,
|
|
'GOOGLE CHINA' => false,
|
|
'CT114' => false,
|
|
'SOSO' => false);
|
|
|
|
if (isset($_POST['filter']))
|
|
{
|
|
foreach ($_POST['filter'] AS $v)
|
|
{
|
|
$searchengines[$v] = true;
|
|
}
|
|
}
|
|
$smarty->assign('searchengines', $searchengines);
|
|
|
|
/* 显示日期 */
|
|
$smarty->assign('start_date', $start_date);
|
|
$smarty->assign('end_date', $end_date);
|
|
|
|
$filename = local_date('Ymd', $start_date) . '_' . local_date('Ymd', $end_date);
|
|
$smarty->assign('action_link', array('text' => $_LANG['down_search_stats'], 'href' => 'searchengine_stats.php?act=download&start_date=' . $start_date . '&end_date=' . $end_date . '&filename=' . $filename));
|
|
|
|
$smarty->assign('lang', $_LANG);
|
|
/* 显示页面 */
|
|
assign_query_info();
|
|
$smarty->display('searchengine_stats.htm');
|
|
}
|
|
elseif ($_REQUEST['act'] == 'download')
|
|
{
|
|
$start_date = empty($_REQUEST['start_date']) ? strtotime('-20 day') : intval($_REQUEST['start_date']);
|
|
$end_date = empty($_REQUEST['end_date']) ? time() : intval($_REQUEST['end_date']);
|
|
|
|
$filename = $start_date . '_' . $end_date;
|
|
$sql = "SELECT keyword, count,searchengine ".
|
|
" FROM " .$ecs->table('keywords').
|
|
" WHERE date >= '$start_date' AND date <= '$end_date'";
|
|
$res = $db->query($sql);
|
|
|
|
$searchengine = array();
|
|
$keyword = array();
|
|
|
|
while ($val = $db->fetchRow($res))
|
|
{
|
|
$keyword[$val['keyword']] = 1;
|
|
$searchengine[$val['searchengine']][$val['keyword']] = $val['count'];
|
|
}
|
|
header("Content-type: application/vnd.ms-excel; charset=utf-8");
|
|
header("Content-Disposition: attachment; filename=$filename.xls");
|
|
$data = "\t";
|
|
foreach ($searchengine AS $k => $v)
|
|
{
|
|
$data .= "$k\t";
|
|
}
|
|
foreach ($keyword AS $kw => $val)
|
|
{
|
|
$data .= "\n$kw\t";
|
|
foreach ($searchengine AS $k => $v)
|
|
{
|
|
if (isset($searchengine[$k][$kw]))
|
|
{
|
|
$data .= $searchengine[$k][$kw] . "\t";
|
|
}
|
|
else
|
|
{
|
|
$data .= "0" . "\t";
|
|
}
|
|
}
|
|
}
|
|
echo ecs_iconv(EC_CHARSET, 'GB2312', $data) . "\t";
|
|
}
|
|
|
|
?>
|