• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/component/userprofile/profilepost.php
  • Класс: BitrixIntranetComponentUserProfileProfilePost
  • Вызов: ProfilePost::sendProfileBlogPostFormAction
public function sendProfileBlogPostFormAction(array $params = [])
{
	global $USER, $USER_FIELD_MANAGER;

	$result = false;

	$permissions = $this->getPermissions();

	$title = '';
	$text = (!empty($params['text']) ? trim($params['text']) : '');
	$additionalData = (!empty($params['additionalData']) ? $params['additionalData'] : []);

	if ($text == '')
	{
		return $result;
	}

	if (
		!empty($additionalData['UF_BLOG_POST_FILE'])
		&& is_array($additionalData['UF_BLOG_POST_FILE'])
	)
	{
		$additionalData['UF_BLOG_POST_FILE'] = array_filter($additionalData['UF_BLOG_POST_FILE'], function($val) { return !empty($val); });
	}

	if (
		(
			$permissions['edit']
			|| $USER->getId() == $this->getProfileId()
		)
		&& Loader::includeModule('blog')
	)
	{
		$postFilesList = [];

		$action = 'add';
		if ($postId = $this->getPostId())
		{
			$action = 'update';
		}

		$blogParams = [
			"GROUP_ID" => Option::get("socialnetwork", "userbloggroup_id", false, SITE_ID),
			"SITE_ID" => SITE_ID,
			"USER_ID" => $this->getProfileId(),
			"CREATE" => "Y",
		];
		if ($action == 'update')
		{
			$blogParams["CREATE"] = "Y";
		}
		$blog = BitrixBlogItemBlog::getByUser($blogParams);

		if (!$blog)
		{
			return $result;
		}

		$connection = BitrixMainApplication::getConnection();
		$helper = $connection->getSqlHelper();

		if ($postId)
		{
			$postUF = $USER_FIELD_MANAGER->GetUserFields("BLOG_POST", $postId, LANGUAGE_ID);
			if (
				!empty($postUF['UF_BLOG_POST_FILE'])
				&& !empty($postUF['UF_BLOG_POST_FILE']['VALUE'])
			)
			{
				$postFilesList = $postUF['UF_BLOG_POST_FILE']['VALUE'];
			}

			$updateFields = $this->buildBlogPostFields([
				'title' => $title,
				'text' => $text,
				'files' => $additionalData['UF_BLOG_POST_FILE']
			]);

			$result = CBlogPost::update($postId, $updateFields);
		}
		else
		{
			$addFields = $this->buildBlogPostFields([
				'title' => $title,
				'text' => $text,
				'files' => $additionalData['UF_BLOG_POST_FILE']
			]);
			$addFields = array_merge($addFields, [
				'BLOG_ID' => $blog["ID"],
				'AUTHOR_ID' => $this->getProfileId(),
				'=DATE_CREATE' => $helper->getCurrentDateTimeFunction(),
				'=DATE_PUBLISH' => $helper->getCurrentDateTimeFunction(),
				'DETAIL_TEXT_TYPE' => 'text',
				'PUBLISH_STATUS' => BLOG_PUBLISH_STATUS_PUBLISH,
				'HAS_IMAGES' => 'N',
				'HAS_TAGS' => 'N',
				'HAS_SOCNET_ALL' => 'N',
				'SOCNET_RIGHTS' => [ 'UP'.$this->getProfileId() ]
			]);

			$postId = CBlogPost::add($addFields);
			$result = $postId;
		}

		if (
			$result
			&& (
				!empty($additionalData['UF_BLOG_POST_FILE'])
				|| !empty($postFilesList)
			)
		)
		{
			CBlogPost::update($postId, [
				"HAS_PROPS" => (
					!empty($additionalData['UF_BLOG_POST_FILE'])
						? 'Y'
						: 'N'
				),
				"UF_BLOG_POST_FILE" => (
					!empty($additionalData['UF_BLOG_POST_FILE'])
						? $additionalData['UF_BLOG_POST_FILE']
						: []
				)
			]);
		}
	}

	return $result;
}