10use Bitrix\Socialnetwork\UserTagTable;
22 if (UserIndexTable::getEntity()->fullTextIndexEnabled(
'SEARCH_USER_CONTENT'))
25 $findDepartmentOnly =
false;
27 if (array_key_exists(
'FIND',
$fields))
31 if (
Search\Content::isIntegerToken($find))
42 $validFields = Array(
'ID' => 1,
'NAME' => 1,
'LAST_NAME' => 1,
'SECOND_NAME' => 1,
'WORK_POSITION' => 1);
45 if (isset($validFields[
$key]) && $validFields[
$key])
47 if (
Search\Content::isIntegerToken($value))
49 $find .=
' '.Search\Content::prepareIntegerToken($value);
53 $find .=
' '.Search\Content::prepareStringToken($value);
59 if (array_key_exists(
'UF_DEPARTMENT_NAME',
$fields))
63 $findDepartmentOnly =
true;
65 if (
Search\Content::isIntegerToken(
$fields[
'UF_DEPARTMENT_NAME']))
67 $find .=
' '.Search\Content::prepareIntegerToken(
$fields[
'UF_DEPARTMENT_NAME']);
71 $find .=
' '.Search\Content::prepareStringToken(
$fields[
'UF_DEPARTMENT_NAME']);
77 if (
Search\Content::canUseFulltextSearch($find,
Search\Content::TYPE_MIXED))
79 $fiendField = $findDepartmentOnly?
'*INDEX.SEARCH_DEPARTMENT_CONTENT':
'*INDEX.SEARCH_USER_CONTENT';
86 if (array_key_exists(
'FIND',
$fields))
89 $find = explode(
' ', $find);
90 foreach ($find as $findWord)
97 $intResult = Array(
'LOGIC' =>
'OR');
98 $validFields = Array(
'ID',
'NAME',
'LAST_NAME',
'SECOND_NAME',
'WORK_POSITION',
'UF_DEPARTMENT_NAME');
99 foreach ($validFields as
$key)
103 $intResult[
'=ID'] = intval($findWord);
107 $intResult[
'%=INDEX.'.$key] = $helper->forSql($findWord).
'%';
120 $validFields = Array(
'ID' => 1,
'NAME' => 1,
'LAST_NAME' => 1,
'SECOND_NAME' => 1,
'WORK_POSITION' => 1,
'UF_DEPARTMENT_NAME' => 1);
127 if (isset($validFields[
$key]))
131 $result[
'=ID'] = intval($value);
135 $result[
'%=INDEX.'.$key] = $helper->forSql($value).
'%';
153 if (UserIndexTable::getEntity()->fullTextIndexEnabled(
'SEARCH_ADMIN_CONTENT'))
156 if (array_key_exists(
'FIND',
$fields))
160 if (
Search\Content::isIntegerToken($find))
171 $validFields = Array(
'ID' => 1,
'NAME' => 1,
'LAST_NAME' => 1,
'SECOND_NAME' => 1,
'WORK_POSITION' => 1,
'EMAIL' => 1,
'LOGIN' => 1);
174 if (isset($validFields[
$key]) && $validFields[
$key])
176 if (
Search\Content::isIntegerToken($value))
178 $find .=
' '.Search\Content::prepareIntegerToken($value);
182 $find .=
' '.Search\Content::prepareStringToken($value);
189 if (
Search\Content::canUseFulltextSearch($find,
Search\Content::TYPE_MIXED))
191 $result[
'*INDEX.SEARCH_ADMIN_CONTENT'] = $find;
197 if (array_key_exists(
'FIND',
$fields))
200 $find = explode(
' ', $find);
201 foreach ($find as $findWord)
208 $intResult = Array(
'LOGIC' =>
'OR');
209 $validFields = Array(
'ID',
'NAME',
'LAST_NAME',
'SECOND_NAME',
'WORK_POSITION',
'LOGIN',
'EMAIL');
210 foreach ($validFields as
$key)
214 $intResult[
'=ID'] = intval($findWord);
216 else if (
$key ==
'LOGIN' ||
$key ==
'EMAIL')
218 $intResult[
'%='.$key] = $helper->forSql($findWord).
'%';
222 $intResult[
'%=INDEX.'.$key] = $helper->forSql($findWord).
'%';
235 $validFields = Array(
'ID' => 1,
'NAME' => 1,
'LAST_NAME' => 1,
'SECOND_NAME' => 1,
'WORK_POSITION' => 1,
'LOGIN' => 1,
'EMAIL' => 1);
242 if (isset($validFields[
$key]))
246 $result[
'=ID'] = intval($value);
248 else if (
$key ==
'LOGIN' ||
$key ==
'EMAIL')
250 $result[
'%='.$key] = $helper->forSql($value).
'%';
254 $result[
'%=INDEX.'.$key] = $helper->forSql($value).
'%';
307 $cacheName =
'iblock_structure';
308 $cachePath =
'/bx/user/company/structure';
309 $iblockStructureId = Config\Option::get(
'intranet',
'iblock_structure', 0);
313 $companyStructure = Array();
314 $cache = Data\Cache::createInstance();
315 if ($cache->initCache($cacheTtl, $cacheName, $cachePath) &&
false)
317 $companyStructure = $cache->getVars();
325 $orm =
\Bitrix\Iblock\SectionTable::getList(Array(
'select' => Array(
'ID',
'NAME',
'DEPTH_LEVEL',
'IBLOCK_SECTION_ID'),
'filter' => Array(
'=IBLOCK_ID' => $iblockStructureId,
'=ACTIVE' =>
'Y',),));
326 while ($department = $orm->fetch())
328 $companyStructure[$department[
'ID']] = $department;
331 $taggedCache->startTagCache($cachePath);
332 $taggedCache->registerTag(
'iblock_id_'.$iblockStructureId);
333 $taggedCache->endTagCache();
335 if ($cache->startDataCache())
337 $cache->endDataCache($companyStructure);
341 if (is_array($departmentIds) && !empty($departmentIds))
343 foreach ($departmentIds as $id)
345 if (!array_key_exists($id, $companyStructure))
350 $result[] = $companyStructure[$id];
359 static $countriesList =
null;
362 $value = (isset(
$params[
'VALUE']) ? intval(
$params[
'VALUE']) : 0);
368 if ($countriesList ===
null)
371 $countries = getCountryArray();
372 foreach($countries[
'reference_id'] as
$key => $countryId)
374 $countriesList[$countryId] = $countries[
'reference'][
$key];
378 if (isset($countriesList[$value]))
380 $result = $countriesList[$value];
390 static $supportedUserFieldTypeIDs = [
410 $userTypeMap = array_fill_keys($supportedUserFieldTypeIDs,
true);
411 foreach($ufList as
$key => $userField)
414 !isset($userTypeMap[$userField[
'USER_TYPE_ID']])
415 || $userField[
'EDIT_IN_LIST'] ===
"N"
416 || $userField[
'IS_SEARCHABLE'] !==
'Y'
419 unset($ufList[
$key]);
422 $ufList = self::postFilterFields($ufList);
425 foreach($ufList as $userField)
427 $ufValuesList[] = self::getUserFieldValue($userField);
430 return implode(
' ', $ufValuesList);
435 static $ufReserved = [
437 'UF_USER_CRM_ENTITY',
444 'UF_TM_ALLOWED_DELTA',
446 'UF_LAST_REPORT_DATE',
452 'UF_TM_MIN_DURATION',
458 'UF_BXDAVEX_CALSYNC',
460 'UF_UNREAD_MAIL_COUNT',
461 'UF_BXDAVEX_CNTSYNC',
462 'UF_BXDAVEX_MAILBOX',
466 'UF_VI_PHONE_PASSWORD'
469 foreach ($ufReserved as $ufId)
480 private static function getUserFieldValue(
array $userField)
484 $userTypeID = $userField[
'USER_TYPE_ID'] ??
'';
485 if($userTypeID ===
'boolean')
488 if(isset($userField[
'VALUE']) && (
bool)$userField[
'VALUE'] && isset($userField[
'EDIT_FORM_LABEL']))
490 $values[] = $userField[
'EDIT_FORM_LABEL'];
498 return implode(
' ', $values);
509 $res = UserTagTable::getList([
513 'select' => [
'NAME' ]
515 while($tagFields =
$res->fetch())
517 $tagsList[] = $tagFields[
'NAME'];
520 $result = implode(
' ', $tagsList);
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static getConnection($name="")
static includeModule($moduleName)
static isModuleInstalled($moduleName)
static getList(array $parameters=array())
static prepareIntegerToken($token)
static prepareStringToken($token)
static getUserGroupIds($userId)
static getTagsContent($userId)
static getUFContent($userId)
static getGroupIds($userId)
static getDepartmentName($departmentId)
static getUserSearchFilter(array $fields)
static getAdminSearchFilter(array $fields)
static getDepartmentNames($departmentIds)
static getCountryValue(array $params=[])
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
global $USER_FIELD_MANAGER
if(empty($signedUserToken)) $key
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']