public static function Add($arFields) { global $DB; if (!CForumUserPoints::CheckFields("ADD", $arFields)) { return false; } $arInsert = $DB->PrepareInsert("b_forum_user_points", $arFields); $strDatePostField = ""; $strDatePostValue = ""; if (!is_set($arFields, "DATE_UPDATE")) { $strDatePostField .= ", DATE_UPDATE"; $strDatePostValue .= ", " . $DB->GetNowFunction() . ""; } $strSql = "INSERT INTO b_forum_user_points(" . $arInsert[0] . $strDatePostField . ") VALUES(" . $arInsert[1] . $strDatePostValue . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); // Recount user points if (intVal($arFields["TO_USER_ID"]) > 0) { $arUserFields = array("POINTS" => CForumUser::CountUserPoints($arFields["TO_USER_ID"])); $arUser = CForumUser::GetByUSER_ID($arFields["TO_USER_ID"]); if ($arUser) { CForumUser::Update(intVal($arUser["ID"]), $arUserFields); } else { $arUserFields["USER_ID"] = $arFields["TO_USER_ID"]; $ID_tmp = CForumUser::Add($arUserFields); } } return true; }
function GetUserName($USER_ID, $nameTemplate = "") { $ar_res = false; if (IntVal($USER_ID) > 0) { $db_res = CUser::GetByID(IntVal($USER_ID)); $ar_res = $db_res->Fetch(); } if (!$ar_res) { $db_res = CUser::GetByLogin($USER_ID); $ar_res = $db_res->Fetch(); } $USER_ID = IntVal($ar_res["ID"]); $f_LOGIN = htmlspecialcharsex($ar_res["LOGIN"]); $forum_user = CForumUser::GetByUSER_ID($USER_ID); if ($forum_user["SHOW_NAME"] == "Y" && (strlen(trim($ar_res["NAME"])) > 0 || strlen(trim($ar_res["LAST_NAME"])) > 0)) { $nameTemplate = trim(empty($nameTemplate)) ? CSite::GetNameFormat() : $nameTemplate; return trim(CUser::FormatName($nameTemplate, array("NAME" => htmlspecialcharsEx($ar_res["NAME"]), "LAST_NAME" => htmlspecialcharsEx($ar_res["LAST_NAME"]), "SECOND_NAME" => htmlspecialcharsEx($ar_res["SECOND_NAME"])))); } else { return $f_LOGIN; } }
function SocnetEMailMessageAdd($arMessageFields, $ACTION_VARS) { if (!is_array($arMessageFields["FORUM_EMAIL_FILTER"])) { return false; } if (!CModule::IncludeModule("socialnetwork")) { return false; } $arParams = $arMessageFields["FORUM_EMAIL_FILTER"]; if (!CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "forum")) { return false; } // Найдем кто отправитель $message_email = strlen($arMessageFields["FIELD_REPLY_TO"]) > 0 ? $arMessageFields["FIELD_REPLY_TO"] : $arMessageFields["FIELD_FROM"]; $message_email_addr = strtolower(CMailUtil::ExtractMailAddress($message_email)); $o = "LAST_LOGIN"; $b = "DESC"; $res = CUser::GetList($o, $b, array("ACTIVE" => "Y", "EMAIL" => $message_email_addr)); if (($arUser = $res->Fetch()) && strtolower(CMailUtil::ExtractMailAddress($arUser["EMAIL"])) == $message_email_addr) { $AUTHOR_USER_ID = $arUser["ID"]; } elseif ($arParams["NOT_MEMBER_POST"] == "Y") { $AUTHOR_USER_ID = false; } else { CMailLog::AddMessage(array("MAILBOX_ID" => $arMessageFields["MAILBOX_ID"], "MESSAGE_ID" => $arMessageFields["ID"], "FILTER_ID" => $arParams["MAIL_FILTER_ID"], "LOG_TYPE" => "FILTER_ERROR", "MESSAGE" => GetMessage("FORUM_MAIL_ERROR1") . ": " . $message_email_addr)); return false; } if ($arParams["NOT_MEMBER_POST"] != "Y") { // Проверим права доступа if (CSocNetFeaturesPerms::CanPerformOperation($AUTHOR_USER_ID, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "forum", "full")) { $PERMISSION = "Y"; } elseif (CSocNetFeaturesPerms::CanPerformOperation($AUTHOR_USER_ID, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "forum", "newtopic")) { $PERMISSION = "M"; } elseif (CSocNetFeaturesPerms::CanPerformOperation($AUTHOR_USER_ID, SONET_ENTITY_GROUP, $arParams["SOCNET_GROUP_ID"], "forum", "answer")) { $PERMISSION = "I"; } else { CMailLog::AddMessage(array("MAILBOX_ID" => $arMessageFields["MAILBOX_ID"], "MESSAGE_ID" => $arMessageFields["ID"], "FILTER_ID" => $arParams["MAIL_FILTER_ID"], "LOG_TYPE" => "FILTER_ERROR", "MESSAGE" => GetMessage("FORUM_MAIL_ERROR2") . " " . $arUser["LOGIN"] . " [" . $AUTHOR_USER_ID . "] (" . $message_email_addr . ")")); return false; } } $body = $arMessageFields["BODY"]; //$body = preg_replace("/(\r\n)+/", "\r\n", $body); $p = strpos($body, "\r\nFrom:"); if ($p > 0) { $body = substr($body, 0, $p) . "\r\n[CUT]" . substr($body, $p) . "[/CUT]"; } $subject = $arMessageFields["SUBJECT"]; // обрежем все RE и FW $subject = trim(preg_replace('#^\\s*((RE[0-9\\[\\]]*:\\s*)|(FW:\\s*))+(.*)$#i', '\\4', $subject)); if ($subject == '') { $subject = GetMessage("FORUM_MAIL_EMPTY_TOPIC_TITLE") . " " . rand(); } // Найдем какая тема $arFields = array(); $FORUM_ID = IntVal($arParams["FORUM_ID"]); $SOCNET_GROUP_ID = IntVal($arParams["SOCNET_GROUP_ID"]); $TOPIC_ID = 0; global $DB; if ($arMessageFields["IN_REPLY_TO"] != '') { $dbTopic = $DB->Query("SELECT FT.ID FROM b_forum_topic FT INNER JOIN b_forum_message FM ON FM.TOPIC_ID=FT.ID WHERE FM.XML_ID='" . $DB->ForSQL($arMessageFields["IN_REPLY_TO"], 255) . "' AND FT.FORUM_ID=" . $FORUM_ID . " AND FT.SOCNET_GROUP_ID=" . $SOCNET_GROUP_ID); if ($arTopic = $dbTopic->Fetch()) { $TOPIC_ID = $arTopic["ID"]; } } if ($arParams["USE_SUBJECT"] == "Y" && $TOPIC_ID <= 0) { $dbTopic = $DB->Query("SELECT ID FROM b_forum_topic WHERE TITLE='" . $DB->ForSQL($subject, 255) . "' AND FORUM_ID=" . $FORUM_ID . " AND SOCNET_GROUP_ID=" . $SOCNET_GROUP_ID); // ограничить по старости? if ($arTopic = $dbTopic->Fetch()) { $TOPIC_ID = $arTopic["ID"]; } } if ($AUTHOR_USER_ID > 0) { if ($TOPIC_ID < 0 && $PERMISSION <= "I") { CMailLog::AddMessage(array("MAILBOX_ID" => $arMessageFields["MAILBOX_ID"], "MESSAGE_ID" => $arMessageFields["ID"], "FILTER_ID" => $arParams["MAIL_FILTER_ID"], "LOG_TYPE" => "FILTER_ERROR", "MESSAGE" => GetMessage("FORUM_MAIL_ERROR3") . " " . $arUser["LOGIN"] . " [" . $AUTHOR_USER_ID . "] (" . $message_email_addr . ")")); return false; } $bSHOW_NAME = true; $res = CForumUser::GetByUSER_ID($AUTHOR_USER_ID); if ($res) { $bSHOW_NAME = $res["SHOW_NAME"] == "Y"; } if ($bSHOW_NAME) { $AUTHOR_NAME = $arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"]; } if (strlen(Trim($AUTHOR_NAME)) <= 0) { $AUTHOR_NAME = $arUser["LOGIN"]; } } else { $AUTHOR_NAME = $arMessageFields["FIELD_FROM"]; $arFields["AUTHOR_EMAIL"] = $arMessageFields["FIELD_FROM"]; } $arFields["NEW_TOPIC"] = "N"; if ($PERMISSION >= "Q") { $arFields["APPROVED"] = "Y"; } else { $arFields["APPROVED"] = $arParams["MODERATION"] == "Y" ? "N" : "Y"; } // Добавим новую тему if ($TOPIC_ID <= 0) { $arTopicFields = array("TITLE" => $subject, "FORUM_ID" => $FORUM_ID, "USER_START_ID" => $AUTHOR_USER_ID, "OWNER_ID" => $AUTHOR_USER_ID, "SOCNET_GROUP_ID" => $SOCNET_GROUP_ID); $arTopicFields["XML_ID"] = $arMessageFields["MSG_ID"]; $arTopicFields["APPROVED"] = $arFields['APPROVED']; $arTopicFields["USER_START_NAME"] = $AUTHOR_NAME; $arTopicFields["LAST_POSTER_NAME"] = $AUTHOR_NAME; $TOPIC_ID = CForumTopic::Add($arTopicFields); if (IntVal($TOPIC_ID) <= 0) { CMailLog::AddMessage(array("MAILBOX_ID" => $arMessageFields["MAILBOX_ID"], "MESSAGE_ID" => $arMessageFields["ID"], "FILTER_ID" => $arParams["MAIL_FILTER_ID"], "LOG_TYPE" => "FILTER_ERROR", "MESSAGE" => GetMessage("FORUM_MAIL_ERROR4"))); return false; } $arFields["NEW_TOPIC"] = "Y"; } // Добавим сообщение $arFields["POST_MESSAGE"] = $body; // Аттаченные файлы $arFILES = array(); $rsAttach = CMailAttachment::GetList(array(), array("MESSAGE_ID" => $arMessageFields["ID"])); while ($arAttach = $rsAttach->Fetch()) { $filename = CTempFile::GetFileName(md5(uniqid("")) . ".tmp"); CheckDirPath($filename); if (file_put_contents($filename, $arAttach["FILE_DATA"]) !== false) { $arFile = array("name" => $arAttach["FILE_NAME"], "type" => $arAttach["CONTENT_TYPE"], "size" => @filesize($filename), "tmp_name" => $filename, "MODULE_ID" => "forum"); $arFilter = array("FORUM_ID" => $FORUM_ID); $arFiles = array($arFile); if (CForumFiles::CheckFields($arFiles, $arFilter)) { $arFILES[] = $arFiles[0]; } else { $oError = $GLOBALS["APPLICATION"]->GetException(); CMailLog::AddMessage(array("MAILBOX_ID" => $arMessageFields["MAILBOX_ID"], "MESSAGE_ID" => $arMessageFields["ID"], "FILTER_ID" => $arParams["MAIL_FILTER_ID"], "LOG_TYPE" => "FILTER_ERROR", "MESSAGE" => GetMessage("FORUM_MAIL_ERROR6") . " (" . $arAttach["FILE_NAME"] . "): " . ($oError && $oError->GetString() ? $oError->GetString() : ""))); } } } if (count($arFILES) > 0) { $arFields["FILES"] = $arFILES; } $arFields["AUTHOR_NAME"] = $AUTHOR_NAME; $arFields["AUTHOR_ID"] = $AUTHOR_USER_ID; $arFields["FORUM_ID"] = $FORUM_ID; $arFields["TOPIC_ID"] = $TOPIC_ID; $arFields["XML_ID"] = $arMessageFields["MSG_ID"]; $arFields["SOURCE_ID"] = "EMAIL"; $arRes = array(); if (!empty($arMessageFields["FIELD_FROM"])) { $arRes[] = "From: " . $arMessageFields["FIELD_FROM"]; } if (!empty($arMessageFields["FIELD_TO"])) { $arRes[] = "To: " . $arMessageFields["FIELD_TO"]; } if (!empty($arMessageFields["FIELD_CC"])) { $arRes[] = "Cc: " . $arMessageFields["FIELD_CC"]; } if (!empty($arMessageFields["FIELD_BCC"])) { $arRes[] = "Bcc: " . $arMessageFields["FIELD_BCC"]; } $arRes[] = "Subject: " . $arMessageFields["SUBJECT"]; $arRes[] = "Date: " . $arMessageFields["FIELD_DATE"]; $arFields["MAIL_HEADER"] = implode("\r\n", $arRes); preg_match_all('#Received:\\s+from\\s+(.*)by.*#i', $arMessageFields["HEADER"], $regs); if (is_array($regs) && is_array($regs[1])) { $arFields["AUTHOR_IP"] = $arFields["AUTHOR_REAL_IP"] = '<email: ' . $regs[1][count($regs[1]) - 1] . '>'; } else { $arFields["AUTHOR_IP"] = $arFields["AUTHOR_REAL_IP"] = '<email: no address>'; } /* $AUTHOR_IP = ForumGetRealIP(); $AUTHOR_IP_tmp = $AUTHOR_IP; $AUTHOR_REAL_IP = $_SERVER['REMOTE_ADDR']; if (COption::GetOptionString("forum", "FORUM_GETHOSTBYADDR", "N") == "Y") { $AUTHOR_IP = @gethostbyaddr($AUTHOR_IP); if ($AUTHOR_IP_tmp==$AUTHOR_REAL_IP) $AUTHOR_REAL_IP = $AUTHOR_IP; else $AUTHOR_REAL_IP = @gethostbyaddr($AUTHOR_REAL_IP); } $arFields["AUTHOR_IP"] = ($AUTHOR_IP!==False) ? $AUTHOR_IP : "<no address>"; $arFields["AUTHOR_REAL_IP"] = ($AUTHOR_REAL_IP!==False) ? $AUTHOR_REAL_IP : "<no address>"; */ $strErrorMessage = ''; $MESSAGE_ID = CForumMessage::Add($arFields, false); if (intVal($MESSAGE_ID) <= 0) { $str = $GLOBALS['APPLICATION']->GetException(); if ($str && $str->GetString()) { $strErrorMessage .= "[" . $str->GetString() . "]"; } if ($arFields["NEW_TOPIC"] == 'Y') { CForumTopic::Delete($TOPIC_ID); } CMailLog::AddMessage(array("MAILBOX_ID" => $arMessageFields["MAILBOX_ID"], "MESSAGE_ID" => $arMessageFields["ID"], "FILTER_ID" => $arParams["MAIL_FILTER_ID"], "LOG_TYPE" => "FILTER_ERROR", "MESSAGE" => GetMessage("FORUM_MAIL_ERROR5") . " " . $strErrorMessage)); } if ($MESSAGE_ID > 0) { CMailLog::AddMessage(array("MAILBOX_ID" => $arMessageFields["MAILBOX_ID"], "MESSAGE_ID" => $arMessageFields["ID"], "FILTER_ID" => $arParams["MAIL_FILTER_ID"], "LOG_TYPE" => "FILTER_COMPLETE", "MESSAGE" => GetMessage("FORUM_MAIL_OK") . " " . $MESSAGE_ID . " (TID#" . $TOPIC_ID . ")")); CForumMessage::SendMailMessage($MESSAGE_ID, array(), false, "NEW_FORUM_MESSAGE"); $dbSite = CSite::GetById($arMessageFields["LID"]); if ($arSite = $dbSite->Fetch()) { $lang = $arSite['LANGUAGE_ID']; } else { $lang = $LANGUAGE_ID; } $parser = new forumTextParser(); $arForum = CForumNew::GetByID($FORUM_ID); $arAllow = array("HTML" => "N", "ANCHOR" => "N", "BIU" => "N", "IMG" => "N", "LIST" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "SMILES" => "N", "UPLOAD" => $arForum["ALLOW_UPLOAD"], "NL2BR" => "N", "TABLE" => "N", "ALIGN" => "N"); if ($arFields["NEW_TOPIC"] == "Y") { $arFieldsForSocnet = array("ENTITY_TYPE" => SONET_ENTITY_GROUP, "ENTITY_ID" => $SOCNET_GROUP_ID, "EVENT_ID" => "forum", "=LOG_DATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "TITLE_TEMPLATE" => str_replace("#AUTHOR_NAME#", $AUTHOR_NAME, CForumEmail::GetLangMessage("FORUM_MAIL_SOCNET_TITLE_TOPIC", $lang)), "TITLE" => $subject, "MESSAGE" => $parser->convert($body, $arAllow), "TEXT_MESSAGE" => $parser->convert4mail($body), "URL" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE"], array("UID" => $AUTHOR_USER_ID, "FID" => $FORUM_ID, "TID" => $TOPIC_ID, "MID" => $MESSAGE_ID)), "PARAMS" => serialize(array("PATH_TO_MESSAGE" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE"], array("TID" => $TOPIC_ID)))), "MODULE_ID" => false, "CALLBACK_FUNC" => false, "SOURCE_ID" => $MESSAGE_ID, "RATING_TYPE_ID" => "FORUM_TOPIC", "RATING_ENTITY_ID" => intval($TOPIC_ID)); if (intVal($AUTHOR_USER_ID) > 0) { $arFieldsForSocnet["USER_ID"] = $AUTHOR_USER_ID; } $logID = CSocNetLog::Add($arFieldsForSocnet, false); if (intval($logID) > 0) { CSocNetLog::Update($logID, array("TMP_ID" => $logID)); CSocNetLogRights::SetForSonet($logID, $arFieldsForSocnet["ENTITY_TYPE"], $arFieldsForSocnet["ENTITY_ID"], "forum", "view", true); CSocNetLog::SendEvent($logID, "SONET_NEW_EVENT", $logID); } } else { $dbForumMessage = CForumMessage::GetList(array("ID" => "ASC"), array("TOPIC_ID" => $TOPIC_ID)); if ($arForumMessage = $dbForumMessage->Fetch()) { $dbRes = CSocNetLog::GetList(array("ID" => "DESC"), array("EVENT_ID" => "forum", "SOURCE_ID" => $arForumMessage["ID"]), false, false, array("ID", "TMP_ID")); if ($arRes = $dbRes->Fetch()) { $log_id = $arRes["TMP_ID"]; } else { $dbFirstMessage = CForumMessage::GetList(array("ID" => "ASC"), array("TOPIC_ID" => $arForumMessage["TOPIC_ID"]), false, 1); if ($arFirstMessage = $dbFirstMessage->Fetch()) { $arTopic = CForumTopic::GetByID($arFirstMessage["TOPIC_ID"]); $sFirstMessageText = COption::GetOptionString("forum", "FILTER", "Y") == "Y" ? $arFirstMessage["POST_MESSAGE_FILTER"] : $arFirstMessage["POST_MESSAGE"]; $sFirstMessageURL = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE"], array("UID" => $arFirstMessage["AUTHOR_ID"], "FID" => $arFirstMessage["FORUM_ID"], "TID" => $arFirstMessage["TOPIC_ID"], "MID" => $arFirstMessage["ID"])); $arFieldsForSocnet = array("ENTITY_TYPE" => SONET_ENTITY_GROUP, "ENTITY_ID" => $SOCNET_GROUP_ID, "EVENT_ID" => "forum", "LOG_DATE" => $arFirstMessage["POST_DATE"], "LOG_UPDATE" => $arFirstMessage["POST_DATE"], "TITLE_TEMPLATE" => str_replace("#AUTHOR_NAME#", $arFirstMessage["AUTHOR_NAME"], GetMessage("SONET_FORUM_LOG_TOPIC_TEMPLATE")), "TITLE" => $arTopic["TITLE"], "MESSAGE" => $parser->convert($sFirstMessageText, $arAllow), "TEXT_MESSAGE" => $parser->convert4mail($sFirstMessageText), "URL" => $sFirstMessageURL, "PARAMS" => serialize(array("PATH_TO_MESSAGE" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE"], array("TID" => $arFirstMessage["TOPIC_ID"])))), "MODULE_ID" => false, "CALLBACK_FUNC" => false, "SOURCE_ID" => $arFirstMessage["ID"], "RATING_TYPE_ID" => "FORUM_TOPIC", "RATING_ENTITY_ID" => intval($arFirstMessage["TOPIC_ID"])); if (intVal($arFirstMessage["AUTHOR_ID"]) > 0) { $arFieldsForSocnet["USER_ID"] = $arFirstMessage["AUTHOR_ID"]; } $log_id = CSocNetLog::Add($arFieldsForSocnet, false); if (intval($log_id) > 0) { CSocNetLog::Update($log_id, array("TMP_ID" => $log_id)); CSocNetLogRights::SetForSonet($log_id, $arFieldsForSocnet["ENTITY_TYPE"], $arFieldsForSocnet["ENTITY_ID"], "forum", "view", true); } } } if (intval($log_id) > 0) { $arFieldsForSocnet = array("ENTITY_TYPE" => SONET_ENTITY_GROUP, "ENTITY_ID" => $SOCNET_GROUP_ID, "EVENT_ID" => "forum", "LOG_ID" => $log_id, "=LOG_DATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE" => $parser->convert($body, $arAllow), "TEXT_MESSAGE" => $parser->convert4mail($body), "URL" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE"], array("UID" => $AUTHOR_USER_ID, "FID" => $FORUM_ID, "TID" => $TOPIC_ID, "MID" => $MESSAGE_ID)), "MODULE_ID" => false, "SOURCE_ID" => $MESSAGE_ID, "RATING_TYPE_ID" => "FORUM_POST", "RATING_ENTITY_ID" => intval($MESSAGE_ID)); if (intVal($AUTHOR_USER_ID) > 0) { $arFieldsForSocnet["USER_ID"] = $AUTHOR_USER_ID; } CSocNetLogComments::Add($arFieldsForSocnet); } } } } }
$arResult["CURRENT_USER"] = array(); $arResult["URL"] = array("RECIPIENT" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $arParams["UID"])), "~RECIPIENT" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_PROFILE_VIEW"], array("UID" => $arParams["UID"])), "MESSAGE_SEND" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE_SEND"], array("UID" => $arParams["UID"], "TYPE" => strtolower($arParams["TYPE"]))), "~MESSAGE_SEND" => CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_MESSAGE_SEND"], array("UID" => $arParams["UID"], "TYPE" => strtolower($arParams["TYPE"])))); $arResult["profile_view"] = $arResult["URL"]["RECIPIENT"]; $res = CForumUser::GetByUSER_ID($arParams["UID"]); if ($res) { while (list($key, $val) = each($res)) { $userRec[$key] = htmlspecialcharsbx($val); } } $userRec["FULL_NAME"] = CForumUser::GetFormattedNameByUserID($arParams["UID"], $arParams["NAME_TEMPLATE"], $userRec); if ($USER->IsAuthorized()) { $db_userY = CUser::GetByID($USER->GetID()); if ($db_userY) { $userSend = $db_userY->GetNext(); } $db_res = CForumUser::GetByUSER_ID($USER->GetID()); if ($db_res) { while (list($key, $val) = each($db_res)) { $userSend[$key] = htmlspecialcharsbx($val); } } $userSend["FULL_NAME"] = CForumUser::GetFormattedNameByUserID($USER->GetID(), $arParams["NAME_TEMPLATE"], $userSend); $userSend["E-MAIL"] = $arParams["TYPE"] == "ICQ" ? $userSend["PERSONAL_ICQ"] : $USER->GetEmail(); $arResult["CURRENT_USER"] = $userSend; } /******************************************************************** /Default params ********************************************************************/ /******************************************************************** Action ********************************************************************/
function AddComment_News($arFields) { if (!CModule::IncludeModule("forum")) { return false; } if (!CModule::IncludeModule("iblock")) { return false; } if (!CModule::IncludeModule("socialnetwork")) { return false; } $dbResult = CSocNetLog::GetList(array("ID" => "DESC"), array("TMP_ID" => $arFields["LOG_ID"]), false, false, array("ID", "SOURCE_ID", "PARAMS")); $bFound = false; if ($arLog = $dbResult->Fetch()) { if (intval($arLog["SOURCE_ID"]) > 0) { $arFilter = array("ID" => $arLog["SOURCE_ID"]); $arSelectedFields = array("IBLOCK_ID", "ID", "CREATED_BY", "NAME", "PROPERTY_FORUM_TOPIC_ID", "PROPERTY_FORUM_MESSAGE_CNT"); $db_res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelectedFields); if ($db_res && ($res = $db_res->GetNext())) { $arElement = $res; $val = COption::GetOptionString("intranet", "sonet_log_news_iblock_forum"); if (strlen($val) > 0) { $arIBlockForum = unserialize($val); } else { $arIBlockForum = array(); } if (array_key_exists($arElement["IBLOCK_ID"], $arIBlockForum)) { $FORUM_ID = $arIBlockForum[$arElement["IBLOCK_ID"]]; } if (intval($FORUM_ID) > 0) { CSocNetLogTools::AddComment_Review_CheckIBlock($arElement); $dbMessage = CForumMessage::GetList(array(), array("PARAM2" => $arElement["ID"])); if (!($arMessage = $dbMessage->Fetch())) { // Add Topic $TOPIC_ID = CSocNetLogTools::AddComment_Review_CreateRoot($arElement, $FORUM_ID); $bNewTopic = true; } else { $TOPIC_ID = $arMessage["TOPIC_ID"]; } if (intval($TOPIC_ID) > 0) { // Add comment $messageID = false; $bError = false; if (CForumMessage::CanUserAddMessage($TOPIC_ID, $GLOBALS["USER"]->GetUserGroupArray(), $GLOBALS["USER"]->GetID(), false)) { $bSHOW_NAME = true; $res = CForumUser::GetByUSER_ID($GLOBALS["USER"]->GetID()); if ($res) { $bSHOW_NAME = $res["SHOW_NAME"] == "Y"; } if ($bSHOW_NAME) { $AUTHOR_NAME = $GLOBALS["USER"]->GetFullName(); } if (strlen(Trim($AUTHOR_NAME)) <= 0) { $AUTHOR_NAME = $GLOBALS["USER"]->GetLogin(); } if (strlen($AUTHOR_NAME) <= 0) { $bError = true; } } if (!$bError) { $arFieldsMessage = array("POST_MESSAGE" => $arFields["TEXT_MESSAGE"], "USE_SMILES" => "Y", "APPROVED" => "Y", "PARAM2" => $arElement["ID"], "AUTHOR_NAME" => $AUTHOR_NAME, "AUTHOR_ID" => IntVal($GLOBALS["USER"]->GetParam("USER_ID")), "FORUM_ID" => $FORUM_ID, "TOPIC_ID" => $TOPIC_ID, "NEW_TOPIC" => "N", "GUEST_ID" => $_SESSION["SESS_GUEST_ID"], "ADD_TO_LOG" => "N"); $AUTHOR_IP = ForumGetRealIP(); $AUTHOR_IP_tmp = $AUTHOR_IP; $AUTHOR_REAL_IP = $_SERVER['REMOTE_ADDR']; if (COption::GetOptionString("forum", "FORUM_GETHOSTBYADDR", "N") == "Y") { $AUTHOR_IP = @gethostbyaddr($AUTHOR_IP); if ($AUTHOR_IP_tmp == $AUTHOR_REAL_IP) { $AUTHOR_REAL_IP = $AUTHOR_IP; } else { $AUTHOR_REAL_IP = @gethostbyaddr($AUTHOR_REAL_IP); } } $arFieldsMessage["AUTHOR_IP"] = $AUTHOR_IP !== False ? $AUTHOR_IP : "<no address>"; $arFieldsMessage["AUTHOR_REAL_IP"] = $AUTHOR_REAL_IP !== False ? $AUTHOR_REAL_IP : "<no address>"; $messageID = CForumMessage::Add($arFieldsMessage, false); if (intVal($messageID) <= 0) { $bError = true; } else { if (CModule::IncludeModule("statistic")) { $arForum = CForumNew::GetByID($FORUM_ID); $F_EVENT1 = $arForum["EVENT1"]; $F_EVENT2 = $arForum["EVENT2"]; $F_EVENT3 = $arForum["EVENT3"]; if (strlen($F_EVENT3) <= 0) { $arForumSite_tmp = CForumNew::GetSites($FORUM_ID); $F_EVENT3 = CForumNew::PreparePath2Message($arForumSite_tmp[SITE_ID], array("FORUM_ID" => $FORUM_ID, "TOPIC_ID" => $TOPIC_ID, "MESSAGE_ID" => $messageID)); } CStatistic::Set_Event($F_EVENT1, $F_EVENT2, $F_EVENT3); } CForumMessage::SendMailMessage($messageID, array(), false, "NEW_FORUM_MESSAGE"); CSocNetLogTools::AddComment_Review_UpdateElement($arElement, $TOPIC_ID, $bNewTopic); } } } } } } } if (intval($messageID) <= 0) { $strError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR"); } return array("SOURCE_ID" => $messageID, "RATING_TYPE_ID" => "FORUM_POST", "RATING_ENTITY_ID" => $messageID, "ERROR" => $strError, "NOTES" => ""); }
$ar_res = $db_res->Fetch(); $arParams["UID"] = $ar_res["ID"]; } $bUserFound = !empty($ar_res) && is_array($ar_res); } if (!$bUserFound) { CHTTP::SetStatus("404 Not Found"); ShowError(empty($arParams["UID"]) ? GetMessage("F_NO_UID") : GetMessage("F_NO_DUSER", array("#UID#" => htmlspecialcharsEx($arParams["UID"])))); return false; } foreach ($ar_res as $key => $val) { $arResult["USER"]["~" . $key] = $val; $arResult["USER"][$key] = is_string($val) ? $parser->wrap_long_words(htmlspecialcharsex(trim($val))) : $val; } $arResult["USER"]["PERSONAL_BIRTHDAY_FORMATED"] = CForumFormat::FormatDate($arResult["USER"]["~PERSONAL_BIRTHDAY"], CLang::GetDateFormat("SHORT"), $arParams["DATE_FORMAT"]); $arResult["FORUM_USER"] = CForumUser::GetByUSER_ID($arParams["UID"]); $arResult["FORUM_USER"] = empty($arResult["FORUM_USER"]) ? array() : $arResult["FORUM_USER"]; foreach ($arResult["FORUM_USER"] as $key => $val) { $arResult["FORUM_USER"]["~" . $key] = $val; $arResult["FORUM_USER"][$key] = is_string($val) ? $parser->wrap_long_words(htmlspecialcharsEx($val)) : $val; } /******************************************************************** Default values ********************************************************************/ $strErrorMessage = ""; $strOKMessage = ""; $arParams["UID"] = intval($arParams["UID"]); $arResult["FID"] = intval($_REQUEST["FID"]); $arResult["TID"] = intval($_REQUEST["TID"]); $arResult["TITLE_SEO"] = trim($_REQUEST["TITLE_SEO"]); $arResult["MID"] = intval($_REQUEST["MID"]);
} if ($_REQUEST["NEW_PASSWORD"] != '' && $arUser['EXTERNAL_AUTH_ID'] == '') { $arFields["PASSWORD"] = $_REQUEST["NEW_PASSWORD"]; $arFields["CONFIRM_PASSWORD"] = $_REQUEST["NEW_PASSWORD_CONFIRM"]; } $USER_FIELD_MANAGER->EditFormAddFields("USER", $arFields); if (!$obUser->Update($arResult["ID"], $arFields, true)) { $strError .= $obUser->LAST_ERROR; } } if ($strError == '') { if (CModule::IncludeModule("forum")) { $APPLICATION->ResetException(); $arforumFields = array("SHOW_NAME" => $_REQUEST["forum_SHOW_NAME"] == "Y" ? "Y" : "N", "DESCRIPTION" => $_REQUEST["forum_DESCRIPTION"], "INTERESTS" => $_REQUEST["forum_INTERESTS"], "SIGNATURE" => $_REQUEST["forum_SIGNATURE"], "AVATAR" => $_FILES["forum_AVATAR"]); $arforumFields["AVATAR"]["del"] = $_REQUEST["forum_AVATAR_del"]; $ar_res = CForumUser::GetByUSER_ID($arResult["ID"]); if ($ar_res) { $arforumFields["AVATAR"]["old_file"] = $ar_res["AVATAR"]; $FORUM_USER_ID = IntVal($ar_res["ID"]); $FORUM_USER_ID1 = CForumUser::Update($FORUM_USER_ID, $arforumFields); $forum_res = IntVal($FORUM_USER_ID1) > 0; } else { $arforumFields["USER_ID"] = $arResult["ID"]; $FORUM_USER_ID = CForumUser::Add($arforumFields); $forum_res = IntVal($FORUM_USER_ID) > 0; } if ($ex = $APPLICATION->GetException()) { $strError = $ex->GetString(); } } }
if (is_array($arGroupsCanEditID) && count($arGroupsCanEditID) > 0) { $dbGroup = CGroup::GetList($by = "c_sort", $order = "asc", array("ID" => implode(" | ", $arGroupsCanEditID), "ACTIVE" => "Y")); while ($arGroup = $dbGroup->Fetch()) { $arResult["GROUPS_CAN_EDIT"][$arGroup["ID"]] = $arGroup; } } } } else { foreach ($arParams['EDITABLE_FIELDS'] as $key => $value) { if ($value == 'GROUP_ID' || $value == 'ACTIVE') { unset($arParams['EDITABLE_FIELDS'][$key]); } } } if ($arParams['IS_FORUM'] == 'Y') { $arForumUser = CForumUser::GetByUSER_ID($arParams["ID"]); if (is_array($arForumUser) && count($arForumUser) > 0) { foreach ($arForumUser as $key => $value) { if (true || in_array('FORUM_' . $key, $arParams['EDITABLE_FIELDS'])) { $arResult['User']['FORUM_' . $key] = htmlspecialcharsbx($value); $arResult['User']['~FORUM_' . $key] = $value; } } } } if ($arParams['IS_BLOG'] == 'Y') { $dbRes = CBlogUser::GetList(array(), array("USER_ID" => $arParams['ID'])); if ($arBlogUser = $dbRes->Fetch()) { foreach ($arBlogUser as $key => $value) { $arResult['User']['BLOG_' . $key] = htmlspecialcharsbx($value); $arResult['User']['~BLOG_' . $key] = $value;
public static function OnAfterUserUpdate($arFields = array()) { if ($arFields["RESULT"] && array_key_exists("PERSONAL_PHOTO", $arFields) && $arFields["PERSONAL_PHOTO"] > 0 && ($user = CForumUser::GetByUSER_ID($arFields["ID"])) && $user) { self::Update($user["ID"], array("AVATAR" => CFile::MakeFileArray($arFields["PERSONAL_PHOTO"]))); } }
} } $arFields["LANG"][$lang] = array("LID" => $lang, "NAME" => $name); } $res = CForumPoints::Add($arFields); } } $db_res = CForumPoints2Post::GetList(); if (!($db_res && ($res = $db_res->Fetch()))) { $arFields = array("MIN_NUM_POSTS" => 1, "POINTS_PER_POST" => "0.5000"); CForumPoints2Post::Add($arFields); $arFields = array("MIN_NUM_POSTS" => 50, "POINTS_PER_POST" => "0.8000"); CForumPoints2Post::Add($arFields); } /* User */ $res = CForumUser::GetByUSER_ID(1); if (empty($res) || !is_array($res)) { $arFields = array("=LAST_VISIT" => $DB->GetNowFunction(), "USER_ID" => 1); $ID = CForumUser::Add($arUserFields); } /* Vote */ $res = CForumUserPoints::GetByID(1, 1); if (!$res) { $arFields = array("POINTS" => 1000, "FROM_USER_ID" => 1, "TO_USER_ID" => 1); $ID = CForumUserPoints::Add($arFields); } // Forum group $arGroup = array("PUBLIC" => 0, "PARTNER" => 0, "COMMENTS" => 0); $db_res = CForumGroup::GetListEx(array(), array("LID" => LANGUAGE_ID)); if ($db_res && ($res = $db_res->Fetch())) { do {
/** * <p>Функция удаляет из голосования голоса, отданные пользователем с кодом FROM_USER_ID пользователю с кодом TO_USER_ID.</p> * * * * * @param int $FROM_USER_ID Код пользователя, отдавшего голос. * * * * @param int $TO_USER_ID Код пользователя, которому был отдан голос. * * * * @return bool <p>Функция возвращает True в случае успешного удаления и False - в * случае ошибки.</p> * * @static * @link http://dev.1c-bitrix.ru/api_help/forum/developer/cforumuserpoints/cforumuserpoints__delete.8bd6061a.php * @author Bitrix */ public static function Delete($FROM_USER_ID, $TO_USER_ID) { global $DB; $FROM_USER_ID = IntVal($FROM_USER_ID); if ($FROM_USER_ID<=0) return False; $TO_USER_ID = IntVal($TO_USER_ID); if ($TO_USER_ID<=0) return False; $DB->Query("DELETE FROM b_forum_user_points WHERE FROM_USER_ID = ".$FROM_USER_ID." AND TO_USER_ID = ".$TO_USER_ID); // Recount user points. $arUserFields = array(); $arUserFields["POINTS"] = CForumUser::CountUserPoints($TO_USER_ID); $arUser = CForumUser::GetByUSER_ID($TO_USER_ID); if ($arUser) { CForumUser::Update($arUser["ID"], $arUserFields); } else { $arUserFields["USER_ID"] = $TO_USER_ID; $ID_tmp = CForumUser::Add($arUserFields); } return true; }
function ForumSetLastVisit($FID = false, $TID = false, $arAddParams = array()) { global $DB; // For custom components $GLOBALS["FID"] = $FID = $FID === false && intVal($GLOBALS["FID"]) > 0 ? intVal($GLOBALS["FID"]) : $FID; if ($GLOBALS["USER"]->IsAuthorized()) { $GLOBALS["SHOW_FORUM_ICON"] = true; // out-of-date param $USER_ID = $GLOBALS["USER"]->GetID(); $arUserFields = array("=LAST_VISIT" => $DB->GetNowFunction()); if (!is_array($_SESSION["FORUM"]["USER"]) || $_SESSION["FORUM"]["USER"]["USER_ID"] != $GLOBALS["USER"]->GetID()) { $_SESSION["FORUM"]["USER"] = CForumUser::GetByUSER_ID($USER_ID); if (!$_SESSION["FORUM"]["USER"]) { $arUserFields["USER_ID"] = $USER_ID; CForumUser::Add($arUserFields); $_SESSION["FORUM"]["USER"] = CForumUser::GetByUSER_ID($USER_ID); } $_SESSION["FORUM"]["SHOW_NAME"] = $_SESSION["FORUM"]["USER"]["SHOW_NAME"]; } if (!is_set($arUserFields, "USER_ID")) { CForumUser::Update($USER_ID, $arUserFields, false, true); } } ForumInitParams(); if ($_SESSION["SESS_SEARCHER_ID"] > 0 && CModule::IncludeModule("statistic")) { return; } else { CForumStat::RegisterUSER(array("SITE_ID" => SITE_ID, "FORUM_ID" => $FID, "TOPIC_ID" => $TID)); } return true; }
$arFields = array("NAME" => $_POST["NAME"], "LAST_NAME" => $_POST["LAST_NAME"], "EMAIL" => $_POST["EMAIL"], "LOGIN" => $_POST["LOGIN"], "PERSONAL_PROFESSION" => $_POST["PERSONAL_PROFESSION"], "PERSONAL_WWW" => $_POST["PERSONAL_WWW"], "PERSONAL_ICQ" => $_POST["PERSONAL_ICQ"], "PERSONAL_GENDER" => $_POST["PERSONAL_GENDER"], "PERSONAL_BIRTHDAY" => $_POST["PERSONAL_BIRTHDAY"], "PERSONAL_PHOTO" => $arPERSONAL_PHOTO, "PERSONAL_CITY" => $_POST["PERSONAL_CITY"], "PERSONAL_STATE" => $_POST["PERSONAL_STATE"], "PERSONAL_COUNTRY" => $_POST["PERSONAL_COUNTRY"], "WORK_COMPANY" => $_POST["WORK_COMPANY"], "WORK_DEPARTMENT" => $_POST["WORK_DEPARTMENT"], "WORK_POSITION" => $_POST["WORK_POSITION"], "WORK_WWW" => $_POST["WORK_WWW"], "WORK_CITY" => $_POST["WORK_CITY"], "WORK_STATE" => $_POST["WORK_STATE"], "WORK_COUNTRY" => $_POST["WORK_COUNTRY"], "WORK_PROFILE" => $_POST["WORK_PROFILE"]); if (strlen($_POST["NEW_PASSWORD"]) > 0) { $arFields["PASSWORD"] = $_POST["NEW_PASSWORD"]; $arFields["CONFIRM_PASSWORD"] = $_POST["NEW_PASSWORD_CONFIRM"]; } $res = $USER->Update($ID, $arFields); if (!$res) { $strErrorMessage .= $USER->LAST_ERROR . ". \n"; } if (strlen($strErrorMessage) <= 0) { $arFields = array("SHOW_NAME" => $_POST["FORUM_SHOW_NAME"] == "Y" ? "Y" : "N", "HIDE_FROM_ONLINE" => $_POST["FORUM_HIDE_FROM_ONLINE"] == "Y" ? "Y" : "N", "SUBSC_GROUP_MESSAGE" => $_POST["FORUM_SUBSC_GROUP_MESSAGE"] == "Y" ? "Y" : "N", "SUBSC_GET_MY_MESSAGE" => $_POST["FORUM_SUBSC_GET_MY_MESSAGE"] == "Y" ? "Y" : "N", "DESCRIPTION" => $_POST["FORUM_DESCRIPTION"], "INTERESTS" => $_POST["FORUM_INTERESTS"], "SIGNATURE" => $_POST["FORUM_SIGNATURE"], "AVATAR" => $_FILES["FORUM_AVATAR"]); $arFields["AVATAR"]["del"] = $_POST["FORUM_AVATAR_del"]; if ($USER->IsAdmin()) { $arFields["ALLOW_POST"] = $_POST["FORUM_ALLOW_POST"] != "Y" ? "N" : "Y"; } $ar_res = CForumUser::GetByUSER_ID($ID); if ($ar_res) { $arFields["AVATAR"]["old_file"] = $ar_res["AVATAR"]; $FID = CForumUser::Update($ar_res["ID"], $arFields); } else { $arFields["USER_ID"] = $ID; $FID = CForumUser::Add($arFields); } if (intVal($FID) <= 0) { $db_err = $APPLICATION->GetException(); if ($db_err && ($err = $db_err->GetString())) { $strErrorMessage .= $err; } } } if (strlen($strErrorMessage) > 0) {
$APPLICATION->SetTitle("Профиль"); $APPLICATION->SetTemplateCSS("forum/forum_tmpl_2/forum.css"); $APPLICATION->IncludeFile("forum/forum_tmpl_2/menu.php"); if (!$bUserFound) { $strErrorMessage .= "Пользователь с кодом {$UID} не найден. \n"; } ?> <?php echo ShowMessage(array("MESSAGE" => $strErrorMessage, "TYPE" => "ERROR")); echo ShowMessage(array("MESSAGE" => $strOKMessage, "TYPE" => "OK")); ?> <?php if ($bUserFound) { $ar_forum_user = CForumUser::GetByUSER_ID($UID); while (list($key, $val) = each($ar_forum_user)) { ${"f_" . $key} = htmlspecialchars($val); } if ($bVarsFromForm) { $arUserFields =& $DB->GetTableFieldsList("b_forum_user"); for ($i = 0; $i < count($arUserFields); $i++) { if (array_key_exists($arUserFields[$i], $_REQUEST)) { ${"f_" . $arUserFields[$i]} = htmlspecialchars($_REQUEST[$arUserFields[$i]]); } } $arUserFields =& $DB->GetTableFieldsList("b_user"); for ($i = 0; $i < count($arUserFields); $i++) { if (array_key_exists($arUserFields[$i], $_REQUEST)) { ${"f_" . $arUserFields[$i]} = htmlspecialchars($_REQUEST[$arUserFields[$i]]); }
$TYPE = "MAIL"; } else { $TYPE = "ICQ"; } if ($TYPE == "ICQ") { $strTextType = "ICQ"; } else { $strTextType = "E-Mail"; } if ($USER->IsAuthorized()) { $db_userY = CUser::GetByID($USER->GetID()); if ($ar_userY = $db_userY->Fetch()) { while (list($key, $val) = each($ar_userY)) { ${"y_" . $key} = htmlspecialchars($val); } $db_res = CForumUser::GetByUSER_ID($y_ID); if ($db_res) { while (list($key, $val) = each($db_res)) { ${"yu_" . $key} = htmlspecialchars($val); } } $ShowMyName = ""; if ($yu_SHOW_NAME == "Y") { $ShowMyName = $USER->GetFullName(); } if (strlen($ShowMyName) <= 0) { $ShowMyName = $USER->GetLogin(); } } } $strErrorMessage = "";
//$arParams["SHOW_LINK"] = ($arParams["SHOW_LINK"] == "Y" ? "Y" : "N"); $arParams["ADDITIONAL_URL"] = htmlspecialcharsEx(trim($arParams["ADDITIONAL_URL"])); $arParams["SERVER_NAME"] = defined("SITE_SERVER_NAME") && strLen(SITE_SERVER_NAME) > 0 ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name"); $arParams["NAME_TEMPLATE"] = str_replace(array("#NOBR#", "#/NOBR#"), "", !!$arParams["NAME_TEMPLATE"] ? $arParams["NAME_TEMPLATE"] : CSite::GetDefaultNameFormat()); // *************************/Input params*************************************************************** // ************************* Default params************************************************************* $arResult["FILE"] = $arParams["FILE"]; if (!is_array($arParams["FILE"]) && intVal($arParams["FILE"]) > 0) { $arResult["FILE"] = CFile::GetFileArray($arParams["FILE"]); } $arResult["FILE"]["~SRC"] = $arResult["FILE"]["SRC"]; if (intVal($arResult["FILE"]["ID"]) > 0) { $arResult["FILE"]["SRC"] = "/bitrix/components/bitrix/forum.interface/show_file.php?fid=" . htmlspecialcharsbx($arResult["FILE"]["ID"]) . (!empty($arParams["ADDITIONAL_URL"]) ? "&" . $arParams["ADDITIONAL_URL"] : ""); } if ($arResult["FILE"]["USER_ID"] > 0) { $forumUser = CForumUser::GetByUSER_ID($arResult["FILE"]["USER_ID"]); $db_res = CUser::GetById($arResult["FILE"]["USER_ID"]); if ($db_res && ($arUser = $db_res->Fetch())) { $arResult["FILE"]["OWNER"] = $forumUser && $forumUser["SHOW_NAME"] != "Y" ? $arUser["LOGIN"] : CUser::FormatName($arParams["NAME_TEMPLATE"], $arUser, true, false); } } $arResult["RETURN_DATA"] = ""; $arResult["RETURN_DATA_ARRAY"] = array(); // *************************/Default params************************************************************* if (is_array($arResult["FILE"]) && !empty($arResult["FILE"]["SRC"])) { $arResult["FILE"]["FULL_SRC"] = CHTTP::URN2URI($arResult["FILE"]["SRC"], $arParams["SERVER_NAME"]); $ct = strToLower($arResult["FILE"]["CONTENT_TYPE"]); if ($arParams["SHOW_MODE"] == "LINK") { // do nothing } elseif ($arParams["MAX_FILE_SIZE"] >= $arResult["FILE"]["FILE_SIZE"] && substr($ct, 0, 6) == "image/") { $arResult["RETURN_DATA"] = $GLOBALS["APPLICATION"]->IncludeComponent("bitrix:forum.interface", "popup_image", array("URL" => $arParams["SHOW_MODE"] == "RSS" ? $arResult["FILE"]["FULL_SRC"] : $arResult["FILE"]["SRC"], "SIZE" => $arParams["SIZE"], "MAX_SIZE" => $arParams["MAX_SIZE"], "HTML_SIZE" => $arParams["HTML_SIZE"], "MODE" => $arParams["SHOW_MODE"] == "RSS" ? "RSS" : "SHOW2IMAGES", "IMG_WIDTH" => $arResult["FILE"]["WIDTH"], "IMG_HEIGHT" => $arResult["FILE"]["HEIGHT"], "IMG_NAME" => $arResult["FILE"]["ORIGINAL_NAME"], "IMG_SIZE" => $arResult["FILE"]["FILE_SIZE"], "CONVERT" => $arParams["CONVERT"], "FAMILY" => $arParams["FAMILY"], "RETURN" => "Y"), $this->__component->__parent !== null ? $this->__component->__parent : $this->__component, array("HIDE_ICONS" => "Y"));
$arFields["PASSWORD"] = $_POST["NEW_PASSWORD"]; $arFields["CONFIRM_PASSWORD"] = $_POST["NEW_PASSWORD_CONFIRM"]; } $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("USER", $arFields); $USER->Update($arParams["UID"], $arFields); if ($USER->LAST_ERROR) { $APPLICATION->ThrowException($USER->LAST_ERROR); } // Update Forum info about user if (!$APPLICATION->GetException()) { $arFields = array("SHOW_NAME" => $_POST["FORUM_SHOW_NAME"] == "Y" ? "Y" : "N", "HIDE_FROM_ONLINE" => $_POST["FORUM_HIDE_FROM_ONLINE"] == "Y" ? "Y" : "N", "SUBSC_GROUP_MESSAGE" => $_POST["FORUM_SUBSC_GROUP_MESSAGE"] == "Y" ? "Y" : "N", "SUBSC_GET_MY_MESSAGE" => $_POST["FORUM_SUBSC_GET_MY_MESSAGE"] == "Y" ? "Y" : "N", "DESCRIPTION" => $_POST["FORUM_DESCRIPTION"], "INTERESTS" => $_POST["FORUM_INTERESTS"], "SIGNATURE" => $_POST["FORUM_SIGNATURE"], "AVATAR" => $_FILES["FORUM_AVATAR"]); $arFields["AVATAR"]["del"] = $_POST["FORUM_AVATAR_del"]; if (CForumUser::IsAdmin()) { $arFields["ALLOW_POST"] = $_POST["FORUM_ALLOW_POST"] != "Y" ? "N" : "Y"; } $ar_res = CForumUser::GetByUSER_ID($arParams["UID"]); if ($ar_res) { $arFields["AVATAR"]["old_file"] = $ar_res["AVATAR"]; $FID = CForumUser::Update($ar_res["ID"], $arFields); } else { $arFields["USER_ID"] = $arParams["UID"]; $FID = CForumUser::Add($arFields); } if (intVal($FID) <= 0 && !$APPLICATION->GetException()) { $APPLICATION->ThrowException(GetMessage("FP_ERR_PROF")); } } } if ($APPLICATION->GetException()) { $bVarsFromForm = true; } else {
/******************************************************************** Default params # 2 ********************************************************************/ $arResult["MESSAGE_FIRST"] = array(); $arResult["MESSAGE_LIST"] = array(); $arResult["MESSAGE_VIEW"] = array(); $arResult["VIEW"] = "N"; $bVarsFromForm = false; /************** Current User ***************************************/ $arResult["USER"] = array("INFO" => array(), "PERMISSION" => $arParams["PERMISSION"], "RIGHTS" => array("ADD_TOPIC" => CForumTopic::CanUserAddTopic($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID(), $arResult["FORUM"], $arParams["PERMISSION"]) ? "Y" : "N", "MODERATE" => CForumNew::CanUserModerateForum($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID(), $arParams["PERMISSION"]) == true ? "Y" : "N", "EDIT" => CForumNew::CanUserEditForum($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID(), $arParams["PERMISSION"]) ? "Y" : "N", "ADD_MESSAGE" => CForumMessage::CanUserAddMessage($arParams["TID"], $USER->GetUserGroupArray(), $USER->GetID(), $arParams["PERMISSION"]) ? "Y" : "N"), "SUBSCRIBE" => array(), "SHOW_NAME" => $GLOBALS["FORUM_STATUS_NAME"]["guest"]); // to avoid forum module permissions extension for admin if ($arParams["PERMISSION"] <= "E") { $arResult["USER"]["RIGHTS"] = array("ADD_TOPIC" => "N", "MODERATE" => "N", "EDIT" => "N", "ADD_MESSAGE" => "N"); } if ($USER->IsAuthorized()) { $arResult["USER"]["INFO"] = CForumUser::GetByUSER_ID($USER->GetParam("USER_ID")); $arResult["USER"]["SHOW_NAME"] = $_SESSION["FORUM"]["SHOW_NAME"]; $arResult["USER"]["RANK"] = CForumUser::GetUserRank($USER->GetParam("USER_ID")); $db_res = CForumSubscribe::GetList(array(), array("USER_ID" => $USER->GetID(), "FORUM_ID" => $arParams["FID"], "TOPIC_ID" => $arParams["TID"], "SITE_ID" => SITE_ID)); if ($db_res && ($res = $db_res->Fetch())) { $arResult["USER"]["SUBSCRIBE"][$res["ID"]] = $res; } } /*******************************************************************/ $arResult["PANELS"] = array("MODERATE" => $arResult["USER"]["RIGHTS"]["MODERATE"], "DELETE" => $arResult["USER"]["RIGHTS"]["EDIT"], "SUPPORT" => IsModuleInstalled("support") && $APPLICATION->GetGroupRight("forum") >= "W" ? "Y" : "N", "EDIT" => $arResult["USER"]["RIGHTS"]["EDIT"], "STATISTIC" => IsModuleInstalled("statistic") && $APPLICATION->GetGroupRight("statistic") > "D" ? "Y" : "N", "MAIN" => $APPLICATION->GetGroupRight("main") > "D" ? "Y" : "N", "MAIL" => $APPLICATION->GetGroupRight("mail") > "R" ? "Y" : "N"); /*******************************************************************/ $_SERVER["REQUEST_URI"] = $arResult["CURRENT_PAGE"]; unset($_GET["MID"]); unset($GLOBALS["HTTP_GET_VARS"]["MID"]); unset($_GET["ACTION"]); unset($GLOBALS["HTTP_GET_VARS"]["ACTION"]);
public static function SetStat($USER_ID = 0, $arParams = array()) { $USER_ID = intVal($USER_ID); if ($USER_ID <= 0) { return 0; } $bNeedCreateUser = false; $arUser = array(); $arUserFields = array(); $arParams = is_array($arParams) ? $arParams : array(); $arMessage = is_array($arParams["MESSAGE"]) ? $arParams["MESSAGE"] : array(); $arMessage = $arMessage["AUTHOR_ID"] != $USER_ID ? array() : $arMessage; if (!empty($arMessage)) { $arParams["ACTION"] = $arParams["ACTION"] == "DECREMENT" || $arParams["ACTION"] == "UPDATE" ? $arParams["ACTION"] : "INCREMENT"; if ($arParams["ACTION"] == "UPDATE") { $arParams["ACTION"] = $arMessage["APPROVED"] == "Y" ? "INCREMENT" : "DECREMENT"; $arMessage["APPROVED"] = "Y"; } $arParams["POSTS"] = intVal($arParams["POSTS"] > 0 ? $arParams["POSTS"] : 1); $arUser = CForumUser::GetByUSER_ID($USER_ID); } if (empty($arMessage)) { // full recount; } elseif ($arMessage["APPROVED"] != "Y") { return true; } elseif (empty($arUser)) { $bNeedCreateUser = true; // full recount; } elseif ($arParams["ACTION"] == "DECREMENT" && $arMessage["ID"] >= $arUser["LAST_POST"]) { // full recount; } elseif ($arParams["ACTION"] == "DECREMENT") { $arUserFields = array("=NUM_POSTS" => "NUM_POSTS-" . $arParams["POSTS"], "POINTS" => intVal(CForumUser::GetUserPoints($USER_ID, array("DECREMENT" => $arParams["POSTS"])))); } elseif ($arParams["ACTION"] == "INCREMENT" && $arMessage["ID"] < $arUser["LAST_POST"]) { $arUserFields = array("=NUM_POSTS" => "NUM_POSTS+" . $arParams["POSTS"], "POINTS" => intVal(CForumUser::GetUserPoints($USER_ID, array("INCREMENT" => $arParams["POSTS"])))); } elseif ($arParams["ACTION"] == "INCREMENT") { $arUserFields["IP_ADDRESS"] = $arMessage["AUTHOR_IP"]; $arUserFields["REAL_IP_ADDRESS"] = $arMessage["AUTHOR_REAL_IP"]; $arUserFields["LAST_POST"] = intVal($arMessage["ID"]); $arUserFields["LAST_POST_DATE"] = $arMessage["POST_DATE"]; $arUserFields["=NUM_POSTS"] = "NUM_POSTS+" . $arParams["POSTS"]; $arUserFields["POINTS"] = intVal(CForumUser::GetUserPoints($USER_ID, array("INCREMENT" => $arParams["POSTS"]))); } if (empty($arUserFields)) { $arUserFields = array("LAST_POST" => false, "LAST_POST_DATE" => false); if ($bNeedCreateUser == false) { $arUser = CForumUser::GetByUSER_IDEx($USER_ID); } if (empty($arUser) || $bNeedCreateUser == true) { $bNeedCreateUser = true; $arUser = CForumMessage::GetList(array(), array("AUTHOR_ID" => $USER_ID, "APPROVED" => "Y"), "cnt_and_last_mid"); $arUser = is_array($arUser) ? $arUser : array(); } $arMessage = CForumMessage::GetByID($arUser["LAST_MESSAGE_ID"], array("FILTER" => "N")); if ($arMessage) { $arUserFields["IP_ADDRESS"] = $arMessage["AUTHOR_IP"]; $arUserFields["REAL_IP_ADDRESS"] = $arMessage["AUTHOR_REAL_IP"]; $arUserFields["LAST_POST"] = intVal($arMessage["ID"]); $arUserFields["LAST_POST_DATE"] = $arMessage["POST_DATE"]; } $arUserFields["NUM_POSTS"] = intVal($arUser["CNT"]); $arUserFields["POINTS"] = intVal(CForumUser::GetUserPoints($USER_ID, array("NUM_POSTS" => $arUserFields["NUM_POSTS"]))); } if ($bNeedCreateUser) { $arUserFields["USER_ID"] = $USER_ID; $arUser = CForumUser::Add($arUserFields); } else { CForumUser::Update($USER_ID, $arUserFields, false, true); } return $USER_ID; }