# 태터툴즈 1.1 이상 용 Draco 카운터 Ver 3.01 # 제작자 : Draco # 제작일 : 2008. 1. 3 # 문의 : http://draco.pe.kr function ShowDracoCounter_DataSet($data){ requireComponent('Tattertools.Function.misc'); if(!is_integer(intval($data['how_day']))) return false; $cfg = misc::fetchConfigVal($data); return true; } function tcDateToTime($d) // 블로그 방문자숫자를 시간 문자열로 변환 { $y = intval($d/10000); $m = intval(($d%10000)/100); $d = $d%100; return ("$y-$m-$d 00:00:00"); } function dateDiff($d1, $d2) // 날짜 차이를 계산 { return floor((strtotime($d2) - strtotime($d1))/60/60/24); } function ShowDracoCounter($parameter){ global $database, $owner, $blogURL, $pluginURL, $configVal; requireComponent('Tattertools.Function.misc'); $data = misc::fetchConfigVal($configVal); if(!is_null($data) && array_key_exists('how_day', $data)){ $how_day = $data['how_day']; } else { $how_day = '30'; } if(!is_null($data) && array_key_exists('cut_peak', $data)){ $cut_peak = $data['cut_peak']; } else { $cut_peak = 'true'; } if(!is_null($data) && array_key_exists('view_marker', $data)){ $view_marker = $data['view_marker']; } else { $view_marker = 'true'; } if(!is_null($data) && array_key_exists('view_grid', $data)){ $view_grid = $data['view_grid']; } else { $view_grid = 'false'; } if(!is_null($data) && array_key_exists('graph_barwidth', $data)){ $graph_barwidth = $data['graph_barwidth']; } else { $graph_barwidth = '5'; } if(!is_null($data) && array_key_exists('graph_color', $data)){ $graph_color = $data['graph_color']; } else { $graph_color = '#577EE1'; } if(!is_null($data) && array_key_exists('line_thickness', $data)){ $line_thickness = $data['line_thickness']; } else { $line_thickness = '2'; } if(!is_null($data) && array_key_exists('line_blank', $data)){ $line_blank = $data['line_blank']; } else { $line_blank = 'false'; } if(!is_null($data) && array_key_exists('graph_backcolor', $data)){ $graph_backcolor = $data['graph_backcolor']; } else { $graph_backcolor = '#FFFFFF'; } if(!is_null($data) && array_key_exists('graph_fillcolor', $data)){ $graph_fillcolor = $data['graph_fillcolor']; } else { $graph_fillcolor = '#F4F7FF'; } if(!is_null($data) && array_key_exists('graph_highcolor', $data)){ $graph_highcolor = $data['graph_highcolor']; } else { $graph_highcolor = '#FF0000'; } if(!is_null($data) && array_key_exists('disp_y', $data)){ $disp_y = $data['disp_y']; } else { $disp_y = 'true'; } if(!is_null($data) && array_key_exists('disp_x', $data)){ $disp_x = $data['disp_x']; } else { $disp_x = 'true'; } if(!is_null($data) && array_key_exists('xy_color', $data)){ $xy_color = $data['xy_color']; } else { $xy_color = '#cccccc'; } #------------------------------------------------------------------------------------------ ## 1.5이전인지 이후인지 체크 $query = ("SHOW COLUMNS FROM `".$database['prefix']."DailyStatistics` LIKE 'blogid'"); $result = mysql_query($query) or die("버전체크쿼리 에러 : ".mysql_error()); $rarray = mysql_fetch_array($result); if (NULL == $rarray[0]) $blogid_col = "owner"; else $blogid_col = "blogid"; # 날짜 계산 $now_date = strtotime("now"); $old_date = strtotime("-".($how_day-1)." days"); $now_day = date('Ymd', $now_date); $old_day = date('Ymd', $old_date); $yester_day = date('Ymd', strtotime("-1 day")); # 최대 방문자 계산 $max_query = "SELECT `visits` FROM `".$database['prefix']."DailyStatistics` WHERE `".$blogid_col."` =".$owner." and date between ".$old_day." and ".$now_day." ORDER BY `visits` DESC LIMIT 1"; $max_result = mysql_query($max_query) or die("쿼리 실패1 : " . mysql_error()); $max_data=mysql_fetch_array($max_result); $max_data[visits]=stripslashes($max_data[visits]); # 평균 방문자 계산 $avg_query = "SELECT AVG(visits) FROM `".$database['prefix']."DailyStatistics` WHERE `".$blogid_col."` =".$owner." and date between ".$old_day." and ".$now_day; $avg_result = mysql_query($avg_query) or die("쿼리 실패2 : " . mysql_error()); $avg_data=mysql_fetch_array($avg_result); $avg=round($avg_data['AVG(visits)']); # 평균의 2배보다 많은 수치를 제외하고 계산 $cut_line = $avg*2; $cut_query = "SELECT MAX(visits) FROM `".$database['prefix']."DailyStatistics` WHERE `".$blogid_col."` =".$owner." and `visits` <= ".$cut_line." and date between ".$old_day." and ".$now_day; $cut_result = mysql_query($cut_query) or die("쿼리 실패3 : " . mysql_error()); $cut_data=mysql_fetch_array($cut_result); $cut_line=round($cut_data['MAX(visits)']); if($cut_peak == 'true') $graph_max = $cut_line; else $graph_max = $max_data[visits]; #최대 날짜, 최소 날짜 $high_query = "SELECT `date` FROM `".$database['prefix']."DailyStatistics` WHERE `".$blogid_col."` =".$owner." and date between ".$old_day." and ".$now_day." ORDER BY `visits` DESC LIMIT 1"; $high_result = mysql_query($high_query) or die("쿼리 실패4 : " . mysql_error()); $high_data=mysql_fetch_array($high_result); $high_date=$high_data[date]; $low_query = "SELECT `date` FROM `".$database['prefix']."DailyStatistics` WHERE `".$blogid_col."` =".$owner." and date between ".$old_day." and ".$yester_day." ORDER BY `visits` ASC LIMIT 1"; $low_result = mysql_query($low_query) or die("쿼리 실패5 : " . mysql_error()); $low_data=mysql_fetch_array($low_result); $low_date=$low_data[date]; $high_diff = dateDiff(tcDateToTime($old_day),tcDateToTime($high_date)); $low_diff = dateDiff(tcDateToTime($old_day),tcDateToTime($low_date)); # 실제 방문자수 리스팅 $dcount_query = "SELECT `date` , `visits` FROM `".$database['prefix']."DailyStatistics` WHERE `".$blogid_col."` =".$owner." and date between ".$old_day." and ".$now_day." ORDER BY `date` ASC LIMIT ".$how_day; $dcount_result = mysql_query($dcount_query) or die("쿼리 실패6 : " . mysql_error()); # 그래프 폭 $graph_width = ($how_day-1)*$graph_barwidth; # 메인 부분 HTML 처리 $target = "
$max_data[visits]
"; if($cut_peak == 'true') $target .= $avg; else $target .= round($max_data[visits]/2); $target .="
-$how_day days
today : $lastvisit
물밀듯이 몰려올 RSS 구독자들을 위해 (?) feedburner를 사용하려고 합니다.feedburner는 RSS 구독자가 많을 경우 생길수 있는 서버 부하를 줄이기 위해 RSS 주소를 feedburner 쪽으로 위임하는 서비스 입니다.그 외에 RSS 구독 통계 서비스를 제공합니다.그래서 저희 블로그의 RSS 주소는 http://feeds.feedburner.com/itanywhere입니다.기존에 RSS를 구독하시는 분들은 위의 주소로 바꾸어 주시고,다른분들에게 홍보하실 떄도 위 주소를 알려주시면 되겠습니다.지금까지 관리자였습니다...ㅋ