AnonSec Shell
Server IP : 85.193.89.191  /  Your IP : 3.15.14.86
Web Server : Apache
System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User : bitrix ( 600)
PHP Version : 8.1.27
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/bitrix/www/bitrix/modules/socialnetwork/lib/commentaux/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/bitrix/www/bitrix/modules/socialnetwork/lib/commentaux/taskinfo.php
<?php

namespace Bitrix\Socialnetwork\CommentAux;

use Bitrix\Forum\MessageTable;
use Bitrix\Main\Loader;
use Bitrix\Main\Web\Json;
use Bitrix\Tasks\Comments\Task\CommentPoster;

final class TaskInfo extends Base
{
	public const TYPE = 'TASKINFO';
	public const POST_TEXT = 'commentAuxTaskInfo';

	protected static $forumMessageTableClass = MessageTable::class;

	public function getParamsFromFields($fields = []): array
	{
		static $cacheData = [];

		$params = [];

		if (!empty($fields['SHARE_DEST'])) // old
		{
			$paramsList = unserialize(htmlspecialcharsback($fields['SHARE_DEST']), [ 'allowed_classes' => false ]);
			if (!empty($paramsList))
			{
				$params = $paramsList;
			}
			else
			{
				$paramsList = explode('|', $fields['SHARE_DEST']);
				if (!empty($paramsList))
				{
					foreach ($paramsList as $pair)
					{
						[ $key, $value ] = explode('=', $pair);
						if (isset($key, $value))
						{
							$params[$key] = $value;
						}
					}
				}
			}
		}
		elseif (
			!empty($fields['EVENT_ID'])
			&& in_array($fields['EVENT_ID'], [ 'tasks_comment', 'crm_activity_add_comment' ])
			&& !empty($fields['SOURCE_ID'])
			&& (int)$fields['SOURCE_ID'] > 0
			&& Loader::includeModule('forum')
		) // new
		{
			$messageId = (int)$fields['SOURCE_ID'];

			if (isset($cacheData[$messageId]))
			{
				$params = $cacheData[$messageId];
			}
			else
			{
				$forumPostLivefeedProvider = new \Bitrix\Socialnetwork\Livefeed\ForumPost();
				$commentData = $forumPostLivefeedProvider->getAuxCommentCachedData($messageId);

				if (
					!empty($commentData)
					&& isset($commentData['SERVICE_TYPE'])
					&& $commentData['SERVICE_TYPE'] === \Bitrix\Forum\Comments\Service\Manager::TYPE_TASK_INFO
					&& (
						!empty($commentData['SERVICE_DATA'])
						|| !empty($commentData['POST_MESSAGE'])
					)
				)
				{
					try
					{
						$messageParams = Json::decode(!empty($commentData['SERVICE_DATA']) ? $commentData['SERVICE_DATA'] : $commentData['POST_MESSAGE']);
						if (!is_array($messageParams))
						{
							$messageParams = [];
						}
					}
					catch(\Bitrix\Main\ArgumentException $e)
					{
						$messageParams = [];
					}

					$cacheData[$messageId] = $params = $messageParams;
				}
				else
				{
					$res = self::$forumMessageTableClass::getList([
						'filter' => [
							'=ID' => $messageId
						],
						'select' => ['TOPIC_ID']
					]);
					if (
						($forumMessageFields = $res->fetch())
						&& !empty($forumMessageFields['TOPIC_ID'])
					)
					{
						$res = self::$forumMessageTableClass::getList([
							'filter' => [
								'=TOPIC_ID' => (int)$forumMessageFields['TOPIC_ID']
							],
							'select' => [ 'ID', 'SERVICE_DATA', 'POST_MESSAGE' ]
						]);
						while (
							($forumMessageFields = $res->fetch())
							&& (
								!empty($forumMessageFields['SERVICE_DATA'])
								|| !empty($forumMessageFields['POST_MESSAGE'])
							)
						)
						{
							try
							{
								$messageParams = Json::decode(!empty($forumMessageFields['SERVICE_DATA']) ? $forumMessageFields['SERVICE_DATA'] : $forumMessageFields['POST_MESSAGE']);
								if (!is_array($messageParams))
								{
									$messageParams = [];
								}
							}
							catch(\Bitrix\Main\ArgumentException $e)
							{
								$messageParams = [];
							}

							$cacheData[$forumMessageFields['ID']] = $messageParams;
						}

						$params = ($cacheData[$messageId] ?? []);
					}
				}
			}
		}

		return $params;
	}

	public function getText(): string
	{
		$result = '';
		$params = $this->params;

		if (
			isset($params['auxData'], $params['text'])
			&& $params['text'] <> ''
		)
		{
			$result = $params['text'];
		}
		elseif(
			is_array($params)
			&& !empty($params)
			&& Loader::includeModule('tasks')
		)
		{
			$result = htmlspecialcharsEx(CommentPoster::getCommentText($params, $this->getOptions()));
			$parser = new \CTextParser();

			$parser->allow = [
				'HTML' => 'N',
				'ANCHOR' => 'Y',
				'USER' => 'Y',
			];

			$result = $parser->convertText($result);
		}

		return $result;
	}

	public function canDelete(): bool
	{
		return false;
	}

	public function checkRecalcNeeded($fields, $params): bool
	{
		return true;
	}

	protected function getRatingNotificationEntityMessage(): string
	{
		$CBXSanitizer = new \CBXSanitizer;
		$CBXSanitizer->delAllTags();
		return strip_tags(str_replace('<br>', ' ', $CBXSanitizer->sanitizeHtml($this->getText())));
	}

	protected function getRatingNotificationNotigyTag(array $ratingVoteParams = [], array $fields = []): string
	{
		return 'RATING|' . ($ratingVoteParams['VALUE'] >= 0 ? '' : 'DL|') . 'FORUM_POST|' . $fields['SOURCE_ID'];
	}
}

Anon7 - 2022
AnonSec Team