PageRenderTime 46ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/modules/statistic/admin/country_list.php

https://gitlab.com/alexprowars/bitrix
PHP | 424 lines | 367 code | 49 blank | 8 comment | 40 complexity | a2a20908891c32f3ae0aaf3b7d2f7792 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") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
  9. IncludeModuleLangFile(__FILE__);
  10. $err_mess = "File: ".__FILE__."<br>Line: ";
  11. /***************************************************************************
  12. GET | POST handlers
  13. ****************************************************************************/
  14. $rs = CCountry::GetList("s_dropdown");
  15. while ($ar = $rs->Fetch()) $arrCOUNTRY[$ar["ID"]] = $ar["NAME"]." [".$ar["ID"]."]";
  16. $sTableID = "t_country_list";
  17. $oSort = new CAdminSorting($sTableID);
  18. $lAdmin = new CAdminList($sTableID, $oSort);
  19. if (!isset($find_data_type) && !in_array($find_data_type,Array("NEW_GUESTS","HITS","C_EVENTS","SESSIONS")))
  20. $find_data_type = false;
  21. if($lAdmin->IsDefaultFilter())
  22. {
  23. //$find_data_type = "SESSIONS";
  24. $find_date1_DAYS_TO_BACK=90;
  25. $find_country_id = array();
  26. $i = 0;
  27. $find_country_id = array();
  28. if (is_array($arrCOUNTRY))
  29. {
  30. foreach ($arrCOUNTRY as $key => $value)
  31. {
  32. $i++;
  33. if ($i<=20) $find_country_id[] = $key;
  34. }
  35. }
  36. $set_filter = "Y";
  37. }
  38. $FilterArr1 = array(
  39. "find_date1","find_date2"
  40. );
  41. $FilterArr2 = array(
  42. "find_country_id"
  43. );
  44. $FilterArr = array_merge($FilterArr1, $FilterArr2);
  45. $lAdmin->InitFilter($FilterArr);
  46. $arSettings = array("saved_group_by");
  47. InitFilterEx($arSettings, $sTableID."_settings", "get");
  48. if($find_data_type===false)//Restore saved setting
  49. {
  50. if ($saved_group_by <> '')
  51. $find_data_type = $saved_group_by;
  52. else
  53. $find_data_type = "SESSIONS";
  54. }
  55. elseif($saved_group_by!=$find_data_type)//Set if changed
  56. $saved_group_by=$find_data_type;
  57. InitFilterEx($arSettings, $sTableID."_settings", "set");
  58. $filter = new CAdminFilter(
  59. $sTableID."_filter_id",
  60. (is_array($arrCOUNTRY) ? Array(GetMessage("STAT_F_COUNTRY_ID")) : Array())
  61. );
  62. $strError="";
  63. AdminListCheckDate($strError, array("find_date1"=>$find_date1, "find_date2"=>$find_date2));
  64. $str = (is_array($find_country_id)) ? implode(" | ",$find_country_id) : "";
  65. $arFilter = Array(
  66. "COUNTRY_ID" => $str,
  67. "DATE1" => $find_date1,
  68. "DATE2" => $find_date2
  69. );
  70. $arrDays = CCountry::GetGraphArray($arFilter, $arrLegend);
  71. $lAdmin->BeginCustomContent();
  72. if($strError <> '')
  73. CAdminMessage::ShowMessage($strError);
  74. $found = false;
  75. foreach($arrLegend as $key => $val)
  76. {
  77. if ($val[$find_data_type] > 0)
  78. {
  79. $found = true;
  80. break;
  81. }
  82. }
  83. if (function_exists("ImageCreate")) :
  84. if (($strError == '') && count($arrLegend)>0) :
  85. ?>
  86. <?
  87. $width = COption::GetOptionString("statistic", "GRAPH_WEIGHT");
  88. $height = COption::GetOptionString("statistic", "GRAPH_HEIGHT");
  89. $diameter = COption::GetOptionString("statistic", "DIAGRAM_DIAMETER");
  90. ?>
  91. <?if($found):?>
  92. <?if(count($arrDays) > 1):?>
  93. <div class="graph">
  94. <table border="0" cellspacing="1" cellpadding="0" align="center">
  95. <tr>
  96. <td valign="center">
  97. <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>
  98. </td>
  99. </tr>
  100. </table>
  101. </div>
  102. <?endif;?>
  103. <div class="graph">
  104. <?echo GetMessage("STAT_DYNAMIC_GRAPH2")?>
  105. <table cellspacing=0 cellpadding=10 class="graph" align="center">
  106. <tr>
  107. <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>
  108. <td valign="center">
  109. <table cellpadding=2 cellspacing=0 border=0 class="legend">
  110. <?
  111. function data_sort($ar1, $ar2)
  112. {
  113. global $find_data_type;
  114. if ($ar1[$find_data_type]<$ar2[$find_data_type]) return 1;
  115. if ($ar1[$find_data_type]>$ar2[$find_data_type]) return -1;
  116. return 0;
  117. }
  118. uasort($arrLegend, "data_sort");
  119. $sum = 0;
  120. foreach ($arrLegend as $keyL => $arrL)
  121. {
  122. $sum += $arrL[$find_data_type];
  123. }
  124. $i=0;
  125. foreach ($arrLegend as $keyL => $arrL):
  126. $i++;
  127. $id = $keyL;
  128. $name = $arrL["NAME"];
  129. $counter = intval($arrL[$find_data_type]);
  130. $procent = (intval($sum)>0) ? round(($counter*100)/$sum,2) : 0;
  131. $color = $arrL["COLOR"];
  132. ?>
  133. <tr>
  134. <td class="number" nowrap><?=$i."."?></td>
  135. <td valign="center" class="color">
  136. <div style="background-color: <?="#".$color?>"></div>
  137. </td>
  138. <td class="number" nowrap><?echo sprintf("%01.2f", $procent)."%"?></td>
  139. <td nowrap>(<?
  140. if ($find_data_type=="SESSIONS") :
  141. ?><a href="/bitrix/admin/session_list.php?lang=<?=LANGUAGE_ID?>&amp;find_country_id=<?echo urlencode($id)?>&amp;find_country_id_exact_match=Y&amp;find_date1=<?echo urlencode($arFilter["DATE1"])?>&amp;find_date2=<?echo urlencode($arFilter["DATE2"])?>&amp;set_filter=Y"><?=$counter?></a><?
  142. elseif ($find_data_type=="NEW_GUESTS") :
  143. ?><a href="/bitrix/admin/guest_list.php?lang=<?=LANGUAGE_ID?>&amp;find_country_id=<?echo urlencode($id)?>&amp;find_country_id_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><?
  144. elseif ($find_data_type=="HITS") :
  145. ?><a href="/bitrix/admin/hit_list.php?lang=<?=LANGUAGE_ID?>&amp;find_country_id=<?echo urlencode($id)?>&amp;find_country_id_exact_match=Y&amp;find_date1=<?echo urlencode($arFilter["DATE1"])?>&amp;find_date2=<?echo urlencode($arFilter["DATE2"])?>&amp;set_filter=Y"><?=$counter?></a><?
  146. elseif ($find_data_type=="C_EVENTS") :
  147. ?><a href="/bitrix/admin/event_list.php?lang=<?=LANGUAGE_ID?>&amp;find_country_id=<?echo urlencode($id)?>&amp;find_country_id_exact_match=Y&amp;find_date1=<?echo urlencode($arFilter["DATE1"])?>&amp;find_date2=<?echo urlencode($arFilter["DATE2"])?>&amp;set_filter=Y"><?=$counter?></a><?
  148. endif;
  149. ?>)</td>
  150. <td class="number" nowrap><?
  151. $flag = "/bitrix/images/statistic/flags/".mb_strtolower($id).".gif";
  152. if (file_exists($_SERVER["DOCUMENT_ROOT"].$flag)) :
  153. ?><img src="<?=$flag?>" width="20" height="13" border=0 alt=""><?
  154. endif;
  155. ?></td>
  156. <td nowrap><a href="city_list.php?lang=<?=LANGUAGE_ID?>&amp;find_country_id=<?echo urlencode($id)?>&amp;find_date1=<?echo urlencode($arFilter["DATE1"])?>&amp;find_date2=<?echo urlencode($arFilter["DATE2"])?>&amp;find_data_type=<?=$find_data_type?>&amp;set_filter=Y">[<?=htmlspecialcharsbx($id)?>] <?=htmlspecialcharsbx($name)?></a></td>
  157. </tr>
  158. <?endforeach;?>
  159. </table>
  160. </td>
  161. </tr>
  162. </table>
  163. </div>
  164. <?else:
  165. CAdminMessage::ShowMessage(GetMessage("STAT_NO_DATA"));
  166. endif?>
  167. <?
  168. $found = false;
  169. foreach($arrLegend as $key => $val)
  170. {
  171. if ($val["TOTAL_".$find_data_type] > 0)
  172. {
  173. $found = true; break;
  174. }
  175. }
  176. if ($found):
  177. ?>
  178. <div class="graph">
  179. <?echo GetMessage("STAT_STATIC_GRAPH")?>
  180. <table cellspacing=0 cellpadding=10 class="graph" align="center">
  181. <tr>
  182. <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>
  183. <td valign="center">
  184. <table cellpadding=2 cellspacing=0 border=0 class="legend">
  185. <?
  186. function total_data_sort($ar1, $ar2)
  187. {
  188. global $find_data_type;
  189. if ($ar1["TOTAL_".$find_data_type]<$ar2["TOTAL_".$find_data_type]) return 1;
  190. if ($ar1["TOTAL_".$find_data_type]>$ar2["TOTAL_".$find_data_type]) return -1;
  191. return 0;
  192. }
  193. uasort($arrLegend, "total_data_sort");
  194. $sum = 0;
  195. foreach ($arrLegend as $keyL => $arrL)
  196. {
  197. $sum += $arrL["TOTAL_".$find_data_type];
  198. }
  199. $i=0;
  200. foreach ($arrLegend as $keyL => $arrL):
  201. $i++;
  202. $id = $keyL;
  203. $name = $arrL["NAME"];
  204. $counter = intval($arrL["TOTAL_".$find_data_type]);
  205. $procent = (intval($sum)>0) ? round(($counter*100)/$sum,2) : 0;
  206. $color = $arrL["COLOR"];
  207. ?>
  208. <tr>
  209. <td class="number" nowrap><?=$i."."?></td>
  210. <td valign="center" class="color">
  211. <div style="background-color: <?="#".$color?>"></div>
  212. </td>
  213. <td class="number" nowrap><?echo sprintf("%01.2f", $procent)."%"?></td>
  214. <td nowrap>(<?
  215. if ($find_data_type=="SESSIONS") :
  216. ?><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><?
  217. elseif ($find_data_type=="NEW_GUESTS") :
  218. ?><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><?
  219. elseif ($find_data_type=="HITS") :
  220. ?><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><?
  221. elseif ($find_data_type=="C_EVENTS") :
  222. ?><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><?
  223. endif;
  224. ?>)</td>
  225. <td class="number" nowrap><?
  226. $flag = "/bitrix/images/statistic/flags/".mb_strtolower($id).".gif";
  227. if (file_exists($_SERVER["DOCUMENT_ROOT"].$flag)) :
  228. ?><img src="<?=$flag?>" width="20" height="13" border=0 alt=""><?
  229. endif;
  230. ?></td>
  231. <td nowrap>[<?=htmlspecialcharsbx($id)?>] <?=htmlspecialcharsbx($name)?></td>
  232. </tr>
  233. <?endforeach;?>
  234. </table>
  235. </td>
  236. </tr>
  237. </table>
  238. </div>
  239. <?else:
  240. CAdminMessage::ShowMessage(GetMessage("STAT_NO_DATA"));
  241. endif?>
  242. <?endif;?>
  243. <?
  244. else:
  245. ShowError(GetMessage("STAT_GD_NOT_INSTALLED"));
  246. endif;
  247. $lAdmin->EndCustomContent();
  248. switch ($find_data_type)
  249. {
  250. case "NEW_GUESTS":
  251. $group_title = GetMessage("STAT_NEW_GUESTS");
  252. break;
  253. case "HITS":
  254. $group_title = GetMessage("STAT_HITS");
  255. break;
  256. case "C_EVENTS":
  257. $group_title = GetMessage("STAT_EVENTS");
  258. break;
  259. case "SESSIONS":
  260. $group_title = GetMessage("STAT_SESSIONS");
  261. break;
  262. default:
  263. $group_title = "";
  264. break;
  265. }
  266. $aContext = array(
  267. array(
  268. "TEXT" => $group_title,
  269. "MENU" => array(
  270. array(
  271. "TEXT" => GetMessage("STAT_SESSIONS"),
  272. "ACTION" => $lAdmin->ActionDoGroup(0, "", "find_data_type=SESSIONS"),
  273. "ICON" => ($find_data_type=="SESSIONS"?"checked":""),
  274. ),
  275. array(
  276. "TEXT" => GetMessage("STAT_NEW_GUESTS"),
  277. "ACTION" => $lAdmin->ActionDoGroup(0, "", "find_data_type=NEW_GUESTS"),
  278. "ICON" => ($find_data_type=="NEW_GUESTS"?"checked":""),
  279. ),
  280. array(
  281. "TEXT" => GetMessage("STAT_HITS"),
  282. "ACTION" => $lAdmin->ActionDoGroup(0, "", "find_data_type=HITS"),
  283. "ICON" => ($find_data_type=="HITS"?"checked":""),
  284. ),
  285. array(
  286. "TEXT" => GetMessage("STAT_EVENTS"),
  287. "ACTION" => $lAdmin->ActionDoGroup(0, "", "find_data_type=C_EVENTS"),
  288. "ICON" => ($find_data_type=="C_EVENTS"?"checked":""),
  289. ),
  290. ),
  291. ),
  292. );
  293. $lAdmin->AddAdminContextMenu($aContext, false, false);
  294. $lAdmin->CheckListMode();
  295. $APPLICATION->SetTitle(GetMessage("STAT_RECORDS_LIST").': '.$group_title);
  296. require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
  297. /***************************************************************************
  298. HTML form
  299. ***************************************************************************/
  300. ?>
  301. <form name="form1" method="post" action="<?=$APPLICATION->GetCurPage()?>?">
  302. <?$filter->Begin();?>
  303. <!-- <tr valign="center">
  304. <td width="0%" nowrap><?echo GetMessage("STAT_F_DATA_TYPE")?></td>
  305. <td width="0%" nowrap><?
  306. $arr = array(
  307. "reference"=>array(
  308. GetMessage("STAT_SESSIONS"),
  309. GetMessage("STAT_NEW_GUESTS"),
  310. GetMessage("STAT_HITS"),
  311. GetMessage("STAT_EVENTS")
  312. ),
  313. "reference_id"=>array(
  314. "SESSIONS",
  315. "NEW_GUESTS",
  316. "HITS",
  317. "C_EVENTS"));
  318. echo SelectBoxFromArray("find_data_type", $arr, htmlspecialcharsbx($find_data_type));
  319. ?></td>
  320. </tr> -->
  321. <tr valign="top">
  322. <td width="0%" nowrap><?echo GetMessage("STAT_F_PERIOD").":"?></td>
  323. <td width="0%" nowrap><?echo CalendarPeriod("find_date1", $find_date1, "find_date2", $find_date2, "form1", "Y")?></td>
  324. </tr>
  325. </tr>
  326. <?
  327. if (is_array($arrCOUNTRY)):
  328. reset($arrCOUNTRY);
  329. $arrCOUNTRYlow = array_map("strtolower", $arrCOUNTRY);
  330. function multiselect_sort($a,$b)
  331. {
  332. global $find_country_id, $arrCOUNTRYlow;
  333. $ret=0;
  334. $ka = false;
  335. $kb = false;
  336. if (is_array($find_country_id))
  337. {
  338. $ka = array_search($a, $find_country_id);
  339. $kb = array_search($b, $find_country_id);
  340. }
  341. if ($ka!==false && $kb!==false)
  342. {
  343. if ($ka==$kb) $ret=0;
  344. elseif (mb_strtolower($ka) > mb_strtolower($kb)) $ret=1;
  345. else $ret=-1;
  346. }
  347. if ($ka===false && $kb!==false) $ret=1;
  348. if ($ka!==false && $kb===false) $ret=-1;
  349. if ($ret==0)
  350. {
  351. if ($arrCOUNTRYlow[$a] > $arrCOUNTRYlow[$b]) $ret=1;
  352. if ($arrCOUNTRYlow[$a] < $arrCOUNTRYlow[$b]) $ret=-1;
  353. }
  354. return $ret;
  355. }
  356. uksort($arrCOUNTRY, "multiselect_sort");
  357. $ref = array();
  358. $ref_id = array();
  359. if (is_array($arrCOUNTRY))
  360. {
  361. $ref = array_values($arrCOUNTRY);
  362. $ref_id = array_keys($arrCOUNTRY);
  363. }
  364. ?>
  365. <tr valign="top">
  366. <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>
  367. <td><?
  368. echo SelectBoxMFromArray("find_country_id[]",array("REFERENCE"=>$ref, "REFERENCE_ID"=>$ref_id), $find_country_id,"",false,"11", "style=\"width:100%\"");
  369. ?></td>
  370. </tr>
  371. <?endif;?>
  372. <?$filter->Buttons(array("table_id"=>$sTableID, "url"=>$APPLICATION->GetCurPage(), "form"=>"form1"));$filter->End();?>
  373. </form>
  374. <?$lAdmin->DisplayList();?>
  375. <?require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");