/modules/statistic/admin/adv_graph_2.php

https://gitlab.com/alexprowars/bitrix · PHP · 132 lines · 93 code · 18 blank · 21 comment · 11 complexity · 9ddb2bd8b6835e00775657532d5640df MD5 · raw file

  1. <?php
  2. define("STOP_STATISTICS", true);
  3. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
  4. /** @var CMain $APPLICATION */
  5. $STAT_RIGHT = $APPLICATION->GetGroupRight("statistic");
  6. if($STAT_RIGHT=="D") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
  7. include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/statistic/colors.php");
  8. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/img.php");
  9. $width = intval($_GET["width"]);
  10. $max_width = COption::GetOptionInt("statistic", "GRAPH_WEIGHT");
  11. if($width <= 0 || $width > $max_width)
  12. $width = $max_width;
  13. $height = intval($_GET["height"]);
  14. $max_height = COption::GetOptionInt("statistic", "GRAPH_HEIGHT");
  15. if($height <= 0 || $height > $max_height)
  16. $height = $max_height;
  17. // image init
  18. $ImageHandle = CreateImageHandle($width, $height);
  19. $arrX=Array(); // X axis points
  20. $arrY=Array(); // Y axis points
  21. $arrayX=Array(); // X axis grid points
  22. $arrayY=Array(); // Y axis grid points
  23. /******************************************************
  24. Get plot data
  25. *******************************************************/
  26. $arF = array();
  27. $arF["ID"] = implode(" | ",$find_events);
  28. $arFilter = Array(
  29. "DATE1" => $find_date1,
  30. "DATE2" => $find_date2
  31. );
  32. $dynamic = CAdv::GetDynamicList($ADV_ID, "s_date", "asc", $arMaxMin, $arFilter);
  33. while ($arData = $dynamic->Fetch())
  34. {
  35. $date = mktime(0, 0, 0, $arData["MONTH"], $arData["DAY"], $arData["YEAR"]);
  36. $date_tmp = 0;
  37. $next_date = AddTime($prev_date, 1, "D");
  38. if(($date > $next_date) && (intval($prev_date) > 0))
  39. {
  40. $date_tmp = $next_date;
  41. while ($date_tmp < $date)
  42. {
  43. $arrX[] = $date_tmp;
  44. foreach($find_events as $eid)
  45. {
  46. $arrY_events[$eid][] = 0;
  47. $arrY_events_back[$eid][] = 0;
  48. }
  49. $date_tmp = AddTime($date_tmp,1,"D");
  50. }
  51. }
  52. $arrX[] = $date;
  53. $arF["DATE1_PERIOD"] = GetTime($date);
  54. $arF["DATE2_PERIOD"] = GetTime($date);
  55. $e = CAdv::GetEventList($ADV_ID, "s_def", "desc", $arF);
  56. while($er = $e->Fetch())
  57. {
  58. if ($find_show_money=="Y" && $STAT_RIGHT>"M")
  59. {
  60. $arrEvent[$er["ID"]][$date] = intval($er["MONEY_PERIOD"]);
  61. $arrEvent_back[$er["ID"]][$date] = intval($er["MONEY_BACK_PERIOD"]);
  62. }
  63. else
  64. {
  65. $arrEvent[$er["ID"]][$date] = intval($er["COUNTER_PERIOD"]);
  66. $arrEvent_back[$er["ID"]][$date] = intval($er["COUNTER_BACK_PERIOD"]);
  67. }
  68. }
  69. foreach ($find_events as $eid)
  70. {
  71. $arrY_events[$eid][] = intval($arrEvent[$eid][$date]);
  72. $arrY_events_back[$eid][] = intval($arrEvent_back[$eid][$date]);
  73. }
  74. $prev_date = $date;
  75. }
  76. /******************************************************
  77. X axis
  78. *******************************************************/
  79. $arrayX = GetArrayX($arrX, $MinX, $MaxX);
  80. /******************************************************
  81. Y axis
  82. *******************************************************/
  83. $arrY = array();
  84. reset($find_events);
  85. foreach ($find_events as $eid)
  86. {
  87. $arr = $arrY_events[$eid];
  88. foreach ($arr as $value) $arrY[] = intval($value);
  89. $arr = $arrY_events_back[$eid];
  90. foreach ($arr as $value) $arrY[] = intval($value);
  91. }
  92. $arrayY = GetArrayY($arrY, $MinY, $MaxY);
  93. //EchoGraphData($arrayX, $MinX, $MaxX, $arrayY, $MinY, $MaxY, $arrX, $arrY);
  94. /******************************************************
  95. draw grid
  96. *******************************************************/
  97. DrawCoordinatGrid($arrayX, $arrayY, $width, $height, $ImageHandle);
  98. /******************************************************
  99. plot data
  100. *******************************************************/
  101. reset($find_events);
  102. $total = sizeof($find_events);
  103. foreach ($find_events as $eid)
  104. {
  105. $arrY_dk = $arrY_events[$eid];
  106. $arrY_bc = $arrY_events_back[$eid];
  107. $color = GetNextRGB($color, $total);
  108. Graf($arrX, $arrY_dk, $ImageHandle, $MinX, $MaxX, $MinY, $MaxY, $color);
  109. Graf($arrX, $arrY_bc, $ImageHandle, $MinX, $MaxX, $MinY, $MaxY, $color, "Y");
  110. }
  111. /******************************************************
  112. send image
  113. *******************************************************/
  114. ShowImageHeader($ImageHandle);