/gadgets/bitrix/bitrixcloud_monitoring/index.php

https://gitlab.com/alexprowars/bitrix · PHP · 155 lines · 142 code · 12 blank · 1 comment · 16 complexity · 35ce2afe66727c1144ad1a9c428f970d MD5 · raw file

  1. <?
  2. if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
  3. $APPLICATION->SetAdditionalCSS('/bitrix/gadgets/bitrix/bitrixcloud_monitoring/styles.css');
  4. $converter = CBXPunycode::GetConverter();
  5. $saleIncluded = CModule::IncludeModule('sale');
  6. $intervalLang = array(
  7. "sale" => array(
  8. 7 => GetMessage("GD_BITRIXCLOUD_MONITOR_MESS_ALERT1_WEEK"),
  9. 30 => GetMessage("GD_BITRIXCLOUD_MONITOR_MESS_ALERT1_MONTH"),
  10. 90 => GetMessage("GD_BITRIXCLOUD_MONITOR_MESS_ALERT1_QUARTER"),
  11. 365 => GetMessage("GD_BITRIXCLOUD_MONITOR_MESS_ALERT1_YEAR"),
  12. ),
  13. "uptime" => array(
  14. 7 => GetMessage("GD_BITRIXCLOUD_MONITOR_MESS_ALERT2_WEEK"),
  15. 30 => GetMessage("GD_BITRIXCLOUD_MONITOR_MESS_ALERT2_MONTH"),
  16. 90 => GetMessage("GD_BITRIXCLOUD_MONITOR_MESS_ALERT2_QUARTER"),
  17. 365 => GetMessage("GD_BITRIXCLOUD_MONITOR_MESS_ALERT2_YEAR"),
  18. ),
  19. );
  20. $uptime = "";
  21. $testCount = 0;
  22. /** @var CBitrixCloudMonitoringTest $testAlert */
  23. $testAlert = null;
  24. $testDomain = "";
  25. $bAlert = false;
  26. if (CModule::IncludeModule('bitrixcloud'))
  27. {
  28. $monitoring = CBitrixCloudMonitoring::getInstance();
  29. $monitoringResults = $monitoring->getMonitoringResults();
  30. if (!is_string($monitoringResults))
  31. {
  32. if ($monitoringResults->getStatus() === CBitrixCloudMonitoringResult::RED_LAMP)
  33. {
  34. $bAlert = true;
  35. foreach ($monitoringResults as $domainName => $domainResult)
  36. {
  37. foreach ($domainResult as $testId => $testResult)
  38. {
  39. if ($testResult->getStatus() === CBitrixCloudMonitoringResult::RED_LAMP)
  40. {
  41. $testCount++;
  42. $testAlert = $testResult;
  43. $testDomain = $domainName;
  44. }
  45. }
  46. }
  47. $uptime = $monitoring->getWorstUptime("test_http_response_time");
  48. }
  49. }
  50. }
  51. $sum = 0;
  52. $sumHtml = "";
  53. $alertIntervalText = "";
  54. $uptimeRate = 1;
  55. if ($bAlert)
  56. {
  57. if ($uptime !== "")
  58. {
  59. $uptime = explode("/", $uptime);
  60. if ($uptime[0] > 0 && $uptime[1] > 0)
  61. $uptimeRate = $uptime[0]/$uptime[1];
  62. }
  63. if ($uptimeRate < 1 && $saleIncluded)
  64. {
  65. $base = CCurrency::GetBaseCurrency();
  66. $r = CSaleOrder::GetList(array(), array(
  67. ">=DATE_INSERT" => ConvertTimeStamp(time() - $monitoring->getInterval()*24*3400, "SHORT"),
  68. ), array("LID", "CURRENCY", "SUM" => "PRICE"));
  69. while ($a = $r->fetch())
  70. $sum += CCurrencyRates::ConvertCurrency($a["PRICE"], $a["CURRENCY"], $base);
  71. $sum *= (1 - $uptimeRate);
  72. if ($sum <= 0.0)
  73. {
  74. $sumHtml = number_format((1 - $uptimeRate)*100, 2, '.', ' ')."%";
  75. $alertIntervalText = $intervalLang["uptime"][$monitoring->getInterval()];
  76. }
  77. else
  78. {
  79. $sumHtml = CurrencyFormat($sum, $base);
  80. $alertIntervalText = $intervalLang["sale"][$monitoring->getInterval()];
  81. }
  82. }
  83. elseif ($testCount === 1 && HasMessage("GD_BITRIXCLOUD_MONITOR_".mb_strtoupper($testAlert->getName())))
  84. {
  85. $uptimeRate = 1;
  86. $resultText = FormatDate("ddiff", time(), $testAlert->getResult());
  87. $sumHtml = GetMessage("GD_BITRIXCLOUD_MONITOR_".mb_strtoupper($testAlert->getName()), array(
  88. "#DOMAIN#" => $converter->Decode($testDomain),
  89. "#DAYS#" => $resultText,
  90. ));
  91. }
  92. elseif ($uptimeRate < 1)
  93. {
  94. $sumHtml = number_format((1 - $uptimeRate)*100, 2, '.', ' ')."%";
  95. $alertIntervalText = $intervalLang["uptime"][$monitoring->getInterval()];
  96. }
  97. else
  98. {
  99. $sumHtml = GetMessage("GD_BITRIXCLOUD_MONITOR_PROBLEMS", array(
  100. "#COUNT#" => $testCount,
  101. ));
  102. }
  103. }
  104. ?>
  105. <div class="bx-gadgets-content-layout-inspector">
  106. <div class="bx-gadgets-title"><?echo GetMessage("GD_BITRIXCLOUD_MONITOR")?></div>
  107. <div class="bx-gadget-bottom-cont bx-gadget-bottom-button-cont bx-gadget-mark-cont">
  108. <?
  109. if ($uptimeRate < 1)
  110. {
  111. ?>
  112. <a class="bx-gadget-button" href="/bitrix/admin/bitrixcloud_monitoring_admin.php?lang=<?echo LANGUAGE_ID?>&amp;referer=gadget">
  113. <div class="bx-gadget-button-lamp"></div>
  114. <div class="bx-gadget-button-text"><?echo GetMessage("GD_BITRIXCLOUD_MONITOR_BTN_ALERT")?></div>
  115. </a>
  116. <div class="bx-gadget-mark"><?echo $sumHtml?></div>
  117. <div class="bx-gadget-desc bx-gadget-desc-wmark"><?echo $alertIntervalText;?></div>
  118. <?
  119. }
  120. elseif ($bAlert)
  121. {
  122. ?>
  123. <a class="bx-gadget-button" href="/bitrix/admin/bitrixcloud_monitoring_admin.php?lang=<?echo LANGUAGE_ID?>&amp;referer=gadget">
  124. <div class="bx-gadget-button-lamp"></div>
  125. <div class="bx-gadget-button-text"><?echo GetMessage("GD_BITRIXCLOUD_MONITOR_BTN_OK")?></div>
  126. </a>
  127. <div class="bx-gadget-desc bx-gadget-desc-wmark"><?echo $sumHtml;?></div>
  128. <?
  129. }
  130. else
  131. {
  132. ?>
  133. <a class="bx-gadget-button" href="/bitrix/admin/bitrixcloud_monitoring_admin.php?lang=<?echo LANGUAGE_ID?>&amp;referer=gadget">
  134. <div class="bx-gadget-button-lamp"></div>
  135. <div class="bx-gadget-button-text"><?echo GetMessage("GD_BITRIXCLOUD_MONITOR_BTN_OK")?></div>
  136. </a>
  137. <div class="bx-gadget-mark"><?echo GetMessage("GD_BITRIXCLOUD_MONITOR_MESS_OK")?></div>
  138. <?
  139. }
  140. ?>
  141. </div>
  142. </div>
  143. <div class="bx-gadget-shield"></div>