//Restore saved setting $group_by = $saved_group_by; } elseif ($saved_group_by != $group_by) { //Set if changed $saved_group_by = $group_by; } InitFilterEx($arSettings, $sTableID . "_settings", "set"); $lAdmin->InitFilter($arFilterFields); $find_group = $group_by == "S" || $group_by == "U" ? $group_by : ""; InitBVarFromArr($arrExactMatch); AdminListCheckDate($lAdmin, array("find_date1" => $find_date1, "find_date2" => $find_date2)); $arFilter = array("ID" => $find_id, "SESSION_ID" => $find_session_id, "DATE1" => $find_date1, "DATE2" => $find_date2, "FROM" => $find_from, "FROM_PROTOCOL" => $find_from_protocol, "FROM_DOMAIN" => $find_from_domain, "FROM_PAGE" => $find_from_url, "SITE_ID" => $find_site_id, "TO" => $find_to, "TO_404" => $find_to_404, "GROUP" => $find_group); $arFilter = array_merge($arFilter, array_convert_name_2_value($arrExactMatch)); ////////////////////////////////////////////////////////////////////// // Quering data $rsData = CReferer::GetList($by, $order, $arFilter, $is_filtered, $total, $grby, $max); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $aContext = array(); $aContext[] = array("TEXT" => GetMessage("STAT_F_GROUP"), "MENU" => array(array("TEXT" => GetMessage("STAT_NO_GROUP"), "ACTION" => $lAdmin->ActionDoGroup(0, "", "group_by=none"), "ICON" => $grby != "S" && $grby != "U" ? "checked" : ""), array("TEXT" => GetMessage("STAT_BY_SERVER"), "ACTION" => $lAdmin->ActionDoGroup(0, "", "group_by=S"), "ICON" => $grby == "S" ? "checked" : ""), array("TEXT" => GetMessage("STAT_BY_LINK"), "ACTION" => $lAdmin->ActionDoGroup(0, "", "group_by=U"), "ICON" => $grby == "U" ? "checked" : ""))); $lAdmin->AddAdminContextMenu($aContext); // Navigation setup $lAdmin->NavText($rsData->GetNavPrint(GetMessage("STAT_REF_PAGES"))); if ($grby == "S") { $headers = array(array("id" => "FAKE_NUM", "content" => GetMessage("STAT_NUM"), "default" => true, "options" => array("width" => "0"), "align" => "right"), array("id" => "URL_FROM", "content" => GetMessage("STAT_URL_FROM"), "sort" => "s_url_from", "default" => true), array("id" => "QUANTITY", "content" => GetMessage("STAT_QUANTITY"), "sort" => "s_quantity", "default" => true, "align" => "right"), array("id" => "PERCENT", "content" => GetMessage("STAT_PERCENT"), "sort" => "s_quantity", "default" => true, "align" => "right"), array("id" => "AVERAGE_HITS", "content" => GetMessage("STAT_AVERAGE_HITS"), "sort" => "s_average_hits", "default" => true, "align" => "right"), array("id" => "FAKE_GRAPH", "content" => GetMessage("STAT_GRAPH"), "default" => true)); } elseif ($grby == "U") { $headers = array(array("id" => "FAKE_NUM", "content" => GetMessage("STAT_NUM"), "default" => true, "options" => array("width" => "0"), "align" => "right"), array("id" => "URL_FROM", "content" => GetMessage("STAT_URL_FROM"), "sort" => "s_url_from", "default" => true), array("id" => "QUANTITY", "content" => GetMessage("STAT_QUANTITY"), "sort" => "s_quantity", "default" => true, "align" => "right"), array("id" => "PERCENT", "content" => GetMessage("STAT_PERCENT"), "sort" => "s_quantity", "default" => true, "align" => "right"), array("id" => "AVERAGE_HITS", "content" => GetMessage("STAT_AVERAGE_HITS"), "sort" => "s_average_hits", "default" => true, "align" => "right"), array("id" => "FAKE_GRAPH", "content" => GetMessage("STAT_GRAPH"), "default" => true)); } else { $headers = array(array("id" => "ID", "content" => "ID", "sort" => "s_id", "default" => true, "align" => "right"), array("id" => "URL_FROM", "content" => GetMessage("STAT_URL_FROM"), "sort" => "s_url_from", "default" => true), array("id" => "URL_TO", "content" => GetMessage("STAT_PAGE_TO"), "sort" => "s_url_to", "default" => true), array("id" => "DATE_HIT", "content" => GetMessage("STAT_DATE_HIT"), "sort" => "s_date_hit", "default" => true), array("id" => "SESSION_ID", "content" => GetMessage("STAT_SESSION"), "sort" => "s_session_id", "default" => true, "align" => "right")); } $lAdmin->AddHeaders($headers);
$dbRes->NavStart(20, false, 0); $arReferers = array(); while ($arRes = $dbRes->Fetch()) { if (strlen($arRes['URL_FROM']) > 0) { if (!is_array($arReferers[$arRes['URL_FROM']])) { $arReferers[$arRes['URL_FROM']] = array('TOTAL' => $arRes['QUANTITY'], 'PERCENT' => $arRes['C_PERCENT'], 'URL_FROM' => array()); } } } //unset($arFilter['GROUP']); $arFilter['GROUP'] = 'U'; // damn ineffectively but there's no other way foreach ($arReferers as $key => $arData) { $arFilter['FROM_DOMAIN'] = $key; $arFilter['FROM_DOMAIN_EXACT_MATCH'] = 'Y'; $dbRes = CReferer::GetList($by = 's_quantity', $order = 'desc', $arFilter, $is_filtered, $total, $group_by, $max); $dbRes->NavStart(50, false, 0); while ($arRes = $dbRes->Fetch()) { if (strlen($arRes['URL_FROM']) > 0 && ($arUrl = parse_url($arRes['URL_FROM']))) { if ($arUrl['port'] != '' && $arUrl['port'] != 80) { $arUrl['host'] .= ':' . $arUrl['port']; } if (isset($arReferers[$arUrl['host']])) { $arReferers[$arUrl['host']]['URL_FROM'][$arRes['URL_FROM']] = $arRes['QUANTITY']; } } } } if ($total > 0) { $cnt = count($arReferers); ?>
<? */ if (!CModule::IncludeModule('statistic')): ?> <tr> <td><?ShowError('Эта функция недоступна без модуля Веб-аналитики');?></td> </tr> <? else: $arFilter = array( 'TO' => 'http://'.$server_name.$back_url, 'TO_EXACT_MATCH' => 'Y', ); $dbRes = CReferer::GetList($by = 's_url_from', $order = 'asc', $arFilter, $is_filtered, $total, $group_by, $max); $arReferers = array(); $total = 0; while ($arRes = $dbRes->Fetch()) { if (strlen($arRes['URL_FROM']) > 0 && ($arUrl = parse_url($arRes['URL_FROM']))) { if (!is_array($arReferers[$arUrl['host']])) { $arReferers[$arUrl['host']] = array( 'TOTAL' => 0, 'URL_FROM' => array( $arRes['URL_FROM'] => 0 ), );