• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/classes/general/timeman_report_full.php
  • Класс: CReportNotifications
  • Вызов: CReportNotifications::AddComment_Report_Forum
static function AddComment_Report_Forum($arFields,$FORUM_ID,$arLog)
{
	global $USER, $USER_FIELD_MANAGER;
	$mess_id = false;
	$dbReport = CTimeManReportFull::GetByID($arLog["SOURCE_ID"]);
	$arReport = $dbReport->Fetch();

	if(CModule::IncludeModule("forum") && $arReport)
	{
		$ufFileID = array();
		$ufDocID = array();

		if(!$userName = trim($USER->GetFormattedName(false)))
			$userName = $USER->GetLogin();

		if ($arReport["FORUM_TOPIC_ID"])
		{
			if (!CForumTopic::GetByID($arReport["FORUM_TOPIC_ID"]))
			{
				$arReport["FORUM_TOPIC_ID"] = false;
			}
		}

		if (!$arReport["FORUM_TOPIC_ID"])
		{
			$arTopicFields = Array(
				"TITLE"=>$arReport["DATE_FROM"]."-".$arReport["DATE_TO"],
				"USER_START_ID"=>$arFields["USER_ID"],
				"STATE"=>"Y",
				"FORUM_ID"=>$FORUM_ID,
				"USER_START_NAME"=>$userName,
				"START_DATE"=>ConvertTimeStamp(time(),"FULL"),
				"POSTS"=>0,
				"VIEWS"=>0,
				"APPROVED"=>"Y",
				"LAST_POSTER_NAME"=>$userName,
				"LAST_POST_DATE"=>ConvertTimeStamp(time(),"FULL"),
				"LAST_MESSAGE_ID"=>0,
				"XML_ID"=>"TIMEMAN_REPORT_".$arLog["SOURCE_ID"]
			);
			$TOPIC_ID = CForumTopic::Add($arTopicFields);
			if($TOPIC_ID)
				CTimeManReportFull::Update($arLog["SOURCE_ID"],Array("FORUM_TOPIC_ID"=>$TOPIC_ID));
		}
		else
			$TOPIC_ID = $arReport["FORUM_TOPIC_ID"];

		if ($TOPIC_ID)
		{
			$arFieldsP = array(
				"AUTHOR_ID" => $arFields["USER_ID"],
				"AUTHOR_NAME" => $userName,
				"POST_MESSAGE" => $arFields["TEXT_MESSAGE"],
				"FORUM_ID" => $FORUM_ID,
				"TOPIC_ID" =>$TOPIC_ID,
				"APPROVED" => "Y",
				"PARAM2" => $arLog["SOURCE_ID"]
			);

			$USER_FIELD_MANAGER->EditFormAddFields("SONET_COMMENT", $arTmp);
			if (is_array($arTmp))
			{
				if (array_key_exists("UF_SONET_COM_DOC", $arTmp))
					$GLOBALS["UF_FORUM_MESSAGE_DOC"] = $arTmp["UF_SONET_COM_DOC"];
				elseif (array_key_exists("UF_SONET_COM_FILE", $arTmp))
				{
					$arFieldsP["FILES"] = array();
					foreach($arTmp["UF_SONET_COM_FILE"] as $file_id)
						$arFieldsP["FILES"][] = array("FILE_ID" => $file_id);
				}
			}

			$USER_FIELD_MANAGER->EditFormAddFields("FORUM_MESSAGE", $arFieldsP);

			$mess_id = CForumMessage::Add($arFieldsP);

			// get UF DOC value and FILE_ID there
			if ($mess_id > 0)
			{
				$dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $mess_id));
				while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch())
					$ufFileID[] = $arAddedMessageFiles["FILE_ID"];

				$ufDocID = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $mess_id, LANGUAGE_ID);
			}
		}
	}

	return Array(
		"RATING_TYPE_ID" => "FORUM_POST",
		"RATING_ENTITY_ID" => $mess_id,
		"SOURCE_ID" => $mess_id,
		"UF" => array(
			"FILE" => $ufFileID,
			"DOC" => $ufDocID
		)
	);

}