public static function AddCrmActivityComment($arFields) { if (!CModule::IncludeModule("forum")) { return false; } $ufFileID = array(); $ufDocID = array(); $messageID = false; $dbResult = CSocNetLog::GetList(array(), array("ID" => $arFields["LOG_ID"]), false, false, array('ID', 'ENTITY_ID', 'SOURCE_ID', 'SITE_ID', 'TITLE', 'PARAMS')); if ($arLog = $dbResult->Fetch()) { $dbCrmActivity = CCrmActivity::GetList(array(), array('ID' => $arLog['ENTITY_ID'], 'CHECK_PERMISSIONS' => 'N')); if ($arCrmActivity = $dbCrmActivity->Fetch()) { if ($arCrmActivity['TYPE_ID'] == CCrmActivityType::Task && CModule::IncludeModule('tasks')) { $userID = $GLOBALS["USER"]->GetID(); $dbTask = CTasks::GetByID($arCrmActivity["ASSOCIATED_ENTITY_ID"], false); if ($arTaskFields = $dbTask->Fetch()) { if (!($userName = trim($GLOBALS["USER"]->GetFormattedName(false)))) { $userName = $GLOBALS["USER"]->GetLogin(); } $FORUM_ID = CTasksTools::GetForumIdForIntranet(); if (!$arTaskFields["FORUM_TOPIC_ID"]) { $arTopicFields = array("TITLE" => $arTaskFields["TITLE"], "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" => 'TASK_' . $arTaskFields['ID']); $TOPIC_ID = CForumTopic::Add($arTopicFields); if ($TOPIC_ID) { $arFieldsFirstMessage = array("POST_MESSAGE" => $arTopicFields["XML_ID"], "AUTHOR_ID" => $arTopicFields["USER_START_ID"], "AUTHOR_NAME" => $arTopicFields["USER_START_NAME"], "FORUM_ID" => $arTopicFields["FORUM_ID"], "TOPIC_ID" => $TOPIC_ID, "APPROVED" => "Y", "NEW_TOPIC" => "Y", "PARAM1" => 'TK', "PARAM2" => $arTaskFields['ID'], "PERMISSION_EXTERNAL" => 'E', "PERMISSION" => 'E'); CForumMessage::Add($arFieldsFirstMessage, false, array("SKIP_INDEXING" => "Y", "SKIP_STATISTIC" => "N")); $oTask = new CTasks(); $oTask->Update($arTaskFields["ID"], array("FORUM_TOPIC_ID" => $TOPIC_ID)); } } else { $TOPIC_ID = $arTaskFields["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"); $GLOBALS["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); } } } $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("FORUM_MESSAGE", $arFieldsP); $messageID = CForumMessage::Add($arFieldsP); // get UF DOC value and FILE_ID there if ($messageID > 0) { $dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $messageID)); while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch()) { $ufFileID[] = $arAddedMessageFiles["FILE_ID"]; } $ufDocID = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $messageID, LANGUAGE_ID); } } } } else { return array("NO_SOURCE" => "Y"); } } else { $sError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR"); } } else { $sError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR"); } return array("SOURCE_ID" => $messageID, "RATING_TYPE_ID" => "FORUM_POST", "RATING_ENTITY_ID" => $messageID, "ERROR" => $sError, "NOTES" => $sNote, "UF" => array("FILE" => $ufFileID, "DOC" => $ufDocID)); }
/** * @deprecated */ private static function getCommentsFiles($forumTopicId) { $arFilesIds = array(); if (CModule::IncludeModule('forum') && ($forumId = CTasksTools::GetForumIdForIntranet()) && $forumId >= 1) { $rc = CForumMessage::GetListEx(array(), array('FORUM_ID' => $forumId, 'TOPIC_ID' => $forumTopicId)); $arMessagesIds = array(); while ($arMsg = $rc->fetch()) { $arMessagesIds[] = (int) $arMsg['ID']; } foreach ($arMessagesIds as $msgId) { $arUF = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("FORUM_MESSAGE", $msgId, LANGUAGE_ID, 1); if (isset($arUF['UF_FORUM_MESSAGE_DOC'], $arUF['UF_FORUM_MESSAGE_DOC']['VALUE'])) { if (is_array($arUF['UF_FORUM_MESSAGE_DOC']['VALUE'])) { $arFilesIds = array_merge($arFilesIds, $arUF['UF_FORUM_MESSAGE_DOC']['VALUE']); } } } } $arFilesIds = array_unique(array_map('intval', $arFilesIds)); return $arFilesIds; /* if (CModule::IncludeModuel("forum")) { $arFilter = (is_array($arFilter) ? $arFilter : array($arFilter)); $arFilter[">UF_FORUM_MESSAGE_DOC"] = 0; $db_res = CForumMessage::GetList(array("ID" => "ASC"), $arFilter, false, 0, array("SELECT" => array("UF_FORUM_MESSAGE_DOC"))); $arDocs = array(); if ($db_res && ($res = $db_res->Fetch())) { do { if (!empty($res["UF_FORUM_MESSAGE_DOC"]) && is_array($res["UF_FORUM_MESSAGE_DOC"])) $arDocs = array_merge($arDocs, $res["UF_FORUM_MESSAGE_DOC"]); } while ($res = $db_res->Fetch()); } } */ }
if ($arParams['SHOW_TEMPLATE'] === 'Y' && $arParams['RENDER_FORMAT'] === 'HTML') { ShowError(str_replace('#TASK_ID#', (int) $arParams['TASK_ID'], GetMessage('MB_TASKS_TASK_DETAIL_TASK_NOT_ACCESSIBLE'))); } return false; } $arResult['FORUM_ID'] = false; if ($arTask['FORUM_TOPIC_ID']) { $arTopic = CForumTopic::GetByID($arTask['FORUM_TOPIC_ID']); if ($arTopic) { $arResult['FORUM_ID'] = (int) $arTopic['FORUM_ID']; } unset($arTopic); } if ($arResult['FORUM_ID'] === false) { try { $arResult['FORUM_ID'] = CTasksTools::GetForumIdForIntranet(); } catch (Exception $e) { // nothing to do here } } if ($arResult['FORUM_ID'] > 0) { __checkForum($arResult['FORUM_ID']); } $arTask['META::STATUS_FORMATTED_NAME'] = ''; switch ($arTask['REAL_STATUS']) { case CTasks::STATE_NEW: $arTask['META::STATUS_FORMATTED_NAME'] = GetMessage('MB_TASKS_TASK_DETAIL_STATUS_NEW'); break; case CTasks::STATE_PENDING: $arTask['META::STATUS_FORMATTED_NAME'] = GetMessage('MB_TASKS_TASK_DETAIL_STATUS_ACCEPTED'); break;