• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/uf/forummessageconnector.php
  • Класс: BitrixDiskUfForumMessageConnector
  • Вызов: ForumMessageConnector::getDataToShowForUser
public function getDataToShowForUser(int $userId)
{
	$return = null;
	if(($res = $this->getDataToCheck($this->entityId)) && !empty($res))
	{
		list($message, $topic, $forum) = $res;
		$return = array(
			'TITLE' => Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE01"),
			'DETAIL_URL' => CForumNew::preparePath2Message(
				$forum["PATH2FORUM_MESSAGE"],
				array(
					"FORUM_ID" => $message["FORUM_ID"],
					"TOPIC_ID" => $message["TOPIC_ID"],
					"MESSAGE_ID" => $message["ID"],
					"SOCNET_GROUP_ID" => $topic["SOCNET_GROUP_ID"],
					"OWNER_ID" => $topic["OWNER_ID"],
					"PARAM1" => $message["PARAM1"],
					"PARAM2" => $message["PARAM2"])),
			'DESCRIPTION' => ($topic['TITLE'] == $topic['XML_ID'] ? '' : $topic["TITLE"]),
			'MEMBERS' => array(),
			'DUPLICATE_TO_SOCNET' => "N"
		);
		if (
			($topic["SOCNET_GROUP_ID"] > 0 || $topic["OWNER_ID"] > 0)
			&& $message["NEW_TOPIC"] == "Y"
			&& Loader::includeModule("socialnetwork")
			&& (
				$res = CSocNetLog::getList(
					array("ID" => "DESC"),
					array("SOURCE_ID" => $message["ID"], "EVENT_ID" => "forum"),
					false,
					false,
					array("ID", "URL", "ENTITY_TYPE", "ENTITY_ID", "LOG_ID")
				)->fetch()
			)
			&&
			$res
		)
		{
			$return["TITLE"] = ($topic["SOCNET_GROUP_ID"] > 0 ?
				Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE08") :
				Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE09"));
			$return["DETAIL_URL"] = (empty($res["URL"]) ?
				CComponentEngine::makePathFromTemplate(
					COption::getOptionString("socialnetwork", "log_entry_page", false, SITE_ID),
					array("log_id" => $res["ID"])
				) : $res["URL"]);
			if (mb_strpos($return["DETAIL_URL"], "#GROUPS_PATH#") !== false)
			{
				$tmp = CSocNetLogTools::processPath(array("URL" => $return["DETAIL_URL"]), $userId);
				$return["DETAIL_URL"] = $tmp["URLS"]["URL"];
			}
			$return['DUPLICATE_TO_SOCNET'] = "Y";
			$return["ENTITY_TYPE"] = $res["ENTITY_TYPE"];
			$return["ENTITY_ID"] = $res["ENTITY_ID"];
			$return["EVENT_ID"] = "forum";
			$return["SOURCE_ID"] = $message["ID"];
			$return["LOG_ID"] = $res["LOG_ID"];
			$return["MODULE_ID"] = "forum";
		}
		else if(!empty($topic["XML_ID"]) || $topic["SOCNET_GROUP_ID"] > 0 || $topic["OWNER_ID"] > 0)
		{
			$entityId = mb_substr($topic["XML_ID"], (mb_strrpos($topic["XML_ID"], "_") + 1));
			$entityType = mb_substr($topic["XML_ID"], 0, mb_strrpos($topic["XML_ID"], "_"));
			$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE02");
			if ((
					in_array($entityType, array("FORUM", "TASK", "EVENT", "IBLOCK", "TIMEMAN_ENTRY", "TIMEMAN", "TIMEMAN_REPORT"))
					|| $topic["SOCNET_GROUP_ID"] > 0
					|| $topic["OWNER_ID"] > 0
				)
				&&
				Loader::includeModule("socialnetwork")
				&&
				(
					$res = CSocNetLogComments::getList(
						array("ID" => "DESC"),
						array("SOURCE_ID" => $message["ID"], "EVENT_ID" => array(
							"calendar_comment",
							"commondocs_comment",
							"files_comment",
							"forum",
							"news_comment",
							"photo_comment",
							"tasks_comment",
							"wiki_comment",
							"report_comment",
							"timeman_entry_comment"
						)),
						false,
						false,
						array("ID", "SOURCE_ID", "LOG_ID", "EVENT_ID", "ENTITY_TYPE", "ENTITY_ID", "URL", "MODULE_ID")
					)->fetch()
				)
				&&
				$res
			)
			{
				$return["DETAIL_URL"] = (empty($res["URL"]) ?
					CComponentEngine::makePathFromTemplate(
						COption::getOptionString("socialnetwork", "log_entry_page", false, SITE_ID),
						array("log_id" => $res["LOG_ID"])
					)."?commentId=".$res["ID"]
					: $res["URL"]);
				if (mb_strpos($return["DETAIL_URL"], "#GROUPS_PATH#") !== false)
				{
					$tmp = CSocNetLogTools::processPath(array("URL" => $return["DETAIL_URL"]), $userId);
					$return["DETAIL_URL"] = $tmp["URLS"]["URL"];
				}

				switch ($res["EVENT_ID"])
				{
					case "tasks_comment":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE03");
						if(Loader::includeModule("tasks"))
						{
							$connector = new BitrixTasksIntegrationDiskConnectorTask($entityId);
							$subData = $connector->tryToGetDataToShowForUser($userId);
							if($subData["MEMBERS"])
							{
								$return["MEMBERS"] = $subData["MEMBERS"];
							}
						}
						break;
					case "calendar_comment":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE04");
						$return["DETAIL_URL"] = null;
						break;
					case "commondocs_comment":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE05");
						break;
					case "crm_activity_add_comment":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE06");
						break;
					case "files_comment":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE07");
						break;
					case "forum":
						$return["TITLE"] = ($topic["SOCNET_GROUP_ID"] > 0 ?
							Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE08") :
							Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE09"));
						break;
					case "news_comment":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE10");
						break;
					case "photo_comment":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE11");
						break;
					case "wiki_comment":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE12");
						break;
					case "report_comment":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE13");
						break;
					case "timeman_entry_comment":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE14");
						break;
				}
				$return['DUPLICATE_TO_SOCNET'] = "Y";
				$return["ENTITY_TYPE"] = $res["ENTITY_TYPE"];
				$return["ENTITY_ID"] = $res["ENTITY_ID"];
				$return["EVENT_ID"] = $res["EVENT_ID"];
				$return["SOURCE_ID"] = $res["SOURCE_ID"];
				$return["LOG_ID"] = $res["LOG_ID"];
				$return["MODULE_ID"] = $res["MODULE_ID"];
			}
			else
			{
				$return["DETAIL_URL"] = CForumNew::preparePath2Message(
					$forum["PATH2FORUM_MESSAGE"],
					array(
						"FORUM_ID" => $message["FORUM_ID"],
						"TOPIC_ID" => $message["TOPIC_ID"],
						"MESSAGE_ID" => $message["ID"],
						"SOCNET_GROUP_ID" => $topic["SOCNET_GROUP_ID"],
						"OWNER_ID" => $topic["OWNER_ID"],
						"PARAM1" => $message["PARAM1"],
						"PARAM2" => $entityId));
				switch ($entityType)
				{
					case "EVENT":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE04");
						break;
					case "TASK":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE03");
						break;
					case "IBLOCK":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE15");
						break;
					case "TIMEMAN_ENTRY":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE14");
						break;
					case "TIMEMAN":
					case "TIMEMAN_REPORT":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE13");
						break;
					case "MEETING":
						$return["TITLE"] = Loc::getMessage("DISK_UF_FORUM_MESSAGE_CONNECTOR_MESSAGE16");
						break;
				}
			}
		}
	}
	return $return;
}