rhymix/modules/analytics/analytics.view.php
devjin 94ce97fdb6 Analytics Module 개발
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7654 201d5d3c-b55e-5fd7-737f-ddc643e51545
2010-08-25 01:54:31 +00:00

483 lines
15 KiB
PHP

<?php
class analyticsView extends analytics
{
function init()
{
$this->setTemplatePath($this->module_path.'tpl');
}
function dispAnalyticsAPIData()
{
$api_key = Context::get('api_key');
$method = Context::get('method');
$param = array();
$start_date = Context::get('start_date');
if ($start_date)
$param['start_date'] = $start_date;
$end_date = Context::get('end_date');
if ($end_date)
$param['end_date'] = $end_date;
$xml_obj = $this->_getXMLData($api_key, $method, $param);
if (!$xml_obj || $xml_obj->response->error->body != 0) return new Object(-1, 'msg_invalid_request');
if(!method_exists(&$this, '_parse'.ucfirst($method))) return new Object(-1, 'msg_undefined_method');
$parsed_data = call_user_method('_parse'.ucfirst($method), &$this, $xml_obj);
$parsed_data->method = $method;
Context::setResponseMethod('XMLRPC');
Context::set('parsed_data', $parsed_data);
switch($method)
{
case 'visitStayTime':
case 'visitBack':
case 'visitPath':
case 'comeEngine':
case 'comeSearchText':
$this->setTemplateFile('flash.pie.data');
break;
default :
$this->setTemplateFile('flash.data');
}
}
function _parseVisit($xml_obj)
{
global $lang;
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
$parsed_data->unit = '일';
$parsed_data->data = array();
$_tmp_array = $lang->analytics_api_valuname['visit'];
array_shift($_tmp_array);
$parsed_data->value_names = join("|", $_tmp_array);
$_max = 0;
if (!$response_obj->data)
{
$parsed_data->data[date('YmdHis', strtotime($parsed_data->end_date))] = '0|0|0|0';
}
else
{
foreach($response_obj->data as $key => $val)
{
$parsed_data->data[date('YmdHis', strtotime($val->day->body))] = $val->uv->body.'|'.$val->visit_count->body.'|'.$val->newvisit_uv->body.'|'.$val->revisit_uv->body;
$_row_max = max($val->uv->body, $val->visit_count->body, $val->newvisit_uv->body, $val->revisit_uv->body);
if ($_max < $_row_max) $_max = $_row_max;
}
}
$parsed_data->unitMax = $_max;
return $parsed_data;
}
function _parseVisitPageView($xml_obj)
{
global $lang;
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
$parsed_data->unit = '일';
$parsed_data->data = array();
$_tmp_array = $lang->analytics_api_valuname['visitPageView'];
array_shift($_tmp_array);
$parsed_data->value_names = join("|", $_tmp_array);
$_max = 0;
if (!$response_obj->data)
{
$parsed_data->data[date('YmdHis', strtotime($parsed_data->end_date))] = '0|0|0|0';
}
else
{
foreach($response_obj->data as $key => $val)
{
$parsed_data->data[date('YmdHis', strtotime($val->day->body))] = $val->pv->body.'|'
.$val->pv_per_visit->body.'|'
.$val->newvisit_pv->body.'|'
.$val->revisit_pv->body;
$_row_max = max($val->pv->body, $val->pv_per_visit->body, $val->newvisit_pv->body, $val->revisit_pv->body);
if ($_max < $_row_max) $_max = $_row_max;
}
}
$parsed_data->unitMax = $_max;
return $parsed_data;
}
function _parseVisitTime($xml_obj)
{
global $lang;
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
$parsed_data->unit = '시간';
$parsed_data->data = array();
$_tmp_array = $lang->analytics_api_valuname['visitTime'];
array_shift($_tmp_array);
$parsed_data->value_names = join("|", $_tmp_array);
$_max = 0;
if (!$response_obj->data)
{
$parsed_data->data[date('YmdHis', strtotime($parsed_data->end_date))] = '0|0|0|0|0';
}
else
{
foreach($response_obj->data as $key => $val)
{
$parsed_data->data[date('YmdHis', strtotime($val->day->body.'-'.$val->timezone->body))] = $val->sumvisit_count->body.'|'
.$val->sumvisitor->body.'|'
.$val->sumrevisitor->body.'|'
.$val->sumnewvisitor->body.'|'
.$val->sumpv->body;
$_row_max = max($val->sumvisit_count->body, $val->sumvisitor->body, $val->sumrevisitor->body, $val->sumnewvisitor->body, $val->sumpv->body);
if ($_max < $_row_max) $_max = $_row_max;
}
}
$parsed_data->unitMax = $_max;
return $parsed_data;
}
function _parseVisitDay($xml_obj)
{
global $lang;
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
$parsed_data->unit = '요일';
$parsed_data->data = array();
$_tmp_array = $lang->analytics_api_valuname['visitDay'];
array_shift($_tmp_array);
$parsed_data->value_names = join("|", $_tmp_array);
$_max = 0;
if (!$response_obj->data)
{
$parsed_data->data[date('YmdHis', strtotime($parsed_data->end_date))] = '0|0|0|0|0';
}
else
{
foreach($response_obj->data as $key => $val)
{
$parsed_data->data[date('YmdHis', strtotime($val->day->body))] = $val->avgvisit->body.'|'
.$val->avguv->body.'|'
.$val->avgnewvisit->body.'|'
.$val->avgrevisit->body.'|'
.$val->avgpv->body;
$_row_max = max($val->avgvisit->body, $val->avguv->body, $val->avgnewvisit->body, $val->avgrevisit->body, $val->avgpv->body);
if ($_max < $_row_max) $_max = $_row_max;
}
}
$parsed_data->unitMax = $_max;
return $parsed_data;
}
function _parseVisitBack($xml_obj)
{
global $lang;
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
if (!$response_obj->data) return new Object('msg_none_data');
$parsed_data->data = array();
$_sum_etc = 0;
foreach($response_obj->data as $key => $val)
{
if ($val->freq->body < 7)
{
$parsed_data->data[$lang->analytics_api_valuname['visitBack'][$val->freq->body.'day']] = round($val->vc->body/$response_obj->countdata->sumtotalvc->body * 100);
}
else
{
$_sum_etc += $val->vc->body;
}
}
$parsed_data->data[$lang->analytics_api_valuname['visitBack']['etc']] = round($_sum_etc / $response_obj->countdata->sumtotalvc->body * 100);
return $parsed_data;
}
function _parseVisitStayTime($xml_obj)
{
global $lang;
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
if (!$response_obj->countdata) return new Object('msg_none_data');
$parsed_data->data = array();
$total_count = $response_obj->countdata->sumtotalvc->body;
$parsed_data->data[$lang->analytics_api_valuname['visitStayTime']['vc_under_30sec']] = round($response_obj->countdata->vc_under_30sec->body/$total_count * 100);
$parsed_data->data[$lang->analytics_api_valuname['visitStayTime']['vc_31_60']] = round($response_obj->countdata->vc_31_60->body/$total_count * 100);
$parsed_data->data[$lang->analytics_api_valuname['visitStayTime']['vc_2min']] = round($response_obj->countdata->vc_2min->body/$total_count * 100);
$parsed_data->data[$lang->analytics_api_valuname['visitStayTime']['vc_3min']] = round($response_obj->countdata->vc_3min->body/$total_count * 100);
$parsed_data->data[$lang->analytics_api_valuname['visitStayTime']['vc_4min']] = round($response_obj->countdata->vc_4min->body/$total_count * 100);
$parsed_data->data[$lang->analytics_api_valuname['visitStayTime']['vc_5min']] = round($response_obj->countdata->vc_5min->body/$total_count * 100);
$parsed_data->data[$lang->analytics_api_valuname['visitStayTime']['vc_10min']] = round($response_obj->countdata->vc_10min->body/$total_count * 100);
$parsed_data->data[$lang->analytics_api_valuname['visitStayTime']['vc_30min']] = round($response_obj->countdata->vc_30min->body/$total_count * 100);
$parsed_data->data[$lang->analytics_api_valuname['visitStayTime']['vc_60min']] = round($response_obj->countdata->vc_60min->body/$total_count * 100);
$parsed_data->data[$lang->analytics_api_valuname['visitStayTime']['vc_60high']] = round($response_obj->countdata->vc_60high->body/$total_count * 100);
return $parsed_data;
}
function _parseVisitPath($xml_obj)
{
global $lang;
$response_obj = $xml_obj->response;
// debugPrint($response_obj);
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
if (!$response_obj->data) return new Object('msg_none_data');
$parsed_data->data = array();
$_sum_data = array('one'=>0
,'four'=>0
,'ten'=>0
,'fifteen'=>0
,'twenty'=>0
,'thirty'=>0
,'fourty'=>0
,'fifty'=>0
,'high'=>0);
$_total = 0;
foreach($response_obj->data as $key => $val)
{
$_sum_data['one'] += $val->one->body;
$_sum_data['four'] += $val->four->body;
$_sum_data['ten'] += $val->ten->body;
$_sum_data['fifteen'] += $val->fifteen->body;
$_sum_data['twenty'] += $val->twenty->body;
$_sum_data['thirty'] += $val->thirty->body;
$_sum_data['fourty'] += $val->fourty->body;
$_sum_data['fifty']+= $val->fifty->body;
$_sum_data['high'] += $val->high->body;
$_total += $val->visit->body;
}
foreach($_sum_data as $key => $val)
{
$parsed_data->data[$lang->analytics_api_valuname['visitPath'][$key]] = round($val / $_total * 100);
}
return $parsed_data;
}
//유입분석
function _parseComeEngine($xml_obj)
{
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
if (!$response_obj->data) return new Object('msg_none_data');
$parsed_data->data = array();
$_sum_total = 0;
foreach($response_obj->data as $key => $val)
{
$_sum_total += $val->sumqc->body;
}
foreach($response_obj->data as $key => $val)
{
$parsed_data->data[$val->searchengine->body] = sprintf('%0.2f', $val->sumqc->body / $_sum_total * 100);
}
debugPrint($parsed_data);
return $parsed_data;
}
function _parseComeSearchText($xml_obj)
{
global $lang;
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
if (!$response_obj->data) return new Object('msg_none_data');
$parsed_data->data = array();
$_sum_total = $response_obj->data_totalpv->body;
$_etc = 0;
foreach($response_obj->data as $key => $val)
{
if ($key <= 4)
$_etc += $val->sumqc->body;
}
foreach($response_obj->data as $key => $val)
{
if($key > 4)
break;
$parsed_data->data[$val->query->body] = round($val->sumqc->body / $_sum_total * 100);
}
$parsed_data->data[$lang->etc] = round(($_sum_total - $_etc) / $_sum_total * 100);
return $parsed_data;
}
/* function _parseComeUrl($xml_obj)
{
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
$parsed_data->days = array();
$parsed_data->pvs = array();
$parsed_data->pv_per_visits = array();
$parsed_data->newvisit_pvs = array();
$parsed_data->revisit_pvs = array();
foreach($response_obj->data as $key => $val)
{
$parsed_data->days, $val->day->body);
$parsed_data->pvs, $val->pv->body);
$parsed_data->pv_per_visits, $val->pv_per_visit->body);
$parsed_data->newvisit_pvs, $val->newvisit_pv->body);
$parsed_data->revisit_pvs, $val->revisit_pv->body);
}
return $parsed_data;
}
// 페이지 분석
function _parsePagePop($xml_obj)
{
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
$parsed_data->days = array();
$parsed_data->pvs = array();
$parsed_data->pv_per_visits = array();
$parsed_data->newvisit_pvs = array();
$parsed_data->revisit_pvs = array();
foreach($response_obj->data as $key => $val)
{
$parsed_data->days, $val->day->body);
$parsed_data->pvs, $val->pv->body);
$parsed_data->pv_per_visits, $val->pv_per_visit->body);
$parsed_data->newvisit_pvs, $val->newvisit_pv->body);
$parsed_data->revisit_pvs, $val->revisit_pv->body);
}
return $parsed_data;
}
function _parsePageDrillDown($xml_obj)
{
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
$parsed_data->days = array();
$parsed_data->pvs = array();
$parsed_data->pv_per_visits = array();
$parsed_data->newvisit_pvs = array();
$parsed_data->revisit_pvs = array();
foreach($response_obj->data as $key => $val)
{
$parsed_data->days, $val->day->body);
$parsed_data->pvs, $val->pv->body);
$parsed_data->pv_per_visits, $val->pv_per_visit->body);
$parsed_data->newvisit_pvs, $val->newvisit_pv->body);
$parsed_data->revisit_pvs, $val->revisit_pv->body);
}
return $parsed_data;
}
function _parsePageStart($xml_obj)
{
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
$parsed_data->days = array();
$parsed_data->pvs = array();
$parsed_data->pv_per_visits = array();
$parsed_data->newvisit_pvs = array();
$parsed_data->revisit_pvs = array();
foreach($response_obj->data as $key => $val)
{
$parsed_data->days, $val->day->body);
$parsed_data->pvs, $val->pv->body);
$parsed_data->pv_per_visits, $val->pv_per_visit->body);
$parsed_data->newvisit_pvs, $val->newvisit_pv->body);
$parsed_data->revisit_pvs, $val->revisit_pv->body);
}
return $parsed_data;
}
function _parsePageEnd($xml_obj)
{
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
$parsed_data->days = array();
$parsed_data->pvs = array();
$parsed_data->pv_per_visits = array();
$parsed_data->newvisit_pvs = array();
$parsed_data->revisit_pvs = array();
foreach($response_obj->data as $key => $val)
{
$parsed_data->days, $val->day->body);
$parsed_data->pvs, $val->pv->body);
$parsed_data->pv_per_visits, $val->pv_per_visit->body);
$parsed_data->newvisit_pvs, $val->newvisit_pv->body);
$parsed_data->revisit_pvs, $val->revisit_pv->body);
}
return $parsed_data;
}
function _parsePageReturn($xml_obj)
{
$response_obj = $xml_obj->response;
$parsed_data->end_date = $response_obj->end_date->body;
$parsed_data->start_date = $response_obj->start_date->body;
$parsed_data->days = array();
$parsed_data->pvs = array();
$parsed_data->pv_per_visits = array();
$parsed_data->newvisit_pvs = array();
$parsed_data->revisit_pvs = array();
foreach($response_obj->data as $key => $val)
{
$parsed_data->days, $val->day->body);
$parsed_data->pvs, $val->pv->body);
$parsed_data->pv_per_visits, $val->pv_per_visit->body);
$parsed_data->newvisit_pvs, $val->newvisit_pv->body);
$parsed_data->revisit_pvs, $val->revisit_pv->body);
}
return $parsed_data;
}
*/
}
?>