4require_once
$_SERVER[
'DOCUMENT_ROOT'] .
'/bitrix/modules/search/prolog.php';
8require_once(
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/main/classes/general/backup.php");
17 'TAB' =>
GetMessage(
'SEARCH_OPTIONS_TAB_INDEX'),
18 'ICON' =>
'search_settings',
19 'TITLE' =>
GetMessage(
'SEARCH_OPTIONS_TAB_TITLE_INDEX_2'),
21 'max_file_size' => [
GetMessage(
'SEARCH_OPTIONS_REINDEX_MAX_SIZE'), [
'text', 6]],
22 'include_mask' => [
GetMessage(
'SEARCH_OPTIONS_MASK_INC'), [
'text', 60]],
23 'exclude_mask' => [
GetMessage(
'SEARCH_OPTIONS_MASK_EXC'), [
'textarea', 5]],
24 'page_tag_property' => [
GetMessage(
'SEARCH_OPTIONS_PAGE_PROPERTY'), [
'text',
'tags']],
29 'TAB' =>
GetMessage(
'SEARCH_OPTIONS_TAB_STEMMING'),
30 'ICON' =>
'search_settings',
31 'TITLE' =>
GetMessage(
'SEARCH_OPTIONS_TAB_TITLE_STEMMING'),
33 'use_stemming' => [
GetMessage(
'SEARCH_OPTIONS_USE_STEMMING'), [
'checkbox',
'N']],
34 'agent_stemming' => [
GetMessage(
'SEARCH_OPTIONS_AGENT_STEMMING'), [
'checkbox',
'N']],
35 'agent_duration' => [
GetMessage(
'SEARCH_OPTIONS_AGENT_DURATION'), [
'text', 6]],
36 'full_text_engine' => [
GetMessage(
'SEARCH_OPTIONS_FULL_TEXT_ENGINE'), [
'select', [
37 'bitrix' =>
GetMessage(
'SEARCH_OPTIONS_FULL_TEXT_ENGINE_BITRIX'),
38 'sphinx' =>
GetMessage(
'SEARCH_OPTIONS_FULL_TEXT_ENGINE_SPHINX'),
39 'opensearch' =>
GetMessage(
'SEARCH_OPTIONS_FULL_TEXT_ENGINE_OPENSEARCH'),
41 'letters' => [
GetMessage(
'SEARCH_OPTIONS_LETTERS'), [
'text', 45],
'bitrix'],
42 'sphinx_connection' => [
GetMessage(
'SEARCH_OPTIONS_SPHINX_CONNECTION'), [
'text', 45],
'sphinx'],
43 'sphinx_index_name' => [
GetMessage(
'SEARCH_OPTIONS_SPHINX_INDEX_NAME'), [
'text', 45],
'sphinx'],
44 'sphinx_note' => [
'', [
'note',
'
51 path = /var/lib/sphinxsearch/data/bitrix
53 #choose appropriate type of morphology to use
54 #morphology = lemmatize_ru_all, lemmatize_en_all, lemmatize_de_all, stem_enru
55 morphology = stem_enru, soundex
56 #these settings are used by bitrix:search.title component
62 #all fields must be defined exactly as followed
65 rt_attr_uint = module_id
66 rt_attr_string = module
67 rt_attr_uint = item_id
69 rt_attr_uint = param1_id
70 rt_attr_string = param1
71 rt_attr_uint = param2_id
72 rt_attr_string = param2
73 rt_attr_timestamp = date_change
74 rt_attr_timestamp = date_to
75 rt_attr_timestamp = date_from
76 rt_attr_uint = custom_rank
81 #depends on settings of your site
82 # uncomment for single byte character set
84 # uncomment for UTF character set
90 'mysql_note' => [
'', [
'note',
GetMessage(
'SEARCH_OPTIONS_MYSQL_NOTE')],
'mysql'],
91 'opensearch_connection' => [
GetMessage(
'SEARCH_OPTIONS_OPENSEARCH_CONNECTION'), [
'text', 45],
'opensearch'],
92 'opensearch_user' => [
GetMessage(
'SEARCH_OPTIONS_OPENSEARCH_USER'), [
'text', 45],
'opensearch'],
93 'opensearch_password' => [
GetMessage(
'SEARCH_OPTIONS_OPENSEARCH_PASSWORD'), [
'password', 45],
'opensearch'],
94 'opensearch_index' => [
GetMessage(
'SEARCH_OPTIONS_OPENSEARCH_INDEX'), [
'text', 45],
'opensearch'],
95 'opensearch_analyzer' => [
'', [
'note',
GetMessage(
'SEARCH_OPTIONS_OPENSEARCH_ANALYZER_NOTE')],
'opensearch'],
100 'TAB' =>
GetMessage(
'SEARCH_OPTIONS_TAB_SEARCH'),
101 'ICON' =>
'search_settings',
102 'TITLE' =>
GetMessage(
'SEARCH_OPTIONS_TAB_TITLE_SEARCH'),
104 'max_result_size' => [
GetMessage(
'SEARCH_OPTIONS_MAX_RESULT_SIZE'), [
'text', 6]],
105 'max_body_size' => [
GetMessage(
'SEARCH_OPTIONS_MAX_BODY_SIZE'), [
'text', 6]],
106 'use_tf_cache' => [
GetMessage(
'SEARCH_OPTIONS_USE_TF_CACHE'), [
'checkbox',
'N']],
107 'use_word_distance' => [
108 GetMessage(
'SEARCH_OPTIONS_USE_WORD_DISTANCE'),
111 'use_social_rating' => [
112 GetMessage(
'SEARCH_OPTIONS_USE_SOCIAL_RATING'),
115 'suggest_save_days' => [
GetMessage(
'SEARCH_OPTIONS_SUGGEST_SAVE_DAYS'), [
'text', 6]],
119 'DIV' =>
'statistic',
120 'TAB' =>
GetMessage(
'SEARCH_OPTIONS_TAB_STATISTIC'),
121 'ICON' =>
'search_settings',
122 'TITLE' =>
GetMessage(
'SEARCH_OPTIONS_TAB_TITLE_STATISTIC'),
124 'stat_phrase' => [
GetMessage(
'SEARCH_OPTIONS_STAT_PHRASE'), [
'checkbox',
'Y']],
125 'stat_phrase_save_days' => [
GetMessage(
'SEARCH_OPTIONS_STAT_PHRASE_SAVE_DAYS'), [
'text', 6]],
133 $aTabs[1][
'OPTIONS'][
'full_text_engine'][1][1][
'mysql'] =
GetMessage(
'SEARCH_OPTIONS_FULL_TEXT_ENGINE_MYSQL');
137 $aTabs[1][
'OPTIONS'][
'full_text_engine'][1][1][
'pgsql'] =
GetMessage(
'SEARCH_OPTIONS_FULL_TEXT_ENGINE_PGSQL');
145 $aTabs[1][
'OPTIONS'][
'opensearch_analyzer_' .
$site[
'ID']] = [
146 GetMessage(
'SEARCH_OPTIONS_OPENSEARCH_ANALYZER_FOR_SITE', [
'#SITE_ID#' =>
$site[
'ID']]),
158 COption::RemoveOption(
'search');
162 if ($_POST[
'full_text_engine'] ===
'sphinx')
165 if (!$search->connect($_POST[
'sphinx_connection'], $_POST[
'sphinx_index_name'],
true))
175 elseif ($_POST[
'full_text_engine'] ===
'opensearch')
177 $siteAnalyzerMap = [];
178 foreach ($_POST as
$key => $value)
180 if (str_starts_with(
$key,
'opensearch_analyzer_'))
182 $siteAnalyzerMap[explode(
'_',
$key, 3)[2]] =
$value;
186 $opensearch_password = $_POST[
'opensearch_password'] ?:
CPasswordStorage::Get(
'search@opensearch_password');
187 if (!$search->connect($_POST[
'opensearch_connection'], $_POST[
'opensearch_user'], $opensearch_password, $_POST[
'opensearch_index'],
true, $siteAnalyzerMap))
197 elseif ($_POST[
'full_text_engine'] ===
'mysql')
200 if (!$search->connect())
210 elseif ($_POST[
'full_text_engine'] ===
'pgsql')
213 if (!$search->connect())
232 foreach ($aTab[
'OPTIONS'] as
$name => $arOption)
235 if ($arOption[1][0] ==
'checkbox' &&
$val !=
'Y')
240 if ($arOption[1][0] ==
'password')
255 $old_use_tf_cache != COption::GetOptionString(
'search',
'use_tf_cache')
256 || $old_max_result_size != COption::GetOptionInt(
'search',
'max_result_size')
259 $DBsearch->Query(
'TRUNCATE TABLE b_search_content_freq');
262 if ($old_full_text_engine != COption::GetOptionString(
'search',
'full_text_engine'))
265 'MESSAGE' =>
GetMessage(
"SEARCH_OPTIONS_FULL_REINDEX", [
'#LINK#' =>
'/bitrix/admin/search_reindex.php?lang=' . LANGUAGE_ID]),
266 'TAG' =>
'SEARCH_REINDEX',
267 'MODULE_ID' =>
'SEARCH',
297 'TEXT' =>
GetMessage(
'SEARCH_OPTIONS_REINDEX'),
298 'LINK' =>
'search_reindex.php?lang=' . LANGUAGE_ID,
299 'TITLE' =>
GetMessage(
'SEARCH_OPTIONS_REINDEX_TITLE'),
302 'TEXT' =>
GetMessage(
'SEARCH_OPTIONS_SITEMAP'),
303 'LINK' =>
'search_sitemap.php?lang=' . LANGUAGE_ID,
304 'TITLE' =>
GetMessage(
'SEARCH_OPTIONS_SITEMAP_TITLE'),
312<form method=
"post" action=
"<?php echo $APPLICATION->GetCurPage()?>?mid=<?=urlencode($mid)?>&lang=<?=LANGUAGE_ID?>" id=
"options">
316 foreach ($aTab[
'OPTIONS'] as
$name => $arOption):
319 if ($arOption[1][0] ==
'password')
330 $val = COption::GetOptionString(
'search',
$name);
331 if (!
$val && str_starts_with(
$name,
'opensearch_analyzer_'))
340 if (isset($arOption[2]))
342 echo
'style="display:none" class="show-for-' .
htmlspecialcharsbx($arOption[2]) .
'"';
344 <td
width=
"40%" <?php
345 if (
$type[0] ==
'textarea')
347 echo
'class="adm-detail-valign-top"';
349 <label
for=
"<?php echo htmlspecialcharsbx($name)?>"><?php echo $arOption[0]?></label>
351 <?php
if (
$type[0] ==
'checkbox'):?>
352 <input type=
"checkbox" name=
"<?php echo htmlspecialcharsbx($name)?>" id=
"<?php echo htmlspecialcharsbx($name)?>" value=
"Y"<?php echo (
$val ==
'Y') ?
' checked' :
'';?>>
354 <input type=
"text" size=
"<?php echo $type[1]?>" maxlength=
"255" value=
"<?php echo htmlspecialcharsbx($val)?>" name=
"<?php echo htmlspecialcharsbx($name)?>">
356 <input type=
"password" size=
"<?php echo $type[1]?>" maxlength=
"255" value=
"<?php echo htmlspecialcharsbx($val)?>" name=
"<?php echo htmlspecialcharsbx($name)?>">
358 <textarea rows=
"<?php echo $type[1]?>" name=
"<?php echo htmlspecialcharsbx($name)?>" style=
361 <
select name=
"<?php echo htmlspecialcharsbx($name)?>" onchange=
"doShowAndHide()">
363 <option value=
"<?php echo htmlspecialcharsbx($key)?>" <?php echo (
$val ==
$key) ?
'selected="selected"' :
'';?>><?php echo
htmlspecialcharsEx($value)?></option>
375 <input type=
"submit" name=
"Update" value=
"<?=GetMessage('MAIN_SAVE')?>" title=
"<?=GetMessage('MAIN_OPT_SAVE_TITLE')?>" class=
"adm-btn-save">
376 <input type=
"submit" name=
"Apply" value=
"<?=GetMessage('MAIN_OPT_APPLY')?>" title=
"<?=GetMessage('MAIN_OPT_APPLY_TITLE')?>">
377 <?php
if (
$_REQUEST[
'back_url_settings'] <>
''):?>
378 <input 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']))?>'">
379 <input type=
"hidden" name=
"back_url_settings" value=
"<?=htmlspecialcharsbx($_REQUEST['back_url_settings'])?>">
381 <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')?>">
386function doShowAndHide()
388 var form = BX(
'options');
389 var selects = document.getElementsByName(
'full_text_engine');
390 for (var i = 0; i < selects.length; i++)
392 var selectedValue = selects[i].value;
393 var trs = BX.findChildren(form, {tag:
'tr'},
true);
394 for (var j = 0; j < trs.length; j++)
396 if (/show-
for-/.test(trs[j].className))
398 if (trs[j].className.indexOf(selectedValue) >= 0)
399 trs[j].style.display =
'table-row';
401 trs[j].style.display =
'none';
406BX.ready(doShowAndHide);
static GetOptionString($module_id, $name, $def="", $site=false, $bExactSite=false)
static GetOptionInt($module_id, $name, $def="", $site=false)
static SetOptionString($module_id, $name, $value="", $desc=false, $site="")
static Set($strName, $strVal)
static getLanguageAnalyzers()
static SetActive($bActive=false)
bx popup label bx width30 PAGE_NEW_MENU_NAME text width
foreach( $arCellTemplates as $key=> $value) foreach( $arCellTemplates as $key=> $value)
$_SERVER["DOCUMENT_ROOT"]
if(( $ACTION=='EXPORT_EDIT'||$ACTION=='EXPORT_COPY') &&$STEP==1) if($STEP > 1) if(( $ACTION=='EXPORT_EDIT'||$ACTION=='EXPORT_COPY') &&$STEP==2) if($STEP >2) $aMenu
bitrix_sessid_post($varname='sessid', $returnInvocations=false)
check_bitrix_sessid($varname='sessid')
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
LocalRedirect($url, $skip_security_check=false, $status="302 Found")
global_menu_<?echo $menu["menu_id"]?> adm main menu item icon adm main menu item text text adm main menu hover adm submenu menucontainer menu_id menu_id items_id items_id desktop menu_id block none adm global submenu<?=($subMenuDisplay=="block" ? " adm-global-submenu-active" :"")?> global_submenu_<?echo $menu["menu_id"]?> text MAIN_PR_ADMIN_FAV items adm submenu items wrap adm submenu items stretch wrap BX adminMenu itemsStretchScroll()"> <table class if (!empty( $menu["items"])) elseif ( $menu[ 'menu_id']=='desktop') if ( $menu[ 'menu_id']=='desktop') endforeach
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
<? endif;?> window document title
if(empty($signedUserToken)) $key
if( $DBsearch->type==='MYSQL') elseif($DBsearch->type==='PGSQL') $siteLangMap