Current Path : /var/www/www-root/data/webdav/www/www.monolith-realty.ru/bitrix/modules/perfmon/ |
Current File : /var/www/www-root/data/webdav/www/www.monolith-realty.ru/bitrix/modules/perfmon/options.php |
<?php use Bitrix\Main; use Bitrix\Main\Config\Option; use Bitrix\Main\Loader; /** @var CMain $APPLICATION */ /** @var \Bitrix\Main\HttpRequest $request */ $request = Main\Context::getCurrent()->getRequest(); $backUrl = trim((string)$request->get('back_url_settings')); $module_id = 'perfmon'; $RIGHT = CMain::GetGroupRight($module_id); if ($RIGHT >= 'R') : IncludeModuleLangFile($_SERVER['DOCUMENT_ROOT'] . BX_ROOT . '/modules/main/options.php'); IncludeModuleLangFile(__FILE__); $arAllOptions = [ ['max_display_url', GetMessage('PERFMON_OPTIONS_MAX_DISPLAY_URL'), ['text', 6]], ['warning_log', GetMessage('PERFMON_OPTIONS_WARNING_LOG'), ['checkbox']], ['cache_log', GetMessage('PERFMON_OPTIONS_CACHE_LOG'), ['checkbox']], ['large_cache_log', GetMessage('PERFMON_OPTIONS_LARGE_CACHE_LOG'), ['checkbox'], GetMessage('PERFMON_OPTIONS_LARGE_CACHE_NOTE')], ['large_cache_size', GetMessage('PERFMON_OPTIONS_LARGE_CACHE_SIZE'), ['text', 6]], ['sql_log', GetMessage('PERFMON_OPTIONS_SQL_LOG'), ['checkbox']], ['sql_backtrace', GetMessage('PERFMON_OPTIONS_SQL_BACKTRACE'), ['checkbox']], ['slow_sql_log', GetMessage('PERFMON_OPTIONS_SLOW_SQL_LOG'), ['checkbox'], GetMessage('PERFMON_OPTIONS_SLOW_SQL_NOTE')], ['slow_sql_time', GetMessage('PERFMON_OPTIONS_SLOW_SQL_TIME'), ['text', 6]], ]; $ormOptions = [ [ 'enable_tablet_generator', GetMessage('PERFMON_OPTIONS_ENABLE_TABLET_GENERATOR'), [ 'checkbox', ], ], GetMessage('PERFMON_OPTIONS_SECTION_GENERATOR_SETTINGS'), [ 'tablet_short_aliases', GetMessage('PERFMON_OPTIONS_TABLET_SHORT_ALIASES'), [ 'checkbox', ], ], [ 'tablet_object_settings', GetMessage('PERFMON_OPTIONS_TABLET_OBJECT_SETTINGS'), [ 'checkbox', ], ], [ 'tablet_use_map_index', GetMessage('PERFMON_OPTIONS_TABLET_USE_MAP_INDEX'), [ 'checkbox', ], ], [ 'tablet_validation_closure', GetMessage('PERFMON_OPTIONS_TABLET_VALIDATION_CLOSURE'), [ 'checkbox', ], ], ]; $aTabs = [ ['DIV' => 'edit1', 'TAB' => GetMessage('MAIN_TAB_SET'), 'ICON' => 'perfmon_settings', 'TITLE' => GetMessage('MAIN_TAB_TITLE_SET')], ['DIV' => 'edit3', 'TAB' => GetMessage('PERFMON_TAB_ORM'), 'ICON' => 'perfmon_settings', 'TITLE' => GetMessage('PERFMON_TAB_TITLE_ORM')], ['DIV' => 'edit2', 'TAB' => GetMessage('MAIN_TAB_RIGHTS'), 'ICON' => 'perfmon_settings', 'TITLE' => GetMessage('MAIN_TAB_TITLE_RIGHTS')], ]; $tabControl = new CAdminTabControl('tabControl', $aTabs); Loader::includeModule($module_id); $action = null; if ($request->getPost('RestoreDefaults') !== null) { $action = 'clear'; } elseif ($request->getPost('Update') !== null) { $action = 'save'; } elseif ($request->getPost('Apply')) { $action = 'apply'; } $actionClear = ($action === 'clear'); $actionSave = ($action === 'save'); $actionApply = ($action === 'apply'); if ($request->isPost() && $action !== null && $RIGHT >= 'W' && check_bitrix_sessid()) { require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/perfmon/prolog.php'; if ($request->getPost('clear_data') === 'y') { CPerfomanceComponent::Clear(); CPerfomanceSQL::Clear(); CPerfomanceHit::Clear(); CPerfomanceError::Clear(); CPerfomanceCache::Clear(); } $active = $request->getPost('ACTIVE'); if ($active !== null) { $active = (int)$active; CPerfomanceKeeper::SetActive($active > 0, time() + $active); } if ($actionClear) { Option::delete('perfmon', []); } else { foreach ($arAllOptions as $arOption) { $name = $arOption[0]; $val = $request->getPost($name); if ($arOption[2][0] == 'checkbox' && $val !== 'Y') { $val = 'N'; } Option::set('perfmon', $name, $val, ''); } foreach ($ormOptions as $option) { $name = $option[0]; $value = $request->getPost($name); if ($value === null) { continue; } if ($option[2][0] == 'checkbox') { if ($value !== 'N' && $value !== 'Y') { continue; } } Option::set('perfmon', $name, $value, ''); } unset($option); } ob_start(); $Update = $actionSave . $actionApply; require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/admin/group_rights.php'; ob_end_clean(); if ($backUrl !== '') { if ($actionApply || $actionClear) { LocalRedirect($APPLICATION->GetCurPage() . '?mid=' . urlencode($module_id) . '&lang=' . urlencode(LANGUAGE_ID) . '&back_url_settings=' . urlencode($backUrl) . '&' . $tabControl->ActiveTabParam() ); } else { LocalRedirect($_REQUEST['back_url_settings']); } } else { LocalRedirect( $APPLICATION->GetCurPage() . '?mid=' . urlencode($module_id) . '&lang=' . urlencode(LANGUAGE_ID) . '&' . $tabControl->ActiveTabParam() ); } } ?> <form method="post" action="<?= $APPLICATION->GetCurPage() ?>?mid=<?= urlencode($module_id)?>&lang=<?= LANGUAGE_ID?>"> <?php $tabControl->Begin(); $tabControl->BeginNextTab(); $arNotes = []; foreach ($arAllOptions as $arOption): $val = Option::get('perfmon', $arOption[0]); $type = $arOption[2]; if (isset($arOption[3])) { $arNotes[] = $arOption[3]; } ?> <tr> <td width="40%" nowrap <?= ($type[0] === 'textarea' ? 'class="adm-detail-valign-top"' : ''); ?>> <?php if (isset($arOption[3])): ?> <span class="required"><sup><?= count($arNotes); ?></sup></span> <?php endif; ?> <label for="<?php echo htmlspecialcharsbx($arOption[0]) ?>"><?= $arOption[1] ?>:</label> </td> <td width="60%"> <?php if ($type[0] == 'checkbox'): ?> <input type="checkbox" name="<?php echo htmlspecialcharsbx($arOption[0]) ?>" id="<?php echo htmlspecialcharsbx($arOption[0]) ?>" value="Y"<?php echo $val === 'Y' ? ' checked' : '';?>> <?php elseif ($type[0] == 'text'): ?> <input type="text" size="<?php echo $type[1] ?>" maxlength="255" value="<?php echo htmlspecialcharsbx($val) ?>" name="<?php echo htmlspecialcharsbx($arOption[0]) ?>" id="<?php echo htmlspecialcharsbx($arOption[0]) ?>"> <?php if ($arOption[0] == 'slow_sql_time') { echo GetMessage('PERFMON_OPTIONS_SLOW_SQL_TIME_SEC'); } ?> <?php if ($arOption[0] == 'large_cache_size') { echo GetMessage('PERFMON_OPTIONS_LARGE_CACHE_SIZE_KB'); } ?> <?php elseif ($type[0] == 'textarea'): ?> <textarea rows="<?php echo $type[1] ?>" cols="<?php echo $type[2] ?>" name="<?php echo htmlspecialcharsbx($arOption[0]) ?>" id="<?php echo htmlspecialcharsbx($arOption[0]) ?>" ><?php echo htmlspecialcharsbx($val) ?></textarea> <?php endif ?> </td> </tr> <?php endforeach ?> <?php $ACTIVE = CPerfomanceKeeper::IsActive(); ?> <tr> <td valign="top" width="50%"> <?php echo GetMessage('PERFMON_OPT_ACTIVE') ?>: </td> <td valign="middle" width="50%"> <?php if ($ACTIVE): ?> <?php echo GetMessage('PERFMON_OPT_ACTIVE_Y') ?> <?php else: ?> <?php echo GetMessage('PERFMON_OPT_ACTIVE_N') ?> <?php endif; ?> </td> </tr> <?php if ($ACTIVE): ?> <tr> <td valign="top" width="50%"> <?php echo GetMessage('PERFMON_OPT_ACTIVE_TO') ?>: </td> <td valign="top" width="50%"> <?php $interval = max(0, COption::GetOptionInt('perfmon', 'end_time') - time()); $hours = sprintf('%02d', intval($interval / 3600)); $interval -= $hours * 3600; $minutes = sprintf('%02d', intval($interval / 60)); $interval -= $minutes * 60; $seconds = sprintf('%02d', intval($interval)); echo GetMessage('PERFMON_OPT_MINUTES', ['#HOURS#' => $hours, '#MINUTES#' => $minutes, '#SECONDS#' => $seconds]); ?> </td> </tr> <tr> <td valign="top" width="50%"> <label for="ACTIVE"><?php echo GetMessage('PERFMON_OPT_SET_IN_ACTIVE') ?></label>: </td> <td valign="top" width="50%"> <input type="checkbox" name="ACTIVE" value="0" id="ACTIVE_CKBOX"> </td> </tr> <?php else: ?> <tr> <td valign="top" width="50%"> <?php echo GetMessage('PERFMON_OPT_SET_ACTIVE') ?>: </td> <td valign="top" width="50%"> <select name="ACTIVE" id="ACTIVE_LIST"> <option value="0"><?php echo GetMessage('PERFMON_OPT_INTERVAL_NO') ?></option> <option value="60"><?php echo GetMessage('PERFMON_OPT_INTERVAL_60_SEC') ?></option> <option value="300"><?php echo GetMessage('PERFMON_OPT_INTERVAL_300_SEC') ?></option> <option value="600"><?php echo GetMessage('PERFMON_OPT_INTERVAL_600_SEC') ?></option> <option value="1800"><?php echo GetMessage('PERFMON_OPT_INTERVAL_1800_SEC') ?></option> <option value="3600"><?php echo GetMessage('PERFMON_OPT_INTERVAL_3600_SEC') ?></option> </select> </td> </tr> <tr> <td valign="top" width="50%"> <label for="clear_data"><?php echo GetMessage('PERFMON_OPT_CLEAR_DATA') ?></label> </td> <td valign="top" width="50%"> <input type="checkbox" name="clear_data" id="clear_data" value="y"> </td> </tr> <?php endif; $tabControl->BeginNextTab(); foreach ($ormOptions as $option) { if (is_string($option)) { ?> <tr class="heading"><td colspan="2"><?=htmlspecialcharsbx($option); ?></td></tr> <?php continue; } $value = Main\Config\Option::get('perfmon', $option[0]); $type = $option[2]; $name = htmlspecialcharsbx($option[0]); ?> <tr> <td style="width: 40%; white-space: nowrap" <?php echo $type[0] == 'textarea' ? 'class="adm-detail-valign-top"' : '';?>> <label for="<?php echo htmlspecialcharsbx($option[0]) ?>"><?php echo $option[1] ?></label> </td> <td style="width: 60%;"><?php switch ($type[0]) { case 'checkbox': ?> <input type="hidden" name="<?=$name; ?>" value="N"> <input type="checkbox" name="<?=$name; ?>" id="<?=$name; ?>" value="Y"<?=($value === 'Y' ? ' checked' : ''); ?>> <?php break; case 'text': ?> <input type="text" size="<?=$type[1]; ?>" maxlength="255" value="<?=htmlspecialcharsbx($value); ?>" name="<?=$name; ?>" id="<?=$name; ?>"> <?php break; case 'textarea': ?> <textarea rows="<?=$type[1]; ?>" cols="<?=$type[2]; ?>" name="<?=$name; ?>" id="<?=$name; ?>"><?php echo htmlspecialcharsbx($val ?? '') ?></textarea> <?php break; } ?> </td> </tr><?php } $tabControl->BeginNextTab(); require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/admin/group_rights.php'; $tabControl->Buttons(); ?> <input <?php echo $RIGHT < 'W' ? 'disabled' : '';?> type="submit" name="Update" value="<?=GetMessage('MAIN_SAVE')?>" title="<?=GetMessage('MAIN_OPT_SAVE_TITLE')?>" class="adm-btn-save"> <input <?php echo $RIGHT < 'W' ? 'disabled' : '';?> type="submit" name="Apply" value="<?=GetMessage('MAIN_OPT_APPLY')?>" title="<?=GetMessage('MAIN_OPT_APPLY_TITLE')?>"> <?php if ($_REQUEST['back_url_settings'] <> ''): ?> <input <?php echo $RIGHT < 'W' ? 'disabled' : '';?> type="button" name="Cancel" value="<?=GetMessage('MAIN_OPT_CANCEL')?>" title="<?=GetMessage('MAIN_OPT_CANCEL_TITLE')?>" onclick="window.location='<?php echo htmlspecialcharsbx(CUtil::addslashes($_REQUEST['back_url_settings'])) ?>'" > <input type="hidden" name="back_url_settings" value="<?=htmlspecialcharsbx($_REQUEST['back_url_settings'])?>" > <?php endif ?> <input type="submit" name="RestoreDefaults" title="<?php echo GetMessage('MAIN_HINT_RESTORE_DEFAULTS') ?>" onclick="return confirm('<?php echo addslashes(GetMessage('MAIN_HINT_RESTORE_DEFAULTS_WARNING')) ?>')" value="<?php echo GetMessage('MAIN_RESTORE_DEFAULTS') ?>" > <?=bitrix_sessid_post();?> <?php $tabControl->End(); ?> </form> <script> function slow_sql_log_check() { var activeCheckbox = BX('ACTIVE_LIST'); if (activeCheckbox) { jsSelectUtils.deleteAllOptions(activeCheckbox); jsSelectUtils.addNewOption(activeCheckbox, '0', '<?php echo GetMessageJS('PERFMON_OPT_INTERVAL_NO')?>'); if ( (!BX('sql_log').checked || BX('sql_log').checked && BX('slow_sql_log').checked) && (!BX('cache_log').checked || BX('cache_log').checked && BX('large_cache_log').checked) ) { jsSelectUtils.addNewOption(activeCheckbox, '3600', '<?php echo GetMessageJS('PERFMON_OPT_INTERVAL_3600_SEC')?>'); jsSelectUtils.addNewOption(activeCheckbox, '14400', '<?php echo GetMessageJS('PERFMON_OPT_INTERVAL_4_HOURS')?>'); jsSelectUtils.addNewOption(activeCheckbox, '28800', '<?php echo GetMessageJS('PERFMON_OPT_INTERVAL_8_HOURS')?>'); jsSelectUtils.addNewOption(activeCheckbox, '86400', '<?php echo GetMessageJS('PERFMON_OPT_INTERVAL_24_HOURS')?>'); jsSelectUtils.addNewOption(activeCheckbox, '604800', '<?php echo GetMessageJS('PERFMON_OPT_INTERVAL_7_DAYS')?>'); } else { jsSelectUtils.addNewOption(activeCheckbox, '60', '<?php echo GetMessageJS('PERFMON_OPT_INTERVAL_60_SEC')?>'); jsSelectUtils.addNewOption(activeCheckbox, '300', '<?php echo GetMessageJS('PERFMON_OPT_INTERVAL_300_SEC')?>'); jsSelectUtils.addNewOption(activeCheckbox, '600', '<?php echo GetMessageJS('PERFMON_OPT_INTERVAL_600_SEC')?>'); jsSelectUtils.addNewOption(activeCheckbox, '1800', '<?php echo GetMessageJS('PERFMON_OPT_INTERVAL_1800_SEC')?>'); jsSelectUtils.addNewOption(activeCheckbox, '3600', '<?php echo GetMessageJS('PERFMON_OPT_INTERVAL_3600_SEC')?>'); } } } BX.ready(function () { BX.bind(BX('sql_log'), 'click', slow_sql_log_check); BX.bind(BX('slow_sql_log'), 'click', slow_sql_log_check); BX.bind(BX('cache_log'), 'click', slow_sql_log_check); BX.bind(BX('large_cache_log'), 'click', slow_sql_log_check); slow_sql_log_check(); }); </script> <?php if (!empty($arNotes)) { echo BeginNote(); foreach ($arNotes as $i => $str) { ?><span class="required"><sup><?php echo $i + 1 ?></sup></span><?php echo $str ?><br><?php } echo EndNote(); } ?> <?php endif;