1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
options.php
См. документацию.
1<?php
2IncludeModuleLangFile($_SERVER['DOCUMENT_ROOT'] . BX_ROOT . '/modules/main/options.php');
4require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/search/prolog.php';
8require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/backup.php");
9
11
13
15 0 => [
16 'DIV' => 'index',
17 'TAB' => GetMessage('SEARCH_OPTIONS_TAB_INDEX'),
18 'ICON' => 'search_settings',
19 'TITLE' => GetMessage('SEARCH_OPTIONS_TAB_TITLE_INDEX_2'),
20 'OPTIONS' => [
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']],
25 ]
26 ],
27 1 => [
28 'DIV' => 'stemming',
29 'TAB' => GetMessage('SEARCH_OPTIONS_TAB_STEMMING'),
30 'ICON' => 'search_settings',
31 'TITLE' => GetMessage('SEARCH_OPTIONS_TAB_TITLE_STEMMING'),
32 'OPTIONS' => [
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'),
40 ]]],
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', '
45<pre>
46#sphinx.conf
47index bitrix
48{
49 #main settings
50 type = rt
51 path = /var/lib/sphinxsearch/data/bitrix
52 docinfo = inline
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
57 dict = keywords
58 prefix_fields = title
59 infix_fields=
60 min_prefix_len = 2
61 enable_star = 1
62 #all fields must be defined exactly as followed
63 rt_field = title
64 rt_field = body
65 rt_attr_uint = module_id
66 rt_attr_string = module
67 rt_attr_uint = item_id
68 rt_attr_string = item
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
77 rt_attr_multi = tags
78 rt_attr_multi = right
79 rt_attr_multi = site
80 rt_attr_multi = param
81 #depends on settings of your site
82 # uncomment for single byte character set
83 charset_type = sbcs
84 # uncomment for UTF character set
85 #charset_type = utf-8
86}
87</pre>
88 '
89 ], 'sphinx'],
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'],
96 ]
97 ],
98 2 => [
99 'DIV' => 'search',
100 'TAB' => GetMessage('SEARCH_OPTIONS_TAB_SEARCH'),
101 'ICON' => 'search_settings',
102 'TITLE' => GetMessage('SEARCH_OPTIONS_TAB_TITLE_SEARCH'),
103 'OPTIONS' => [
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'),
109 ['checkbox', 'N'],
110 ],
111 'use_social_rating' => [
112 GetMessage('SEARCH_OPTIONS_USE_SOCIAL_RATING'),
113 ['checkbox', 'N'],
114 ],
115 'suggest_save_days' => [GetMessage('SEARCH_OPTIONS_SUGGEST_SAVE_DAYS'), ['text', 6]],
116 ]
117 ],
118 3 => [
119 'DIV' => 'statistic',
120 'TAB' => GetMessage('SEARCH_OPTIONS_TAB_STATISTIC'),
121 'ICON' => 'search_settings',
122 'TITLE' => GetMessage('SEARCH_OPTIONS_TAB_TITLE_STATISTIC'),
123 'OPTIONS' => [
124 'stat_phrase' => [GetMessage('SEARCH_OPTIONS_STAT_PHRASE'), ['checkbox', 'Y']],
125 'stat_phrase_save_days' => [GetMessage('SEARCH_OPTIONS_STAT_PHRASE_SAVE_DAYS'), ['text', 6]],
126 ]
127 ],
128];
129
130$DBsearch = CDatabase::GetModuleConnection('search');
131if ($DBsearch->type === 'MYSQL')
132{
133 $aTabs[1]['OPTIONS']['full_text_engine'][1][1]['mysql'] = GetMessage('SEARCH_OPTIONS_FULL_TEXT_ENGINE_MYSQL');
134}
135elseif ($DBsearch->type === 'PGSQL')
136{
137 $aTabs[1]['OPTIONS']['full_text_engine'][1][1]['pgsql'] = GetMessage('SEARCH_OPTIONS_FULL_TEXT_ENGINE_PGSQL');
138}
139
141$langs = CLang::GetList();
142while ($site = $langs->Fetch())
143{
144 $siteLangMap[$site['ID']] = $site['LANGUAGE_ID'];
145 $aTabs[1]['OPTIONS']['opensearch_analyzer_' . $site['ID']] = [
146 GetMessage('SEARCH_OPTIONS_OPENSEARCH_ANALYZER_FOR_SITE', ['#SITE_ID#' => $site['ID']]),
147 ['select', array_combine(array_keys($openSearchAnalyzers), array_keys($openSearchAnalyzers))],
148 'opensearch',
149 ];
150}
151
153
154if ($_SERVER['REQUEST_METHOD'] == 'POST' && $Update . $Apply . $RestoreDefaults <> '' && check_bitrix_sessid())
155{
156 if ($RestoreDefaults <> '')
157 {
158 COption::RemoveOption('search');
159 }
160 else
161 {
162 if ($_POST['full_text_engine'] === 'sphinx')
163 {
164 $search = new CSearchSphinx();
165 if (!$search->connect($_POST['sphinx_connection'], $_POST['sphinx_index_name'], true))
166 {
167 $e = $APPLICATION->GetException();
168 if (is_object($e))
169 {
170 $message = new CAdminMessage(GetMessage('SEARCH_OPTIONS_SPHINX_ERROR'), $e);
171 }
172 $bVarsFromForm = true;
173 }
174 }
175 elseif ($_POST['full_text_engine'] === 'opensearch')
176 {
177 $siteAnalyzerMap = [];
178 foreach ($_POST as $key => $value)
179 {
180 if (str_starts_with($key, 'opensearch_analyzer_'))
181 {
182 $siteAnalyzerMap[explode('_', $key, 3)[2]] = $value;
183 }
184 }
185 $search = new CSearchOpenSearch();
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))
188 {
189 $e = $APPLICATION->GetException();
190 if (is_object($e))
191 {
192 $message = new CAdminMessage(GetMessage('SEARCH_OPTIONS_OPENSEARCH_ERROR'), $e);
193 }
194 $bVarsFromForm = true;
195 }
196 }
197 elseif ($_POST['full_text_engine'] === 'mysql')
198 {
199 $search = new CSearchMysql();
200 if (!$search->connect())
201 {
202 $e = $APPLICATION->GetException();
203 if (is_object($e))
204 {
205 $message = new CAdminMessage(GetMessage('SEARCH_OPTIONS_MYSQL_ERROR'), $e);
206 }
207 $bVarsFromForm = true;
208 }
209 }
210 elseif ($_POST['full_text_engine'] === 'pgsql')
211 {
212 $search = new CSearchPgsql();
213 if (!$search->connect())
214 {
215 $e = $APPLICATION->GetException();
216 if (is_object($e))
217 {
218 $message = new CAdminMessage(GetMessage('SEARCH_OPTIONS_PGSQL_ERROR'), $e);
219 }
220 $bVarsFromForm = true;
221 }
222 }
223
224 if (!$bVarsFromForm)
225 {
226 $old_use_tf_cache = COption::GetOptionString('search', 'use_tf_cache');
227 $old_max_result_size = COption::GetOptionInt('search', 'max_result_size');
228 $old_full_text_engine = COption::GetOptionString('search', 'full_text_engine');
229
230 foreach ($aTabs as $i => $aTab)
231 {
232 foreach ($aTab['OPTIONS'] as $name => $arOption)
233 {
234 $val = $_POST[$name];
235 if ($arOption[1][0] == 'checkbox' && $val != 'Y')
236 {
237 $val = 'N';
238 }
239
240 if ($arOption[1][0] == 'password')
241 {
242 if ($val)
243 {
244 CPasswordStorage::Set('search@' . $name, $val);
245 }
246 }
247 else
248 {
249 COption::SetOptionString('search', $name, $val, $arOption[0]);
250 }
251 }
252 }
253
254 if (
255 $old_use_tf_cache != COption::GetOptionString('search', 'use_tf_cache')
256 || $old_max_result_size != COption::GetOptionInt('search', 'max_result_size')
257 )
258 {
259 $DBsearch->Query('TRUNCATE TABLE b_search_content_freq');
260 }
261
262 if ($old_full_text_engine != COption::GetOptionString('search', 'full_text_engine'))
263 {
264 $error = [
265 'MESSAGE' => GetMessage("SEARCH_OPTIONS_FULL_REINDEX", ['#LINK#' => '/bitrix/admin/search_reindex.php?lang=' . LANGUAGE_ID]),
266 'TAG' => 'SEARCH_REINDEX',
267 'MODULE_ID' => 'SEARCH',
268 'NOTIFY_TYPE' => CAdminNotify::TYPE_ERROR,
269 ];
271 }
272 }
273 }
274
275 CSearchStatistic::SetActive(COption::GetOptionString('search', 'stat_phrase') == 'Y');
276
277 if (!$bVarsFromForm)
278 {
279 if ($Update <> '' && $_REQUEST['back_url_settings'] <> '')
280 {
281 LocalRedirect($_REQUEST['back_url_settings']);
282 }
283 else
284 {
285 LocalRedirect($APPLICATION->GetCurPage() . '?mid=' . urlencode($mid) . '&lang=' . urlencode(LANGUAGE_ID) . '&back_url_settings=' . urlencode($_REQUEST['back_url_settings']) . '&' . $tabControl->ActiveTabParam());
286 }
287 }
288}
289
290if (is_object($message))
291{
292 echo $message->Show();
293}
294
296 [
297 'TEXT' => GetMessage('SEARCH_OPTIONS_REINDEX'),
298 'LINK' => 'search_reindex.php?lang=' . LANGUAGE_ID,
299 'TITLE' => GetMessage('SEARCH_OPTIONS_REINDEX_TITLE'),
300 ],
301 [
302 'TEXT' => GetMessage('SEARCH_OPTIONS_SITEMAP'),
303 'LINK' => 'search_sitemap.php?lang=' . LANGUAGE_ID,
304 'TITLE' => GetMessage('SEARCH_OPTIONS_SITEMAP_TITLE'),
305 ]
306];
308$context->Show();
309
310$tabControl->Begin();
311?>
312<form method="post" action="<?php echo $APPLICATION->GetCurPage()?>?mid=<?=urlencode($mid)?>&amp;lang=<?=LANGUAGE_ID?>" id="options">
313<?php
314foreach ($aTabs as $aTab):
315 $tabControl->BeginNextTab();
316 foreach ($aTab['OPTIONS'] as $name => $arOption):
317 if ($bVarsFromForm)
318 {
319 if ($arOption[1][0] == 'password')
320 {
321 $val = '';
322 }
323 else
324 {
325 $val = $_POST[$name];
326 }
327 }
328 else
329 {
330 $val = COption::GetOptionString('search', $name);
331 if (!$val && str_starts_with($name, 'opensearch_analyzer_'))
332 {
333 $siteId = explode('_', $name, 3)[2];
334 $val = array_search($siteLangMap[$siteId], $openSearchAnalyzers) ?: 'english';
335 }
336 }
337 $type = $arOption[1];
338 ?>
339 <tr <?php
340 if (isset($arOption[2]))
341 {
342 echo 'style="display:none" class="show-for-' . htmlspecialcharsbx($arOption[2]) . '"';
343 }?>>
344 <td width="40%" <?php
345 if ($type[0] == 'textarea')
346 {
347 echo 'class="adm-detail-valign-top"';
348 }?>>
349 <label for="<?php echo htmlspecialcharsbx($name)?>"><?php echo $arOption[0]?></label>
350 <td width="60%">
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' : '';?>>
353 <?php elseif ($type[0] == 'text'):?>
354 <input type="text" size="<?php echo $type[1]?>" maxlength="255" value="<?php echo htmlspecialcharsbx($val)?>" name="<?php echo htmlspecialcharsbx($name)?>">
355 <?php elseif ($type[0] == 'password'):?>
356 <input type="password" size="<?php echo $type[1]?>" maxlength="255" value="<?php echo htmlspecialcharsbx($val)?>" name="<?php echo htmlspecialcharsbx($name)?>">
357 <?php elseif ($type[0] == 'textarea'):?>
358 <textarea rows="<?php echo $type[1]?>" name="<?php echo htmlspecialcharsbx($name)?>" style=
359 "width:100%"><?php echo htmlspecialcharsbx($val)?></textarea>
360 <?php elseif ($type[0] == 'select'):?>
361 <select name="<?php echo htmlspecialcharsbx($name)?>" onchange="doShowAndHide()">
362 <?php foreach ($type[1] as $key => $value):?>
363 <option value="<?php echo htmlspecialcharsbx($key)?>" <?php echo ($val == $key) ? 'selected="selected"' : '';?>><?php echo htmlspecialcharsEx($value)?></option>
364 <?php endforeach?>
365 </select>
366 <?php elseif ($type[0] == 'note'):?>
367 <?php echo BeginNote(), $type[1], EndNote();?>
368 <?php endif?>
369 </td>
370 </tr>
371 <?php endforeach;
372endforeach;?>
373
374<?php $tabControl->Buttons();?>
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'])?>">
380 <?php endif?>
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')?>">
382 <?=bitrix_sessid_post();?>
383<?php $tabControl->End();?>
384</form>
385<script>
386function doShowAndHide()
387{
388 var form = BX('options');
389 var selects = document.getElementsByName('full_text_engine');
390 for (var i = 0; i < selects.length; i++)
391 {
392 var selectedValue = selects[i].value;
393 var trs = BX.findChildren(form, {tag: 'tr'}, true);
394 for (var j = 0; j < trs.length; j++)
395 {
396 if (/show-for-/.test(trs[j].className))
397 {
398 if (trs[j].className.indexOf(selectedValue) >= 0)
399 trs[j].style.display = 'table-row';
400 else
401 trs[j].style.display = 'none';
402 }
403 }
404 }
405}
406BX.ready(doShowAndHide);
407</script>
return select
Определения access_edit.php:440
$type
Определения options.php:106
const BX_ROOT
Определения bx_root.php:3
global $APPLICATION
Определения include.php:80
Определения admin_lib.php:2166
const TYPE_ERROR
Определения admin_notify.php:8
static Add($arFields)
Определения admin_notify.php:22
static GetOptionString($module_id, $name, $def="", $site=false, $bExactSite=false)
Определения option.php:8
static GetOptionInt($module_id, $name, $def="", $site=false)
Определения option.php:49
static SetOptionString($module_id, $name, $value="", $desc=false, $site="")
Определения option.php:29
static Get($strName)
Определения backup.php:817
static Set($strName, $strVal)
Определения backup.php:804
Определения mysql.php:5
Определения opensearch.php:5
static getLanguageAnalyzers()
Определения opensearch.php:93
Определения pgsql.php:5
Определения sphinx.php:5
static SetActive($bActive=false)
Определения statistic.php:321
$bVarsFromForm
Определения file_edit.php:44
bx popup label bx width30 PAGE_NEW_MENU_NAME text width
Определения file_new.php:677
EndNote()
Определения filter_tools.php:601
BeginNote($sParams='', $sMessParams='')
Определения filter_tools.php:589
$_REQUEST["admin_mnu_menu_id"]
Определения get_menu.php:8
foreach( $arCellTemplates as $key=> $value) foreach( $arCellTemplates as $key=> $value)
$Update
Определения options.php:212
$Apply
Определения options.php:213
$RestoreDefaults
Определения options.php:55
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
$tabControl
Определения csv_new_setup.php:244
$aTabs
Определения csv_new_setup.php:238
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
Определения csv_new_setup.php:214
$context
Определения csv_new_setup.php:223
endif
Определения csv_new_setup.php:990
$mid
Определения options.php:27
$siteId
Определения ajax.php:8
bitrix_sessid_post($varname='sessid', $returnInvocations=false)
Определения tools.php:4700
check_bitrix_sessid($varname='sessid')
Определения tools.php:4686
htmlspecialcharsEx($str)
Определения tools.php:2685
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
LocalRedirect($url, $skip_security_check=false, $status="302 Found")
Определения tools.php:4005
$name
Определения menu_edit.php:35
$value
Определения Param.php:39
$message
Определения payment.php:8
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
Определения prolog_main_admin.php:255
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
<? endif;?> window document title
Определения prolog_main_admin.php:76
if(empty($signedUserToken)) $key
Определения quickway.php:257
$i
Определения factura.php:643
font style
Определения invoice.php:442
font size
Определения invoice.php:442
$val
Определения options.php:1793
$langs
Определения options.php:141
$openSearchAnalyzers
Определения options.php:10
if( $DBsearch->type==='MYSQL') elseif($DBsearch->type==='PGSQL') $siteLangMap
Определения options.php:140
$DBsearch
Определения options.php:130
$error
Определения subscription_card_product.php:20
$site
Определения yandex_run.php:614