static function PostIntoBuzzAsBlog($userTwit, $arSiteId=array(), $userLogin = '')
{
global $DB;
if(!CModule::IncludeModule("blog") || !CModule::IncludeModule("socialnetwork"))
return;
$arParams = array();
if((IsModuleInstalled('bitrix24') && defined('BX24_HOST_NAME')) && $userLogin != '')
{
if($arUserTwit = unserialize(base64_decode($userTwit), ["allowed_classes" => false]))
$userTwit = $arUserTwit;
if($arSiteIdCheck = unserialize(base64_decode($arSiteId), ["allowed_classes" => false]))
$arSiteId = $arSiteIdCheck;
$dbUser = CUser::GetByLogin($userLogin);
if($arUser = $dbUser->Fetch())
$arParams["USER_ID"] = $arUser["ID"];
}
else
$arParams["USER_ID"] = $userTwit['kp_user_id'];
$siteId = null;
if(isset($arSiteId[$userTwit['kp_user_id']]))
$siteId = $arSiteId[$userTwit['kp_user_id']];
if($siteId == '')
$siteId = SITE_ID;
if(isset($userTwit['text']))
{
$arParams["GROUP_ID"] = COption::GetOptionString("socialnetwork", "userbloggroup_id", false, $siteId);
$arParams["PATH_TO_BLOG"] = COption::GetOptionString("socialnetwork", "userblogpost_page", false, $siteId);
$arParams["PATH_TO_SMILE"] = COption::GetOptionString("socialnetwork", "smile_page", false, $siteId);
$arParams["NAME_TEMPLATE"] = COption::GetOptionString("main", "TOOLTIP_NAME_TEMPLATE", false, $siteId);
$arParams["SHOW_LOGIN"] = 'Y';
$arParams["PATH_TO_POST"] = $arParams["PATH_TO_BLOG"];
$arFilterblg = Array(
"ACTIVE" => "Y",
"USE_SOCNET" => "Y",
"GROUP_ID" => $arParams["GROUP_ID"],
"GROUP_SITE_ID" => $siteId,
"OWNER_ID" => $arParams["USER_ID"],
);
$groupId = (is_array($arParams["GROUP_ID"]) ? intval($arParams["GROUP_ID"][0]) : intval($arParams["GROUP_ID"]));
if (isset($GLOBALS["BLOG_POST"]["BLOG_P_".$groupId."_".$arParams["USER_ID"]]) && !empty($GLOBALS["BLOG_POST"]["BLOG_P_".$groupId."_".$arParams["USER_ID"]]))
{
$arBlog = $GLOBALS["BLOG_POST"]["BLOG_P_".$groupId."_".$arParams["USER_ID"]];
}
else
{
$dbBl = CBlog::GetList(Array(), $arFilterblg);
$arBlog = $dbBl ->Fetch();
if (!$arBlog && IsModuleInstalled("intranet"))
$arBlog = CBlog::GetByOwnerID($arParams["USER_ID"]);
$GLOBALS["BLOG_POST"]["BLOG_P_".$groupId."_".$arParams["USER_ID"]] = $arBlog;
}
$arResult["Blog"] = $arBlog;
if(empty($arBlog))
{
if(!empty($arParams["GROUP_ID"]))
{
$arFields = array(
"=DATE_UPDATE" => $DB->CurrentTimeFunction(),
"GROUP_ID" => (is_array($arParams["GROUP_ID"])) ? intval($arParams["GROUP_ID"][0]) : intval($arParams["GROUP_ID"]),
"ACTIVE" => "Y",
"ENABLE_COMMENTS" => "Y",
"ENABLE_IMG_VERIF" => "Y",
"EMAIL_NOTIFY" => "Y",
"ENABLE_RSS" => "Y",
"ALLOW_HTML" => "N",
"ENABLE_TRACKBACK" => "N",
"SEARCH_INDEX" => "Y",
"USE_SOCNET" => "Y",
"=DATE_CREATE" => $DB->CurrentTimeFunction(),
"PERMS_POST" => Array(
1 => "I",
2 => "I" ),
"PERMS_COMMENT" => Array(
1 => "P",
2 => "P" ),
);
$bRights = false;
$rsUser = CUser::GetByID($arParams["USER_ID"]);
$arUser = $rsUser->Fetch();
if($arUser["NAME"]."".$arUser["LAST_NAME"] == '')
$arFields["NAME"] = GetMessage("BLG_NAME")." ".$arUser["LOGIN"];
else
$arFields["NAME"] = GetMessage("BLG_NAME")." ".$arUser["NAME"]." ".$arUser["LAST_NAME"];
$arFields["URL"] = str_replace(" ", "_", $arUser["LOGIN"])."-blog-".SITE_ID;
$arFields["OWNER_ID"] = $arParams["USER_ID"];
$urlCheck = preg_replace("/[^a-zA-Z0-9_-]/is", "", $arFields["URL"]);
if ($urlCheck != $arFields["URL"])
{
$arFields["URL"] = "u".$arParams["USER_ID"]."-blog-".SITE_ID;
}
if(CBlog::GetByUrl($arFields["URL"]))
{
$uind = 0;
do
{
$uind++;
$arFields["URL"] = $arFields["URL"].$uind;
}
while (CBlog::GetByUrl($arFields["URL"]));
}
$featureOperationPerms = CSocNetFeaturesPerms::GetOperationPerm(SONET_ENTITY_USER, $arFields["OWNER_ID"], "blog", "view_post");
if ($featureOperationPerms == SONET_RELATIONS_TYPE_ALL)
$bRights = true;
$arFields["PATH"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("blog" => $arFields["URL"], "user_id" => $arFields["OWNER_ID"], "group_id" => $arFields["SOCNET_GROUP_ID"]));
$blogID = CBlog::Add($arFields);
if($bRights)
CBlog::AddSocnetRead($blogID);
$arBlog = CBlog::GetByID($blogID, $arParams["GROUP_ID"]);
}
}
// $DATE_PUBLISH = "";
// if(strlen($_POST["DATE_PUBLISH_DEF"]) > 0)
// $DATE_PUBLISH = $_POST["DATE_PUBLISH_DEF"];
// elseif (strlen($_POST["DATE_PUBLISH"])<=0)
$DATE_PUBLISH = ConvertTimeStamp(time() + CTimeZone::GetOffset(), "FULL");
// else
// $DATE_PUBLISH = $_POST["DATE_PUBLISH"];
$arFields=array(
"DETAIL_TEXT" => $userTwit['text'],
"DETAIL_TEXT_TYPE" => "text",
"DATE_PUBLISH" => $DATE_PUBLISH,
"PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH,
"PATH" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => "#post_id#", "user_id" => $arBlog["OWNER_ID"])),
"URL" => $arBlog["URL"],
"SOURCE_TYPE" => "twitter",
);
$arFields["PERMS_POST"] = array();
$arFields["PERMS_COMMENT"] = array();
$arFields["MICRO"] = "N";
if($arFields["TITLE"] == '')
{
$arFields["MICRO"] = "Y";
$arFields["TITLE"] = trim(blogTextParser::killAllTags($arFields["DETAIL_TEXT"]));
if($arFields["TITLE"] == '')
$arFields["TITLE"] = GetMessage("BLOG_EMPTY_TITLE_PLACEHOLDER");
}
$arFields["SOCNET_RIGHTS"] = Array();
if(!empty($userTwit['user_perms']))
{
$bOne = true;
foreach($userTwit['user_perms'] as $v => $k)
{
if($v <> '' && is_array($k) && !empty($k))
{
foreach($k as $vv)
{
if($vv <> '')
{
$arFields["SOCNET_RIGHTS"][] = $vv;
if($v != "SG")
$bOne = false;
}
}
}
}
if($bOne && !empty($userTwit['user_perms']["SG"]))
{
$bOnesg = false;
$bFirst = true;
$oGrId = 0;
foreach($userTwit['user_perms']["SG"] as $v)
{
if($v <> '')
{
if($bFirst)
{
$bOnesg = true;
$bFirst = false;
$v = str_replace("SG", "", $v);
$oGrId = intval($v);
}
else
{
$bOnesg = false;
}
}
}
if($bOnesg)
{
if (!CSocNetFeaturesPerms::CanPerformOperation($arParams["USER_ID"], SONET_ENTITY_GROUP, $oGrId, "blog", "write_post") && !CSocNetFeaturesPerms::CanPerformOperation($arParams["USER_ID"], SONET_ENTITY_GROUP, $oGrId, "blog", "moderate_post") && !CSocNetFeaturesPerms::CanPerformOperation($arParams["USER_ID"], SONET_ENTITY_GROUP, $oGrId, "blog", "full_post"))
$arFields["PUBLISH_STATUS"] = BLOG_PUBLISH_STATUS_READY;
}
}
}
$bError = false;
/* if (CModule::IncludeModule('extranet') && !CExtranet::IsIntranetUser())
{
if(empty($arFields["SOCNET_RIGHTS"]) || in_array("UA", $arFields["SOCNET_RIGHTS"]))
{
$bError = true;
$arResult["ERROR_MESSAGE"] = GetMessage("BLOG_BPE_EXTRANET_ERROR");
}
}*/
$newID = null;
$socnetRightsOld = Array("U" => Array());
if(!$bError)
{
preg_match_all("/\[user\s*=\s*([^\]]*)\](.+?)\[\/user\]/ies".BX_UTF_PCRE_MODIFIER, $userTwit['text'], $arMention);
$arFields["=DATE_CREATE"] = $DB->GetNowFunction();
$arFields["AUTHOR_ID"] = $arParams["USER_ID"];
$arFields["BLOG_ID"] = $arBlog["ID"];
$newID = CBlogPost::Add($arFields);
if($newID)
{
$arFields["ID"] = $newID;
$arParamsNotify = Array(
"bSoNet" => true,
"UserID" => $arParams["USER_ID"],
"allowVideo" => $arResult["allowVideo"],
//"bGroupMode" => $arResult["bGroupMode"],
"PATH_TO_SMILE" => $arParams["PATH_TO_SMILE"],
"PATH_TO_POST" => $arParams["PATH_TO_POST"],
"SOCNET_GROUP_ID" => $arParams["GROUP_ID"],
"user_id" => $arParams["USER_ID"],
"NAME_TEMPLATE" => $arParams["NAME_TEMPLATE"],
"SHOW_LOGIN" => $arParams["SHOW_LOGIN"],
);
CBlogPost::Notify($arFields, $arBlog, $arParamsNotify);
}
}
if ($newID > 0 && $arResult["ERROR_MESSAGE"] == '' && $arFields["PUBLISH_STATUS"] == BLOG_PUBLISH_STATUS_PUBLISH) // Record saved successfully
{
BXClearCache(true, "/".SITE_ID."/blog/last_messages_list/");
$arFieldsIM = Array(
"TYPE" => "POST",
"TITLE" => $arFields["TITLE"],
"URL" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("post_id" => $newID, "user_id" => $arBlog["OWNER_ID"])),
"ID" => $newID,
"FROM_USER_ID" => $arParams["USER_ID"],
"TO_USER_ID" => array(),
"TO_SOCNET_RIGHTS" => $arFields["SOCNET_RIGHTS"],
"TO_SOCNET_RIGHTS_OLD" => $socnetRightsOld["U"],
);
if(!empty($arMentionOld))
$arFieldsIM["MENTION_ID_OLD"] = $arMentionOld[1];
if(!empty($arMention))
$arFieldsIM["MENTION_ID"] = $arMention[1];
CBlogPost::NotifyIm($arFieldsIM);
$arParams["ID"] = $newID;
if(!empty($_POST["SPERM"]["SG"]))
{
foreach($_POST["SPERM"]["SG"] as $v)
{
$group_id_tmp = mb_substr($v, 2);
if(intval($group_id_tmp) > 0)
CSocNetGroup::SetLastActivity(intval($group_id_tmp));
}
}
}
}
}