%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/statistic/admin/ |
| Current File : /home/bitrix/www/bitrix/modules/statistic/admin/path_list.php |
<?php
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/statistic/prolog.php");
/** @var CMain $APPLICATION */
$STAT_RIGHT = $APPLICATION->GetGroupRight("statistic");
if($STAT_RIGHT=="D") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
IncludeModuleLangFile(__FILE__);
$context = ($_REQUEST["context"] === "tab"? "tab": "");
if($_REQUEST["table_id"] === "t_path_list_COUNTER")
$table_id = "t_path_list_COUNTER";
elseif($_REQUEST["table_id"] === "t_path_list_COUNTER_FULL_PATH")
$table_id = "t_path_list_COUNTER_FULL_PATH";
else
$table_id = "";
$arSites = array();
$ref = $ref_id = array();
$rs = CSite::GetList(($v1="sort"), ($v2="asc"));
while ($ar = $rs->Fetch())
{
$ref[] = $ar["ID"];
$ref_id[] = $ar["ID"];
$arSites[$ar["ID"]] = "[<a href=\"/bitrix/admin/site_edit.php?LID=".$ar["ID"]."&lang=".LANGUAGE_ID."\">".$ar["ID"]."</a>] ";
}
$arSiteDropdown = array("reference" => $ref, "reference_id" => $ref_id);
$rs = CAdv::GetList($v1="", $v2="", Array(), $v3, "", $v4, $v5);
while ($ar = $rs->Fetch())
{
$arrADV[$ar["ID"]] = $ar["REFERER1"]." / ".$ar["REFERER2"]." [".$ar["ID"]."]";
$arrADV_DETAIL[$ar["ID"]] = array("REFERER1" => $ar["REFERER1"], "REFERER2" => $ar["REFERER2"]);
}
if(isset($find_referer1) && strlen($find_referer1) > 0)
{
$find_adv=array();
foreach($arrADV_DETAIL as $ADV_ID=>$ADV_DETAIL)
if($ADV_DETAIL["REFERER1"]==$find_referer1 && !in_array($ADV_ID, $find_adv))
$find_adv[]=$ADV_ID;
}
if(isset($find_referer2) && strlen($find_referer2) > 0)
{
$find_adv=array();
foreach($arrADV_DETAIL as $ADV_ID=>$ADV_DETAIL)
if($ADV_DETAIL["REFERER2"]==$find_referer2 && !in_array($ADV_ID, $find_adv))
$find_adv[]=$ADV_ID;
}
if(isset($find_diagram_type))
{
if($find_diagram_type!="COUNTER_FULL_PATH")
$find_diagram_type="COUNTER";
}
else
{
$find_diagram_type=false;
}
if($context=="tab")
$sTableID = "t_path_list_".$find_diagram_type;
else
$sTableID = "t_path_list";
$oSort = new CAdminSorting($sTableID, "s_counter", "desc");
$lAdmin = new CAdminList($sTableID, $oSort);
$filter = new CAdminFilter(
$sTableID."_filter_id",
array(
GetMessage("STAT_F_STEPS"),
GetMessage("STAT_F_FIRST_PAGE"),
GetMessage("STAT_F_PAGE"),
GetMessage("STAT_F_LAST_PAGE"),
GetMessage("STAT_F_ADV"),
GetMessage("STAT_F_ADV_DATA_TYPE"),
)
);
if($lAdmin->IsDefaultFilter())
{
$find_date1_DAYS_TO_BACK = 90;
$find_first_page = "~/bitrix/";
$set_filter = "Y";
}
$FilterArr = Array(
"find_date1", "find_date2",
"find_steps1","find_steps2",
"find_first_page_site_id","find_first_page_404","find_first_page","find_first_page_exact_match",
"find_page_site_id","find_page_404","find_page",
"find_last_page_site_id","find_last_page_404","find_last_page","find_last_page_exact_match",
"find_adv",
"find_adv_data_type",
);
$lAdmin->InitFilter($FilterArr);
//Restore & Save settings (windows registry like)
$arSettings = array("saved_diagram_type");
InitFilterEx($arSettings, $sTableID."_settings", "get");
if($find_diagram_type===false)//Restore saved setting
{
if(strlen($saved_diagram_type) > 0)
$find_diagram_type = $saved_diagram_type;
else
$find_diagram_type = "COUNTER";
}
elseif($saved_diagram_type!=$find_diagram_type)//Set if changed
$saved_diagram_type=$find_diagram_type;
InitFilterEx($arSettings, $sTableID."_settings", "set");
InitBVar($find_first_page_exact_match);
InitBVar($find_last_page_exact_match);
if(is_array($find_adv))
{
$find_adv_names = array();
foreach($find_adv as $value)
{
//$find_adv[$key]=intval($value);
$find_adv_names[]=$arrADV[$value];
}
}
else
{
$find_adv=array();
$find_adv_names = array();
}
AdminListCheckDate($lAdmin, array("find_date1"=>$find_date1, "find_date2"=>$find_date2));
$arFilter = Array(
"DATE1" => $find_date1,
"DATE2" => $find_date2,
"FIRST_PAGE" => $find_first_page,
"FIRST_PAGE_SITE_ID" => $find_first_page_site_id,
"FIRST_PAGE_404" => $find_first_page_404,
"LAST_PAGE" => $find_last_page,
"LAST_PAGE_SITE_ID" => $find_last_page_site_id,
"LAST_PAGE_404" => $find_last_page_404,
"PAGE" => $find_page,
"PAGE_SITE_ID" => $find_page_site_id,
"PAGE_404" => $find_page_404,
"ADV" => (is_array($find_adv) && count($find_adv) > 0? implode(" | ",$find_adv): ""),
"ADV_DATA_TYPE" => $find_adv_data_type,
"STEPS1" => $find_steps1,
"STEPS2" => $find_steps2,
"FIRST_PAGE_EXACT_MATCH" => $find_first_page_exact_match,
"LAST_PAGE_EXACT_MATCH" => $find_last_page_exact_match,
);
$rsPath = CPath::GetList($parent_id, $find_diagram_type, $by, $order, $arFilter, $is_filtered);
$str_err_404 = "ERROR_404: ";
$arrPath = array();
$max_counter = 0;
$sum_counter = 0;
while ($arPath = $rsPath->Fetch())
{
$arrPath[] = $arPath;
$sum_counter += $arPath["COUNTER"];
if(intval($arPath["COUNTER"])>$max_counter)
$max_counter = intval($arPath["COUNTER"]);
}
$rsPath = new CDBResult;
$rsPath->InitFromArray($arrPath);
$rsData = new CAdminResult($rsPath, $sTableID);
$rsData->NavStart();
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("STAT_PATH_PAGES")));
$lAdmin->BeginPrologContent();
if($find_diagram_type=="COUNTER"):
if(strlen($parent_id)>0) :
?>
<table cellspacing=0 cellpadding=0 class="list">
<tr class="gutter">
<td><div class="empty"></div></td>
<td><div class="empty"></div></td>
<td><div class="empty"></div></td>
<td><div class="empty"></div></td>
</tr>
<tr class="head">
<td> </td>
<td><?=GetMessage("STAT_PATH_PART")?></td>
<td><?=GetMessage("STAT_TRANSFER")?></td>
<td><?=GetMessage("STAT_PERCENT")?></td>
</tr>
<?
$rsParentPath = CPath::GetByID($parent_id);
if($arParentPath = $rsParentPath->Fetch()):
$arrPages = explode("\n",$arParentPath["PAGES"]);
reset($arrPages);
$i=0;
foreach($arrPages as $page):
if(strlen($page)>0) :
$i++;
$arr = array();
$site_url = "";
preg_match("#\[(.+?)\]#",$page, $arr);
if(strlen($arr[1])>0)
{
$page = str_replace("[".$arr[1]."] ", "", $page);
$site_url = $arSites[$arr[1]];
}
$err_404 = "N";
if(substr($page,0,strlen($str_err_404))==$str_err_404)
{
$err_404 = "Y";
$page = substr($page,strlen($str_err_404),strlen($page));
}
?>
<tr>
<td nowrap><?=$i?></td>
<td nowrap><a title="<?=GetMessage("STAT_GO")?>" href="<?=htmlspecialcharsbx($page)?>">»</a> <?
$new_path_id = GetStatPathID($page, $path_id);
$arParent[$new_path_id] = $path_id;
$path_id = $new_path_id;
if($path_id!=$parent_id) :
$prev_parent_path = $path_id;
$action_url = "path_list.php?lang=".LANGUAGE_ID."&find_diagram_type=COUNTER&parent_id=".urlencode($path_id)."&context=".urlencode($context);
$action_js = ($table_id==""? $sTableID:$table_id).".GetAdminList('".CUtil::JSEscape($action_url)."');";
?><a href="javascript:void(0)" onclick="<?echo htmlspecialcharsbx($action_js)?>"><?
if($err_404=="Y"):
?><span class="stat_attention"><?echo htmlspecialcharsEx(TruncateText($page,65))?></span><?
else:
echo htmlspecialcharsEx(TruncateText($page,65));
endif;
?></a><?
else :
if($err_404=="Y"):
?><span class="stat_attention"><?echo htmlspecialcharsEx(TruncateText($page,65))?></span><?
else:
echo htmlspecialcharsEx(TruncateText($page,65));
endif;
endif;
$arFilter["PATH_ID"] = $path_id;
$z = CPath::GetList($arParent[$path_id], $find_diagram_type, $v1, $v2, $arFilter, $v3);
$zr = $z->Fetch();
$counter = $zr["COUNTER"];
if($i==1) $max = $counter;
$percent = ($counter*100)/$max;
$percent_f = number_format($percent, 2, '.', '');
$percent_m = number_format(100-$percent, 2, '.', '');
$alt = "";
if($i==1)
$alt = GetMessage("STAT_PATH_START");
else
$alt = GetMessage("STAT_PATH_ALT_1")." ".$counter.". ". GetMessage("STAT_PATH_ALT_2")." ".$percent_f."%. ".GetMessage("STAT_PATH_ALT_3")." ".$percent_m."%";
?></td>
<td nowrap align="right" width="15%"> <?=intval($counter)?></td>
<td nowrap align="right" width="15%"><span title="<?=$alt?>"> <?=($i>1) ? $percent_f."%" : ""?></span></td>
</tr>
<?
endif;
endforeach;
endif;
?></table>
<?
endif;
endif;
$lAdmin->EndPrologContent();
$arHeaders = Array();
$arHeaders[] = array("id"=>"NUMBER", "content"=>GetMessage("STAT_NUM"), "default"=>true, "align"=>"right");
$arHeaders[] = array("id"=>"URL", "content"=>GetMessage("STAT_PAGE"), "sort"=>"s_url", "default"=>true,);
$arHeaders[] = array("id"=>"COUNTER", "content"=>GetMessage("STAT_TRANSFER"), "sort"=>"s_counter", "default"=>true, "align"=>"right");
$arHeaders[] = array("id"=>"PERCENT", "content"=>GetMessage("STAT_PERCENT"), "default"=>true, "align"=>"right",);
$lAdmin->AddHeaders($arHeaders);
$number = (intval($rsData->NavPageNomer)-1)*intval($rsData->NavPageSize);
$max_width = 90;
$max_relation = ($max_counter*100)/$max_width;
while($arRes = $rsData->NavNext(true, "f_"))
{
$w = round(($f_COUNTER*100)/$max_relation);
$q = number_format(($f_COUNTER*100)/$sum_counter, 2, '.', '');
$number++;
$row =& $lAdmin->AddRow($number, $arRes);
$str = "";
if($find_diagram_type=="COUNTER")
{
$action_url = "path_list.php?lang=".LANGUAGE_ID."&find_diagram_type=COUNTER&parent_id=".urlencode($f_PATH_ID)."&context=".urlencode($context);
$action_js = ($table_id==""? $sTableID:$table_id).".GetAdminList('".CUtil::JSEscape($action_url)."');";
$str .= "";
$str .= '<a title="'.GetMessage("STAT_GO").'" href="'.$f_LAST_PAGE.'">»</a> <a title="'.GetMessage("STAT_NEXT_STEP").'" href="javascript:void(0)" onclick="'.htmlspecialcharsbx($action_js).'">';
if($f_LAST_PAGE_404=="Y")
$str .= "<span class=\"stat_attention\">".TruncateText($f_LAST_PAGE,65)."</span>";
else
$str .= TruncateText($f_LAST_PAGE,65);
}
else
{
$arrPAGES = explode("\n",$f_PAGES);
$path_id = "";
foreach($arrPAGES as $page)
{
if(strlen($page)>0)
{
$arr = array();
$site_url = "";
preg_match("#\[(.+?)\]#",$page, $arr);
if(strlen($arr[1])>0)
{
$page = str_replace("[".$arr[1]."] ", "", $page);
$site_url = $arSites[$arr[1]];
}
$err_404 = "N";
if(substr($page,0,strlen($str_err_404))==$str_err_404)
{
$err_404 = "Y";
$page = substr($page,strlen($str_err_404),strlen($page));
}
$path_id = GetStatPathID($page, $path_id);
$action_url = "path_list.php?lang=".LANGUAGE_ID."&find_diagram_type=COUNTER&parent_id=".urlencode($path_id)."&context=".urlencode($context);
$action_js = ($table_id==""? $sTableID: $table_id).".GetAdminList('".CUtil::JSEscape($action_url)."');";
$str .= '<a title="'.GetMessage("STAT_GO").'" href="'.$page.'">»</a> <a title="'.GetMessage("STAT_NEXT_PAGES").'" href="javascript:void(0)" onclick="'.htmlspecialcharsbx($action_js).'">';
if($err_404=="Y")
$str .= '<span class="stat_attention">'.TruncateText($page,65).'</span>';
else
$str .= TruncateText($page,80);
$str .= '<br>';
}
}
}
$row->AddViewField("URL", $str);
$row->AddViewField("NUMBER", $number);
$row->AddViewField("PERCENT", $q."%");
}
$lAdmin->AddFooter(
array(
array("title"=>GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value"=>$rsData->SelectedRowsCount()),
array("title"=>GetMessage("STAT_TOTAL"), "value"=>$sum_counter),
)
);
$aContext = array();
if(strlen($parent_id)>0)
{
$aContext[] = array(
"TEXT" => GetMessage("STAT_ENTER_POINTS_S"),
"ICON" => "btn_list",
"LINK" =>"/bitrix/admin/path_list.php?lang=".LANG."&set_default=Y&find_diagram_type=COUNTER_FULL_PATH",
);
}
$aContext[] =
array(
"TEXT"=>($find_diagram_type!="COUNTER_FULL_PATH" ? GetMessage("STAT_F_SEGMENT_PATH") : GetMessage("STAT_F_FULL_PATH")),
"MENU"=>array(
array(
"TEXT"=>GetMessage("STAT_F_SEGMENT_PATH"),
"ACTION"=>$lAdmin->ActionDoGroup(0, "", "find_diagram_type=COUNTER"),
"ICON"=>($find_diagram_type=="COUNTER"?"checked":""),
),
array(
"TEXT"=>GetMessage("STAT_F_FULL_PATH"),
"ACTION"=>$lAdmin->ActionDoGroup(0, "", "find_diagram_type=COUNTER_FULL_PATH"),
"ICON"=>($find_diagram_type=="COUNTER_FULL_PATH"?"checked":""),
),
),
);
if($context!="tab")
$lAdmin->AddAdminContextMenu($aContext);
$lAdmin->CheckListMode();
$APPLICATION->SetTitle(GetMessage("STAT_RECORDS_LIST"));
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
?>
<form name="form1" method="GET" action="<?echo $APPLICATION->GetCurPage()?>">
<?$filter->Begin();?>
<tr valign="center">
<td width="0%" nowrap><?echo GetMessage("STAT_F_PERIOD").":"?></td>
<td width="0%" nowrap><?echo CalendarPeriod("find_date1", $find_date1, "find_date2", $find_date2, "form1","Y")?></td>
</tr>
<tr>
<td><?echo GetMessage("STAT_F_STEPS")?>:</td>
<td><input type="text" name="find_steps1" size="10" value="<?echo htmlspecialcharsbx($find_steps1)?>"><?echo " ".GetMessage("STAT_TILL")." "?><input type="text" name="find_steps2" size="10" value="<?echo htmlspecialcharsbx($find_steps2)?>"></td>
</tr>
<tr valign="center">
<td width="0%" nowrap><?echo GetMessage("STAT_F_FIRST_PAGE")?>:</td>
<td width="0%" nowrap><?
echo SelectBoxFromArray("find_first_page_site_id", $arSiteDropdown, $find_first_page_site_id, GetMessage("STAT_D_SITE"));
?> <?
echo SelectBoxFromArray("find_first_page_404", array("reference"=>array(GetMessage("STAT_YES"), GetMessage("STAT_NO")), "reference_id"=>array("Y","N")), htmlspecialcharsbx($find_first_page_404), GetMessage("STAT_404"));
?> <input type="text" name="find_first_page" size="37" value="<?echo htmlspecialcharsbx($find_first_page)?>"><?=ShowExactMatchCheckbox("find_first_page")?> <?=ShowFilterLogicHelp()?></td>
</tr>
<tr valign="center">
<td width="0%" nowrap><?echo GetMessage("STAT_F_PAGE")?>:</td>
<td width="0%" nowrap><?
echo SelectBoxFromArray("find_page_site_id", $arSiteDropdown, $find_page_site_id, GetMessage("STAT_D_SITE"));
?> <?
echo SelectBoxFromArray("find_page_404", array("reference"=>array(GetMessage("STAT_YES"), GetMessage("STAT_NO")), "reference_id"=>array("Y","N")), htmlspecialcharsbx($find_page_404), GetMessage("STAT_404"));
?> <input type="text" name="find_page" size="37" value="<?echo htmlspecialcharsbx($find_page)?>"> <?=ShowFilterLogicHelp()?></td>
</tr>
<tr valign="center">
<td width="0%" nowrap><?echo GetMessage("STAT_F_LAST_PAGE")?>:</td>
<td width="0%" nowrap><?
echo SelectBoxFromArray("find_last_page_site_id", $arSiteDropdown, $find_last_page_site_id, GetMessage("STAT_D_SITE"));
?> <?
echo SelectBoxFromArray("find_last_page_404", array("reference"=>array(GetMessage("STAT_YES"), GetMessage("STAT_NO")), "reference_id"=>array("Y","N")), htmlspecialcharsbx($find_last_page_404), GetMessage("STAT_404"));
?> <input type="text" name="find_last_page" size="37" value="<?echo htmlspecialcharsbx($find_last_page)?>"><?=ShowExactMatchCheckbox("find_last_page")?> <?=ShowFilterLogicHelp()?></td>
</tr>
<tr valign="top">
<td width="0%" nowrap valign="top"><?
echo GetMessage("STAT_F_ADV")?>:<br><img src="/bitrix/images/statistic/mouse.gif" width="44" height="21" border=0 alt=""></td>
<td width="100%" nowrap>
<?
echo SelectBoxMFromArray("find_adv[]",array("REFERENCE"=>$find_adv_names, "REFERENCE_ID"=>$find_adv), $find_adv,"",false,"5", "style=\"width:300px;\"");
?>
<script language="Javascript">
function selectEventType(form, field)
{
jsUtils.OpenWindow('adv_multiselect.php?lang=<?=LANG?>&form='+form+'&field='+field, 600, 600);
}
jsSelectUtils.sortSelect('find_adv[]');
jsSelectUtils.selectAllOptions('find_adv[]');
</script>
<br>
<input type="button" OnClick="selectEventType('find_form','find_adv[]')" value="<?=GetMessage("MAIN_ADMIN_MENU_ADD")?>...">
<input type="button" OnClick="jsSelectUtils.deleteSelectedOptions('find_adv[]');" value="<?=GetMessage("MAIN_ADMIN_MENU_DELETE")?>">
</td>
</tr>
<tr valign="top">
<td width="0%" nowrap><?echo GetMessage("STAT_F_ADV_DATA_TYPE")?>:</td>
<td width="0%" nowrap><?
$arr = array(
"reference"=>array(
GetMessage("STAT_ADV_SUMMA"),
GetMessage("STAT_ADV_NO_BACK"),
GetMessage("STAT_ADV_BACK")
),
"reference_id"=>array("S", "P","B"));
echo SelectBoxFromArray("find_adv_data_type", $arr, htmlspecialcharsbx($find_adv_data_type));
?></td>
</tr>
<?$filter->Buttons(array("table_id"=>$sTableID, "url"=>$APPLICATION->GetCurPage(), "form"=>"form1"));$filter->End();?>
</form>
<?
if($message)
echo $message->Show();
$lAdmin->DisplayList();
?>
<?require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");