PageRenderTime 44ms CodeModel.GetById 12ms RepoModel.GetById 1ms app.codeStats 0ms

/modules/statistic/admin/adv_graph_list.php

https://gitlab.com/alexprowars/bitrix
PHP | 413 lines | 373 code | 35 blank | 5 comment | 34 complexity | fa94318fccc4114e61122a0a22691dec 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. $statDB = CDatabase::GetModuleConnection('statistic');
  11. $err_mess = "File: ".__FILE__."<br>Line: ";
  12. define("HELP_FILE","adv_list.php");
  13. /***************************************************************************
  14. GET | POST handlers
  15. ****************************************************************************/
  16. $ADV_ID = intval($ADV_ID);
  17. if($context=="tab")
  18. $find_events=array();
  19. $rs = CAdv::GetEventList($ADV_ID, "s_def", "desc");
  20. while ($ar = $rs->Fetch())
  21. {
  22. $arrEVENTS[$ar["ID"]] = $ar["EVENT"]." [".$ar["ID"]."]";
  23. if($context=="tab")
  24. $find_events[]=$ar["ID"];
  25. }
  26. $sTableID = "t_adv_graph_list";
  27. $oSort = new CAdminSorting($sTableID);
  28. $lAdmin = new CAdminList($sTableID, $oSort);
  29. if ($DATE1 <> '') $find_date1 = $DATE1;
  30. if ($DATE2 <> '') $find_date2 = $DATE2;
  31. $filter = new CAdminFilter(
  32. $sTableID."_filter_id",
  33. Array(
  34. GetMessage("STAT_F_SELECT_EVENTS"),
  35. )
  36. );
  37. if($lAdmin->IsDefaultFilter())
  38. {
  39. if (is_array($arrEVENTS))
  40. {
  41. foreach ($arrEVENTS as $key => $value)
  42. {
  43. $i++;
  44. if ($i<=5) $find_events[] = $key;
  45. }
  46. }
  47. $find_date1_DAYS_TO_BACK=90;
  48. $set_filter = "Y";
  49. }
  50. $arShow= array(
  51. "find_sessions",
  52. "find_sessions_back",
  53. "find_guests",
  54. "find_guests_back",
  55. "find_new_guests",
  56. "find_hosts",
  57. "find_hosts_back",
  58. "find_hits",
  59. "find_hits_back",
  60. "find_show_money"
  61. );
  62. $FilterArr = array(
  63. "find_date1",
  64. "find_date2",
  65. "find_events",
  66. );
  67. $lAdmin->InitFilter($FilterArr);
  68. if ($set_show != "Y")
  69. {
  70. $find_sessions="Y";
  71. $find_sessions_back="Y";
  72. $find_guests="Y";
  73. $find_guests_back="Y";
  74. $find_new_guests="Y";
  75. $find_hosts="Y";
  76. $find_hosts_back="Y";
  77. }
  78. if(is_array($find_events))
  79. {
  80. $find_events_names = $find_events_tmp = array();
  81. foreach($find_events as $key => $value)
  82. {
  83. if (is_set($arrEVENTS, $value))
  84. {
  85. $find_events_names[]=$arrEVENTS[$value];
  86. $find_events_tmp[] = $value;
  87. }
  88. else
  89. {
  90. unset($find_events[$key]);
  91. }
  92. }
  93. $find_events = $find_events_tmp;
  94. }
  95. else
  96. {
  97. $find_events =array();
  98. $find_events_names = array();
  99. }
  100. AdminListCheckDate($lAdmin, array("find_date1"=>$find_date1, "find_date2"=>$find_date2));
  101. $arFilter = Array(
  102. "DATE1" => $find_date1,
  103. "DATE2" => $find_date2,
  104. );
  105. $strSql = "SELECT ID, REFERER1, REFERER2 FROM b_stat_adv WHERE ID = ".$ADV_ID;
  106. $a = $statDB->Query($strSql,false,$err_mess.__LINE__);
  107. if (!$ar = $a->Fetch())
  108. {
  109. $message = new CAdminMessage(Array("MESSAGE" => GetMessage("STAT_INCORRECT_ADV_ID"), "TYPE"=>"ERROR"));
  110. }
  111. else
  112. {
  113. $message = null;
  114. $ref1 = $ar["REFERER1"];
  115. $ref2 = $ar["REFERER2"];
  116. }
  117. $lAdmin->BeginCustomContent();
  118. $dynamic_days = CAdv::DynamicDays($ADV_ID, $arFilter["DATE1"], $arFilter["DATE2"]);
  119. if ($dynamic_days<2)
  120. {
  121. CAdminMessage::ShowMessage(GetMessage("STAT_NOT_ENOUGH_DATA"));
  122. }
  123. elseif (!$message)
  124. {
  125. $width = COption::GetOptionString("statistic", "GRAPH_WEIGHT");
  126. $height = COption::GetOptionString("statistic", "GRAPH_HEIGHT");
  127. $str = "ADV_ID=".$ADV_ID."&find_date1=".urlencode($find_date1)."&find_date2=".urlencode($find_date2);
  128. $s = "";
  129. if ($find_sessions=="Y")
  130. $s .= "&find_sessions=Y";
  131. if ($find_sessions_back=="Y")
  132. $s .= "&find_sessions_back=Y";
  133. if ($find_guests=="Y")
  134. $s .= "&find_guests=Y";
  135. if ($find_guests_back=="Y")
  136. $s .= "&find_guests_back=Y";
  137. if ($find_new_guests=="Y")
  138. $s .= "&find_new_guests=Y";
  139. if ($find_hosts=="Y")
  140. $s .= "&find_hosts=Y";
  141. if ($find_hosts_back=="Y")
  142. $s .= "&find_hosts_back=Y";
  143. if ($find_hits=="Y")
  144. $s .= "&find_hits=Y";
  145. if ($find_hits_back=="Y")
  146. $s .= "&find_hits_back=Y";
  147. if ($s <> '')
  148. {
  149. $graph_1 = "Y";
  150. $str .= $s;
  151. ?>
  152. <?if($context=="tab"):?>
  153. <a href="/bitrix/admin/adv_dynamic_list.php?lang=<?=LANG?>&amp;find_adv_id=<?=$ADV_ID?>&amp;set_default=Y"><?=GetMessage("STAT_ALL_DYNAMICS")?></a><br>
  154. <a href="/bitrix/admin/adv_graph_list.php?lang=<?=LANG?>&amp;ADV_ID=<?=$ADV_ID?>"><?=GetMessage("STAT_ALL_GRAPHICS")?></a><br>
  155. <?endif;?>
  156. <div class="graph">
  157. <?=GetMessage("STAT_GRAPH_1")?>
  158. <table cellspacing="0" cellpadding="0" class="graph" border="0" align="center"><tr>
  159. <td valign="top" class="graph">
  160. <img class="graph" src="adv_graph_1.php?rand=<?=rand()?>&amp;<?=$str?>&amp;width=<?=$width?>&amp;height=<?=$height?>&amp;lang=<?=LANGUAGE_ID?>" width="<?=$width?>" height="<?=$height?>">
  161. </td>
  162. <td valign="center">
  163. <table cellpadding="3" cellspacing="1" border="0" class="legend">
  164. <tr>
  165. <td align="center"><?=GetMessage("STAT_STRAIGHT")?></td>
  166. <td align="center"><?=GetMessage("STAT_BACK")?><font class="star">*</td>
  167. <td>&nbsp;</td>
  168. </tr>
  169. <?if ($find_hits=="Y" || $find_hits_back=="Y"):?>
  170. <tr>
  171. <td valign="center" class="color-line">
  172. <div style="background-color: <?="#".$arrColor["HITS"]?>"></div>
  173. </td>
  174. <td><img src="/bitrix/admin/graph_legend.php?color=<?=$arrColor["HITS"]?>&dash=Y" width="45" height="2"></td>
  175. <td nowrap><img src="/bitrix/images/1.gif" width="3" height="1"><?=GetMessage("STAT_HITS")?></td>
  176. </tr>
  177. <?endif;?>
  178. <?if ($find_sessions=="Y" || $find_sessions_back=="Y"):?>
  179. <tr>
  180. <td valign="center" class="color-line">
  181. <div style="background-color: <?="#".$arrColor["SESSIONS"]?>"></div>
  182. </td>
  183. <td valign="center"><img src="/bitrix/admin/graph_legend.php?color=<?=$arrColor["SESSIONS"]?>&dash=Y" width="45" height="2"></td>
  184. <td nowrap><img src="/bitrix/images/1.gif" width="3" height="1"><?=GetMessage("STAT_SESSIONS")?></td>
  185. </tr>
  186. <?endif;?>
  187. <?if ($find_guests=="Y" || $find_guests_back=="Y"):?>
  188. <tr>
  189. <td valign="center" class="color-line">
  190. <div style="background-color: <?="#".$arrColor["GUESTS"]?>"></div>
  191. </td>
  192. <td><img src="/bitrix/admin/graph_legend.php?color=<?=$arrColor["GUESTS"]?>&dash=Y" width="45" height="2"></td>
  193. <td nowrap><img src="/bitrix/images/1.gif" width="3" height="1"><?=GetMessage("STAT_GUESTS")?></td>
  194. </tr>
  195. <?endif;?>
  196. <?if ($find_hosts=="Y" || $find_hosts_back=="Y"):?>
  197. <tr>
  198. <td valign="center" class="color-line">
  199. <div style="background-color: <?="#".$arrColor["HOSTS"]?>"></div>
  200. </td>
  201. <td><img src="/bitrix/admin/graph_legend.php?color=<?=$arrColor["HOSTS"]?>&dash=Y" width="45" height="2"></td>
  202. <td nowrap><img src="/bitrix/images/1.gif" width="3" height="1"><?=GetMessage("STAT_HOSTS")?></td>
  203. </tr>
  204. <?endif;?>
  205. <?if ($find_new_guests=="Y"):?>
  206. <tr>
  207. <td valign="center" class="color-line">
  208. <div style="background-color: <?="#".$arrColor["NEW_GUESTS"]?>"></div>
  209. </td>
  210. <td></td>
  211. <td nowrap><img src="/bitrix/images/1.gif" width="3" height="1"><?=GetMessage("STAT_NEW_GUESTS")?></td>
  212. </tr>
  213. <?endif;?>
  214. </table>
  215. </td>
  216. </tr></table>
  217. </div>
  218. <?
  219. }
  220. if (sizeof($find_events)>0)
  221. {
  222. $arF["ID"] = implode(" | ",$find_events);
  223. $arF["DATE1_PERIOD"] = $arFilter["DATE1"];
  224. $arF["DATE2_PERIOD"] = $arFilter["DATE2"];
  225. $events = CAdv::GetEventList($ADV_ID, '', '', $arF);
  226. if ($er = $events->Fetch())
  227. {
  228. $graph_2 = "Y";
  229. $str = "ADV_ID=".$ADV_ID."&find_date1=".urlencode($find_date1)."&find_date2=".urlencode($find_date2). "&find_show_money=".$find_show_money;
  230. $s = "";
  231. foreach ($find_events as $eid)
  232. $s .= "&find_events[]=".$eid;
  233. $str .= $s;
  234. ?>
  235. <div class="graph">
  236. <?=GetMessage("STAT_GRAPH_2")?>
  237. <table cellspacing="0" cellpadding="0" class="graph" border="0" align="center"><tr>
  238. <td valign="top" class="graph">
  239. <img class="graph" src="adv_graph_2.php?rand=<?=rand()?>&amp;<?=$str?>&amp;width=<?=$width?>&amp;height=<?=$height?>&amp;lang=<?=LANG?>" width="<?=$width?>" height="<?=$height?>">
  240. </td>
  241. <td valign="center">
  242. <table cellpadding="3" cellspacing="1" border="0" class="legend">
  243. <tr>
  244. <td align="center"><?=GetMessage("STAT_STRAIGHT")?></td>
  245. <td align="center"><?=GetMessage("STAT_BACK")?>*</td>
  246. <td>&nbsp;</td>
  247. </tr>
  248. <?
  249. reset($find_events);
  250. $total = sizeof($find_events);
  251. foreach ($find_events as $eid)
  252. {
  253. $color = GetNextRGB($color, $total);
  254. ?>
  255. <tr>
  256. <td valign="center"><img src="/bitrix/admin/graph_legend.php?color=<?=$color?>" width="45" height="2"></td>
  257. <td valign="center"><img src="/bitrix/admin/graph_legend.php?color=<?=$color?>&dash=Y" width="45" height="2"></td>
  258. <td nowrap><img src="/bitrix/images/1.gif" width="3" height="1"><?
  259. $events = CStatEventType::GetByID($eid);
  260. $arEvent = $events->GetNext();
  261. echo "[<a href=\"/bitrix/admin/event_type_list.php?lang=".LANG."\">".$arEvent["ID"]."</a>] ".$arEvent["EVENT"];
  262. ?></td>
  263. </tr>
  264. <?}?>
  265. </table>
  266. </td>
  267. </tr></table>
  268. </div>
  269. <?
  270. }
  271. }
  272. }
  273. $lAdmin->EndCustomContent();
  274. $aContext = array(
  275. array(
  276. "TEXT" => GetMessage("STAT_ADV_LIST"),
  277. "ICON" => "btn_list",
  278. "LINK" => "/bitrix/admin/adv_list.php?lang=".LANG,
  279. ),
  280. );
  281. if (!$message)
  282. {
  283. $aContext[] = array(
  284. "TEXT" => str_replace("#ID#",$ADV_ID,GetMessage("STAT_DYNAMIC")),
  285. //"ICON" => "btn_list",
  286. "LINK" =>"/bitrix/admin/adv_dynamic_list.php?lang=".LANG."&find_adv_id=".$ADV_ID."&find_date1=".urlencode($arFilter["DATE1"])."&find_date2=".urlencode($arFilter["DATE2"])."&set_filter=Y",
  287. );
  288. }
  289. if($context<>"tab")
  290. $lAdmin->AddAdminContextMenu($aContext);
  291. $lAdmin->CheckListMode();
  292. $strTitle = str_replace("#ID#",$ar["ID"],GetMessage("STAT_RECORDS_LIST"));
  293. $APPLICATION->SetTitle($strTitle." (".$ref1." / ".$ref2.")");
  294. require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");?>
  295. <form name="form1" method="GET" action="<?=$APPLICATION->GetCurPage()?>">
  296. <?$filter->Begin();?>
  297. <tr valign="center">
  298. <td width="0%" nowrap><?echo GetMessage("STAT_F_PERIOD").":"?></td>
  299. <td width="0%" nowrap><?echo CalendarPeriod("find_date1", $find_date1, "find_date2", $find_date2, "form1", "Y")?>
  300. </td>
  301. </tr>
  302. <tr valign="top">
  303. <td><?=GetMessage("STAT_F_SELECT_EVENTS")?>:</td>
  304. <td>
  305. <?
  306. echo SelectBoxMFromArray("find_events[]",array("REFERENCE"=>$find_events_names, "REFERENCE_ID"=>$find_events), $find_events,"",false,"10", "style=\"width:300px;\"");
  307. ?>
  308. <script language="Javascript">
  309. function selectEventType(form, field)
  310. {
  311. jsUtils.OpenWindow('event_multiselect.php?lang=<?=LANG?>&form='+form+'&field='+field, 600, 600);
  312. }
  313. jsSelectUtils.sortSelect('find_events[]');
  314. jsSelectUtils.selectAllOptions('find_events[]');
  315. </script>
  316. <br>
  317. <input type="button" OnClick="selectEventType('find_form','find_events[]')" value="<?=GetMessage("MAIN_ADMIN_MENU_ADD")?>...">&nbsp;
  318. <input type="button" OnClick="jsSelectUtils.deleteSelectedOptions('find_events[]');" value="<?=GetMessage("MAIN_ADMIN_MENU_DELETE")?>">
  319. </td>
  320. </tr>
  321. <?$filter->Buttons(array("table_id"=>$sTableID, "url"=>$APPLICATION->GetCurPage()."?ADV_ID=".$ADV_ID, "form"=>"form1"));$filter->End();?>
  322. </form>
  323. <?
  324. if($message)
  325. echo $message->Show();
  326. $lAdmin->DisplayList();
  327. ?>
  328. <?if (!$message):?>
  329. <form method="get" action="<?=$APPLICATION->GetCurPage();?>">
  330. <input type="hidden" name="find_date1" value="<?=htmlspecialcharsbx($find_date1)?>">
  331. <input type="hidden" name="find_date2" value="<?=htmlspecialcharsbx($find_date2)?>">
  332. <input type="hidden" name="ADV_ID" value="<?=$ADV_ID?>">
  333. <input type="hidden" name="set_show" value="Y">
  334. <?foreach($find_events as $val):?>
  335. <input type="hidden" name="find_events[]" value="<?=htmlspecialcharsbx($val)?>">
  336. <?endforeach?>
  337. <div class="graph">
  338. <table class="graph"><tr><td>
  339. <table cellpadding="3" cellspacing="1" border="0" class="legend">
  340. <tr>
  341. <td><?echo GetMessage("STAT_SHOW")?></td>
  342. <td align="center"><?echo GetMessage("STAT_STRAIGHT")?></td>
  343. <td align="center"><?echo GetMessage("STAT_BACK")?>*</td>
  344. </tr>
  345. <tr>
  346. <td nowrap><?=GetMessage("STAT_HITS")?></td>
  347. <td align="center"><?echo InputType("checkbox","find_hits","Y",$find_hits,false); ?></td>
  348. <td align="center"><?echo InputType("checkbox","find_hits_back","Y",$find_hits_back,false); ?></td>
  349. </tr>
  350. <tr>
  351. <td nowrap><?=GetMessage("STAT_SESSIONS")?></td>
  352. <td align="center"><?echo InputType("checkbox","find_sessions","Y",$find_sessions,false); ?></td>
  353. <td align="center"><?echo InputType("checkbox","find_sessions_back","Y",$find_sessions_back,false); ?></td>
  354. </tr>
  355. <tr>
  356. <td nowrap><?=GetMessage("STAT_GUESTS")?></td>
  357. <td align="center"><?echo InputType("checkbox","find_guests","Y",$find_guests,false); ?></td>
  358. <td align="center"><?echo InputType("checkbox","find_guests_back","Y",$find_guests_back,false); ?></td>
  359. </tr>
  360. <tr>
  361. <td nowrap><?=GetMessage("STAT_HOSTS")?></td>
  362. <td align="center"><?echo InputType("checkbox","find_hosts","Y",$find_hosts,false); ?></td>
  363. <td align="center"><?echo InputType("checkbox","find_hosts_back","Y",$find_hosts_back,false); ?></td>
  364. </tr>
  365. <tr>
  366. <td nowrap><?=GetMessage("STAT_NEW_GUESTS")?></td>
  367. <td align="center"><?echo InputType("checkbox","find_new_guests","Y",$find_new_guests,false); ?></td>
  368. <td></td>
  369. </tr>
  370. <tr>
  371. <td colspan="3"><input type="submit" value="<?=GetMessage("STAT_F_SET_PERIOD");?>"></td>
  372. </tr>
  373. </table>
  374. </td></tr></table>
  375. </div>
  376. </form>
  377. <?endif?>
  378. <?require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");