
# 태터툴즈 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 = "
"; $target .= "$max_data[visits] "; if($cut_peak == 'true') $target .= $avg; else $target .= round($max_data[visits]/2); $target .=" | ";
}
$target .= "|
| "; $target .=" | -$how_day days today : $lastvisit |