static function __deprecated_Add(
$commentText,
$forumTopicId,
$forumId,
$nameTemplate,
$arTask,
$permissions,
$commentId,
$givenUserId,
$imageWidth,
$imageHeight,
$arSmiles,
$arForum,
$messagesPerPage,
$arUserGroupArray,
$backPage,
$strMsgAddComment,
$strMsgEditComment,
$strMsgNewTask,
$componentName,
&$outForumTopicId,
&$arErrorCodes,
&$outStrUrl,
$arFieldsAdditional = array()
)
{
global $DB;
if (is_array($arTask))
{
if ( ! array_key_exists('~TITLE', $arTask) )
{
$arTmpTask = $arTask;
foreach ($arTmpTask as $key => $value)
{
if (mb_substr($key, 0, 1) !== '~')
$arTask['~' . $key] = $arTmpTask[$key];
}
}
}
$MID = 0;
$TID = 0;
if (($forumTopicId > 0) && (CForumTopic::GetByID($forumTopicId) === false))
$forumTopicId = false;
if ($forumTopicId <= 0)
{
$arUserStart = array(
"ID" => intval($arTask["CREATED_BY"]),
"NAME" => $GLOBALS["FORUM_STATUS_NAME"]["guest"]
);
if ($arUserStart["ID"] > 0)
{
$res = array();
$db_res = CForumUser::GetListEx(
array(),
array("USER_ID" => $arTask["CREATED_BY"])
);
if ($db_res && $res = $db_res->Fetch())
{
$res["FORUM_USER_ID"] = intval($res["ID"]);
$res["ID"] = $res["USER_ID"];
}
else
{
$db_res = CUser::GetByID($arTask["CREATED_BY"]);
if ($db_res && $res = $db_res->Fetch())
{
$res["SHOW_NAME"] = COption::GetOptionString("forum", "USER_SHOW_NAME", "Y");
$res["USER_PROFILE"] = "N";
}
}
if (!empty($res))
{
$arUserStart = $res;
$sName = ($res["SHOW_NAME"] == "Y" ? trim(CUser::FormatName($nameTemplate, $res)) : "");
$arUserStart["NAME"] = (empty($sName) ? trim($res["LOGIN"]) : $sName);
}
}
$arUserStart["NAME"] = (empty($arUserStart["NAME"]) ? $GLOBALS["FORUM_STATUS_NAME"]["guest"] : $arUserStart["NAME"]);
$DB->StartTransaction();
$arFields = Array(
"TITLE" => $arTask["~TITLE"],
"FORUM_ID" => $forumId,
"USER_START_ID" => $arUserStart["ID"],
"USER_START_NAME" => $arUserStart["NAME"],
"LAST_POSTER_NAME" => $arUserStart["NAME"],
"APPROVED" => "Y",
"PERMISSION_EXTERNAL" => $permissions,
"PERMISSION" => $permissions,
"NAME_TEMPLATE" => $nameTemplate,
'XML_ID' => 'TASK_' . $arTask['ID']
);
$TID = CForumTopic::Add($arFields);
if (intval($TID) <= 0)
$arErrorCodes[] = array('code' => 'topic is not created');
else
{
$arFields = array(
"FORUM_TOPIC_ID" => $TID
);
$task = new CTasks();
$task->Update($arTask["ID"], $arFields);
}
if (!empty($arErrorCodes))
{
$DB->Rollback();
return false;
}
else
{
$DB->Commit();
}
}
$arFieldsG = array(
"POST_MESSAGE" => $commentText,
"AUTHOR_NAME" => '',
"AUTHOR_EMAIL" => $GLOBALS['USER']->GetEmail(),
"USE_SMILES" => NULL,
"PARAM2" => $arTask['ID'],
"TITLE" => $arTask["~TITLE"],
"PERMISSION_EXTERNAL" => $permissions,
"PERMISSION" => $permissions,
);
// UF_* forwarding
if(is_array($arFieldsAdditional))
{
foreach($arFieldsAdditional as $field => $value)
{
if(mb_strlen($field) && mb_substr($field, 0, 3) == 'UF_')
{
$arFieldsG[$field] = $value;
$GLOBALS[$field] = $value; // strange behaviour required for ForumMessageAdd() to handle UF_* properly
}
}
}
if (!empty($_FILES["REVIEW_ATTACH_IMG"]))
{
$arFieldsG["ATTACH_IMG"] = $_FILES["REVIEW_ATTACH_IMG"];
}
else
{
$arFiles = array();
if (!empty($_REQUEST["FILES"]))
{
foreach ($_REQUEST["FILES"] as $key)
{
$arFiles[$key] = array("FILE_ID" => $key);
if (!in_array($key, $_REQUEST["FILES_TO_UPLOAD"]))
{
$arFiles[$key]["del"] = "Y";
}
}
}
if (!empty($_FILES))
{
$res = array();
foreach ($_FILES as $key => $val)
{
if (mb_substr($key, 0, mb_strlen("FILE_NEW")) == "FILE_NEW" && !empty($val["name"]))
{
$arFiles[] = $_FILES[$key];
}
}
}
if (!empty($arFiles))
{
$arFieldsG["FILES"] = $arFiles;
}
}
$TOPIC_ID = ($forumTopicId > 0 ? $forumTopicId : $TID);
$MESSAGE_ID = 0;
$MESSAGE_TYPE = $TOPIC_ID > 0 ? "REPLY" : "NEW";
if (COption::GetOptionString("tasks", "task_comment_allow_edit") && $MESSAGE_ID = intval($commentId))
{
$MESSAGE_TYPE = "EDIT";
}
$strErrorMessage = '';
$strOKMessage = '';
$MID = ForumAddMessage($MESSAGE_TYPE, $forumId, $TOPIC_ID, $MESSAGE_ID,
$arFieldsG, $strErrorMessage, $strOKMessage, false,
$_POST["captcha_word"], 0, $_POST["captcha_code"], $nameTemplate);
if ($MID <= 0 || !empty($strErrorMessage))
{
$arErrorCodes[] = array(
'code' => 'message is not added 2',
'title' => (empty($strErrorMessage) ? NULL : $strErrorMessage)
);
}
else
{
$arMessage = CForumMessage::GetByID($MID);
if ($forumTopicId <= 0)
{
$forumTopicId = $TID = intval($arMessage["TOPIC_ID"]);
}
$outForumTopicId = intval($forumTopicId);
if ($componentName !== null)
ForumClearComponentCache($componentName);
$strURL = (!empty($backPage) ? $backPage : $GLOBALS['APPLICATION']->GetCurPageParam("", array("IFRAME", "MID", "SEF_APPLICATION_CUR_PAGE_URL", BX_AJAX_PARAM_ID, "result")));
$strURL = ForumAddPageParams(
$strURL,
array(
"MID" => $MID,
"result" => ($arForum["MODERATION"] != "Y"
|| CForumNew::CanUserModerateForum($forumId, $arUserGroupArray) ? "reply" : "not_approved"
)
),
false,
false
);
$outStrUrl = $strURL;
/*
// sonet log
if (CModule::IncludeModule("socialnetwork"))
{
$dbRes = CSocNetLog::GetList(
array("ID" => "DESC"),
array(
"EVENT_ID" => "tasks",
"SOURCE_ID" => $arTask["ID"]
),
false,
false,
array("ID", "ENTITY_TYPE", "ENTITY_ID", "TMP_ID")
);
if ($arRes = $dbRes->Fetch())
{
$log_id = $arRes["TMP_ID"];
$entity_type = $arRes["ENTITY_TYPE"];
$entity_id = $arRes["ENTITY_ID"];
}
else
{
$entity_type = ($arTask["GROUP_ID"] ? SONET_ENTITY_GROUP : SONET_ENTITY_USER);
$entity_id = ($arTask["GROUP_ID"] ? $arTask["GROUP_ID"] : $arTask["CREATED_BY"]);
$rsUser = CUser::GetByID($arTask["CREATED_BY"]);
if ($arUser = $rsUser->Fetch())
{
$arSoFields = Array(
"ENTITY_TYPE" => $entity_type,
"ENTITY_ID" => $entity_id,
"EVENT_ID" => "tasks",
"LOG_DATE" => $arTask["CREATED_DATE"],
"TITLE_TEMPLATE" => "#TITLE#",
"TITLE" => htmlspecialcharsBack($arTask["~TITLE"]),
"MESSAGE" => "",
"TEXT_MESSAGE" => $strMsgNewTask,
"MODULE_ID" => "tasks",
"CALLBACK_FUNC" => false,
"SOURCE_ID" => $arTask["ID"],
"ENABLE_COMMENTS" => "Y",
"USER_ID" => $arTask["CREATED_BY"],
"URL" => CTaskNotifications::GetNotificationPath($arUser, $arTask["ID"]),
"PARAMS" => serialize(array("TYPE" => "create"))
);
$log_id = CSocNetLog::Add($arSoFields, false);
if (intval($log_id) > 0)
{
CSocNetLog::Update($log_id, array("TMP_ID" => $log_id));
$arRights = CTaskNotifications::__UserIDs2Rights(CTaskNotifications::GetRecipientsIDs($arTask, false));
if($arTask["GROUP_ID"])
$arRights[] = "S".SONET_ENTITY_GROUP.$arTask["GROUP_ID"];
CSocNetLogRights::Add($log_id, $arRights);
}
}
}
if (intval($log_id) > 0)
{
$sText = (COption::GetOptionString("forum", "FILTER", "Y") == "Y" ? $arMessage["POST_MESSAGE_FILTER"] : $arMessage["POST_MESSAGE"]);
CSocNetLog::Update(
$log_id,
array(
'PARAMS' => serialize(array('TYPE' => 'comment'))
)
);
$arFieldsForSocnet = array(
"ENTITY_TYPE" => $entity_type,
"ENTITY_ID" => $entity_id,
"EVENT_ID" => "tasks_comment",
"MESSAGE" => $sText,
"TEXT_MESSAGE" => $parser->convert4mail($sText),
"URL" => str_replace("?IFRAME=Y", "", str_replace("&IFRAME=Y", "", str_replace("IFRAME=Y&", "", $strURL))),
"MODULE_ID" => "tasks",
"SOURCE_ID" => $MID,
"LOG_ID" => $log_id,
"RATING_TYPE_ID" => "FORUM_POST",
"RATING_ENTITY_ID" => $MID
);
if ($MESSAGE_TYPE == "EDIT")
{
$dbRes = CSocNetLogComments::GetList(
array("ID" => "DESC"),
array(
"EVENT_ID" => array("tasks_comment"),
"SOURCE_ID" => $MID
),
false,
false,
array("ID")
);
while ($arRes = $dbRes->Fetch())
{
CSocNetLogComments::Update($arRes["ID"], $arFieldsForSocnet);
}
}
else
{
$arFieldsForSocnet['USER_ID'] = $givenUserId;
$arFieldsForSocnet['=LOG_DATE'] = $GLOBALS['DB']->CurrentTimeFunction();
$ufFileID = array();
$dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $MID));
while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch())
$ufFileID[] = $arAddedMessageFiles["FILE_ID"];
if (count($ufFileID) > 0)
$arFieldsForSocnet["UF_SONET_COM_FILE"] = $ufFileID;
$ufDocID = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $MID, LANGUAGE_ID);
if ($ufDocID)
$arFieldsForSocnet["UF_SONET_COM_DOC"] = $ufDocID;
$ufDocVer = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_VER", $MID, LANGUAGE_ID);
if ($ufDocVer)
$arFieldsForSocnet["UF_SONET_COM_VER"] = $ufDocVer;
if (
isset($arFieldsAdditional["ANCILLARY"])
&& $arFieldsAdditional["ANCILLARY"]
)
{
CSocNetLogComments::Add($arFieldsForSocnet, false, false, false);
}
else
{
$comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false);
CSocNetLog::CounterIncrement($comment_id, false, false, "LC");
}
}
}
}
*/
$occurAsUserId = CTasksTools::getOccurAsUserId();
if ( ! $occurAsUserId )
$occurAsUserId = ($arMessage["AUTHOR_ID"] ? $arMessage["AUTHOR_ID"] : 1);
// Tasks log
$arLogFields = array(
"TASK_ID" => $arTask["ID"],
"USER_ID" => $occurAsUserId,
"CREATED_DATE" => ($arMessage["EDIT_DATE"] ? ConvertTimeStamp(MakeTimeStamp($arMessage["EDIT_DATE"], CSite::GetDateFormat()), "FULL") : $arMessage["POST_DATE"]),
"FIELD" => "COMMENT",
"TO_VALUE" => $MID
);
$log = new CTaskLog();
$log->Add($arLogFields);
}
return ($MID); // Message id
}