PageRenderTime 27ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/modules/statistic/admin/city_list.php

https://gitlab.com/alexprowars/bitrix
PHP | 324 lines | 282 code | 37 blank | 5 comment | 15 complexity | 40fe9c6ada698792321f0ca3135066ce MD5 | raw file
  1. <?php
  2. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
  3. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/statistic/prolog.php");
  4. /** @var CMain $APPLICATION */
  5. include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/statistic/colors.php");
  6. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/img.php");
  7. $STAT_RIGHT = $APPLICATION->GetGroupRight("statistic");
  8. if($STAT_RIGHT=="D")
  9. $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
  10. IncludeModuleLangFile(__FILE__);
  11. $err_mess = "File: ".__FILE__."<br>Line: ";
  12. /***************************************************************************
  13. GET | POST handlers
  14. ****************************************************************************/
  15. $arrCOUNTRY = array();
  16. $rs = CCountry::GetList();
  17. while ($ar = $rs->Fetch())
  18. $arrCOUNTRY[$ar["ID"]] = $ar["NAME"]." [".$ar["ID"]."]";
  19. $sTableID = "t_city_list";
  20. $oSort = new CAdminSorting($sTableID);
  21. $lAdmin = new CAdminList($sTableID, $oSort);
  22. if (!isset($find_data_type) || !in_array($find_data_type,Array("NEW_GUESTS","HITS","C_EVENTS","SESSIONS")))
  23. $find_data_type = false;
  24. if($lAdmin->IsDefaultFilter())
  25. {
  26. //$find_data_type = "SESSIONS";
  27. $find_date1_DAYS_TO_BACK = 90;
  28. $find_country_id = "";
  29. $set_filter = "Y";
  30. }
  31. $FilterArr = array(
  32. "find_date1",
  33. "find_date2",
  34. "find_country_id",
  35. );
  36. $lAdmin->InitFilter($FilterArr);
  37. $arSettings = array("saved_group_by");
  38. InitFilterEx($arSettings, $sTableID."_settings", "get");
  39. if($find_data_type===false)//Restore saved setting
  40. {
  41. if ($saved_group_by <> '')
  42. $find_data_type = $saved_group_by;
  43. else
  44. $find_data_type = "SESSIONS";
  45. }
  46. elseif($saved_group_by!=$find_data_type)//Set if changed
  47. $saved_group_by=$find_data_type;
  48. InitFilterEx($arSettings, $sTableID."_settings", "set");
  49. $arrDays = array();
  50. AdminListCheckDate($lAdmin, array("find_date1"=>$find_date1, "find_date2"=>$find_date2));
  51. $arrLegend = array();
  52. $arrTotalLegend = array();
  53. $arFilter = Array(
  54. "COUNTRY_ID" => $find_country_id < 0? "": $find_country_id,
  55. "DATE1" => $find_date1,
  56. "DATE2" => $find_date2
  57. );
  58. if(mb_strlen($arFilter["COUNTRY_ID"]) == 2)
  59. {
  60. $arrDays = CCity::GetGraphArray($arFilter, $arrLegend, $find_data_type, 20);
  61. $arrTotalDays = CCity::GetGraphArray($arFilter, $arrTotalLegend, "TOTAL_".$find_data_type, 20);
  62. }
  63. else
  64. {
  65. $lAdmin->AddFilterError(GetMessage("STAT_NO_COUNTRY_ID"));
  66. }
  67. $lAdmin->BeginCustomContent();
  68. if(!function_exists("ImageCreate")):
  69. ShowError(GetMessage("STAT_GD_NOT_INSTALLED"));
  70. else:
  71. $width = COption::GetOptionString("statistic", "GRAPH_WEIGHT");
  72. $height = COption::GetOptionString("statistic", "GRAPH_HEIGHT");
  73. $diameter = COption::GetOptionString("statistic", "DIAGRAM_DIAMETER");
  74. ?>
  75. <?
  76. $found = false;
  77. foreach($arrLegend as $key => $val)
  78. {
  79. if ($val[$find_data_type] > 0)
  80. {
  81. $found = true; break;
  82. }
  83. }
  84. ?>
  85. <?if($found):?>
  86. <?if(count($arrDays) > 1):?>
  87. <div class="graph">
  88. <table border="0" cellspacing="1" cellpadding="0" align="center">
  89. <tr>
  90. <td valign="center">
  91. <img src="/bitrix/admin/city_graph.php?find_data_type=<?=$find_data_type?><?=GetFilterParams($FilterArr)?>&width=<?=$width?>&height=<?=$height?>&lang=<?echo LANG?>" width="<?=$width?>" height="<?=$height?>">
  92. </td>
  93. </tr>
  94. </table>
  95. </div>
  96. <?endif?>
  97. <div class="graph">
  98. <?echo GetMessage("STAT_DYNAMIC_GRAPH2")?>
  99. <table cellspacing=0 cellpadding=10 align="center">
  100. <tr>
  101. <td valign="center"><img src="/bitrix/admin/city_diagram.php?<?=GetFilterParams($FilterArr)?>&lang=<?=LANG?>&find_data_type=<?=$find_data_type?>" width="<?=$diameter?>" height="<?=$diameter?>"></td>
  102. <td valign="center">
  103. <table cellpadding=2 cellspacing=0 border=0 class="legend">
  104. <?
  105. $sum = 0;
  106. foreach($arrLegend as $keyL => $arrL)
  107. $sum += $arrL[$find_data_type];
  108. $i=0;
  109. foreach($arrLegend as $keyL => $arrL) :
  110. $i++;
  111. $id = $keyL;
  112. $name = $arrL["NAME"];
  113. $counter = intval($arrL[$find_data_type]);
  114. $procent = (intval($sum)>0) ? round(($counter*100)/$sum,2) : 0;
  115. $color = $arrL["COLOR"];
  116. ?>
  117. <tr>
  118. <td class="number" nowrap><?=$i."."?></td>
  119. <td valign="center" class="color">
  120. <div style="background-color: <?="#".$color?>"></div>
  121. </td>
  122. <td class="number" nowrap><?echo sprintf("%01.2f", $procent)."%"?></td>
  123. <td nowrap>(<?
  124. if ($find_data_type=="SESSIONS") :
  125. ?><a href="/bitrix/admin/session_list.php?lang=<?=LANGUAGE_ID?>&amp;find_city_id=<?echo urlencode($id)?>&amp;find_city_exact_match=Y&amp;find_date1=<?echo urlencode($arFilter["DATE1"])?>&amp;find_date2=<?echo urlencode($arFilter["DATE2"])?>&amp;set_filter=Y"><?=$counter?></a><?
  126. elseif ($find_data_type=="NEW_GUESTS") :
  127. ?><a href="/bitrix/admin/guest_list.php?lang=<?=LANGUAGE_ID?>&amp;find_city_id=<?echo urlencode($id)?>&amp;find_city_exact_match=Y&amp;find_sess2=1&amp;find_period_date1=<?echo urlencode($arFilter["DATE1"])?>&amp;find_period_date2=<?echo urlencode($arFilter["DATE2"])?>&amp;set_filter=Y"><?=$counter?></a><?
  128. elseif ($find_data_type=="HITS") :
  129. ?><a href="/bitrix/admin/hit_list.php?lang=<?=LANGUAGE_ID?>&amp;find_city_id=<?echo urlencode($id)?>&amp;find_city_exact_match=Y&amp;find_date1=<?echo urlencode($arFilter["DATE1"])?>&amp;find_date2=<?echo urlencode($arFilter["DATE2"])?>&amp;set_filter=Y"><?=$counter?></a><?
  130. elseif ($find_data_type=="C_EVENTS") :
  131. ?><?=$counter?><?
  132. endif;
  133. ?>)</td>
  134. <td nowrap><?=htmlspecialcharsbx($name)?></td>
  135. </tr>
  136. <?endforeach;?>
  137. </table>
  138. </td>
  139. </tr>
  140. </table>
  141. </div>
  142. <?else:
  143. CAdminMessage::ShowMessage(GetMessage("STAT_NO_DATA"));
  144. endif?>
  145. <?
  146. $found = false;
  147. foreach($arrTotalLegend as $key => $val)
  148. {
  149. if ($val["TOTAL_".$find_data_type] > 0)
  150. {
  151. $found = true; break;
  152. }
  153. }
  154. if ($found):
  155. ?>
  156. <div class="graph">
  157. <?echo GetMessage("STAT_STATIC_GRAPH")?>
  158. <table cellspacing=0 cellpadding=10 class="graph" align="center">
  159. <tr>
  160. <td valign="center"><img src="/bitrix/admin/city_diagram.php?<?=GetFilterParams($FilterArr)?>&lang=<?=LANGUAGE_ID?>&find_data_type=<?=$find_data_type?>&diagram_type=TOTAL" width="<?=$diameter?>" height="<?=$diameter?>"></td>
  161. <td valign="center">
  162. <table cellpadding=2 cellspacing=0 border=0 class="legend">
  163. <?
  164. $sum = 0;
  165. foreach($arrTotalLegend as $keyL => $arrL)
  166. $sum += $arrL["TOTAL_".$find_data_type];
  167. $i=0;
  168. foreach($arrTotalLegend as $keyL => $arrL) :
  169. $i++;
  170. $id = $keyL;
  171. $name = $arrL["NAME"];
  172. $counter = intval($arrL["TOTAL_".$find_data_type]);
  173. $procent = (intval($sum)>0) ? round(($counter*100)/$sum,2) : 0;
  174. $color = $arrL["COLOR"];
  175. ?>
  176. <tr>
  177. <td class="number" nowrap><?=$i."."?></td>
  178. <td valign="center" class="color">
  179. <div style="background-color: <?="#".$color?>"></div>
  180. </td>
  181. <td class="number" nowrap><?echo sprintf("%01.2f", $procent)."%"?></td>
  182. <td nowrap>(<?
  183. if ($find_data_type=="SESSIONS") :
  184. ?><a href="/bitrix/admin/session_list.php?lang=<?=LANGUAGE_ID?>&amp;find_city_id=<?echo urlencode($id)?>&amp;find_city_exact_match=Y&amp;set_filter=Y"><?=$counter?></a><?
  185. elseif ($find_data_type=="NEW_GUESTS") :
  186. ?><a href="/bitrix/admin/guest_list.php?lang=<?=LANGUAGE_ID?>&amp;find_city_id=<?echo urlencode($id)?>&amp;find_city_exact_match=Y&amp;find_sess2=1&amp;set_filter=Y"><?=$counter?></a><?
  187. elseif ($find_data_type=="HITS") :
  188. ?><a href="/bitrix/admin/hit_list.php?lang=<?=LANGUAGE_ID?>&amp;find_city_id=<?echo urlencode($id)?>&amp;find_city_exact_match=Y&amp;set_filter=Y"><?=$counter?></a><?
  189. elseif ($find_data_type=="C_EVENTS") :
  190. ?><?=$counter?><?
  191. endif;
  192. ?>)</td>
  193. <td nowrap><?=htmlspecialcharsbx($name)?></td>
  194. </tr>
  195. <?endforeach;?>
  196. </table>
  197. </td>
  198. </tr>
  199. </table>
  200. </div>
  201. <?else:
  202. CAdminMessage::ShowMessage(GetMessage("STAT_NO_DATA"));
  203. endif?>
  204. <?
  205. endif;
  206. $lAdmin->EndCustomContent();
  207. switch($find_data_type)
  208. {
  209. case "NEW_GUESTS":
  210. $group_title = GetMessage("STAT_NEW_GUESTS");
  211. break;
  212. case "HITS":
  213. $group_title = GetMessage("STAT_HITS");
  214. break;
  215. case "C_EVENTS":
  216. $group_title = GetMessage("STAT_EVENTS");
  217. break;
  218. case "SESSIONS":
  219. $group_title = GetMessage("STAT_SESSIONS");
  220. break;
  221. default:
  222. $group_title = "";
  223. break;
  224. }
  225. $aContext = array(
  226. array(
  227. "TEXT" => $group_title,
  228. "MENU" => array(
  229. array(
  230. "TEXT"=>GetMessage("STAT_SESSIONS"),
  231. "ACTION"=>$lAdmin->ActionDoGroup(0, "", "find_data_type=SESSIONS"),
  232. "ICON"=>($find_data_type=="SESSIONS"?"checked":""),
  233. ),
  234. array(
  235. "TEXT"=>GetMessage("STAT_NEW_GUESTS"),
  236. "ACTION"=>$lAdmin->ActionDoGroup(0, "", "find_data_type=NEW_GUESTS"),
  237. "ICON"=>($find_data_type=="NEW_GUESTS"?"checked":""),
  238. ),
  239. array(
  240. "TEXT"=>GetMessage("STAT_HITS"),
  241. "ACTION"=>$lAdmin->ActionDoGroup(0, "", "find_data_type=HITS"),
  242. "ICON"=>($find_data_type=="HITS"?"checked":""),
  243. ),
  244. array(
  245. "TEXT"=>GetMessage("STAT_EVENTS"),
  246. "ACTION"=>$lAdmin->ActionDoGroup(0, "", "find_data_type=C_EVENTS"),
  247. "ICON"=>($find_data_type=="C_EVENTS"?"checked":""),
  248. ),
  249. ),
  250. ),
  251. );
  252. $lAdmin->AddAdminContextMenu($aContext, false, false);
  253. $lAdmin->CheckListMode();
  254. $APPLICATION->SetTitle(GetMessage("STAT_RECORDS_LIST").': '.$group_title);
  255. require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
  256. $filter = new CAdminFilter($sTableID."_filter_id", array(GetMessage("STAT_F_COUNTRY_ID")));
  257. ?>
  258. <form name="form1" method="post" action="<?=$APPLICATION->GetCurPage()?>?">
  259. <?$filter->Begin();?>
  260. <tr valign="top">
  261. <td width="0%" nowrap><?echo GetMessage("STAT_F_PERIOD").":"?></td>
  262. <td width="0%" nowrap><?echo CalendarPeriod("find_date1", $find_date1, "find_date2", $find_date2, "form1", "Y")?></td>
  263. </tr>
  264. </tr>
  265. <?
  266. $ref = array_values($arrCOUNTRY);
  267. array_unshift($ref, GetMessage("MAIN_NO"));
  268. $ref_id = array_keys($arrCOUNTRY);
  269. array_unshift($ref_id, "-1");
  270. ?>
  271. <tr valign="top">
  272. <td valign="top"><?echo GetMessage("STAT_F_COUNTRY_ID")?>:</td>
  273. <td><?echo SelectBoxFromArray(
  274. "find_country_id",
  275. array("REFERENCE"=>$ref, "REFERENCE_ID"=>$ref_id),
  276. $find_country_id? $find_country_id: "-1",
  277. "",
  278. "style=\"width:100%\""
  279. );?></td>
  280. </tr>
  281. <?
  282. $filter->Buttons(array("table_id"=>$sTableID, "url"=>$APPLICATION->GetCurPage(), "form"=>"form1"));
  283. $filter->End();
  284. ?>
  285. </form>
  286. <?$lAdmin->DisplayList();?>
  287. <?require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");?>