1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
comp_parameters.php
См. документацию.
1<?php
3
5{
6 public static function ConvertParamsToFilter($arParams, $strFilterParamName)
7 {
8 $exFILTER = [];
9
10 if (!is_array($arParams[$strFilterParamName]) && $arParams[$strFilterParamName] <> '')
11 {
12 $arParams[$strFilterParamName] = [$arParams[$strFilterParamName]];
13 }
14
15 if (is_array($arParams[$strFilterParamName]))
16 {
17 foreach ($arParams[$strFilterParamName] as $strFILTER)
18 {
19 switch ($strFILTER)
20 {
21 case 'main':
22 $exFILTER[] = CSearchParameters::_main($arParams[$strFilterParamName . '_main'] ?? null);
23 break;
24 case 'forum':
25 if (IsModuleInstalled('forum'))
26 {
27 $exFILTER[] = CSearchParameters::_forum($arParams[$strFilterParamName . '_forum'] ?? null);
28 }
29 break;
30 case 'blog':
31 $exFILTER[] = CSearchParameters::_blog($arParams[$strFilterParamName . '_blog'] ?? null);
32 break;
33 case 'microblog':
34 $exFILTER[] = [
35 '=MODULE_ID' => 'blog',
36 'PARAM1' => 'MICROBLOG',
37 ];
38 break;
39 case 'socialnetwork':
40 $exFILTER[] = CSearchParameters::_socialnetwork($arParams[$strFilterParamName . '_socialnetwork'] ?? null);
41 break;
42 case 'socialnetwork_user':
43 $exFILTER[] = CSearchParameters::_socialnetwork_user($arParams[$strFilterParamName . '_socialnetwork_user'] ?? null);
44 break;
45 case 'intranet':
46 $exFILTER[] = [
47 '=MODULE_ID' => 'intranet',
48 ];
49 break;
50 case 'crm':
51 $exFILTER[] = [
52 '=MODULE_ID' => 'crm',
53 ];
54 break;
55 case 'disk':
56 $exFILTER[] = [
57 '=MODULE_ID' => 'disk',
58 ];
59 break;
60 case 'no':
61 break;
62 default:
63 if (mb_strpos($strFILTER, 'iblock_') === 0)
64 {
65 $exFILTER[] = CSearchParameters::_iblock($arParams[$strFilterParamName . '_' . $strFILTER] ?? null, $strFILTER);
66 }
67 else
68 {
69 $exFILTER[] = [
70 '=MODULE_ID' => $strFILTER,
71 ];
72 }
73 break;
74 }
75 }
76 }
77
78 return $exFILTER;
79 }
80
81 public static function GetFilterDropDown($bFilter = false)
82 {
83 if ($bFilter)
84 {
85 $arrDropdown = [
86 'no' => GetMessage('SEARCH_CP_NO_LIMIT'),
87 'main' => '[main] ' . GetMessage('SEARCH_CP_STATIC'),
88 ];
89 }
90 else
91 {
92 $arrDropdown = [];
93 }
94
95 if (IsModuleInstalled('forum'))
96 {
97 $arrDropdown['forum'] = '[forum] ' . GetMessage('SEARCH_CP_FORUM');
98 }
99
100 if (CModule::IncludeModule('iblock'))
101 {
102 $rsType = CIBlockType::GetList(['sort' => 'asc'], ['ACTIVE' => 'Y']);
103 while ($arr = $rsType->Fetch())
104 {
105 if ($ar = CIBlockType::GetByIDLang($arr['ID'], LANGUAGE_ID))
106 {
107 $arrDropdown['iblock_' . $arr['ID']] = '[iblock_' . $arr['ID'] . '] ' . $ar['~NAME'];
108 }
109 }
110 }
111
112 if (IsModuleInstalled('blog'))
113 {
114 $arrDropdown['blog'] = '[blog] ' . GetMessage('SEARCH_CP_BLOG');
115 if ($bFilter)
116 {
117 $arrDropdown['microblog'] = '[microblog] ' . GetMessage('SEARCH_CP_MICROBLOG');
118 }
119 }
120
121 if (IsModuleInstalled('socialnetwork'))
122 {
123 $arrDropdown['socialnetwork'] = '[socialnetwork] ' . GetMessage('SEARCH_CP_SOCNET');
124 $arrDropdown['socialnetwork_user'] = '[socialnetwork_user] ' . GetMessage('SEARCH_CP_SOCNET_USER');
125 }
126
127 if (IsModuleInstalled('intranet'))
128 {
129 $arrDropdown['intranet'] = '[intranet] ' . GetMessage('SEARCH_CP_INTRANET_USERS');
130 }
131
132 if (IsModuleInstalled('crm'))
133 {
134 $arrDropdown['crm'] = '[crm] ' . GetMessage('SEARCH_CP_CRM');
135 }
136
137 if (IsModuleInstalled('disk'))
138 {
139 $arrDropdown['disk'] = '[disk] ' . GetMessage('SEARCH_CP_DISK');
140 }
141
142 return $arrDropdown;
143 }
144
145 public static function GetModulesList()
146 {
147 $result = [];
148 foreach (GetModuleEvents('search', 'OnReindex', true) as $arEvent)
149 {
150 if (!array_key_exists($arEvent['TO_MODULE_ID'], $result))
151 {
152 $module = $arEvent['TO_MODULE_ID'];
153
154 if (IsModuleInstalled($module))
155 {
156 $obModule = CModule::CreateModuleObject($module);
157 if ($obModule)
158 {
159 $result[$module] = '[' . $module . '] ' . $obModule->MODULE_NAME;
160 }
161 }
162 }
163 }
164
165 ksort($result);
166 return $result;
167 }
168
169 public static function AddFilterParams(&$arComponentParameters, $arCurrentValues, $name, $parent, $MULTIPLE = 'Y')
170 {
171 $arComponentParameters['PARAMETERS'][$name] = [
172 'PARENT' => $parent,
173 'NAME' => GetMessage('SEARCH_CP_WHERE_FILTER'),
174 'TYPE' => 'LIST',
175 'MULTIPLE' => $MULTIPLE,
176 'VALUES' => CSearchParameters::GetFilterDropDown(true),
177 'DEFAULT' => 'all',
178 'REFRESH' => 'Y',
179 ];
180
181 if (!is_array($arCurrentValues[$name]) && $arCurrentValues[$name] <> '')
182 {
183 $arCurrentValues[$name] = [$arCurrentValues[$name]];
184 }
185
186 if (is_array($arCurrentValues[$name]))
187 {
188 foreach ($arCurrentValues[$name] as $strFILTER)
189 {
190 if ($strFILTER == 'main')
191 {
192 $arComponentParameters['PARAMETERS'][$name . '_' . $strFILTER] = [
193 'PARENT' => $parent,
194 'NAME' => GetMessage('SEARCH_CP_URL'),
195 'TYPE' => 'STRING',
196 'MULTIPLE' => $MULTIPLE,
197 'ADDITIONAL_VALUES' => 'Y',
198 'DEFAULT' => '',
199 ];
200 }
201 elseif ($strFILTER == 'forum')
202 {
203 $arrFILTER = [];
204 if (CModule::IncludeModule('forum'))
205 {
206 $arrFILTER['all'] = GetMessage('SEARCH_CP_ALL');
207 $rsForum = CForumNew::GetList();
208 while ($arForum = $rsForum->Fetch())
209 {
210 $arrFILTER[$arForum['ID']] = $arForum['NAME'];
211 }
212 }
213
214 $arComponentParameters['PARAMETERS'][$name . '_' . $strFILTER] = [
215 'PARENT' => $parent,
216 'NAME' => GetMessage('SEARCH_CP_FORUM'),
217 'TYPE' => 'LIST',
218 'MULTIPLE' => $MULTIPLE,
219 'VALUES' => $arrFILTER,
220 'ADDITIONAL_VALUES' => 'N',
221 'DEFAULT' => 'all',
222 ];
223 }
224 elseif (mb_strpos($strFILTER, 'iblock_') === 0)
225 {
226 $arrFILTER = [];
227 if (CModule::IncludeModule('iblock'))
228 {
229 $arrFILTER['all'] = GetMessage('SEARCH_CP_ALL');
230 $rsIBlock = CIBlock::GetList(['SORT' => 'ASC'], ['TYPE' => mb_substr($strFILTER, 7)]);
231 while ($arIBlock = $rsIBlock->Fetch())
232 {
233 $arrFILTER[$arIBlock['ID']] = $arIBlock['NAME'];
234 }
235 }
236
237 $arComponentParameters['PARAMETERS'][$name . '_' . $strFILTER] = [
238 'PARENT' => $parent,
239 'NAME' => GetMessage('SEARCH_CP_IBLOCK_TYPE', ['#TYPE_ID#' => $strFILTER]),
240 'TYPE' => 'LIST',
241 'MULTIPLE' => $MULTIPLE,
242 'VALUES' => $arrFILTER,
243 'ADDITIONAL_VALUES' => 'N',
244 'DEFAULT' => 'all',
245 ];
246 }
247 elseif ($strFILTER == 'blog')
248 {
249 $arrFILTER = [];
250 if (CModule::IncludeModule('blog'))
251 {
252 $arrFILTER['all'] = GetMessage('SEARCH_CP_ALL');
253 $rsBlog = CBlog::GetList();
254 while ($arBlog = $rsBlog->Fetch())
255 {
256 $arrFILTER[$arBlog['ID']] = $arBlog['NAME'];
257 }
258 }
259
260 $arComponentParameters['PARAMETERS'][$name . '_' . $strFILTER] = [
261 'PARENT' => $parent,
262 'NAME' => GetMessage('SEARCH_CP_BLOG'),
263 'TYPE' => 'LIST',
264 'MULTIPLE' => $MULTIPLE,
265 'VALUES' => $arrFILTER,
266 'ADDITIONAL_VALUES' => 'N',
267 'DEFAULT' => 'all',
268 ];
269 }
270 elseif ($strFILTER == 'socialnetwork')
271 {
272 $arrFILTER = [];
273 if (CModule::IncludeModule('socialnetwork'))
274 {
275 $arrFILTER['all'] = GetMessage('SEARCH_CP_ALL');
276 $rsGroup = CSocNetGroup::GetList(['ID' => 'DESC'], [], false, false, ['ID', 'NAME']);
277 while ($arGroup = $rsGroup->Fetch())
278 {
279 $arrFILTER[$arGroup['ID']] = $arGroup['NAME'];
280 }
281 }
282
283 $arComponentParameters['PARAMETERS'][$name . '_' . $strFILTER] = [
284 'PARENT' => $parent,
285 'NAME' => GetMessage('SEARCH_CP_SOCIALNETWORK_GROUPS'),
286 'TYPE' => 'LIST',
287 'MULTIPLE' => $MULTIPLE,
288 'VALUES' => $arrFILTER,
289 'ADDITIONAL_VALUES' => 'N',
290 'DEFAULT' => 'all',
291 ];
292 }
293 elseif ($strFILTER == 'socialnetwork_user')
294 {
295 $arComponentParameters['PARAMETERS'][$name . '_' . $strFILTER] = [
296 'PARENT' => 'DATA_SOURCE',
297 'NAME' => GetMessage('SEARCH_CP_SOCIALNETWORK_USER'),
298 'TYPE' => 'STRING',
299 'DEFAULT' => '',
300 ];
301 }
302 }
303 }
304 }
305
306 protected static function _main($arParam)
307 {
308 if (is_array($arParam))
309 {
310 $arURL = [];
311 foreach ($arParam as $strURL)
312 {
313 $strURL = trim($strURL);
314 if ($strURL)
315 {
316 $arURL[] = $strURL . '%';
317 }
318 }
319
320 if (count($arURL) > 0)
321 {
322 return [
323 '=MODULE_ID' => 'main',
324 'URL' => $arURL,
325 ];
326 }
327 }
328 elseif (mb_strlen($arParam))
329 {
330 return [
331 '=MODULE_ID' => 'main',
332 'URL' => $arParam . '%',
333 ];
334 }
335
336 return [
337 '=MODULE_ID' => 'main',
338 'URL' => ['/%'],
339 ];
340 }
341
342 protected static function _forum($arParam)
343 {
344 if (is_array($arParam))
345 {
346 $arForum = [];
347 foreach ($arParam as $strForum)
348 {
349 if ($strForum != 'all')
350 {
351 $arForum[] = intval($strForum);
352 }
353 }
354
355 if (count($arForum) > 0)
356 {
357 return [
358 '=MODULE_ID' => 'forum',
359 'PARAM1' => $arForum,
360 ];
361 }
362 }
363 elseif ($arParam > 0)
364 {
365 return [
366 '=MODULE_ID' => 'forum',
367 'PARAM1' => intval($arParam),
368 ];
369 }
370
371 return [
372 '=MODULE_ID' => 'forum',
373 ];
374 }
375
376 protected static function _iblock($arParam, $strFILTER)
377 {
378 if (is_array($arParam))
379 {
380 $arIBlock = [];
381 foreach ($arParam as $strIBlock)
382 {
383 if ($strIBlock != 'all')
384 {
385 $arIBlock[] = intval($strIBlock);
386 }
387 }
388
389 if (count($arIBlock) > 0)
390 {
391 return [
392 '=MODULE_ID' => 'iblock',
393 'PARAM1' => mb_substr($strFILTER, 7),
394 'PARAM2' => $arIBlock,
395 ];
396 }
397 }
398 elseif ($arParam > 0)
399 {
400 return [
401 '=MODULE_ID' => 'iblock',
402 'PARAM1' => mb_substr($strFILTER, 7),
403 'PARAM2' => intval($arParam),
404 ];
405 }
406
407 return [
408 '=MODULE_ID' => 'iblock',
409 'PARAM1' => mb_substr($strFILTER, 7),
410 ];
411 }
412
413 protected static function _blog($arParam)
414 {
415 if (is_array($arParam))
416 {
417 $arBlog = [];
418 foreach ($arParam as $strBlog)
419 {
420 if ($strBlog != 'all')
421 {
422 $arBlog[] = intval($strBlog);
423 }
424 }
425
426 if (count($arBlog) > 0)
427 {
428 return [
429 '=MODULE_ID' => 'blog',
430 'PARAM1' => 'POST',
431 'PARAM2' => $arBlog,
432 ];
433 }
434 }
435 elseif ($arParam > 0)
436 {
437 return [
438 '=MODULE_ID' => 'blog',
439 'PARAM1' => 'POST',
440 'PARAM2' => intval($arParam),
441 ];
442 }
443
444 return [
445 '=MODULE_ID' => 'blog',
446 '!=PARAM1' => 'MICROBLOG',
447 ];
448 }
449
450 protected static function _socialnetwork($arParam)
451 {
452 if (is_array($arParam))
453 {
454 $arSCGroups = [];
455 foreach ($arParam as $strSCGroup)
456 {
457 if ($strSCGroup != 'all')
458 {
459 $arSCGroups[] = intval($strSCGroup);
460 }
461 }
462
463 if (count($arSCGroups) > 0)
464 {
465 return [
466 'PARAMS' => ['socnet_group' => $arSCGroups],
467 'USE_TF_FILTER' => false,
468 ];
469 }
470 }
471 elseif ($arParam > 0)
472 {
473 return [
474 'PARAMS' => ['socnet_group' => intval($arParam)],
475 ];
476 }
477
478 return [
479 '=MODULE_ID' => 'socialnetwork',
480 'PARAMS' => ['entity' => 'socnet_group'],
481 ];
482 }
483
484 protected static function _socialnetwork_user($arParam)
485 {
486 $intSCUser = intval($arParam);
487 if ($intSCUser > 0)
488 {
489 return [
490 'PARAMS' => ['socnet_user' => $intSCUser],
491 'USE_TF_FILTER' => false,
492 ];
493 }
494 else
495 {
496 return [
497 '=MODULE_ID' => 'socialnetwork',
498 ];
499 }
500 }
501}
$arParams
Определения access_dialog.php:21
static GetList($arOrder=Array("SORT"=>"ASC"), $arFilter=Array(), $arAddParams=array())
Определения forum_new.php:796
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения blog.php:249
static GetList($arOrder=array("SORT"=> "ASC"), $arFilter=array())
Определения iblocktype.php:53
static GetByIDLang($ID, $LID, $bFindAny=true)
Определения iblocktype.php:274
static _forum($arParam)
Определения comp_parameters.php:342
static _iblock($arParam, $strFILTER)
Определения comp_parameters.php:376
static ConvertParamsToFilter($arParams, $strFilterParamName)
Определения comp_parameters.php:6
static _socialnetwork_user($arParam)
Определения comp_parameters.php:484
static GetFilterDropDown($bFilter=false)
Определения comp_parameters.php:81
static AddFilterParams(&$arComponentParameters, $arCurrentValues, $name, $parent, $MULTIPLE='Y')
Определения comp_parameters.php:169
static GetModulesList()
Определения comp_parameters.php:145
static _blog($arParam)
Определения comp_parameters.php:413
static _socialnetwork($arParam)
Определения comp_parameters.php:450
static _main($arParam)
Определения comp_parameters.php:306
$arr
Определения file_new.php:624
$result
Определения get_property_values.php:14
IsModuleInstalled($module_id)
Определения tools.php:5301
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$name
Определения menu_edit.php:35
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$ar
Определения options.php:199
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
$arIBlock['PROPERTY']
Определения yandex_detail.php:172