• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/controller/livefeed/blogpost/important.php
  • Класс: BitrixSocialnetworkControllerLivefeedBlogPostImportant
  • Вызов: Important::getUsersAction
public function getUsersAction(array $params = [])
{
	global $CACHE_MANAGER;

	$result = [
		'post_id' => $params['POST_ID'],
		'items' => [],
		'StatusPage' => "done",
		'RecordCount' => 0
	];

	$pageSize = 10;
	$postId = (isset($params['POST_ID']) && (int)$params['POST_ID'] > 0 ? (int)$params['POST_ID'] : 0);
	$propertyName = (isset($params['NAME']) && $params['NAME'] <> '' ? trim($params['NAME']) : 'BLOG_POST_IMPRTNT');
	$propertyValue = (isset($params['VALUE']) && $params['VALUE'] <> '' ? trim($params['VALUE']) : 'Y');
	$pathToUser = (isset($params['PATH_TO_USER']) && $params['PATH_TO_USER'] <> '' ? $params['PATH_TO_USER'] : SITE_DIR.'company/personal/user/#USER_ID#/');
	$nameTemplate = (isset($params['NAME_TEMPLATE']) && $params['NAME_TEMPLATE'] <> '' ? $params['NAME_TEMPLATE'] :  CSite::getNameFormat(false));
	$pageNumber = (isset($params['PAGE_NUMBER']) && intval($params['PAGE_NUMBER']) > 0 ? intval($params['PAGE_NUMBER']) : 1);
	$avatarSize = (isset($params['AVATAR_SIZE']) && (int)$params['AVATAR_SIZE'] > 0 ? (int)$params['AVATAR_SIZE'] : 21);

	if ($postId <= 0)
	{
		$this->addError(new Error(Loc::getMessage('SONET_CONTROLLER_LIVEFEED_BLOGPOST_IMPORTANT_POST_ID_EMPTY'), 'SONET_CONTROLLER_LIVEFEED_BLOGPOST_IMPORTANT_POST_ID_EMPTY'));
		return null;
	}

	$cacheTime = ($pageNumber >= 2 ? 0 : 600);

	$cache = new CPHPCache();
	$cacheId = 'blog_post_param_'.serialize([
		$pageSize,
		$postId,
		$propertyName,
		$pageNumber,
		$propertyValue,
		$nameTemplate,
		$pathToUser,
		$avatarSize
	]);

	$cachePath = $CACHE_MANAGER->getCompCachePath(CComponentEngine::makeComponentPath('socialnetwork.blog.blog')).'/'.$postId;

	$result = (
		$cacheTime > 0
		&& $cache->initCache($cacheTime, $cacheId, $cachePath)
			? $cache->getVars()
			: []
	);

	if (
		(
			!is_array($result)
			|| empty($result)
		)
		&& Loader::includeModule('blog')
	)
	{
		$mailInstalled = ModuleManager::isModuleInstalled('mail');
		$extranetInstalled = ModuleManager::isModuleInstalled('extranet');
		$userIdList = [];

		$res = CBlogUserOptions::getList(
			[
				'RANK' => 'DESC',
				'OWNER_ID' => $this->getCurrentUser()->getId()
			],
			[
				'POST_ID' => $postId,
				'NAME' => $propertyName,
				'VALUE' => $propertyValue,
				'USER_ACTIVE' => 'Y'
			],
			[
				'iNumPage' => $pageNumber,
				'bDescPageNumbering' => false,
				'nPageSize' => $pageSize,
				'bShowAll' => false,
				'SELECT' => [ 'USER_ID', 'USER_NAME', 'USER_LAST_NAME', 'USER_SECOND_NAME', 'USER_LOGIN', 'USER_PERSONAL_PHOTO' ]
			]
		);

		$result['items'] = [];
		if ($res && ($userOptionFields = $res->fetch()))
		{
			$result['StatusPage'] = (
				(
					$res->NavPageNomer >= $res->NavPageCount
					|| $pageSize > $res->NavRecordCount
				)
					? 'done'
					: 'continue'
			);
			$result['RecordCount'] = $res->NavRecordCount;
			if ($pageNumber <= $res->NavPageCount)
			{
				do {
					$userFields = [
						'ID' =>  $userOptionFields['USER_ID'],
						'PHOTO' => '',
						'PHOTO_SRC' => '',
						'FULL_NAME' => CUser::formatName(
							$nameTemplate,
							[
								'NAME' => $userOptionFields['USER_NAME'],
								'LAST_NAME' => $userOptionFields['USER_LAST_NAME'],
								'SECOND_NAME' => $userOptionFields['USER_SECOND_NAME'],
								'LOGIN' => $userOptionFields['USER_LOGIN']
							]
						),
						'URL' => CUtil::jsEscape(
							CComponentEngine::makePathFromTemplate(
								$pathToUser,
								[
									'UID' => $userOptionFields['USER_ID'],
									'user_id' => $userOptionFields['USER_ID'],
									'USER_ID' => $userOptionFields['USER_ID']
								]
							)
						),
						'TYPE' => ''
					];
					if (array_key_exists('USER_PERSONAL_PHOTO', $userOptionFields))
					{
						$fileFields = CFile::resizeImageGet(
							$userOptionFields['USER_PERSONAL_PHOTO'],
							[ 'width' => $avatarSize, 'height' => $avatarSize ],
							BX_RESIZE_IMAGE_EXACT,
							false,
							false,
							true
						);
						$userFields['PHOTO_SRC'] = ($fileFields['src'] ?? '');
						$userFields["PHOTO"] = CFile::showImage(
							($fileFields['src'] ?? ''),
							21,
							21,
							'border=0'
						);
					}

					$result['items'][$userFields['ID']] = $userFields;
					$userIdList[] = $userFields['ID'];
				} while ($userOptionFields = $res->fetch());

				if (
					!empty($userIdList)
					&& ($mailInstalled || $extranetInstalled)
				)
				{
					$select = [];
					if ($mailInstalled)
					{
						$select["FIELDS"] = [ 'ID', 'EXTERNAL_AUTH_ID' ];
					}
					if ($extranetInstalled)
					{
						$select["SELECT"] = [ 'UF_DEPARTMENT' ];
					}

					$res = CUser::getList(
						"ID",
						"ASC",
						[ 'ID' => implode("|", $userIdList) ],
						$select
					);
					while($userFields = $res->fetch())
					{
						if (
							$mailInstalled
							&& $userFields['EXTERNAL_AUTH_ID'] == 'email'
						)
						{
							$result['items'][$userFields['ID']]['TYPE'] = 'mail';
						}
						elseif (
							$extranetInstalled
							&& (
								empty($userFields['UF_DEPARTMENT'])
								|| intval($userFields['UF_DEPARTMENT'][0]) <= 0
							)
						)
						{
							$result['items'][$userFields['ID']]['TYPE'] = 'extranet';
						}
					}
				}
			}
		}
	}

	return $result;
}