function refererkeyword() { global $pluginMenuURL, $pluginSelfParam, $configVal; $more = false; if (defined('TEXTCUBE_NAME')) { requireComponent('Textcube.Model.Statistics'); requireComponent('Textcube.Function.misc'); } else { requireComponent('Tattertools.Model.Statistics'); requireComponent('Tattertools.Function.misc'); } $data = Setting::fetchConfigVal($configVal); $showURL = 0; $limitRank = 5; $Filtering = array(); if (!is_null($data)) { $showURL = $data['showURL']; $limitRank = $data['limitRank']; $Filtering = preg_split("/[\\s,]+/", $data['WordFiltering']); } if (!empty($_POST['showURL'])) { $showURL = $_POST['showURL']; } if (!empty($_POST['showKeywordlistLight'])) { $limitRank = $_POST['showKeywordlistLight']; } $refereres = Statistics::getRefererLogs(); $keywordlist = array(); $wordlist = array(); $record = array(); $refererURL = array(); $totalpassedkeyword = 0; for ($i = 0; $i < sizeof($refereres); $i++) { $record = $refereres[$i]; if ($i == 0) { $referredend = $record['referred']; } $keyword = ""; $passthiskeyword = 0; list($keyword, ) = bringSearchWord($record['url'], $record['host']); foreach ($Filtering as $FilterWord) { if (strpos($keyword, $FilterWord) !== false) { $passthiskeyword = 1; $totalpassedkeyword++; break 1; } } if ($passthiskeyword == 0) { if (array_key_exists($keyword, $keywordlist)) { $refererURL[$keyword][$keywordlist[$keyword]] = $record['url']; $keywordlist[$keyword]++; } elseif ($keyword) { $keywordlist[$keyword] = 1; $refererURL[$keyword][0] = $record['url']; } $word = split(" ", $keyword); foreach ($word as $maira) { if (array_key_exists($maira, $wordlist)) { $wordlist[$maira]++; } elseif ($maira) { $wordlist[$maira] = 1; } } } } $referredstart = array_key_exists('referred', $record) ? $record['referred'] : null; ?> <h2 class="caption"><span class="main-text"><?php echo _t('리퍼러 검색어 통계') . " (" . Timestamp::formatDate($referredstart) . " ~ " . Timestamp::formatDate($referredend) . ")"; ?> </span></h2> <div id="statistics-counter-inbox" class="data-inbox"> <div class="title"> <span class="label"><span class="text"><?php echo _t('총 검색어 개수'); ?> </span></span> <span class="divider"> : </span> <span id="total"><?php echo count($keywordlist); ?> </span> <span class="divider"> : </span> <span class="label"><span class="text"><?php echo _t('총 리퍼러 개수'); ?> </span></span> <span class="divider"> : </span> <span id="total"><?php echo sizeof($refereres); ?> </span> <span class="divider"> : </span> <?php if ($totalpassedkeyword > 0) { ?> <span class="label"><span class="text"><?php echo _t('필터링된 리퍼러 개수'); ?> </span></span> <span class="divider"> : </span> <span id="total"><?php echo $totalpassedkeyword; ?> </span> <span class="divider"> : </span> <?php } ?> </div> <form id="refererkeyword-option" class="part" method="post" action="<?php echo $pluginMenuURL; ?> "> <div class="title"> <span class="label"><?php echo _t('검색어 순위 출력은'); ?> </span> <span class="label"><select name="showKeywordlistLight" onchange="document.getElementById('refererkeyword-option').submit()"> <option value="5"<?php if ($limitRank == 5 || $limitRank == 0) { echo " selected=\"selected\""; } ?> ><?php echo _t('5위까지만 출력합니다'); ?> </option> <option value="10"<?php if ($limitRank == 10) { echo " selected=\"selected\""; } ?> ><?php echo _t('10위까지만 출력합니다'); ?> </option> <option value="15"<?php if ($limitRank == 15) { echo " selected=\"selected\""; } ?> ><?php echo _t('15위까지만 출력합니다'); ?> </option> <option value="3939"<?php if ($limitRank == 3939) { echo " selected=\"selected\""; } ?> ><?php echo _t('모든 순위를 출력합니다'); ?> </option> </select></span> </div> <div class="title"> <span class="label"><span class="text"><?php echo _t('각 검색어가 검출된 주소를'); ?> </span></span> <span class="label"><select name="showURL" onchange="document.getElementById('refererkeyword-option').submit()"> <option value="0"<?php if ($showURL == 0 || $showURL == "") { echo " selected=\"selected\""; } ?> ><?php echo _t('출력하지 않습니다'); ?> </option> <option value="1"<?php if ($showURL == 1) { echo " selected=\"selected\""; } ?> ><?php echo _t('출력합니다'); ?> </option> </select></span> </div> </form> </div> <hr class="hidden" /> <div id="part-statistics-cloud" class="part"> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th class="site"><span class="text"><?php echo _t('검색어에 주로 쓰인 단어'); ?> </span></th> </tr> </thead> <tbody> <tr class="even-line inactive-class"> <td class="keywordcloud"> <?php srand((double) microtime() * 1000000); $wordlist = array_sort($wordlist, 'desc'); $original_wordlist = $wordlist; $wordkeys = array_keys($wordlist); $i = 0; $cloudstyle = array(); foreach ($wordkeys as $wordwork) { if ($wordlist[$wordwork] < 2) { unset($wordlist[$wordwork]); unset($wordkeys[$i]); } if ($wordlist[$wordwork] > 50) { $cloudstyle[$i] = "cloud1"; } elseif ($wordlist[$wordwork] > 25) { $cloudstyle[$i] = "cloud2"; } elseif ($wordlist[$wordwork] > 15) { $cloudstyle[$i] = "cloud3"; } elseif ($wordlist[$wordwork] > 6) { $cloudstyle[$i] = "cloud4"; } else { $cloudstyle[$i] = "cloud5"; } $i++; } if (count($wordkeys) <= 10) { $wordlist = $original_wordlist; $wordkeys = array_keys($wordlist); } //shuffle ($wordkeys); $beforewordvalue = ''; $wordrank = 0; for ($i = 0; $i < sizeof($wordlist); $i++) { $wordkey = $wordkeys[$i]; $wordvalue = $wordlist[$wordkey]; $wordkey = str_replace("\"", """, $wordkeys[$i]); if ($wordvalue != $beforewordvalue) { if ($wordrank == 15) { break; } $wordrank++; $beforewordvalue = $wordvalue; } $wordclassName = $i % 2 == 1 ? 'even-line' : 'odd-line'; $wordclassName .= $i == sizeof($wordlist) - 1 ? ' last-line' : ''; echo "<a class=\"" . $cloudstyle[$i] . "\">" . htmlspecialchars($wordkey) . "</a> "; } ?> </td> </tr> </tbody> </table> </div> <hr class="hidden" /> <div id="part-statistics-log" class="part"> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th class="number"><span class="text"><?php echo _t('순위'); ?> </span></th> <th class="number"><span class="text"><?php echo _t('개수'); ?> </span></th> <th class="searchwordtitle"><span class="text"><?php echo _t('검색어명'); ?> </span></th> </tr> </thead> <tbody> <?php $keywordlist = array_sort($keywordlist, 'desc'); $keywordkeys = array_keys($keywordlist); $beforekeywordvalue = ''; $rank = array(); $samerank = 1; $rankcount = 0; // 머리가 나빠서 죄송합니다... orz for ($i = 0; $i < sizeof($keywordlist); $i++) { $keywordkey = $keywordkeys[$i]; $keywordvalue = $keywordlist[$keywordkey]; // $keywordkey = str_replace("\"", """,$keywordkeys[$i]); if ($keywordvalue != $beforekeywordvalue) { $rankcount++; $rank[$i] = $rankcount; $beforekeywordvalue = $keywordvalue; } else { $rank[$i] = $rankcount; } } $eversamerankTotal = array_count_values($rank); $rankcount = 0; for ($i = 0; $i < sizeof($keywordlist); $i++) { $keywordkey = $keywordkeys[$i]; $keywordvalue = $keywordlist[$keywordkey]; // $keywordkey = str_replace("\"", """,$keywordkeys[$i]); if ($keywordvalue != $beforekeywordvalue) { $rankcount++; $beforekeywordvalue = $keywordvalue; $samerank = 1; } else { $samerank++; } if ($limitRank != 3939) { if ($rankcount >= 6 && $limitRank == 5) { break; } if ($rankcount >= 11 && $limitRank == 10) { break; } if ($rankcount >= 16 && $limitRank == 15) { break; } } $RefererURLthiskeyword = $refererURL[$keywordkey]; if ($eversamerankTotal[$rankcount] == 1) { $viewSameRank = ''; } else { $viewSameRank = " (" . $samerank . "/" . $eversamerankTotal[$rankcount] . ")"; } ?> <tr onmouseover="rolloverClass(this, 'over')" onmouseout="rolloverClass(this, 'out')"> <td class="rank"><?php echo $rankcount . _t('위') . $viewSameRank; ?> </td> <td class="rank"><?php echo $keywordvalue . _t('개'); ?> </td> <td class="address"><?php echo htmlspecialchars($keywordkey); ?> </td> </tr> <?php if ($showURL == 1) { $j = 0; foreach (array_unique($RefererURLthiskeyword) as $splitRefererURL) { $urlClassName = $j == sizeof(array_unique($RefererURLthiskeyword)) - 1 ? '' : 'noBorderBottom'; list(, $decodeURL) = bringSearchWord($splitRefererURL); ?> <tr> <td class="<?php echo $urlClassName; ?> "></td> <td class="<?php echo $urlClassName; ?> "></td> <td class="refererurl"> <?php echo "<a href=\"" . Misc::escapeJSInAttribute($splitRefererURL) . "\" onclick=\"window.open(this.href); return false;\">" . Utils_Unicode::lessenAsEm(htmlspecialchars($decodeURL), 90) . "</a>"; $j++; } } ?> </td> </tr> <?php } ?> </tbody> </table> </div> <div class="clear"></div> <?php }
function getRefererLogs() { return Statistics::getRefererLogs(); }