function _getSourceChannelData()
{
GLOBAL $_sourceChannelData;
GLOBAL $_statSourceData_Level_2;
GLOBAL $_statSourceData_Level_3;
GLOBAL $_tag_Level_1;
GLOBAL $_tag_Level_2;
$mysql = ToolUtil::getDBObj('icson');
if (false === $mysql) {
Logger::err("Get mysql db [icson] failed: " . ToolUtil::$errMsg . "\n");
return false;
}
$table_name = "t_tag_source";
$sqlstmt_level_0 = "SELECT s_name, tag_id FROM {$table_name} WHERE s_level = 0";
$sqlstmt_level_1 = "SELECT s_name, tag_fid, level_1_id FROM {$table_name} WHERE s_level = 1";
$sqlstmt_level_2 = "SELECT s_name, level_1_id, level_2_id FROM {$table_name} WHERE s_level = 2";
$sqlstmt_level_3 = "SELECT s_name, level_1_id, level_2_id, level_3_id FROM {$table_name} WHERE s_level = 3";
$level_0_data = array();
$level_1_data = array();
$level_2_data = array();
$level_3_data = array();
// get level 0
$rows = $mysql->getRows($sqlstmt_level_0);
if (false === $rows) {
Logger::err("Query mysql db [icson].[{$table_name}] failed: " . $mysql->errMsg . "\n");
return false;
}
else {
foreach ($rows as &$row) {
$level_0_data[$row['tag_id']] = $row;
$_statSourceData_Level_2[intval($row['tag_id'])] = array(
'level_2_id' => intval($row['tag_id']),
'level_2_name' => $row['s_name'],
'level_1_id' => CHANNEL_LEVEL_1_ID,
'level_1_name' => CHANNEL_LEVEL_1_NAME,
);
}
}
// get level 1
$rows = $mysql->getRows($sqlstmt_level_1);
if (false === $rows) {
Logger::err("Query mysql db [icson].[{$table_name}] failed: " . $mysql->errMsg . "\n");
return false;
}
else {
foreach ($rows as &$row) {
$level_1_data[$row['level_1_id']] = $row;
}
}
// get level 2
$rows = $mysql->getRows($sqlstmt_level_2);
if (false === $rows) {
Logger::err("Query mysql db [icson].[{$table_name}] failed: " . $mysql->errMsg . "\n");
return false;
}
else {
foreach ($rows as &$row) {
$level_2_data[$row['level_1_id']][$row['level_2_id']] = $row;
}
}
// get level 3
$rows = $mysql->getRows($sqlstmt_level_3);
if (false === $rows) {
Logger::err("Query mysql db [icson].[{$table_name}] failed: " . $mysql->errMsg . "\n");
return false;
}
else {
foreach ($rows as &$row) {
$tag_source_id = _getLevel3TagID($row['level_1_id'], $row['level_2_id'], $row['level_3_id']);
$level_3_data[$tag_source_id] = $row;
}
}
// 获取TAG映射数据
foreach ($level_3_data as $tag_source_id => &$tag_data) {
$tag_level_1_id = $tag_data['level_1_id'];
$tag_level_2_id = $tag_data['level_2_id'];
$tag_level_3_id = $tag_data['level_3_id'];
$tag_level_1_name = $level_1_data[$tag_level_1_id]['s_name'];
$tag_level_2_name = $level_2_data[$tag_level_1_id][$tag_level_2_id]['s_name'];
$tag_level_3_name = $tag_data['s_name'];
$level_3_id = $tag_level_1_id;
$level_2_id = $level_1_data[$tag_level_1_id]['tag_fid'];
$level_1_id = CHANNEL_LEVEL_1_ID;
$level_3_name = $tag_level_1_name;
$level_2_name = $level_0_data[$level_2_id]['s_name'];
$level_1_name = CHANNEL_LEVEL_1_NAME;
$_sourceChannelData[$tag_source_id] = array(
// TAG 系统level
'tag_level_1_id' => $tag_level_1_id,
'tag_level_2_id' => $tag_level_2_id,
'tag_level_3_id' => $tag_level_3_id,
'tag_level_1_name' => $tag_level_1_name,
'tag_level_2_name' => $tag_level_2_name,
'tag_level_3_name' => $tag_level_3_name,
// 统计结果level
'level_1_id' => $level_1_id,
'level_2_id' => $level_2_id,
'level_3_id' => $level_3_id,
'level_1_name' => $level_1_name,
'level_2_name' => $level_2_name,
'level_3_name' => $level_3_name,
);
// tag level 1
$_tag_Level_1[$tag_level_1_id] = array(
'tag_level_1_id' => $tag_level_1_id,
'tag_level_1_name' => $tag_level_1_name,
);
// tag level 2
$_tag_Level_2[$tag_level_1_id][$tag_level_2_id] = array(
'tag_level_1_id' => $tag_level_1_id,
'tag_level_2_id' => $tag_level_2_id,
'tag_level_1_name' => $tag_level_1_name,
'tag_level_2_name' => $tag_level_2_name,
);
// stat level 3 data
$_statSourceData_Level_3[$level_3_id] = array(
'level_1_id' => $level_1_id,
'level_2_id' => $level_2_id,
'level_3_id' => $level_3_id,
'level_1_name' => $level_1_name,
'level_2_name' => $level_2_name,
'level_3_name' => $level_3_name,
);
}
// 直接访问
$_sourceChannelData[SOURCE_ID_DIRECT] = array(
// 统计结果level
'level_1_id' => DIRECT_LEVEL_1_ID,
'level_1_name' => DIRECT_LEVEL_1_NAME,
);
// 其它来源
$_sourceChannelData[SOURCE_ID_OTHER] = array(
// 统计结果level
'level_2_id' => STAT_OTHER_LEVEL_2_ID,
'level_2_name' => '其它',
'level_1_id' => OTHER_LEVEL_1_ID,
'level_1_name' => OTHER_LEVEL_1_NAME,
);
return true;
}