function OnSearchReindex($NS = array(), $oCallback = NULL, $callback_method = "") { global $DB; $arResult = array(); if ($NS["MODULE"] == "socialnetwork" && strlen($NS["ID"]) > 0) { $id = intval($NS["ID"]); } else { $id = 0; } //very first id if ($NS["SITE_ID"] != "") { $strNSJoin1 .= " INNER JOIN b_sonet_group_site sgs ON sgs.GROUP_ID=g.ID "; $strNSFilter1 .= " AND sgs.SITE_ID='" . $DB->ForSQL($NS["SITE_ID"]) . "' "; } $strSql = "\n\t\t\tSELECT\n\t\t\t\tg.ID\n\t\t\t\t," . $DB->DateToCharFunction("g.DATE_UPDATE") . " as DATE_UPDATE\n\t\t\t\t,g.NAME\n\t\t\t\t,g.DESCRIPTION\n\t\t\t\t,g.SUBJECT_ID\n\t\t\t\t,g.KEYWORDS\n\t\t\t\t,g.VISIBLE\n\t\t\tFROM\n\t\t\t\tb_sonet_group g\n\t\t\t\t" . $strNSJoin1 . "\n\t\t\tWHERE\n\t\t\t\tg.ACTIVE = 'Y'\n\t\t\t\t" . $strNSFilter1 . "\n\t\t\t\tAND g.ID > " . $id . "\n\t\t\tORDER BY\n\t\t\t\tg.ID\n\t\t"; $rs = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); while ($ar = $rs->Fetch()) { $arSearchIndexSiteID = array(); $rsGroupSite = CSocNetGroup::GetSite($ar["ID"]); while ($arGroupSite = $rsGroupSite->Fetch()) { $arSearchIndexSiteID[$arGroupSite["LID"]] = str_replace("#group_id#", $ar["ID"], COption::GetOptionString("socialnetwork", "group_path_template", "/workgroups/group/#group_id#/", $arGroupSite["LID"])); } $Result = array("ID" => "G" . $ar["ID"], "LAST_MODIFIED" => $ar["DATE_UPDATE"], "TITLE" => $ar["NAME"], "BODY" => CSocNetTextParser::killAllTags($ar["DESCRIPTION"]), "SITE_ID" => $arSearchIndexSiteID, "PARAM1" => $ar["SUBJECT_ID"], "PARAM2" => $ar["ID"], "PARAM3" => "GROUP", "PERMISSIONS" => $ar["VISIBLE"] == "Y" ? array('G2') : array('SG' . $ar["ID"] . '_A', 'SG' . $ar["ID"] . '_E', 'SG' . $ar["ID"] . '_K'), "PARAMS" => array("socnet_group" => $ar["ID"], "entity" => "socnet_group"), "TAGS" => $ar["KEYWORDS"]); if ($oCallback) { $res = call_user_func(array(&$oCallback, $callback_method), $Result); if (!$res) { return $Result["ID"]; } } else { $arResult[] = $Result; } } if ($oCallback) { return false; } return $arResult; }
function FormatEvent_Data($arFields, $arParams, $bMail = false) { $arResult = array("EVENT" => $arFields, "URL" => ""); if (!CModule::IncludeModule("socialnetwork")) { return $arResult; } if (in_array($arFields["ENTITY_TYPE"], array(SONET_SUBSCRIBE_ENTITY_GROUP, SONET_SUBSCRIBE_ENTITY_USER))) { $arResult["ENTITY"] = CSocNetLogTools::FormatEvent_GetEntity($arFields, $arParams, $bMail); $rsRight = CSocNetLogRights::GetList(array(), array("LOG_ID" => $arFields["ID"])); $arRights = array(); while ($arRight = $rsRight->Fetch()) { $arRights[] = $arRight["GROUP_CODE"]; } $arDestination = CSocNetLogTools::FormatDestinationFromRights($arRights, $arParams, $iMoreCount); } $title = ""; $arEventParams = unserialize(strlen($arFields["~PARAMS"]) > 0 ? $arFields["~PARAMS"] : $arFields["PARAMS"]); if (in_array($arFields["ENTITY_TYPE"], array(SONET_SUBSCRIBE_ENTITY_GROUP, SONET_SUBSCRIBE_ENTITY_USER)) && is_array($arEventParams) && count($arEventParams) > 0 && array_key_exists("ENTITY_NAME", $arEventParams) && strlen($arEventParams["ENTITY_NAME"]) > 0) { if (!$bMail && strlen($arFields["URL"]) > 0) { $title_tmp = '<a href="' . $arFields["URL"] . '">' . $arEventParams["ENTITY_NAME"] . '</a>'; } else { $title_tmp = $arEventParams["ENTITY_NAME"]; } } else { if (!$bMail && strlen($arFields["URL"]) > 0) { $title_tmp = '<a href="' . $arFields["URL"] . '">' . $arFields["TITLE"] . '</a>'; } else { $title_tmp = $arFields["TITLE"]; } } $title = str_replace(array("#TITLE#", "#ENTITY#"), array($title_tmp, $bMail ? $arResult["ENTITY"]["FORMATTED"] : $arResult["ENTITY"]["FORMATTED"]["NAME"]), $bMail ? GetMessage("LFP_SOCNET_LOG_DATA_" . $arFields["ENTITY_TYPE"] . "_TITLE_MAIL") : GetMessage("LFP_SOCNET_LOG_DATA_TITLE")); $url = false; if (strlen($arFields["URL"]) > 0) { $url = $arFields["URL"]; } if (in_array($arFields["ENTITY_TYPE"], array(SONET_SUBSCRIBE_ENTITY_GROUP, SONET_SUBSCRIBE_ENTITY_USER))) { if (!$bMail) { $message = $arFields["MESSAGE"]; } else { $message = $arFields["TITLE"] . "#BR##BR#" . $arFields["MESSAGE"]; } } else { $message = $arFields["MESSAGE"]; } $arFieldsTooltip = array('ID' => $arFields['USER_ID'], 'NAME' => $arFields['~CREATED_BY_NAME'], 'LAST_NAME' => $arFields['~CREATED_BY_LAST_NAME'], 'SECOND_NAME' => $arFields['~CREATED_BY_SECOND_NAME'], 'LOGIN' => $arFields['~CREATED_BY_LOGIN']); $arResult['CREATED_BY']['TOOLTIP_FIELDS'] = CSocNetLog::FormatEvent_FillTooltip($arFieldsTooltip, $arParams); $twitInfo = unserialize($arFields['~PARAMS']); $arResult["EVENT_FORMATTED"] = array("TITLE" => $arFields["TITLE"], "TITLE_24" => "", "MESSAGE" => "<a target=\"_blank\" style=\"text-decoration: none; color: #5C6470; font-weight: bold; font-size: 12px\" href=\"https://twitter.com/" . $twitInfo['SCREEN_NAME'] . "/status/" . $twitInfo['TWIT_ID'] . "\">" . $arFields["TITLE"] . "</a><p>" . ($bMail ? CSocNetTextParser::killAllTags($message) : $message), "IS_IMPORTANT" => false, "STYLE" => "", "DESTINATION" => $arDestination); if (intval($iMoreCount) > 0) { $arResult["EVENT_FORMATTED"]["DESTINATION_MORE"] = $iMoreCount; } if (is_array($arEventParams) && array_key_exists("SOURCE_TIMESTAMP", $arEventParams)) { $arResult["EVENT_FORMATTED"]["LOG_DATE_FORMAT"] = ConvertTimeStamp($arEventParams["SOURCE_TIMESTAMP"], "FULL"); } if (strlen($url) > 0) { $arResult["EVENT_FORMATTED"]["URL"] = $url; } if (!$bMail) { if ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP) { $arGroup = array("IMAGE_ID" => $arFields["GROUP_IMAGE_ID"]); $arResult["AVATAR_SRC"] = CSocNetLogTools::FormatEvent_CreateAvatarGroup($arGroup, $arParams); } elseif ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_USER) { $arResult["AVATAR_SRC"] = CSocNetLogTools::FormatEvent_CreateAvatar($arFields, $arParams, "USER_"); } elseif ($arFields["ENTITY_TYPE"] == "N") { $arResult["EVENT_FORMATTED"]["AVATAR_STYLE"] = "avatar-info"; } $parserLog = new logTextParser(false, $arParams["PATH_TO_SMILE"]); $arAllow = array("HTML" => "Y", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "LOG_IMG" => "N", "QUOTE" => "Y", "LOG_QUOTE" => "N", "CODE" => "Y", "LOG_CODE" => "N", "FONT" => "Y", "LOG_FONT" => "N", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "N", "MULTIPLE_BR" => "Y", "VIDEO" => "Y", "LOG_VIDEO" => "N"); $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"] = $parserLog->html_cut($parserLog->convert(htmlspecialcharsback(str_replace("#CUT#", "", $arResult["EVENT_FORMATTED"]["MESSAGE"])), array(), $arAllow), 500); $arAllow = array("HTML" => "Y", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "N", "MULTIPLE_BR" => "Y", "VIDEO" => "Y", "LOG_VIDEO" => "N"); $arResult["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsbx($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), array(), $arAllow)); if ($arParams["MOBILE"] != "Y" && $arParams["NEW_TEMPLATE"] != "Y") { $arResult["EVENT_FORMATTED"]["IS_MESSAGE_SHORT"] = CSocNetLogTools::FormatEvent_IsMessageShort($arResult["EVENT_FORMATTED"]["MESSAGE"], $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"]); } } return $arResult; }
static function FormatComment_Wiki($arFields, $arParams, $bMail = false, $arLog = array()) { $arResult = array("EVENT_FORMATTED" => array()); if ($bMail) { $arResult['CREATED_BY'] = CSocNetLogTools::FormatEvent_GetCreatedBy($arFields, $arParams, $bMail); $arResult['ENTITY'] = CSocNetLogTools::FormatEvent_GetEntity($arLog, $arParams, $bMail); } if (!$bMail && array_key_exists('URL', $arLog) && strlen($arLog['URL']) > 0) { $wiki_tmp = '<a href="' . $arLog['URL'] . '">' . $arLog['TITLE'] . '</a>'; } else { $wiki_tmp = $arLog['TITLE']; } $title = str_replace(array('#TITLE#', '#ENTITY#', '#CREATED_BY#'), array($wiki_tmp, $arResult['ENTITY']['FORMATTED'], $bMail ? $arResult['CREATED_BY']['FORMATTED'] : ''), $bMail ? GetMessage('WIKI_SOCNET_LOG_COMMENT_TITLE_MAIL') : GetMessage('WIKI_SOCNET_LOG_COMMENT_TITLE')); $arResult["EVENT_FORMATTED"] = array("TITLE" => $title, "MESSAGE" => $bMail ? CSocNetTextParser::killAllTags($arFields['MESSAGE']) : $arFields['MESSAGE']); if ($bMail) { $url = CSocNetLogTools::FormatEvent_GetURL($arLog); if (strlen($url) > 0) { $arResult['EVENT_FORMATTED']['URL'] = $url; } } else { static $parserLog = false; if (CModule::IncludeModule("forum")) { if (!$parserLog) { $parserLog = new forumTextParser(LANGUAGE_ID); } $arAllow = array("HTML" => "N", "ALIGN" => "Y", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "Y", "VIDEO" => "Y", "LOG_VIDEO" => "N", "SHORT_ANCHOR" => "Y", "USERFIELDS" => $arFields["UF"], "USER" => "Y"); $parserLog->pathToUser = $arParams["PATH_TO_USER"]; $parserLog->arUserfields = $arFields["UF"]; $arResult["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsbx($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), $arAllow)); } else { if (!$parserLog) { $parserLog = new logTextParser(false, $arParams["PATH_TO_SMILE"]); } $arAllow = array("HTML" => "Y", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "LOG_IMG" => "N", "QUOTE" => "Y", "LOG_QUOTE" => "N", "CODE" => "Y", "LOG_CODE" => "N", "FONT" => "Y", "LOG_FONT" => "N", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "Y", "MULTIPLE_BR" => "Y", "VIDEO" => "Y", "LOG_VIDEO" => "N"); $arResult["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsbx($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), array(), $arAllow)); } if ($arParams["MOBILE"] != "Y" && $arParams["NEW_TEMPLATE"] != "Y") { if (CModule::IncludeModule("forum")) { $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"] = $parserLog->html_cut($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), $arAllow), 500); } else { $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"] = $parserLog->html_cut($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), array(), $arAllow), 500); } $arResult["EVENT_FORMATTED"]["IS_MESSAGE_SHORT"] = CSocNetLogTools::FormatEvent_IsMessageShort($arResult["EVENT_FORMATTED"]["MESSAGE"], $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"]); } } return $arResult; }
function FormatEvent_News($arFields, $arParams, $bMail = false) { $GLOBALS["APPLICATION"]->SetAdditionalCSS("/bitrix/themes/.default/intranet_sonet_log.css"); $arResult = array("EVENT" => $arFields, "ENTITY" => CIntranetEventHandlers::GetEntity_News($arFields, $bMail), "URL" => "", "CACHED_CSS_PATH" => "/bitrix/themes/.default/intranet_sonet_log.css"); if (!CModule::IncludeModule("socialnetwork")) { return $arResult; } $title = ""; if (strlen($arFields["TITLE_TEMPLATE"]) > 0) { if (!$bMail && strlen($arFields["URL"]) > 0) { $title_tmp = '<a href="' . $arFields["URL"] . '">' . $arFields["TITLE"] . '</a>'; } else { $title_tmp = $arFields["TITLE"]; } $title = str_replace(array("#TITLE#", "#ENTITY#"), array($title_tmp, $bMail ? $arResult["ENTITY"]["FORMATTED"] : $arResult["ENTITY"]["FORMATTED"]["NAME"]), $bMail ? GetMessage("INTR_SOCNET_LOG_NEWS_TITLE_MAIL") : GetMessage("INTR_SOCNET_LOG_NEWS_TITLE")); } else { $title_tmp = ""; } $url = false; if (strlen($arFields["URL"]) > 0 && strlen($arFields["SITE_ID"]) > 0) { if (substr($arFields["URL"], 0, 1) === "/") { $rsSites = CSite::GetByID($arFields["SITE_ID"]); $arSite = $rsSites->Fetch(); if (strlen($arSite["SERVER_NAME"]) > 0) { $server_name = $arSite["SERVER_NAME"]; } else { $server_name = COption::GetOptionString("main", "server_name", $GLOBALS["SERVER_NAME"]); } $protocol = CMain::IsHTTPS() ? "https" : "http"; $url = $protocol . "://" . $server_name . $arFields["URL"]; } else { $url = $arFields["URL"]; } } $arResult["EVENT_FORMATTED"] = array("TITLE" => $title, "MESSAGE" => $bMail ? CSocNetTextParser::killAllTags($arFields["MESSAGE"]) : $arFields["MESSAGE"], "IS_IMPORTANT" => true, "TITLE_24" => GetMessage("INTR_SONET_LOG_DATA_TITLE_IMPORTANT_24"), "TITLE_24_2" => $arFields["TITLE"], "STYLE" => "imp-post"); if ($arParams["MOBILE"] == "Y") { $arResult["EVENT_FORMATTED"]["STYLE"] = "item-top-text-important"; $arResult["EVENT_FORMATTED"]["AVATAR_STYLE"] = "avatar-info"; } else { $arResult["EVENT_FORMATTED"]["STYLE"] = "info"; } if (strlen($url) > 0) { $arResult["EVENT_FORMATTED"]["URL"] = $url; } if (!$bMail) { if (intval($arFields["SOURCE_ID"]) > 0 && CModule::IncludeModule("iblock")) { $rsIBlockElement = CIBlockElement::GetList(array(), array("ID" => $arFields["SOURCE_ID"]), false, false, array("ID", "DETAIL_TEXT")); if ($arIBlockElement = $rsIBlockElement->GetNext()) { $arResult["EVENT_FORMATTED"]["MESSAGE"] = $arIBlockElement["DETAIL_TEXT"]; } } if ($arParams["MOBILE"] != "Y" && $arParams["NEW_TEMPLATE"] != "Y") { $parserLog = new logTextParser(false, $arParams["PATH_TO_SMILE"]); $arAllow = array("HTML" => "Y", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "N", "MULTIPLE_BR" => "N", "VIDEO" => "Y", "LOG_VIDEO" => "N"); $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"] = $parserLog->html_cut($parserLog->convert(htmlspecialcharsback(str_replace("#CUT#", "", $arResult["EVENT_FORMATTED"]["MESSAGE"])), array(), $arAllow), 1000); $arResult["EVENT_FORMATTED"]["IS_MESSAGE_SHORT"] = CSocNetLogTools::FormatEvent_IsMessageShort($arResult["EVENT_FORMATTED"]["MESSAGE"], $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"]); } if ($arParams["MOBILE"] != "Y") { $rsRight = CSocNetLogRights::GetList(array(), array("LOG_ID" => $arFields["ID"])); $arRights = array(); while ($arRight = $rsRight->Fetch()) { $arRights[] = $arRight["GROUP_CODE"]; } $arResult["EVENT_FORMATTED"]["DESTINATION"] = CSocNetLogTools::FormatDestinationFromRights($arRights, $arParams); } } $arResult["HAS_COMMENTS"] = intval($arFields["SOURCE_ID"]) > 0 ? "Y" : "N"; return $arResult; }
/** * <p>Метод изменяет параметры группы с заданным идентификатором.</p> <p><b>Примечание</b>: при работе метода вызываются события <a href="http://dev.1c-bitrix.ru/api_help/socialnetwork/events/OnBeforeSocNetGroupUpdate.php">OnBeforeSocNetGroupUpdate</a> и <a href="http://dev.1c-bitrix.ru/api_help/socialnetwork/events/OnSocNetGroupUpdate.php">OnSocNetGroupUpdate</a>.</p> * * * * * @param int $ID Идентификатор группы </htm * * * * @param array $arFields Массив параметров группы, которые должны быть изменены. Ключами в * массиве являются названия параметров, а значениями - новые * значения. Допустимые ключи: <b>SITE_ID</b> - код сайта,<br><b>NAME</b> - название * группы,<br><b>DESCRIPTION</b> - описание группы,<br><b>VISIBLE</b> - флаг Y/N - видна ли * группа в списке групп,<br><b>OPENED</b> - флаг Y/N - открыта ли группа для * свободного вступления,<br><b>SUBJECT_ID</b> - код темы,<br><b>KEYWORDS</b> - ключевые * слова,<br><b>IMAGE_ID</b> - иконка группы,<br><b>INITIATE_PERMS</b> - кто имеет право на * приглашение пользователей в группу: SONET_ROLES_OWNER - только владелец * группы, SONET_ROLES_MODERATOR - владелец группы и модераторы группы, * SONET_ROLES_USER - все члены группы,<br><b>CLOSED</b> - флаг Y/N - является ли группа * архивной,<br><b>SPAM_PERMS</b> - кто имеет право на отправку сообщений в * группу: SONET_ROLES_OWNER - только владелец группы, SONET_ROLES_MODERATOR - владелец * группы и модераторы группы, SONET_ROLES_USER - все члены группы. * * * * @param bool $bAutoSubscribe = true Флаг автоподписки на уведомления. Необязательный. По умолчанию * равен true. * * * * @param bool $bClearCommonTag = true Необязательный. По умолчанию равен true. * * * * @return int <p>Метод возвращает код изменяемой группы или false в случае * ошибки.</p> <a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * $arFields = array( * "NAME" => $_POST["GROUP_NAME"], * "DESCRIPTION" => $_POST["GROUP_DESCRIPTION"], * ); * if (!CSocNetGroup::Update($ID, $arFields)) * { * if ($e = $GLOBALS["APPLICATION"]->GetException()) * $errorMessage .= $e->GetString(); * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/CSocNetGroup/update.php * @author Bitrix */ public static function Update($ID, $arFields, $bAutoSubscribe = true, $bClearCommonTag = true) { global $DB; if (!CSocNetGroup::__ValidateID($ID)) { return false; } $ID = IntVal($ID); $arGroupOld = CSocNetGroup::GetByID($ID); if (!$arGroupOld) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_NO_GROUP"), "ERROR_NO_GROUP"); return false; } $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CSocNetGroup::CheckFields("UPDATE", $arFields, $ID)) { return false; } else { $arSiteID = array(); if (is_set($arFields, "SITE_ID")) { if (is_array($arFields["SITE_ID"])) { $arSiteID = $arFields["SITE_ID"]; } else { $arSiteID[] = $arFields["SITE_ID"]; } $arFields["SITE_ID"] = false; $str_SiteID = "''"; foreach ($arSiteID as $v) { $arFields["SITE_ID"] = $v; $str_SiteID .= ", '" . $DB->ForSql($v) . "'"; } } } $db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetGroupUpdate"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } if (array_key_exists("IMAGE_ID", $arFields) && is_array($arFields["IMAGE_ID"]) && (!array_key_exists("MODULE_ID", $arFields["IMAGE_ID"]) || strlen($arFields["IMAGE_ID"]["MODULE_ID"]) <= 0)) { $arFields["IMAGE_ID"]["MODULE_ID"] = "socialnetwork"; } CFile::SaveForDB($arFields, "IMAGE_ID", "socialnetwork"); $strUpdate = $DB->PrepareUpdate("b_sonet_group", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($strUpdate) > 0) { $strUpdate .= ", "; } $strUpdate .= $key . "=" . $value . " "; } if (strlen($strUpdate) > 0) { $strSql = "UPDATE b_sonet_group SET " . "\t" . $strUpdate . " " . "WHERE ID = " . $ID . " "; $DB->Query($strSql, False, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (count($arSiteID) > 0) { $strSql = "DELETE FROM b_sonet_group_site WHERE GROUP_ID=" . $ID; $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); $strSql = "INSERT INTO b_sonet_group_site(GROUP_ID, SITE_ID) " . "SELECT " . $ID . ", LID " . "FROM b_lang " . "WHERE LID IN (" . $str_SiteID . ") "; $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); $arLogID = array(); $dbResult = CSocNetLog::GetList(array(), array("LOG_RIGHTS" => "SG" . $ID), false, false, array("ID")); while ($arResult = $dbResult->Fetch()) { $DB->Query("DELETE FROM b_sonet_log_site WHERE LOG_ID = " . $arResult["ID"] . "", false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); $DB->Query("\n\t\t\t\t\t\tINSERT INTO b_sonet_log_site(LOG_ID, SITE_ID)\n\t\t\t\t\t\tSELECT " . $arResult["ID"] . ", LID\n\t\t\t\t\t\tFROM b_lang\n\t\t\t\t\t\tWHERE LID IN (" . $str_SiteID . ")\n\t\t\t\t\t", false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); $arLogID[] = $arResult["ID"]; } $dbResult = CSocNetLog::GetList(array(), array("!ID" => $arLogID, "ENTITY_ID" => $ID, "ENTITY_TYPE" => SONET_ENTITY_GROUP), false, false, array("ID")); while ($arResult = $dbResult->Fetch()) { $DB->Query("DELETE FROM b_sonet_log_site WHERE LOG_ID = " . $arResult["ID"] . "", false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); $DB->Query("\n\t\t\t\t\t\tINSERT INTO b_sonet_log_site(LOG_ID, SITE_ID)\n\t\t\t\t\t\tSELECT " . $arResult["ID"] . ", LID\n\t\t\t\t\t\tFROM b_lang\n\t\t\t\t\t\tWHERE LID IN (" . $str_SiteID . ")\n\t\t\t\t\t", false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); } } unset($GLOBALS["SONET_GROUP_CACHE"][$ID]); if (defined("BX_COMP_MANAGED_CACHE")) { if ($bClearCommonTag) { $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_group"); } $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_group_" . $ID); $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group_G" . $ID); $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group"); } $GLOBALS["USER_FIELD_MANAGER"]->Update("SONET_GROUP", $ID, $arFields); $events = GetModuleEvents("socialnetwork", "OnSocNetGroupUpdate"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, &$arFields)); } if (CModule::IncludeModule("search")) { $arGroupNew = CSocNetGroup::GetByID($ID); if ($arGroupNew) { if ($arGroupNew["ACTIVE"] == "N" && $arGroupOld["ACTIVE"] == "Y") { CSearch::DeleteIndex("socialnetwork", "G" . $ID); } elseif ($arGroupNew["ACTIVE"] == "Y") { $BODY = CSocNetTextParser::killAllTags($arGroupNew["~DESCRIPTION"]); $BODY .= $GLOBALS["USER_FIELD_MANAGER"]->OnSearchIndex("SONET_GROUP", $ID); $arSearchIndexSiteID = array(); $rsGroupSite = CSocNetGroup::GetSite($ID); while ($arGroupSite = $rsGroupSite->Fetch()) { $arSearchIndexSiteID[$arGroupSite["LID"]] = str_replace("#group_id#", $ID, COption::GetOptionString("socialnetwork", "group_path_template", "/workgroups/group/#group_id#/", $arGroupSite["LID"])); } $arSearchIndex = array("SITE_ID" => $arSearchIndexSiteID, "LAST_MODIFIED" => $arGroupNew["DATE_ACTIVITY"], "PARAM1" => $arGroupNew["SUBJECT_ID"], "PARAM2" => $ID, "PARAM3" => "GROUP", "PERMISSIONS" => $arGroupNew["VISIBLE"] == "Y" ? array('G2') : array('SG' . $ID . '_A', 'SG' . $ID . '_E', 'SG' . $ID . '_K'), "PARAMS" => array("socnet_group" => $ID, "entity" => "socnet_group"), "TITLE" => $arGroupNew["~NAME"], "BODY" => $BODY, "TAGS" => $arGroupNew["~KEYWORDS"]); CSearch::Index("socialnetwork", "G" . $ID, $arSearchIndex, True); } if ($arGroupNew["OPENED"] == "Y" && $arGroupOld["OPENED"] == "N") { $dbRequests = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $ID, "ROLE" => SONET_ROLES_REQUEST, "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER), false, false, array("ID")); if ($dbRequests) { $arIDs = array(); while ($arRequests = $dbRequests->GetNext()) { $arIDs[] = $arRequests["ID"]; } CSocNetUserToGroup::ConfirmRequestToBeMember($GLOBALS["USER"]->GetID(), $ID, $arIDs, $bAutoSubscribe); } } } } } elseif (!$GLOBALS["USER_FIELD_MANAGER"]->Update("SONET_GROUP", $ID, $arFields)) { $ID = False; } return $ID; }
function FormatEvent_Data($arFields, $arParams, $bMail = false) { $arResult = array("EVENT" => $arFields, "URL" => ""); if (!CModule::IncludeModule("socialnetwork")) { return $arResult; } if ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER) { $arResult["ENTITY"] = CXDILFEventHandlers::GetEntity_Data($arFields, $bMail); $rsRight = CSocNetLogRights::GetList(array(), array("LOG_ID" => $arFields["ID"])); $arRights = array(); while ($arRight = $rsRight->Fetch()) { $arRights[] = $arRight["GROUP_CODE"]; } $arDestination = CSocNetLogTools::FormatDestinationFromRights($arRights, $arParams, $iMoreCount); } elseif (in_array($arFields["ENTITY_TYPE"], array(SONET_SUBSCRIBE_ENTITY_GROUP, SONET_SUBSCRIBE_ENTITY_USER))) { $arResult["ENTITY"] = CSocNetLogTools::FormatEvent_GetEntity($arFields, $arParams, $bMail); if ($entity_type == SONET_SUBSCRIBE_ENTITY_GROUP) { $arDestination = array(array("STYLE" => "sonetgroups", "TITLE" => $arResult["ENTITY"]["FORMATTED"]["NAME"], "URL" => $arResult["ENTITY"]["FORMATTED"]["URL"], "IS_EXTRANET" => is_array($GLOBALS["arExtranetGroupID"]) && in_array($arFields["ENTITY_ID"], $GLOBALS["arExtranetGroupID"]))); } else { } } $title = ""; $arEventParams = unserialize(strlen($arFields["~PARAMS"]) > 0 ? $arFields["~PARAMS"] : $arFields["PARAMS"]); if (is_array($arEventParams) && array_key_exists("SCHEME_ID", $arEventParams)) { $rs = CXDILFScheme::GetByID($arEventParams["SCHEME_ID"]); if ($arScheme = $rs->Fetch()) { $arParams["IS_HTML"] = $arScheme["IS_HTML"]; } } if (in_array($arFields["ENTITY_TYPE"], array(SONET_SUBSCRIBE_ENTITY_GROUP, SONET_SUBSCRIBE_ENTITY_USER)) && is_array($arEventParams) && count($arEventParams) > 0 && array_key_exists("ENTITY_NAME", $arEventParams) && strlen($arEventParams["ENTITY_NAME"]) > 0) { if (!$bMail && strlen($arFields["URL"]) > 0) { $title_tmp = '<a href="' . $arFields["URL"] . '">' . $arEventParams["ENTITY_NAME"] . '</a>'; } else { $title_tmp = $arEventParams["ENTITY_NAME"]; } } else { if (!$bMail && strlen($arFields["URL"]) > 0) { $title_tmp = '<a href="' . $arFields["URL"] . '">' . $arFields["TITLE"] . '</a>'; } else { $title_tmp = $arFields["TITLE"]; } } $title = str_replace(array("#TITLE#", "#ENTITY#"), array($title_tmp, $bMail ? $arResult["ENTITY"]["FORMATTED"] : $arResult["ENTITY"]["FORMATTED"]["NAME"]), $bMail ? GetMessage("LFP_SOCNET_LOG_DATA_" . $arFields["ENTITY_TYPE"] . "_TITLE_MAIL") : GetMessage("LFP_SOCNET_LOG_DATA_TITLE")); $url = false; if (strlen($arFields["URL"]) > 0) { $url = $arFields["URL"]; } if (in_array($arFields["ENTITY_TYPE"], array(SONET_SUBSCRIBE_ENTITY_GROUP, SONET_SUBSCRIBE_ENTITY_USER))) { if (!$bMail) { $message = "<b><a href='" . $arFields["URL"] . "'>" . $arFields["TITLE"] . "</a></b><br />" . $arFields["MESSAGE"]; } else { $message = $arFields["TITLE"] . "#BR##BR#" . $arFields["MESSAGE"]; } } else { $message = $arFields["MESSAGE"]; } $arResult["EVENT_FORMATTED"] = array("TITLE" => $title, "TITLE_24" => $arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER ? $arParams["MOBILE"] == "Y" ? GetMessage("LFP_SOCNET_LOG_DATA_TITLE_24") : GetMessage("LFP_SOCNET_LOG_DATA_TITLE_IMPORTANT_24") : GetMessage("LFP_SOCNET_LOG_DATA_TITLE_24"), "MESSAGE" => $bMail ? CSocNetTextParser::killAllTags($message) : $message, "IS_IMPORTANT" => $arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER ? true : false, "STYLE" => $arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER ? "imp-post feed-external-massage" : "", "DESTINATION" => $arDestination); if ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER) { $arResult["EVENT_FORMATTED"]["TITLE_24_2"] = $arFields["TITLE"]; } if (intval($iMoreCount) > 0) { $arResult["EVENT_FORMATTED"]["DESTINATION_MORE"] = $iMoreCount; } if (is_array($arEventParams) && array_key_exists("SOURCE_TIMESTAMP", $arEventParams)) { $arResult["EVENT_FORMATTED"]["LOG_DATE_FORMAT"] = ConvertTimeStamp($arEventParams["SOURCE_TIMESTAMP"], "FULL"); } if (strlen($url) > 0) { $arResult["EVENT_FORMATTED"]["URL"] = $url; } if (!$bMail) { if ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_PROVIDER) { $arResult["EVENT_FORMATTED"]["AVATAR_STYLE"] = "avatar-rss"; } elseif ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP) { $arGroup = array("IMAGE_ID" => $arFields["GROUP_IMAGE_ID"]); $arResult["AVATAR_SRC"] = CSocNetLogTools::FormatEvent_CreateAvatarGroup($arGroup, $arParams); } elseif ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_USER) { $arResult["AVATAR_SRC"] = CSocNetLogTools::FormatEvent_CreateAvatar($arFields, $arParams, "USER_"); } elseif ($arFields["ENTITY_TYPE"] == "N") { $arResult["EVENT_FORMATTED"]["AVATAR_STYLE"] = "avatar-info"; } $parserLog = new logTextParser(false, $arParams["PATH_TO_SMILE"]); $arAllow = array("HTML" => "Y", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "N", "LOG_NL2BR" => $arParams["IS_HTML"] == "Y" ? "N" : "Y", "MULTIPLE_BR" => "N", "VIDEO" => "Y", "LOG_VIDEO" => "N"); $arResult["EVENT_FORMATTED"]["MESSAGE"] = htmlspecialcharsbx($parserLog->convert(htmlspecialcharsback($arResult["EVENT_FORMATTED"]["MESSAGE"]), array(), $arAllow)); if ($arParams["MOBILE"] != "Y" && $arParams["NEW_TEMPLATE"] != "Y") { $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"] = $parserLog->html_cut($parserLog->convert(htmlspecialcharsback(str_replace("#CUT#", "", $arResult["EVENT_FORMATTED"]["MESSAGE"])), array(), $arAllow), 500); $arResult["EVENT_FORMATTED"]["IS_MESSAGE_SHORT"] = CSocNetLogTools::FormatEvent_IsMessageShort($arResult["EVENT_FORMATTED"]["MESSAGE"], $arResult["EVENT_FORMATTED"]["SHORT_MESSAGE"]); } } return $arResult; }