/modules/statistic/admin/country_list.php
PHP | 424 lines | 367 code | 49 blank | 8 comment | 40 complexity | a2a20908891c32f3ae0aaf3b7d2f7792 MD5 | raw file
- <?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 */
- include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/statistic/colors.php");
- require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/img.php");
- $STAT_RIGHT = $APPLICATION->GetGroupRight("statistic");
- if($STAT_RIGHT=="D") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
- IncludeModuleLangFile(__FILE__);
- $err_mess = "File: ".__FILE__."<br>Line: ";
- /***************************************************************************
- GET | POST handlers
- ****************************************************************************/
- $rs = CCountry::GetList("s_dropdown");
- while ($ar = $rs->Fetch()) $arrCOUNTRY[$ar["ID"]] = $ar["NAME"]." [".$ar["ID"]."]";
- $sTableID = "t_country_list";
- $oSort = new CAdminSorting($sTableID);
- $lAdmin = new CAdminList($sTableID, $oSort);
- if (!isset($find_data_type) && !in_array($find_data_type,Array("NEW_GUESTS","HITS","C_EVENTS","SESSIONS")))
- $find_data_type = false;
- if($lAdmin->IsDefaultFilter())
- {
- //$find_data_type = "SESSIONS";
- $find_date1_DAYS_TO_BACK=90;
- $find_country_id = array();
- $i = 0;
- $find_country_id = array();
- if (is_array($arrCOUNTRY))
- {
- foreach ($arrCOUNTRY as $key => $value)
- {
- $i++;
- if ($i<=20) $find_country_id[] = $key;
- }
- }
- $set_filter = "Y";
- }
- $FilterArr1 = array(
- "find_date1","find_date2"
- );
- $FilterArr2 = array(
- "find_country_id"
- );
- $FilterArr = array_merge($FilterArr1, $FilterArr2);
- $lAdmin->InitFilter($FilterArr);
- $arSettings = array("saved_group_by");
- InitFilterEx($arSettings, $sTableID."_settings", "get");
- if($find_data_type===false)//Restore saved setting
- {
- if ($saved_group_by <> '')
- $find_data_type = $saved_group_by;
- else
- $find_data_type = "SESSIONS";
- }
- elseif($saved_group_by!=$find_data_type)//Set if changed
- $saved_group_by=$find_data_type;
- InitFilterEx($arSettings, $sTableID."_settings", "set");
- $filter = new CAdminFilter(
- $sTableID."_filter_id",
- (is_array($arrCOUNTRY) ? Array(GetMessage("STAT_F_COUNTRY_ID")) : Array())
- );
- $strError="";
- AdminListCheckDate($strError, array("find_date1"=>$find_date1, "find_date2"=>$find_date2));
- $str = (is_array($find_country_id)) ? implode(" | ",$find_country_id) : "";
- $arFilter = Array(
- "COUNTRY_ID" => $str,
- "DATE1" => $find_date1,
- "DATE2" => $find_date2
- );
- $arrDays = CCountry::GetGraphArray($arFilter, $arrLegend);
- $lAdmin->BeginCustomContent();
- if($strError <> '')
- CAdminMessage::ShowMessage($strError);
- $found = false;
- foreach($arrLegend as $key => $val)
- {
- if ($val[$find_data_type] > 0)
- {
- $found = true;
- break;
- }
- }
- if (function_exists("ImageCreate")) :
- if (($strError == '') && count($arrLegend)>0) :
- ?>
- <?
- $width = COption::GetOptionString("statistic", "GRAPH_WEIGHT");
- $height = COption::GetOptionString("statistic", "GRAPH_HEIGHT");
- $diameter = COption::GetOptionString("statistic", "DIAGRAM_DIAMETER");
- ?>
- <?if($found):?>
- <?if(count($arrDays) > 1):?>
- <div class="graph">
- <table border="0" cellspacing="1" cellpadding="0" align="center">
- <tr>
- <td valign="center">
- <img src="/bitrix/admin/country_graph.php?find_data_type=<?=$find_data_type?><?=GetFilterParams($FilterArr)?>&width=<?=$width?>&height=<?=$height?>&lang=<? echo LANG?>" width="<?=$width?>" height="<?=$height?>"></td>
- </td>
- </tr>
- </table>
- </div>
- <?endif;?>
- <div class="graph">
- <?echo GetMessage("STAT_DYNAMIC_GRAPH2")?>
- <table cellspacing=0 cellpadding=10 class="graph" align="center">
- <tr>
- <td valign="center"><img src="/bitrix/admin/country_diagram.php?<?=GetFilterParams($FilterArr)?>&lang=<?=LANG?>&find_data_type=<?=$find_data_type?>" width="<?=$diameter?>" height="<?=$diameter?>"></td>
- <td valign="center">
- <table cellpadding=2 cellspacing=0 border=0 class="legend">
- <?
- function data_sort($ar1, $ar2)
- {
- global $find_data_type;
- if ($ar1[$find_data_type]<$ar2[$find_data_type]) return 1;
- if ($ar1[$find_data_type]>$ar2[$find_data_type]) return -1;
- return 0;
- }
- uasort($arrLegend, "data_sort");
- $sum = 0;
- foreach ($arrLegend as $keyL => $arrL)
- {
- $sum += $arrL[$find_data_type];
- }
- $i=0;
- foreach ($arrLegend as $keyL => $arrL):
- $i++;
- $id = $keyL;
- $name = $arrL["NAME"];
- $counter = intval($arrL[$find_data_type]);
- $procent = (intval($sum)>0) ? round(($counter*100)/$sum,2) : 0;
- $color = $arrL["COLOR"];
- ?>
- <tr>
- <td class="number" nowrap><?=$i."."?></td>
- <td valign="center" class="color">
- <div style="background-color: <?="#".$color?>"></div>
- </td>
- <td class="number" nowrap><?echo sprintf("%01.2f", $procent)."%"?></td>
- <td nowrap>(<?
- if ($find_data_type=="SESSIONS") :
- ?><a href="/bitrix/admin/session_list.php?lang=<?=LANGUAGE_ID?>&find_country_id=<?echo urlencode($id)?>&find_country_id_exact_match=Y&find_date1=<?echo urlencode($arFilter["DATE1"])?>&find_date2=<?echo urlencode($arFilter["DATE2"])?>&set_filter=Y"><?=$counter?></a><?
- elseif ($find_data_type=="NEW_GUESTS") :
- ?><a href="/bitrix/admin/guest_list.php?lang=<?=LANGUAGE_ID?>&find_country_id=<?echo urlencode($id)?>&find_country_id_exact_match=Y&find_sess2=1&find_period_date1=<?echo urlencode($arFilter["DATE1"])?>&find_period_date2=<?echo urlencode($arFilter["DATE2"])?>&set_filter=Y"><?=$counter?></a><?
- elseif ($find_data_type=="HITS") :
- ?><a href="/bitrix/admin/hit_list.php?lang=<?=LANGUAGE_ID?>&find_country_id=<?echo urlencode($id)?>&find_country_id_exact_match=Y&find_date1=<?echo urlencode($arFilter["DATE1"])?>&find_date2=<?echo urlencode($arFilter["DATE2"])?>&set_filter=Y"><?=$counter?></a><?
- elseif ($find_data_type=="C_EVENTS") :
- ?><a href="/bitrix/admin/event_list.php?lang=<?=LANGUAGE_ID?>&find_country_id=<?echo urlencode($id)?>&find_country_id_exact_match=Y&find_date1=<?echo urlencode($arFilter["DATE1"])?>&find_date2=<?echo urlencode($arFilter["DATE2"])?>&set_filter=Y"><?=$counter?></a><?
- endif;
- ?>)</td>
- <td class="number" nowrap><?
- $flag = "/bitrix/images/statistic/flags/".mb_strtolower($id).".gif";
- if (file_exists($_SERVER["DOCUMENT_ROOT"].$flag)) :
- ?><img src="<?=$flag?>" width="20" height="13" border=0 alt=""><?
- endif;
- ?></td>
- <td nowrap><a href="city_list.php?lang=<?=LANGUAGE_ID?>&find_country_id=<?echo urlencode($id)?>&find_date1=<?echo urlencode($arFilter["DATE1"])?>&find_date2=<?echo urlencode($arFilter["DATE2"])?>&find_data_type=<?=$find_data_type?>&set_filter=Y">[<?=htmlspecialcharsbx($id)?>] <?=htmlspecialcharsbx($name)?></a></td>
- </tr>
- <?endforeach;?>
- </table>
- </td>
- </tr>
- </table>
- </div>
- <?else:
- CAdminMessage::ShowMessage(GetMessage("STAT_NO_DATA"));
- endif?>
- <?
- $found = false;
- foreach($arrLegend as $key => $val)
- {
- if ($val["TOTAL_".$find_data_type] > 0)
- {
- $found = true; break;
- }
- }
- if ($found):
- ?>
- <div class="graph">
- <?echo GetMessage("STAT_STATIC_GRAPH")?>
- <table cellspacing=0 cellpadding=10 class="graph" align="center">
- <tr>
- <td valign="center"><img src="/bitrix/admin/country_diagram.php?<?=GetFilterParams($FilterArr)?>&lang=<?=LANGUAGE_ID?>&find_data_type=<?=$find_data_type?>&diagram_type=TOTAL" width="<?=$diameter?>" height="<?=$diameter?>"></td>
- <td valign="center">
- <table cellpadding=2 cellspacing=0 border=0 class="legend">
- <?
- function total_data_sort($ar1, $ar2)
- {
- global $find_data_type;
- if ($ar1["TOTAL_".$find_data_type]<$ar2["TOTAL_".$find_data_type]) return 1;
- if ($ar1["TOTAL_".$find_data_type]>$ar2["TOTAL_".$find_data_type]) return -1;
- return 0;
- }
- uasort($arrLegend, "total_data_sort");
- $sum = 0;
- foreach ($arrLegend as $keyL => $arrL)
- {
- $sum += $arrL["TOTAL_".$find_data_type];
- }
- $i=0;
- foreach ($arrLegend as $keyL => $arrL):
- $i++;
- $id = $keyL;
- $name = $arrL["NAME"];
- $counter = intval($arrL["TOTAL_".$find_data_type]);
- $procent = (intval($sum)>0) ? round(($counter*100)/$sum,2) : 0;
- $color = $arrL["COLOR"];
- ?>
- <tr>
- <td class="number" nowrap><?=$i."."?></td>
- <td valign="center" class="color">
- <div style="background-color: <?="#".$color?>"></div>
- </td>
- <td class="number" nowrap><?echo sprintf("%01.2f", $procent)."%"?></td>
- <td nowrap>(<?
- if ($find_data_type=="SESSIONS") :
- ?><a href="/bitrix/admin/session_list.php?lang=<?=LANGUAGE_ID?>&find_country_id=<?echo urlencode($id)?>&find_country_id_exact_match=Y&set_filter=Y"><?=$counter?></a><?
- elseif ($find_data_type=="NEW_GUESTS") :
- ?><a href="/bitrix/admin/guest_list.php?lang=<?=LANGUAGE_ID?>&find_country_id=<?echo urlencode($id)?>&find_country_id_exact_match=Y&find_sess2=1&set_filter=Y"><?=$counter?></a><?
- elseif ($find_data_type=="HITS") :
- ?><a href="/bitrix/admin/hit_list.php?lang=<?=LANGUAGE_ID?>&find_country_id=<?echo urlencode($id)?>&find_country_id_exact_match=Y&set_filter=Y"><?=$counter?></a><?
- elseif ($find_data_type=="C_EVENTS") :
- ?><a href="/bitrix/admin/event_list.php?lang=<?=LANGUAGE_ID?>&find_country_id=<?echo urlencode($id)?>&find_country_id_exact_match=Y&set_filter=Y"><?=$counter?></a><?
- endif;
- ?>)</td>
- <td class="number" nowrap><?
- $flag = "/bitrix/images/statistic/flags/".mb_strtolower($id).".gif";
- if (file_exists($_SERVER["DOCUMENT_ROOT"].$flag)) :
- ?><img src="<?=$flag?>" width="20" height="13" border=0 alt=""><?
- endif;
- ?></td>
- <td nowrap>[<?=htmlspecialcharsbx($id)?>] <?=htmlspecialcharsbx($name)?></td>
- </tr>
- <?endforeach;?>
- </table>
- </td>
- </tr>
- </table>
- </div>
- <?else:
- CAdminMessage::ShowMessage(GetMessage("STAT_NO_DATA"));
- endif?>
- <?endif;?>
- <?
- else:
- ShowError(GetMessage("STAT_GD_NOT_INSTALLED"));
- endif;
- $lAdmin->EndCustomContent();
- switch ($find_data_type)
- {
- case "NEW_GUESTS":
- $group_title = GetMessage("STAT_NEW_GUESTS");
- break;
- case "HITS":
- $group_title = GetMessage("STAT_HITS");
- break;
- case "C_EVENTS":
- $group_title = GetMessage("STAT_EVENTS");
- break;
- case "SESSIONS":
- $group_title = GetMessage("STAT_SESSIONS");
- break;
- default:
- $group_title = "";
- break;
- }
- $aContext = array(
- array(
- "TEXT" => $group_title,
- "MENU" => array(
- array(
- "TEXT" => GetMessage("STAT_SESSIONS"),
- "ACTION" => $lAdmin->ActionDoGroup(0, "", "find_data_type=SESSIONS"),
- "ICON" => ($find_data_type=="SESSIONS"?"checked":""),
- ),
- array(
- "TEXT" => GetMessage("STAT_NEW_GUESTS"),
- "ACTION" => $lAdmin->ActionDoGroup(0, "", "find_data_type=NEW_GUESTS"),
- "ICON" => ($find_data_type=="NEW_GUESTS"?"checked":""),
- ),
- array(
- "TEXT" => GetMessage("STAT_HITS"),
- "ACTION" => $lAdmin->ActionDoGroup(0, "", "find_data_type=HITS"),
- "ICON" => ($find_data_type=="HITS"?"checked":""),
- ),
- array(
- "TEXT" => GetMessage("STAT_EVENTS"),
- "ACTION" => $lAdmin->ActionDoGroup(0, "", "find_data_type=C_EVENTS"),
- "ICON" => ($find_data_type=="C_EVENTS"?"checked":""),
- ),
- ),
- ),
- );
- $lAdmin->AddAdminContextMenu($aContext, false, false);
- $lAdmin->CheckListMode();
- $APPLICATION->SetTitle(GetMessage("STAT_RECORDS_LIST").': '.$group_title);
- require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
- /***************************************************************************
- HTML form
- ***************************************************************************/
- ?>
- <form name="form1" method="post" action="<?=$APPLICATION->GetCurPage()?>?">
- <?$filter->Begin();?>
- <!-- <tr valign="center">
- <td width="0%" nowrap><?echo GetMessage("STAT_F_DATA_TYPE")?></td>
- <td width="0%" nowrap><?
- $arr = array(
- "reference"=>array(
- GetMessage("STAT_SESSIONS"),
- GetMessage("STAT_NEW_GUESTS"),
- GetMessage("STAT_HITS"),
- GetMessage("STAT_EVENTS")
- ),
- "reference_id"=>array(
- "SESSIONS",
- "NEW_GUESTS",
- "HITS",
- "C_EVENTS"));
- echo SelectBoxFromArray("find_data_type", $arr, htmlspecialcharsbx($find_data_type));
- ?></td>
- </tr> -->
- <tr valign="top">
- <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>
- <?
- if (is_array($arrCOUNTRY)):
- reset($arrCOUNTRY);
- $arrCOUNTRYlow = array_map("strtolower", $arrCOUNTRY);
- function multiselect_sort($a,$b)
- {
- global $find_country_id, $arrCOUNTRYlow;
- $ret=0;
- $ka = false;
- $kb = false;
- if (is_array($find_country_id))
- {
- $ka = array_search($a, $find_country_id);
- $kb = array_search($b, $find_country_id);
- }
- if ($ka!==false && $kb!==false)
- {
- if ($ka==$kb) $ret=0;
- elseif (mb_strtolower($ka) > mb_strtolower($kb)) $ret=1;
- else $ret=-1;
- }
- if ($ka===false && $kb!==false) $ret=1;
- if ($ka!==false && $kb===false) $ret=-1;
- if ($ret==0)
- {
- if ($arrCOUNTRYlow[$a] > $arrCOUNTRYlow[$b]) $ret=1;
- if ($arrCOUNTRYlow[$a] < $arrCOUNTRYlow[$b]) $ret=-1;
- }
- return $ret;
- }
- uksort($arrCOUNTRY, "multiselect_sort");
- $ref = array();
- $ref_id = array();
- if (is_array($arrCOUNTRY))
- {
- $ref = array_values($arrCOUNTRY);
- $ref_id = array_keys($arrCOUNTRY);
- }
- ?>
- <tr valign="top">
- <td valign="top"><?echo GetMessage("STAT_F_COUNTRY_ID")?>:<br><img src="/bitrix/images/statistic/mouse.gif" width="44" height="21" border=0 alt=""></td>
- <td><?
- echo SelectBoxMFromArray("find_country_id[]",array("REFERENCE"=>$ref, "REFERENCE_ID"=>$ref_id), $find_country_id,"",false,"11", "style=\"width:100%\"");
- ?></td>
- </tr>
- <?endif;?>
- <?$filter->Buttons(array("table_id"=>$sTableID, "url"=>$APPLICATION->GetCurPage(), "form"=>"form1"));$filter->End();?>
- </form>
- <?$lAdmin->DisplayList();?>
- <?require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");