'keyword_set');
$keyword_set = tool_common_get('keyword');
$keyword_set['keyword_type'] = dunserialize($keyword_set['keyword_type']);
seo_tpl($args);
function keyword_set(){
global $_G,$pluin_info,$keyword_type_arr,$keyword_set;
if($_GET['editsubmit']){
$set = $_POST['set'];
$set['keyword_type'] = serialize($_POST['keyword_type']);
//计划任务要重新设定
tool_common_set('milu_seotool_cron', array('keyword_rank_check' => 0));
tool_common_set('keyword', $set);
cpmsg(stlang('op_success'), PLUGIN_GO."keyword", 'succeed');
}else{
$info = $keyword_set;
$show .= seoOutput::show_title(stlang('keyword_set_title'));
$show .= seoOutput::show_tr(
array(
'name' => stlang('auto_check_rank'),
'desc' => stlang('auto_check_rank_notice'),
'arr' => array(
'name' => 'is_auto_rank',
'info' => $info,
'int_val' => 2,
'lang_type' => 2,
),
)
,'radio');
$show .= seoOutput::show_tr(
array(
'name' => stlang('tag_auto_add_keyword'),
'desc' => stlang('tag_auto_add_keyword_notice'),
'arr' => array(
'name' => 'tag_add_keyword',
'info' => $info,
'int_val' => 2,
'lang_type' => 2,
),
)
,'radio');
$info['show'] = $show;
$info['tpl'] = 'common_set';
return $info;
}
}
function forum_keyword(){
global $_G;
$update = intval($_GET['update']) ? 1 : 0;
if($update) {
tool_common_set('keyword', array('rank_data' => array(), 'keyword_data' => array(), 'zhishu_cache_data' => array()));
}
$cat_arr = forum_data_format($update);
$info['cat_arr'] = $cat_arr;
$info['show'] = $show;
$info['data_type'] = 0;
$info['tpl'] = 'keyword_list';
return $info;
}
//数据趋势
function trend_data_count(){
global $_G;
$keyword_set = tool_common_get('keyword');
$view_info['keyword'] = dstripslashes($_GET['keyword']);
$view_info['start_dateline'] = $_POST['start_dateline'] ? strtotime($_POST['start_dateline']) : '';
$view_info['end_dateline'] = $_POST['end_dateline'] ? strtotime($_POST['end_dateline']) : '';
$view_info['start_dateline'] = $view_info['start_dateline'] ? $view_info['start_dateline'] : $_G['timestamp'] - 3600*24*7;
$view_info['end_dateline'] = $view_info['end_dateline'] ? $view_info['end_dateline'] : $_G['timestamp'];
$dateline_arr = st_dayRange($view_info['start_dateline'], $view_info['end_dateline']);
$from = $dateline_arr[1]['from'];
$end = $dateline_arr[count($dateline_arr)]['end'];
if($_GET['inajax'] || $_POST['submit'] || $view_info['keyword']){
$title = date('Y-m-d', $from).' '.stlang('to_').' '.date('Y-m-d', $end). ' '.stlang('trend_flash_title2');
$sql = " AND (daytime<'".date('Ymd', $end)."' OR daytime='".date('Ymd', $end)."') AND (daytime>'".date('Ymd', $from)."' OR daytime='".date('Ymd', $from)."')";
if($view_info['keyword']){
$keyword_arr = array($view_info['keyword']);
}else{
$query = DB::query("SELECT * FROM ".DB::table('milu_seotool_keyword')." LIMIT 0,150");
$items = array();
while($rs = DB::fetch($query)) {
$keyword_arr[] = $rs['name'];
}
}
$title_arr = $dateline_arr;
$rank_value_arr = array();
foreach($keyword_arr as $k0 => $kw){
$query = DB::query("SELECT k.*,r.* FROM ".DB::table('milu_seotool_keyword')." as k Inner Join ".DB::table('milu_seotool_keyword_rank')." as r ON r.kid=k.kid WHERE name='".st_addslashes($kw)."' $sql ");
while($rs = DB::fetch($query)) {
foreach($dateline_arr as $k => $v){
if($rs['daytime'] == date('Ymd',$v['end'])){
$dateline_arr[$k]['rank'] = $rs['rank'];
$rank_value_arr[$kw][$k] = $rs['rank'];
}
}
}
}
if(is_array($dateline_arr)){
$data_arr['keyword_rank'] = array(
0 => array(
'name' => stlang('keyword'),
'value' => $keyword_arr
),
);
foreach($dateline_arr as $k => $v){
$i = 0;
$data_arr['keyword_rank'][$k+1]['name'] = $v['name'];
foreach($keyword_arr as $k0 => $v0){
$data_arr['keyword_rank'][$k+1]['value'][$i] = $rank_value_arr[$v0][$k];
$i++;
}
}
}
$show_arr[] = seoOutput::show_table($data_arr, 'keyword_rank', array('caption' => $_GET['inajax'] ? ''.stlang('view_more').'' : ''));
$info['show'] = implode('', $show_arr);
}
if($_GET['inajax']) show_seotool_window(stlang('one_week_ranks'), $info['show'], array('f' => 1));
$info['view_show'] = $view_info;
$info['start_dateline'] = date('Y-m-d', $view_info['start_dateline']);
$info['end_dateline'] = date('Y-m-d', $view_info['end_dateline']);
$info['tpl'] = 'keyword_trend';
return $info;
}
function forum_data_format($update = 0){
global $_G;
loadcache('milu_seotool_forum_catdata');
if( !($cat_arr = $_G['cache']['milu_seotool_forum_catdata'] ) || $update == 1){
$query = DB::query("SELECT f.fid, f.type, f.name, f.fup, ff.keywords, ff.seodescription, ff.seotitle FROM ".DB::table('forum_forum')." f
LEFT JOIN ".DB::table('forum_forumfield')." ff ON ff.fid=f.fid LEFT JOIN ".DB::table('forum_access')." a ON a.fid=f.fid AND a.allowview>'0' WHERE f.status<>'3' ORDER BY f.type, f.displayorder");
while($rs = DB::fetch($query)) {
$forumseoset = array(
'seotitle' => $rs['seotitle'],
'seokeywords' => $rs['keywords'],
'seodescription' => $rs['seodescription']
);
list($navtitle, $metadescription, $metakeywords) = get_seosetting('threadlist', array('fgroup' => $rs['name']), array('seokeywords' => $rs['keywords']), $forumseoset);
$caturl_str = $rs['fup'] > 0 ? 'forum.php?mod=forumdisplay&fid='.$rs['fid'] : 'forum.php?gid='.$rs['fid'];
$cat_arr[$rs['fid']] = array('catid' => $rs['fid'], 'upid' => $rs['fup'], 'catname' => $rs['name'], 'keywords' => explode(',', $metakeywords), 'caturl' => $_G['siteurl'].$caturl_str);
}
foreach($cat_arr as $k => $v){
if($v['upid'] > 0){
$cat_arr[$v['upid']]['children'][$k] = $k;
}
}
foreach($cat_arr as $k => $v){
if($v['upid'] == 0 && !$v['children']) unset($cat_arr[$k]);
}
save_syscache('milu_seotool_forum_catdata', $cat_arr);
}
return $cat_arr;
}
function show_keyword_info_tr($keyword_info){
if(!$keyword_info) return;
$str = "
".stlang('bat_query')." | ".$keyword_info['keyword']." | ".$keyword_info['zhishu']." | ".$keyword_info['count']." | ".$keyword_info['density']." |
".$keyword_info['rank']." | ".$keyword_info['trend']." | ";
return $str;
}
function st_ajax_keyword(){
global $_G;
$data_type = intval($_GET['data_type']);
$catid = intval($_GET['catid']);
$keyword = st_format_url(st_iconv($_GET['keyword'], 'UTF-8', CHARSET), 1, 0);
//关键词排名、排名趋势
$rank_data = get_rank_data($keyword);
//指数、密度、频率
if($data_type == 1){//门户
loadcache('milu_seotool_portal_catdata');
$cat_arr = $_G['cache']['milu_seotool_portal_catdata'];
$caturl = $cat_arr[$catid]['caturl'];
}else{
loadcache('milu_seotool_forum_catdata');
$cat_arr = $_G['cache']['milu_seotool_forum_catdata'];
$caturl = $cat_arr[$catid]['caturl'];
}
$keywords = $cat_arr[$catid]['keywords'];
$keyword_data = keyword_density_set($caturl, $keywords, 2);
$result_data = $keyword_data[$keyword];
if(!$result_data) $result_data = array('count' => 0, 'density' => '0.0%', 'status' => 1);
$result_data['zhishu'] = baidu_zhishu($keyword);//指数
$result_data['rank'] = implode(',', $rank_data['rank']);
$result_data['trend'] = $rank_data['trend'];
return json_encode($result_data);
}
function st_redirect_zhishu(){
$keyword = st_format_url(st_iconv($_GET['keyword'], 'UTF-8', 'GBK'), 1, 0);
$url = 'http://index.baidu.com/main/word.php?word='.$keyword;
dheader('location: '.$url);
}
function show_keyword($data_arr, $catid = 0){
global $_G;
if(!$data_arr || !$data_arr[0]) return;
$str = '';
$info = array();
$data_type = $_GET['myac'] == 'portal_keyword' ? 1 : 0;
$keyword_count_js = '';
$keyword_data = tool_common_get('keyword');
$count_keyword_data = $keyword_data['keyword_data'];
$zhishu_cache_data = $keyword_data['zhishu_cache_data']['data'];
$rank_cache_data = $keyword_data['rank_data']['data'];
$data_flag = 1;
if($keyword_data){
foreach((array)$data_arr as $k => $v){
$v_md5 = md5($v);
if(!isset($count_keyword_data[$v]) || !isset($zhishu_cache_data[$v_md5])) {
$data_flag = 0;
continue;
}
}
}else{
$data_flag = 0;
}
if($data_flag == 1) $keyword_count_js = '';//存在缓存数据
$result_data = array();
foreach($data_arr as $k => $v){
$key = $catid.md5($v);
$v_md5 = md5($v);
$info = $count_keyword_data[$v];
$key_id = $catid.'_'.$key;
$query_href = ''.stlang('query').'';
//密度、频率
if(!$info){
$info['density'] = $query_href;
$info['count'] = $query_href;
}
//指数
if(!isset($zhishu_cache_data[$v_md5])){
$info['zhishu'] = $query_href;
}else{
$info['zhishu'] = $zhishu_cache_data[$v_md5] > -1 ? $zhishu_cache_data[$v_md5] : stlang('view');
$info['zhishu'] = ''.$info['zhishu'].'';
}
//排名
$rank_info = $rank_cache_data[$v_md5];
if(!$rank_info){
$rank_info['rank'] = $query_href;
$rank_info['trend'] = $query_href;
}else{
$rank_info['rank'] = $rank_info['rank'][0] ? implode(',', $rank_info['rank']) : '-';
$rank_info['rank'] = ''.$rank_info['rank'].'';
$img_type = 'noupdown';
$num = '';
if(intval($rank_info['trend']) > 0 || (string)$rank_info['trend'] == '+'){
$img_type = 'up';
if($rank_info['trend'] != '+') $num = abs($rank_info['trend']);
}else if($rank_info['trend'] < 0 || (string)$rank_info['trend'] == '-'){
$img_type = 'down';
if($rank_info['trend'] != '-') $num = abs($rank_info['trend']);
}
$rank_info['trend'] = '
'.$num.'';
}
$field_arr = array( 'zhishu', 'count', 'density', 'rank', 'trend');
foreach($field_arr as $v2){
$data_info = $v2 == 'rank' || $v2 == 'trend' ? $rank_info : $info;
$result_data[$v2] .= ''.$data_info[$v2].'
';
}
$result_data['keyword'] .= ''.cutstr($v, 30).'
';
$result_data['args_info'][] = $catid.'|'.$key_id.'|'.$v;
}
$result_data['args_info'] = implode('@', $result_data['args_info']);
return $result_data;
}
function st_ajax_keyword_list(){
$s = trim(st_format_url($_GET['q']));
if(!$s) return;
$query = DB::query("SELECT * FROM ".DB::table('milu_seotool_keyword')." WHERE name like '".st_addslashes($s)."%' LIMIT 0,20");
$items = array();
while($rs = DB::fetch($query)) {
$name = st_iconv($rs['name'], CHARSET, 'UTF-8');
$items[] = $name;
}
if(!$items) return;
return json_encode($items);
}
function baidu_zhishu($keyword, $update = 0){
global $_G;
$client_info = get_client_info();
if(!$client_info || !$client_info['domain']) return -3;
$cache_key = 'zhishu_cache_data';
$keyword_data = tool_common_get('keyword');
$keyword_cache_data = $keyword_data[$cache_key];
$key = md5($keyword);
$data = $keyword_cache_data['data'][$key];
$diff_dateline = $_G['timestamp'] - $keyword_cache_data['dateline'];
if($diff_dateline > 24*3600*2) {
unset($data);
tool_common_set('keyword', array($cache_key => array()) );
}
if(!isset($data) || $update == 1 ){
$key_data = get_site_key();
$data = st_rpcClient()->RPC_baidu_zhishu($keyword, $key_data);
if(is_object($data)){
if($data->Message || $data->Number == 0) {
return -2;
}
}
if($data < 0) return -1;
$keyword_cache_data['data'][$key] = $data;
$st_cache_data['dateline'] = $keyword_cache_data['dateline'] ? $keyword_cache_data['dateline'] : $_G['timestamp'];
$st_cache_data['data'] = $keyword_cache_data['data'];
tool_common_set('keyword', array($cache_key => $st_cache_data));
}
return $data;
}
function keyword_density_set($caturl, $keyword_arr = array(), $get = 1){
if(!$keyword_arr) return;
$keyword_set = tool_common_get('keyword');
$content = st_get_contents($caturl, array('cache' => 3600*24*5));
if(!$content) return;
$content = st_striptext($content);
$content_lenth = strlen($content);
$count_data = array();
foreach($keyword_arr as $k => $v){
$count = substr_count($content, $v);
$density = strlen($v) * $count / $content_lenth;
$status = ($density < 0.08 && $density > 0.02) ? 1 : 0;
$density = sprintf("%01.1f", $density*100).'%';
$count_data[$v] = $keyword_set['keyword_data'][$v] = array('count' => $count, 'density' => $density, 'status' => $status);
}
tool_common_set('keyword', $keyword_set);
if($get != 1) return $count_data;
return $keyword_set['keyword_data'];
}
?>