PageRenderTime 27ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/perfmon/options.php

https://gitlab.com/alexprowars/bitrix
PHP | 352 lines | 338 code | 14 blank | 0 comment | 54 complexity | 1be8bda1c04e41acf28c6b620c6db8fe MD5 | raw file
  1. <?
  2. use Bitrix\Main;
  3. $module_id = "perfmon";
  4. $RIGHT = $APPLICATION->GetGroupRight($module_id);
  5. if ($RIGHT >= "R") :
  6. IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/options.php");
  7. IncludeModuleLangFile(__FILE__);
  8. $arAllOptions = array(
  9. array("max_display_url", GetMessage("PERFMON_OPTIONS_MAX_DISPLAY_URL"), array("text", 6)),
  10. array("warning_log", GetMessage("PERFMON_OPTIONS_WARNING_LOG"), array("checkbox")),
  11. array("cache_log", GetMessage("PERFMON_OPTIONS_CACHE_LOG"), array("checkbox")),
  12. array("large_cache_log", GetMessage("PERFMON_OPTIONS_LARGE_CACHE_LOG"), array("checkbox"), GetMessage("PERFMON_OPTIONS_LARGE_CACHE_NOTE")),
  13. array("large_cache_size", GetMessage("PERFMON_OPTIONS_LARGE_CACHE_SIZE"), array("text", 6)),
  14. array("sql_log", GetMessage("PERFMON_OPTIONS_SQL_LOG"), array("checkbox")),
  15. array("sql_backtrace", GetMessage("PERFMON_OPTIONS_SQL_BACKTRACE"), array("checkbox")),
  16. array("slow_sql_log", GetMessage("PERFMON_OPTIONS_SLOW_SQL_LOG"), array("checkbox"), GetMessage("PERFMON_OPTIONS_SLOW_SQL_NOTE")),
  17. array("slow_sql_time", GetMessage("PERFMON_OPTIONS_SLOW_SQL_TIME"), array("text", 6)),
  18. );
  19. $ormOptions = array(
  20. array("enable_tablet_generator", GetMessage("PERFMON_OPTIONS_ENABLE_TABLET_GENERATOR"), array("checkbox")),
  21. GetMessage("PERFMON_OPTIONS_SECTION_GENERATOR_SETTINGS"),
  22. array("tablet_short_aliases", GetMessage("PERFMON_OPTIONS_TABLET_SHORT_ALIASES"), array("checkbox")),
  23. array("tablet_object_settings", GetMessage("PERFMON_OPTIONS_TABLET_OBJECT_SETTINGS"), array("checkbox")),
  24. array("tablet_use_map_index", GetMessage("PERFMON_OPTIONS_TABLET_USE_MAP_INDEX"), array("checkbox"))
  25. );
  26. $aTabs = array(
  27. array("DIV" => "edit1", "TAB" => GetMessage("MAIN_TAB_SET"), "ICON" => "perfmon_settings", "TITLE" => GetMessage("MAIN_TAB_TITLE_SET")),
  28. array("DIV" => "edit3", "TAB" => GetMessage("PERFMON_TAB_ORM"), "ICON" => "perfmon_settings", "TITLE" => GetMessage("PERFMON_TAB_TITLE_ORM")),
  29. array("DIV" => "edit2", "TAB" => GetMessage("MAIN_TAB_RIGHTS"), "ICON" => "perfmon_settings", "TITLE" => GetMessage("MAIN_TAB_TITLE_RIGHTS")),
  30. );
  31. $tabControl = new CAdminTabControl("tabControl", $aTabs);
  32. CModule::IncludeModule($module_id);
  33. if ($_SERVER['REQUEST_METHOD'] == "POST" && $Update.$Apply.$RestoreDefaults <> '' && $RIGHT >= "W" && check_bitrix_sessid())
  34. {
  35. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/perfmon/prolog.php");
  36. if ($_REQUEST["clear_data"] === "y")
  37. {
  38. CPerfomanceComponent::Clear();
  39. CPerfomanceSQL::Clear();
  40. CPerfomanceHit::Clear();
  41. CPerfomanceError::Clear();
  42. CPerfomanceCache::Clear();
  43. }
  44. if (array_key_exists("ACTIVE", $_REQUEST))
  45. {
  46. $ACTIVE = intval($_REQUEST["ACTIVE"]);
  47. CPerfomanceKeeper::SetActive($ACTIVE > 0, time() + $ACTIVE);
  48. }
  49. if ($RestoreDefaults <> '')
  50. {
  51. COption::RemoveOption("perfmon");
  52. }
  53. else
  54. {
  55. foreach ($arAllOptions as $arOption)
  56. {
  57. $name = $arOption[0];
  58. $val = $_REQUEST[$name];
  59. if ($arOption[2][0] == "checkbox" && $val != "Y")
  60. $val = "N";
  61. COption::SetOptionString("perfmon", $name, $val, $arOption[1]);
  62. }
  63. foreach ($ormOptions as $option)
  64. {
  65. $name = $option[0];
  66. if (!isset($_REQUEST[$name]))
  67. continue;
  68. $value = $_REQUEST[$name];
  69. if ($option[2][0] == "checkbox")
  70. {
  71. if ($value !== 'N' && $value !== 'Y')
  72. continue;
  73. }
  74. Main\Config\Option::set("perfmon", $name, $value, '');
  75. }
  76. unset($option);
  77. }
  78. ob_start();
  79. $Update = $Update.$Apply;
  80. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/admin/group_rights.php");
  81. ob_end_clean();
  82. if ($_REQUEST["back_url_settings"] <> '')
  83. {
  84. if (($Apply <> '') || ($RestoreDefaults <> ''))
  85. LocalRedirect($APPLICATION->GetCurPage()."?mid=".urlencode($module_id)."&lang=".urlencode(LANGUAGE_ID)."&back_url_settings=".urlencode($_REQUEST["back_url_settings"])."&".$tabControl->ActiveTabParam());
  86. else
  87. LocalRedirect($_REQUEST["back_url_settings"]);
  88. }
  89. else
  90. {
  91. LocalRedirect($APPLICATION->GetCurPage()."?mid=".urlencode($module_id)."&lang=".urlencode(LANGUAGE_ID)."&".$tabControl->ActiveTabParam());
  92. }
  93. }
  94. ?>
  95. <form method="post" action="<? echo $APPLICATION->GetCurPage() ?>?mid=<?=urlencode($module_id)?>&amp;lang=<?=LANGUAGE_ID?>">
  96. <?
  97. $tabControl->Begin();
  98. $tabControl->BeginNextTab();
  99. $arNotes = array();
  100. foreach ($arAllOptions as $arOption):
  101. $val = COption::GetOptionString("perfmon", $arOption[0]);
  102. $type = $arOption[2];
  103. if (isset($arOption[3]))
  104. $arNotes[] = $arOption[3];
  105. ?>
  106. <tr>
  107. <td width="40%" nowrap <? if ($type[0] == "textarea")
  108. echo 'class="adm-detail-valign-top"' ?>>
  109. <? if (isset($arOption[3])): ?>
  110. <span class="required"><sup><? echo count($arNotes) ?></sup></span>
  111. <? endif; ?>
  112. <label for="<? echo htmlspecialcharsbx($arOption[0]) ?>"><? echo $arOption[1] ?>
  113. :</label>
  114. </td>
  115. <td width="60%">
  116. <? if ($type[0] == "checkbox"): ?>
  117. <input
  118. type="checkbox"
  119. name="<? echo htmlspecialcharsbx($arOption[0]) ?>"
  120. id="<? echo htmlspecialcharsbx($arOption[0]) ?>"
  121. value="Y"<? if ($val == "Y") echo " checked"; ?>>
  122. <? elseif ($type[0] == "text"): ?>
  123. <input
  124. type="text"
  125. size="<? echo $type[1] ?>"
  126. maxlength="255"
  127. value="<? echo htmlspecialcharsbx($val) ?>"
  128. name="<? echo htmlspecialcharsbx($arOption[0]) ?>"
  129. id="<? echo htmlspecialcharsbx($arOption[0]) ?>">
  130. <? if ($arOption[0] == "slow_sql_time")
  131. echo GetMessage("PERFMON_OPTIONS_SLOW_SQL_TIME_SEC") ?>
  132. <? if ($arOption[0] == "large_cache_size")
  133. echo GetMessage("PERFMON_OPTIONS_LARGE_CACHE_SIZE_KB") ?>
  134. <?
  135. elseif ($type[0] == "textarea"): ?>
  136. <textarea
  137. rows="<? echo $type[1] ?>"
  138. cols="<? echo $type[2] ?>"
  139. name="<? echo htmlspecialcharsbx($arOption[0]) ?>"
  140. id="<? echo htmlspecialcharsbx($arOption[0]) ?>"
  141. ><? echo htmlspecialcharsbx($val) ?></textarea>
  142. <?endif ?>
  143. </td>
  144. </tr>
  145. <? endforeach ?>
  146. <? $ACTIVE = CPerfomanceKeeper::IsActive(); ?>
  147. <tr>
  148. <td valign="top" width="50%">
  149. <? echo GetMessage("PERFMON_OPT_ACTIVE") ?>:
  150. </td>
  151. <td valign="middle" width="50%">
  152. <? if ($ACTIVE): ?>
  153. <? echo GetMessage("PERFMON_OPT_ACTIVE_Y") ?>
  154. <? else: ?>
  155. <? echo GetMessage("PERFMON_OPT_ACTIVE_N") ?>
  156. <? endif; ?>
  157. </td>
  158. </tr>
  159. <? if ($ACTIVE): ?>
  160. <tr>
  161. <td valign="top" width="50%">
  162. <? echo GetMessage("PERFMON_OPT_ACTIVE_TO") ?>:
  163. </td>
  164. <td valign="top" width="50%">
  165. <?
  166. $interval = max(0, COption::GetOptionInt("perfmon", "end_time") - time());
  167. $hours = sprintf("%02d", intval($interval / 3600));
  168. $interval -= $hours * 3600;
  169. $minutes = sprintf("%02d", intval($interval / 60));
  170. $interval -= $minutes * 60;
  171. $seconds = sprintf("%02d", intval($interval));
  172. echo GetMessage("PERFMON_OPT_MINUTES", array("#HOURS#" => $hours, "#MINUTES#" => $minutes, "#SECONDS#" => $seconds));
  173. ?>
  174. </td>
  175. </tr>
  176. <tr>
  177. <td valign="top" width="50%">
  178. <label for="ACTIVE"><? echo GetMessage("PERFMON_OPT_SET_IN_ACTIVE") ?></label>:
  179. </td>
  180. <td valign="top" width="50%">
  181. <input type="checkbox" name="ACTIVE" value="0" id="ACTIVE_CKBOX">
  182. </td>
  183. </tr>
  184. <? else: ?>
  185. <tr>
  186. <td valign="top" width="50%">
  187. <? echo GetMessage("PERFMON_OPT_SET_ACTIVE") ?>:
  188. </td>
  189. <td valign="top" width="50%">
  190. <select name="ACTIVE" id="ACTIVE_LIST">
  191. <option value="0"><? echo GetMessage("PERFMON_OPT_INTERVAL_NO") ?></option>
  192. <option value="60"><? echo GetMessage("PERFMON_OPT_INTERVAL_60_SEC") ?></option>
  193. <option value="300"><? echo GetMessage("PERFMON_OPT_INTERVAL_300_SEC") ?></option>
  194. <option value="600"><? echo GetMessage("PERFMON_OPT_INTERVAL_600_SEC") ?></option>
  195. <option value="1800"><? echo GetMessage("PERFMON_OPT_INTERVAL_1800_SEC") ?></option>
  196. <option value="3600"><? echo GetMessage("PERFMON_OPT_INTERVAL_3600_SEC") ?></option>
  197. </select>
  198. </td>
  199. </tr>
  200. <tr>
  201. <td valign="top" width="50%">
  202. <label for="clear_data"><? echo GetMessage("PERFMON_OPT_CLEAR_DATA") ?></label>
  203. </td>
  204. <td valign="top" width="50%">
  205. <input type="checkbox" name="clear_data" id="clear_data" value="y">
  206. </td>
  207. </tr>
  208. <?endif;
  209. $tabControl->BeginNextTab();
  210. foreach ($ormOptions as $option)
  211. {
  212. if (is_string($option))
  213. {
  214. ?>
  215. <tr class="heading"><td colspan="2"><?=htmlspecialcharsbx($option); ?></td></tr>
  216. <?
  217. continue;
  218. }
  219. $value = Main\Config\Option::get("perfmon", $option[0]);
  220. $type = $option[2];
  221. $name = htmlspecialcharsbx($option[0]);
  222. ?>
  223. <tr>
  224. <td style="width: 40%; white-space: nowrap" <? if ($type[0] == "textarea")
  225. echo 'class="adm-detail-valign-top"' ?>>
  226. <label for="<? echo htmlspecialcharsbx($option[0]) ?>"><? echo $option[1] ?></label>
  227. </td>
  228. <td style="width: 60%;"><?
  229. switch ($type[0])
  230. {
  231. case 'checkbox':
  232. ?>
  233. <input type="hidden" name="<?=$name; ?>" value="N">
  234. <input type="checkbox" name="<?=$name; ?>" id="<?=$name; ?>" value="Y"<?=($value == "Y" ? ' checked' : ''); ?>>
  235. <?
  236. break;
  237. case 'text':
  238. ?>
  239. <input type="text" size="<?=$type[1]; ?>" maxlength="255" value="<?=htmlspecialcharsbx($value); ?>"
  240. name="<?=$name; ?>" id="<?=$name; ?>">
  241. <?
  242. break;
  243. case 'textarea':
  244. ?>
  245. <textarea rows="<?=$type[1]; ?>" cols="<?=$type[2]; ?>"
  246. name="<?=$name; ?>" id="<?=$name; ?>"
  247. ><? echo htmlspecialcharsbx($val) ?></textarea>
  248. <?
  249. break;
  250. }
  251. ?>
  252. </td>
  253. </tr><?
  254. }
  255. $tabControl->BeginNextTab();
  256. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/admin/group_rights.php");
  257. $tabControl->Buttons(); ?>
  258. <input <? if ($RIGHT < "W")
  259. echo "disabled" ?> type="submit" name="Update" value="<?=GetMessage("MAIN_SAVE")?>"
  260. title="<?=GetMessage("MAIN_OPT_SAVE_TITLE")?>" class="adm-btn-save">
  261. <input <? if ($RIGHT < "W")
  262. echo "disabled" ?> type="submit" name="Apply" value="<?=GetMessage("MAIN_OPT_APPLY")?>"
  263. title="<?=GetMessage("MAIN_OPT_APPLY_TITLE")?>">
  264. <? if ($_REQUEST["back_url_settings"] <> ''): ?>
  265. <input
  266. <? if ($RIGHT < "W") echo "disabled" ?>
  267. type="button"
  268. name="Cancel"
  269. value="<?=GetMessage("MAIN_OPT_CANCEL")?>"
  270. title="<?=GetMessage("MAIN_OPT_CANCEL_TITLE")?>"
  271. onclick="window.location='<? echo htmlspecialcharsbx(CUtil::addslashes($_REQUEST["back_url_settings"])) ?>'"
  272. >
  273. <input
  274. type="hidden"
  275. name="back_url_settings"
  276. value="<?=htmlspecialcharsbx($_REQUEST["back_url_settings"])?>"
  277. >
  278. <? endif ?>
  279. <input
  280. type="submit"
  281. name="RestoreDefaults"
  282. title="<? echo GetMessage("MAIN_HINT_RESTORE_DEFAULTS") ?>"
  283. onclick="return confirm('<? echo AddSlashes(GetMessage("MAIN_HINT_RESTORE_DEFAULTS_WARNING")) ?>')"
  284. value="<? echo GetMessage("MAIN_RESTORE_DEFAULTS") ?>"
  285. >
  286. <?=bitrix_sessid_post();?>
  287. <? $tabControl->End(); ?>
  288. </form>
  289. <script>
  290. function slow_sql_log_check()
  291. {
  292. var activeCheckbox = BX('ACTIVE_LIST');
  293. if (activeCheckbox)
  294. {
  295. jsSelectUtils.deleteAllOptions(activeCheckbox);
  296. jsSelectUtils.addNewOption(activeCheckbox, '0', '<?echo GetMessageJS("PERFMON_OPT_INTERVAL_NO")?>');
  297. if (
  298. (!BX('sql_log').checked || BX('sql_log').checked && BX('slow_sql_log').checked)
  299. && (!BX('cache_log').checked || BX('cache_log').checked && BX('large_cache_log').checked)
  300. )
  301. {
  302. jsSelectUtils.addNewOption(activeCheckbox, '3600', '<?echo GetMessageJS("PERFMON_OPT_INTERVAL_3600_SEC")?>');
  303. jsSelectUtils.addNewOption(activeCheckbox, '14400', '<?echo GetMessageJS("PERFMON_OPT_INTERVAL_4_HOURS")?>');
  304. jsSelectUtils.addNewOption(activeCheckbox, '28800', '<?echo GetMessageJS("PERFMON_OPT_INTERVAL_8_HOURS")?>');
  305. jsSelectUtils.addNewOption(activeCheckbox, '86400', '<?echo GetMessageJS("PERFMON_OPT_INTERVAL_24_HOURS")?>');
  306. jsSelectUtils.addNewOption(activeCheckbox, '604800', '<?echo GetMessageJS("PERFMON_OPT_INTERVAL_7_DAYS")?>');
  307. }
  308. else
  309. {
  310. jsSelectUtils.addNewOption(activeCheckbox, '60', '<?echo GetMessageJS("PERFMON_OPT_INTERVAL_60_SEC")?>');
  311. jsSelectUtils.addNewOption(activeCheckbox, '300', '<?echo GetMessageJS("PERFMON_OPT_INTERVAL_300_SEC")?>');
  312. jsSelectUtils.addNewOption(activeCheckbox, '600', '<?echo GetMessageJS("PERFMON_OPT_INTERVAL_600_SEC")?>');
  313. jsSelectUtils.addNewOption(activeCheckbox, '1800', '<?echo GetMessageJS("PERFMON_OPT_INTERVAL_1800_SEC")?>');
  314. jsSelectUtils.addNewOption(activeCheckbox, '3600', '<?echo GetMessageJS("PERFMON_OPT_INTERVAL_3600_SEC")?>');
  315. }
  316. }
  317. }
  318. BX.ready(function ()
  319. {
  320. BX.bind(BX('sql_log'), 'click', slow_sql_log_check);
  321. BX.bind(BX('slow_sql_log'), 'click', slow_sql_log_check);
  322. BX.bind(BX('cache_log'), 'click', slow_sql_log_check);
  323. BX.bind(BX('large_cache_log'), 'click', slow_sql_log_check);
  324. slow_sql_log_check();
  325. });
  326. </script>
  327. <?
  328. if (!empty($arNotes))
  329. {
  330. echo BeginNote();
  331. foreach ($arNotes as $i => $str)
  332. {
  333. ?><span class="required"><sup><? echo $i + 1 ?></sup></span><? echo $str ?><br><?
  334. }
  335. echo EndNote();
  336. }
  337. ?>
  338. <? endif;