/** * @param int $idUserFrom * @param int $idUserTo * @param string $title * @param string $type * @param string $idQuestion * @param string $textMessage * @return int */ public static function sendMes($idUserFrom = 1, $idUserTo = 1, $title, $idQuestion, $textMessage = "", $type = "P") { $res = false; $senderUserID = $idUserFrom; $targetUserID = $idUserTo; $arFieldsMes = array("FROM_USER_ID" => $senderUserID, "TO_USER_ID" => $targetUserID, "TITLE" => $title, "MESSAGE" => $idQuestion, "DATE_CREATE" => date("d.m.Y H:i:s", time() - DIFFERENT_WITH_MOSCOW_TIME), "DATE_VIEW" => false, "MESSAGE_TYPE" => $type, "FROM_DELETED" => "N", "TO_DELETED" => "N", "SEND_MAIL" => "Y"); if (CModule::IncludeModule("socialnetwork")) { $res = CSocNetMessages::Add($arFieldsMes); if ($res) { if (CModule::IncludeModule("iblock")) { if (CModule::IncludeModule('payments')) { $userInfo = new CLawPayment(); $InfoUserFrom = $userInfo->userInfo($idUserFrom); $InfoUserTo = $userInfo->userInfo($idUserTo); $emailFrom = $InfoUserFrom["EMAIL"]; $emailUser = $InfoUserTo["EMAIL"]; SendMessage::sendMessOnEmail($emailFrom, $emailUser, $title, $textMessage); } } } else { $errorMessage = ""; if ($err = $GLOBALS["APPLICATION"]->GetException()) { $errorMessage = $err->GetString(); } if (StrLen($errorMessage) <= 0) { $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_MESSAGE"); } $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_MESSAGE"); } } return $res; }
public function Execute() { if (!CModule::IncludeModule("socialnetwork")) { return CBPActivityExecutionStatus::Closed; } $rootActivity = $this->GetRootActivity(); $documentId = $rootActivity->GetDocumentId(); $arMessageUserFrom = CBPHelper::ExtractUsers($this->MessageUserFrom, $documentId, true); $arMessageUserTo = CBPHelper::ExtractUsers($this->MessageUserTo, $documentId, false); $arMessageFields = array("=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM, "FROM_USER_ID" => $arMessageUserFrom, "MESSAGE" => CBPHelper::ConvertTextForMail($this->MessageText)); $ar = array(); foreach ($arMessageUserTo as $userTo) { if (in_array($userTo, $ar)) { continue; } $ar[] = $userTo; $arMessageFields["TO_USER_ID"] = $userTo; CSocNetMessages::Add($arMessageFields); } return CBPActivityExecutionStatus::Closed; }
public static function SendEvent($ID, $mailTemplate = "SONET_NEW_EVENT", $tmp_id = false, $bAgent = false, $bTransport = false) { $ID = IntVal($ID); if ($ID <= 0) return false; if (intval($tmp_id) > 0) $arFilter = array("ID" => $tmp_id); else $arFilter = array("ID" => $ID); $dbLog = CSocNetLog::GetList( array(), $arFilter, false, false, array("ID", "ENTITY_TYPE", "ENTITY_ID", "USER_ID", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "EVENT_ID", "LOG_DATE", "TITLE_TEMPLATE", "TITLE", "MESSAGE", "TEXT_MESSAGE", "URL", "MODULE_ID", "CALLBACK_FUNC", "SITE_ID", "PARAMS", "SOURCE_ID", "GROUP_NAME", "CREATED_BY_NAME", "CREATED_BY_SECOND_NAME", "CREATED_BY_LAST_NAME", "CREATED_BY_LOGIN", "LOG_SOURCE_ID"), array("MIN_ID_JOIN" => true) ); $arLog = $dbLog->Fetch(); if (!$arLog) return $bAgent; if (MakeTimeStamp($arLog["LOG_DATE"]) > (time() + CTimeZone::GetOffset())) { $agent = "CSocNetLog::SendEventAgent(".$ID.", '".$mailTemplate."', ".($tmp_id ? $tmp_id : 'false').");"; $rsAgents = CAgent::GetList(array("ID"=>"DESC"), array("NAME" => $agent)); if(!$rsAgents->Fetch()) { $res = CAgent::AddAgent($agent, "socialnetwork", "N", 0, $arLog["LOG_DATE"], "Y", $arLog["LOG_DATE"]); if(!$res) $GLOBALS["APPLICATION"]->ResetException(); } elseif ($bAgent) { CAgent::RemoveAgent($agent, "socialnetwork"); CAgent::AddAgent($agent, "socialnetwork", "N", 0, $arLog["LOG_DATE"], "Y", $arLog["LOG_DATE"]); return true; } return false; } $arEvent = CSocNetLogTools::FindLogEventByID($arLog["EVENT_ID"], $arLog["ENTITY_TYPE"]); if ( $arEvent && array_key_exists("CLASS_FORMAT", $arEvent) && array_key_exists("METHOD_FORMAT", $arEvent) ) { $dbSiteCurrent = CSite::GetByID(SITE_ID); if ($arSiteCurrent = $dbSiteCurrent->Fetch()) if ($arSiteCurrent["LANGUAGE_ID"] != LANGUAGE_ID) $arLog["MAIL_LANGUAGE_ID"] = $arSiteCurrent["LANGUAGE_ID"]; $arLog["FIELDS_FORMATTED"] = call_user_func(array($arEvent["CLASS_FORMAT"], $arEvent["METHOD_FORMAT"]), $arLog, array(), true); } if ( array_key_exists($arLog["ENTITY_TYPE"], $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"]) && array_key_exists("HAS_MY", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]) && $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["HAS_MY"] == "Y" && array_key_exists("CLASS_OF", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]) && array_key_exists("METHOD_OF", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]) && strlen($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["CLASS_OF"]) > 0 && strlen($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["METHOD_OF"]) > 0 && method_exists($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["CLASS_OF"], $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["METHOD_OF"]) ) $arOfEntities = call_user_func(array($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["CLASS_OF"], $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["METHOD_OF"]), $arLog["ENTITY_ID"]); if ($bTransport) { $arListParams = array( "USE_SUBSCRIBE" => "Y", "ENTITY_TYPE" => $arLog["ENTITY_TYPE"], "ENTITY_ID" => $arLog["ENTITY_ID"], "EVENT_ID" => $arLog["EVENT_ID"], "USER_ID" => $arLog["USER_ID"], "OF_ENTITIES" => $arOfEntities, "TRANSPORT" => array("M", "X") ); $arLogSites = array(); $rsLogSite = CSocNetLog::GetSite($ID); while($arLogSite = $rsLogSite->Fetch()) $arLogSites[] = $arLogSite["LID"]; if (CModule::IncludeModule("extranet")) { $arSites = array(); $dbSite = CSite::GetList($by="sort", $order="desc", array("ACTIVE" => "Y")); while($arSite = $dbSite->Fetch()) $arSites[$arSite["ID"]] = array( "DIR" => (strlen(trim($arSite["DIR"])) > 0 ? $arSite["DIR"] : "/"), "SERVER_NAME" => (strlen(trim($arSite["SERVER_NAME"])) > 0 ? $arSite["SERVER_NAME"] : COption::GetOptionString("main", "server_name", $_SERVER["HTTP_HOST"])) ); $extranet_site_id = CExtranet::GetExtranetSiteID(); $intranet_site_id = CSite::GetDefSite(); $arIntranetUsers = CExtranet::GetIntranetUsers(); } $dbSubscribers = CSocNetLogEvents::GetList( array("TRANSPORT" => "DESC"), array( "USER_ACTIVE" => "Y", "SITE_ID" => array_merge($arLogSites, array(false)) ), false, false, array("USER_ID", "SITE_ID", "ENTITY_TYPE", "ENTITY_ID", "ENTITY_CB", "ENTITY_MY", "USER_NAME", "USER_LAST_NAME", "USER_LOGIN", "USER_LID", "USER_EMAIL", "TRANSPORT"), $arListParams ); $arListParams = array( "USE_SUBSCRIBE" => "Y", "ENTITY_TYPE" => $arLog["ENTITY_TYPE"], "ENTITY_ID" => $arLog["ENTITY_ID"], "EVENT_ID" => $arLog["EVENT_ID"], "USER_ID" => $arLog["USER_ID"], "OF_ENTITIES" => $arOfEntities, "TRANSPORT" => "N" ); $dbUnSubscribers = CSocNetLogEvents::GetList( array("TRANSPORT" => "DESC"), array( "USER_ACTIVE" => "Y", "SITE_ID" => array_merge($arLogSites, array(false)) ), false, false, array("USER_ID", "SITE_ID", "ENTITY_TYPE", "ENTITY_ID", "ENTITY_CB", "ENTITY_MY", "TRANSPORT", "EVENT_ID"), $arListParams ); $arUnSubscribers = array(); while ($arUnSubscriber = $dbUnSubscribers->Fetch()) $arUnSubscribers[] = $arUnSubscriber["USER_ID"]."_".$arUnSubscriber["ENTITY_TYPE"]."_".$arUnSubscriber["ENTITY_ID"]."_".$arUnSubscriber["ENTITY_MY"]."_".$arUnSubscriber["ENTITY_CB"]."_".$arUnSubscriber["EVENT_ID"]; $bHasAccessAll = CSocNetLogRights::CheckForUserAll($arLog["ID"]); $arSentUserID = array("M" => array(), "X" => array()); while ($arSubscriber = $dbSubscribers->Fetch()) { if ( is_array($arIntranetUsers) && !in_array($arSubscriber["USER_ID"], $arIntranetUsers) && !in_array($extranet_site_id, $arLogSites) ) continue; if ( array_key_exists($arSubscriber["TRANSPORT"], $arSentUserID) && in_array($arSubscriber["USER_ID"], $arSentUserID[$arSubscriber["TRANSPORT"]]) ) continue; if ( intval($arSubscriber["ENTITY_ID"]) != 0 && $arSubscriber["EVENT_ID"] == "all" && ( in_array($arSubscriber["USER_ID"]."_".$arSubscriber["ENTITY_TYPE"]."_".$arSubscriber["ENTITY_ID"]."_N_".$arSubscriber["ENTITY_CB"]."_".$arLog["EVENT_ID"], $arUnSubscribers) || in_array($arSubscriber["USER_ID"]."_".$arSubscriber["ENTITY_TYPE"]."_".$arSubscriber["ENTITY_ID"]."_Y_".$arSubscriber["ENTITY_CB"]."_".$arLog["EVENT_ID"], $arUnSubscribers) ) ) continue; elseif ( intval($arSubscriber["ENTITY_ID"]) == 0 && $arSubscriber["ENTITY_CB"] == "N" && $arSubscriber["EVENT_ID"] != "all" && ( in_array($arSubscriber["USER_ID"]."_".$arSubscriber["ENTITY_TYPE"]."_".$arLog["ENTITY_ID"]."_Y_N_all", $arUnSubscribers) || in_array($arSubscriber["USER_ID"]."_".$arSubscriber["ENTITY_TYPE"]."_".$arLog["ENTITY_ID"]."_N_N_all", $arUnSubscribers) || in_array($arSubscriber["USER_ID"]."_".$arSubscriber["ENTITY_TYPE"]."_".$arLog["ENTITY_ID"]."_Y_N_".$arLog["EVENT_ID"], $arUnSubscribers) || in_array($arSubscriber["USER_ID"]."_".$arSubscriber["ENTITY_TYPE"]."_".$arLog["ENTITY_ID"]."_N_N_".$arLog["EVENT_ID"], $arUnSubscribers) ) ) continue; $arSentUserID[$arSubscriber["TRANSPORT"]][] = $arSubscriber["USER_ID"]; if (!$bHasAccessAll) { $bHasAccess = CSocNetLogRights::CheckForUserOnly($arLog["ID"], $arSubscriber["USER_ID"]); if (!$bHasAccess) continue; } if (CModule::IncludeModule("extranet")) { $server_name = $arSites[((!in_array($arSubscriber["USER_ID"], $arIntranetUsers) && $extranet_site_id) ? $extranet_site_id : $intranet_site_id)]["SERVER_NAME"]; $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"] = str_replace( array("#SERVER_NAME#", "#GROUPS_PATH#"), array( $server_name, COption::GetOptionString("socialnetwork", "workgroups_page", false, ((!in_array($arSubscriber["USER_ID"], $arIntranetUsers) && $extranet_site_id) ? $extranet_site_id : $intranet_site_id)) ), $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL"] ); $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE_TO_SEND"] = str_replace( array("#SERVER_NAME#", "#GROUPS_PATH#"), array( $server_name, COption::GetOptionString("socialnetwork", "workgroups_page", false, ((!in_array($arSubscriber["USER_ID"], $arIntranetUsers) && $extranet_site_id) ? $extranet_site_id : $intranet_site_id)) ), $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"] ); } else $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE_TO_SEND"] = $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"]; switch ($arSubscriber["TRANSPORT"]) { case "X": if ( array_key_exists("URL_TO_SEND", $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]) && strlen($arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"]) > 0 ) $link = GetMessage("SONET_GL_SEND_EVENT_LINK").$arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"]; elseif ( array_key_exists("URL", $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]) && strlen($arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL"]) > 0 ) $link = GetMessage("SONET_GL_SEND_EVENT_LINK").$arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL"]; else $link = ""; $arMessageFields = array( "FROM_USER_ID" => (intval($arLog["USER_ID"]) > 0 ? $arLog["USER_ID"] : 1), "TO_USER_ID" => $arSubscriber["USER_ID"], "MESSAGE" => $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["TITLE"]." #BR#".$arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE_TO_SEND"].(strlen($link) > 0 ? "#BR# ".$link : ""), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM, "IS_LOG" => "Y" ); CSocNetMessages::Add($arMessageFields); break; case "M": $arFields["SUBSCRIBER_ID"] = $arSubscriber["USER_ID"]; $arFields["SUBSCRIBER_NAME"] = $arSubscriber["USER_NAME"]; $arFields["SUBSCRIBER_LAST_NAME"] = $arSubscriber["USER_LAST_NAME"]; $arFields["SUBSCRIBER_LOGIN"] = $arSubscriber["USER_LOGIN"]; $arFields["SUBSCRIBER_EMAIL"] = $arSubscriber["USER_EMAIL"]; $arFields["EMAIL_TO"] = $arSubscriber["USER_EMAIL"]; $arFields["TITLE"] = str_replace("#BR#", "\n", $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["TITLE"]); $arFields["MESSAGE"] = str_replace("#BR#", "\n", $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE_TO_SEND"]); $arFields["ENTITY"] = $arLog["FIELDS_FORMATTED"]["ENTITY"]["FORMATTED"]; $arFields["ENTITY_TYPE"] = $arLog["FIELDS_FORMATTED"]["ENTITY"]["TYPE_MAIL"]; if ( array_key_exists("URL_TO_SEND", $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]) && strlen($arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"]) > 0 ) $arFields["URL"] = $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"]; elseif ( array_key_exists("URL", $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]) && strlen($arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL"]) > 0 ) $arFields["URL"] = $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL"]; else $arFields["URL"] = $arLog["URL"]; if (CModule::IncludeModule("extranet")) $arUserGroup = CUser::GetUserGroup($arSubscriber["USER_ID"]); foreach ($arLogSites as $site_id_tmp) { if (IsModuleInstalled("extranet")) { if ( ( CExtranet::IsExtranetSite($site_id_tmp) && in_array(CExtranet::GetExtranetUserGroupID(), $arUserGroup) ) || ( !CExtranet::IsExtranetSite($site_id_tmp) && !in_array(CExtranet::GetExtranetUserGroupID(), $arUserGroup) ) ) { $siteID = $site_id_tmp; break; } else continue; } else { $siteID = $site_id_tmp; break; } } if (!$siteID) $siteID = (defined("SITE_ID") ? SITE_ID : $arSubscriber["SITE_ID"]); if (StrLen($siteID) <= 0) $siteID = $arSubscriber["USER_LID"]; if (StrLen($siteID) <= 0) continue; $event = new CEvent; $event->Send($mailTemplate, $siteID, $arFields, "N"); break; default: } } } CSocNetLog::CounterIncrement($arLog["ID"], $arLog["EVENT_ID"], $arOfEntities); return true; }
function SendEvent($ID, $mailTemplate = "SONET_NEW_EVENT") { $ID = IntVal($ID); if ($ID <= 0) { return false; } $arFilter = array("ID" => $ID); $dbLogComments = CSocNetLogComments::GetList(array(), $arFilter, false, false, array("ID", "LOG_ID", "ENTITY_TYPE", "ENTITY_ID", "USER_ID", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "EVENT_ID", "LOG_DATE", "MESSAGE", "TEXT_MESSAGE", "URL", "MODULE_ID", "GROUP_NAME", "CREATED_BY_NAME", "CREATED_BY_SECOND_NAME", "CREATED_BY_LAST_NAME", "CREATED_BY_LOGIN", "LOG_SITE_ID", "SOURCE_ID", "LOG_SOURCE_ID")); $arLogComment = $dbLogComments->Fetch(); if (!$arLogComment) { return false; } $arLog = array(); if (intval($arLogComment["LOG_ID"]) > 0) { $dbLog = CSocNetLog::GetList(array(), array("ID" => $arLogComment["LOG_ID"])); $arLog = $dbLog->Fetch(); if (!$arLog) { $arLog = array(); } } $arEvent = CSocNetLogTools::FindLogCommentEventByID($arLogComment["EVENT_ID"]); if ($arEvent && array_key_exists("CLASS_FORMAT", $arEvent) && array_key_exists("METHOD_FORMAT", $arEvent) && strlen($arEvent["CLASS_FORMAT"]) > 0 && strlen($arEvent["METHOD_FORMAT"]) > 0) { $dbSiteCurrent = CSite::GetByID(SITE_ID); if ($arSiteCurrent = $dbSiteCurrent->Fetch()) { if ($arSiteCurrent["LANGUAGE_ID"] != LANGUAGE_ID) { $arLogComment["MAIL_LANGUAGE_ID"] = $arSiteCurrent["LANGUAGE_ID"]; } } $arLogComment["FIELDS_FORMATTED"] = call_user_func(array($arEvent["CLASS_FORMAT"], $arEvent["METHOD_FORMAT"]), $arLogComment, array(), true, $arLog); } if (array_key_exists($arLogComment["ENTITY_TYPE"], $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"]) && array_key_exists("HAS_MY", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLogComment["ENTITY_TYPE"]]) && $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLogComment["ENTITY_TYPE"]]["HAS_MY"] == "Y" && array_key_exists("CLASS_OF", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLogComment["ENTITY_TYPE"]]) && array_key_exists("METHOD_OF", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLogComment["ENTITY_TYPE"]]) && strlen($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLogComment["ENTITY_TYPE"]]["CLASS_OF"]) > 0 && strlen($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLogComment["ENTITY_TYPE"]]["METHOD_OF"]) > 0 && method_exists($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLogComment["ENTITY_TYPE"]]["CLASS_OF"], $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLogComment["ENTITY_TYPE"]]["METHOD_OF"])) { $arOfEntities = call_user_func(array($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLogComment["ENTITY_TYPE"]]["CLASS_OF"], $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLogComment["ENTITY_TYPE"]]["METHOD_OF"]), $arLogComment["ENTITY_ID"]); } $arListParams = array("USE_SUBSCRIBE" => "Y", "ENTITY_TYPE" => $arLogComment["ENTITY_TYPE"], "ENTITY_ID" => $arLogComment["ENTITY_ID"], "EVENT_ID" => $arLogComment["EVENT_ID"], "USER_ID" => $arLogComment["USER_ID"], "OF_ENTITIES" => $arOfEntities, "TRANSPORT" => array("M", "X")); $arLogSites = array(); $rsLogSite = CSocNetLog::GetSite($arLog["ID"]); while ($arLogSite = $rsLogSite->Fetch()) { $arLogSites[] = $arLogSite["LID"]; } if (CModule::IncludeModule("extranet")) { if ($arLogComment["ENTITY_TYPE"] == SONET_ENTITY_GROUP) { $arSites = array(); $dbSite = CSite::GetList($by = "sort", $order = "desc", array("ACTIVE" => "Y")); while ($arSite = $dbSite->Fetch()) { $arSites[$arSite["ID"]] = array("DIR" => strlen(trim($arSite["DIR"])) > 0 ? $arSite["DIR"] : "/", "SERVER_NAME" => strlen(trim($arSite["SERVER_NAME"])) > 0 ? $arSite["SERVER_NAME"] : COption::GetOptionString("main", "server_name", $_SERVER["HTTP_HOST"])); } $intranet_site_id = CSite::GetDefSite(); } $arIntranetUsers = CExtranet::GetIntranetUsers(); $extranet_site_id = CExtranet::GetExtranetSiteID(); } $dbSubscribers = CSocNetLogEvents::GetList(array("TRANSPORT" => "DESC"), array("USER_ACTIVE" => "Y", "SITE_ID" => array_merge($arLogSites, array(false))), false, false, array("USER_ID", "ENTITY_TYPE", "ENTITY_ID", "ENTITY_CB", "ENTITY_MY", "USER_NAME", "USER_LAST_NAME", "USER_LOGIN", "USER_LID", "USER_EMAIL", "TRANSPORT"), $arListParams); $arListParams = array("USE_SUBSCRIBE" => "Y", "ENTITY_TYPE" => $arLogComment["ENTITY_TYPE"], "ENTITY_ID" => $arLogComment["ENTITY_ID"], "EVENT_ID" => $arLogComment["EVENT_ID"], "USER_ID" => $arLogComment["USER_ID"], "OF_ENTITIES" => $arOfEntities, "TRANSPORT" => "N"); $dbUnSubscribers = CSocNetLogEvents::GetList(array("TRANSPORT" => "DESC"), array("USER_ACTIVE" => "Y", "SITE_ID" => array_merge($arLogSites, array(false))), false, false, array("USER_ID", "SITE_ID", "ENTITY_TYPE", "ENTITY_ID", "ENTITY_CB", "ENTITY_MY", "TRANSPORT", "EVENT_ID"), $arListParams); $arUnSubscribers = array(); while ($arUnSubscriber = $dbUnSubscribers->Fetch()) { $arUnSubscribers[] = $arUnSubscriber["USER_ID"] . "_" . $arUnSubscriber["ENTITY_TYPE"] . "_" . $arUnSubscriber["ENTITY_ID"] . "_" . $arUnSubscriber["ENTITY_MY"] . "_" . $arUnSubscriber["ENTITY_CB"] . "_" . $arUnSubscriber["EVENT_ID"]; } $bHasAccessAll = CSocNetLogRights::CheckForUserAll($arLog["ID"] ? $arLog["ID"] : $arLogComment["LOG_ID"]); $arSentUserID = array("M" => array(), "X" => array()); while ($arSubscriber = $dbSubscribers->Fetch()) { if (is_array($arIntranetUsers) && !in_array($arSubscriber["USER_ID"], $arIntranetUsers) && !in_array($extranet_site_id, $arLogSites)) { continue; } if (array_key_exists($arSubscriber["TRANSPORT"], $arSentUserID) && in_array($arSubscriber["USER_ID"], $arSentUserID[$arSubscriber["TRANSPORT"]])) { continue; } if (intval($arSubscriber["ENTITY_ID"]) != 0 && $arSubscriber["EVENT_ID"] == "all" && (in_array($arSubscriber["USER_ID"] . "_" . $arSubscriber["ENTITY_TYPE"] . "_" . $arSubscriber["ENTITY_ID"] . "_N_" . $arSubscriber["ENTITY_CB"] . "_" . $arLogComment["EVENT_ID"], $arUnSubscribers) || in_array($arSubscriber["USER_ID"] . "_" . $arSubscriber["ENTITY_TYPE"] . "_" . $arSubscriber["ENTITY_ID"] . "_Y_" . $arSubscriber["ENTITY_CB"] . "_" . $arLogComment["EVENT_ID"], $arUnSubscribers))) { continue; } elseif (intval($arSubscriber["ENTITY_ID"]) == 0 && $arSubscriber["ENTITY_CB"] == "N" && $arSubscriber["EVENT_ID"] != "all" && (in_array($arSubscriber["USER_ID"] . "_" . $arSubscriber["ENTITY_TYPE"] . "_" . $arLogComment["ENTITY_ID"] . "_Y_N_all", $arUnSubscribers) || in_array($arSubscriber["USER_ID"] . "_" . $arSubscriber["ENTITY_TYPE"] . "_" . $arLogComment["ENTITY_ID"] . "_N_N_all", $arUnSubscribers) || in_array($arSubscriber["USER_ID"] . "_" . $arSubscriber["ENTITY_TYPE"] . "_" . $arLogComment["ENTITY_ID"] . "_Y_N_" . $arLogComment["EVENT_ID"], $arUnSubscribers) || in_array($arSubscriber["USER_ID"] . "_" . $arSubscriber["ENTITY_TYPE"] . "_" . $arLogComment["ENTITY_ID"] . "_N_N_" . $arLogComment["EVENT_ID"], $arUnSubscribers))) { continue; } $arSentUserID[$arSubscriber["TRANSPORT"]][] = $arSubscriber["USER_ID"]; if (!$bHasAccessAll) { $bHasAccess = CSocNetLogRights::CheckForUserOnly($arLog["ID"] ? $arLog["ID"] : $arLogComment["LOG_ID"], $arSubscriber["USER_ID"]); if (!$bHasAccess) { continue; } } if ($arLogComment["ENTITY_TYPE"] == SONET_ENTITY_GROUP && is_array($arIntranetUsers) && CModule::IncludeModule("extranet")) { $server_name = $arSites[!in_array($arSubscriber["USER_ID"], $arIntranetUsers) && $extranet_site_id ? $extranet_site_id : $intranet_site_id]["SERVER_NAME"]; $arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"] = str_replace(array("#SERVER_NAME#", "#GROUPS_PATH#"), array($server_name, COption::GetOptionString("socialnetwork", "workgroups_page", false, !in_array($arSubscriber["USER_ID"], $arIntranetUsers) && $extranet_site_id ? $extranet_site_id : $intranet_site_id)), $arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL"]); } else { $arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"] = $arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL"]; } switch ($arSubscriber["TRANSPORT"]) { case "X": if (array_key_exists("URL_TO_SEND", $arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]) && strlen($arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"]) > 0) { $link = GetMessage("SONET_GLC_SEND_EVENT_LINK") . $arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"]; } else { $link = ""; } $arMessageFields = array("FROM_USER_ID" => intval($arLogComment["USER_ID"]) > 0 ? $arLogComment["USER_ID"] : 1, "TO_USER_ID" => $arSubscriber["USER_ID"], "MESSAGE" => $arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["TITLE"] . " #BR# " . $arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"] . (strlen($link) > 0 ? "#BR# " . $link : ""), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM, "IS_LOG" => "Y"); CSocNetMessages::Add($arMessageFields); break; case "M": $arFields["SUBSCRIBER_ID"] = $arSubscriber["USER_ID"]; $arFields["SUBSCRIBER_NAME"] = $arSubscriber["USER_NAME"]; $arFields["SUBSCRIBER_LAST_NAME"] = $arSubscriber["USER_LAST_NAME"]; $arFields["SUBSCRIBER_LOGIN"] = $arSubscriber["USER_LOGIN"]; $arFields["SUBSCRIBER_EMAIL"] = $arSubscriber["USER_EMAIL"]; $arFields["EMAIL_TO"] = $arSubscriber["USER_EMAIL"]; $arFields["TITLE"] = str_replace("#BR#", "\n", $arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["TITLE"]); $arFields["MESSAGE"] = str_replace("#BR#", "\n", $arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"]); $arFields["ENTITY"] = $arLogComment["FIELDS_FORMATTED"]["ENTITY"]["FORMATTED"]; $arFields["ENTITY_TYPE"] = $arLogComment["FIELDS_FORMATTED"]["ENTITY"]["TYPE_MAIL"]; if (array_key_exists("URL_TO_SEND", $arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]) && strlen($arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"]) > 0) { $arFields["URL"] = $arLogComment["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"]; } else { $arFields["URL"] = $arLogComment["URL"]; } if (CModule::IncludeModule("extranet")) { $arUserGroup = CUser::GetUserGroup($arSubscriber["USER_ID"]); } foreach ($arLogSites as $site_id_tmp) { if (IsModuleInstalled("extranet")) { if (CExtranet::IsExtranetSite($site_id_tmp) && in_array(CExtranet::GetExtranetUserGroupID(), $arUserGroup) || !CExtranet::IsExtranetSite($site_id_tmp) && !in_array(CExtranet::GetExtranetUserGroupID(), $arUserGroup)) { $siteID = $site_id_tmp; break; } else { continue; } } else { $siteID = $site_id_tmp; break; } } if (!$siteID) { $siteID = defined("SITE_ID") ? SITE_ID : $arSubscriber["SITE_ID"]; } if (StrLen($siteID) <= 0) { $siteID = $arSubscriber["USER_LID"]; } if (StrLen($siteID) <= 0) { continue; } $event = new CEvent(); $event->Send($mailTemplate, $siteID, $arFields, "N"); break; default: } } CUserCounter::IncrementWithSelect(CSocNetLogCounter::GetSubSelect($arLog["ID"], $arLog["ENTITY_TYPE"], $arLog["ENTITY_ID"], $arLogComment["EVENT_ID"], $arLogComment["USER_ID"], $arOfEntities, false, false, "Y", "LC")); return true; }
function UnBanMember($userID, $groupID, $arRelationID, $currentUserIsAdmin) { global $APPLICATION, $DB; $userID = IntVal($userID); if ($userID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_USERID"), "ERROR_USERID"); return false; } $groupID = IntVal($groupID); if ($groupID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_GROUPID"), "ERROR_GROUPID"); return false; } if (!is_array($arRelationID)) { return true; } $arGroup = CSocNetGroup::GetByID($groupID); if (!$arGroup || !is_array($arGroup)) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UG_ERROR_NO_GROUP_ID"), "ERROR_NO_GROUP"); return false; } $arUserPerms = CSocNetUserToGroup::InitUserPerms($userID, $arGroup, $currentUserIsAdmin); if (!$arUserPerms["UserCanModifyGroup"] && !$arUserPerms["UserCanModerateGroup"]) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UG_ERROR_NO_PERMS"), "ERROR_NO_PERMS"); return false; } $bSuccess = true; $tmp_count = count($arRelationID); for ($i = 0; $i < $tmp_count; $i++) { $arRelationID[$i] = IntVal($arRelationID[$i]); if ($arRelationID[$i] <= 0) { continue; } $arRelation = CSocNetUserToGroup::GetByID($arRelationID[$i]); if (!$arRelation) { continue; } if ($arRelation["GROUP_ID"] != $groupID || $arRelation["ROLE"] != SONET_ROLES_BAN) { continue; } $arFields = array("ROLE" => SONET_ROLES_USER, "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction()); if (CSocNetUserToGroup::Update($arRelation["ID"], $arFields)) { $arMessageFields = array("FROM_USER_ID" => $userID, "TO_USER_ID" => $arRelation["USER_ID"], "MESSAGE" => str_replace("#NAME#", $arGroup["NAME"], GetMessage("SONET_UG_UNBANMEMBER_MESSAGE")), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM); CSocNetMessages::Add($arMessageFields); } else { $errorMessage = ""; if ($e = $APPLICATION->GetException()) { $errorMessage = $e->GetString(); } if (StrLen($errorMessage) <= 0) { $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_USER2GROUP"); } $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_UNBANMEMBER"); $bSuccess = false; } } return $bSuccess; }
function __InTaskTaskComplete($taskCompleteId, $iblockId, $taskType, $ownerId, $arTaskStatus, $arParams) { $errorMessage = ""; $taskCompleteId = IntVal($taskCompleteId); if ($taskCompleteId <= 0) { return ""; } $arTask = __InTaskGetTask($taskCompleteId, $iblockId, $taskType, $ownerId); if (!$arTask) { $errorMessage .= GetMessage("INTL_TASK_NOT_FOUND") . "."; } if (StrLen($errorMessage) <= 0) { if ($arTask["PROPS"]["TASKASSIGNEDTO"]["VALUE"] != $GLOBALS["USER"]->GetID()) { $errorMessage .= GetMessage("INTL_CAN_NOT_FINISH") . "."; } } if (StrLen($arResult["ErrorMessage"]) <= 0) { $obIB = new CIBlockElement(); $obIB->SetPropertyValueCode($taskCompleteId, $arTask["PROPS"]["TASKSTATUS"]["ID"], $arTaskStatus["COMPLETED"]["ID"]); $obIB->SetPropertyValueCode($taskCompleteId, $arTask["PROPS"]["TASKCOMPLETE"]["ID"], array(100)); $obIB->SetPropertyValueCode($taskCompleteId, $arTask["PROPS"]["TASKFINISH"]["ID"], array(Date($GLOBALS["DB"]->DateFormatToPHP(FORMAT_DATETIME)))); // added by sigurd CIntranetUtils::UpdateOWSVersion($iblockId, $taskCompleteId); $obIB->Update($taskCompleteId, array('TIMESTAMP_X' => Date($GLOBALS["DB"]->DateFormatToPHP(FORMAT_DATETIME)))); $arMessageFields = array("=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM, "FROM_USER_ID" => $GLOBALS["USER"]->GetID(), "TO_USER_ID" => $arTask["FIELDS"]["CREATED_BY"]); if ($arMessageFields["FROM_USER_ID"] != $arMessageFields["TO_USER_ID"]) { $path2view = ($GLOBALS["APPLICATION"]->IsHTTPS() ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_TASKS_TASK"], array("owner_id" => $arTask["PROPS"]["TASKASSIGNEDTO"]["VALUE"], "task_id" => $taskCompleteId, "action" => "view")); $arMessageFields["MESSAGE"] = str_replace(array("#URL_VIEW#", "#NAME#"), array($path2view, $arTask["FIELDS"]["NAME"]), GetMessage("INTL_FINISH_MESSAGE")); CSocNetMessages::Add($arMessageFields); } } return $errorMessage; }
function UnBanMember($senderUserID, $relationID) { global $APPLICATION, $DB; $senderUserID = IntVal($senderUserID); if ($senderUserID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID"); return false; } $relationID = IntVal($relationID); if ($relationID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_RELATION"), "ERROR_RELATIONID"); return false; } $arRelation = CSocNetUserRelations::GetByID($relationID); if (!$arRelation) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_ERROR_NO_RELATION"), "ERROR_NO_RELATION"); return false; } if ($arRelation["RELATION"] == SONET_RELATIONS_BAN && ($arRelation["FIRST_USER_ID"] == $senderUserID && $arRelation["INITIATED_BY"] == "F" || $arRelation["SECOND_USER_ID"] == $senderUserID && $arRelation["INITIATED_BY"] == "S")) { if (CSocNetUserRelations::Delete($arRelation["ID"])) { $arMessageFields = array( "FROM_USER_ID" => $senderUserID, "TO_USER_ID" => ($arRelation["FIRST_USER_ID"] == $senderUserID ? $arRelation["SECOND_USER_ID"] : $arRelation["FIRST_USER_ID"]), "MESSAGE" => GetMessage("SONET_UR_UNBANUSER_MESSAGE"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM ); CSocNetMessages::Add($arMessageFields); } else { $errorMessage = ""; if ($e = $APPLICATION->GetException()) $errorMessage = $e->GetString(); if (StrLen($errorMessage) <= 0) $errorMessage = GetMessage("SONET_UR_RELATION_DELETE_ERROR"); $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_DELETE_RELATION"); return false; } } else { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_UNBAN_ERROR"), "ERROR_UNBAN"); return false; } return true; }
function SendRemindAgent($iblockId, $eventId, $userId, $pathToPage, $ownerType, $ownerId) { if (!CModule::IncludeModule("iblock")) { return; } if (!CModule::IncludeModule("socialnetwork")) { return; } if (!isset($GLOBALS["USER"]) || !is_object($GLOBALS["USER"])) { $bTmpUser = True; $GLOBALS["USER"] = new CUser(); } $rsEvent = CIBlockElement::GetList(array(), array("IBLOCK_ID" => $iblockId, "ACTIVE" => "Y", "ID" => $eventId, "CHECK_PERMISSIONS" => "N"), false, false, array("ID", "ACTIVE_FROM", "NAME", "IBLOCK_ID", "CREATED_BY", "IBLOCK_SECTION_ID")); if ($arEvent = $rsEvent->Fetch()) { $MESS = GetMessage('EC_EVENT_REMINDER', array('#EVENT_NAME#' => $arEvent["NAME"], '#DATE_FROM#' => $arEvent["ACTIVE_FROM"])); // Get Calendar Info: $rsCalendar = CIBlockSection::GetList(array('ID' => 'ASC'), array("ID" => $arEvent['IBLOCK_SECTION_ID'], "IBLOCK_ID" => $iblockId, "ACTIVE" => "Y", "CHECK_PERMISSIONS" => "N")); if (!($arCalendar = $rsCalendar->Fetch())) { return false; } $calendarName = $arCalendar['NAME']; if ($ownerType == 'USER' && $ownerId == $userId) { $MESS .= ' ' . GetMessage('EC_EVENT_REMINDER_IN_PERSONAL', array('#CALENDAR_NAME#' => $calendarName)); } else { if ($ownerType == 'USER') { // Get user name $dbUser = CUser::GetByID($ownerId); if (!($arUser = $dbUser->Fetch())) { return; } $ownerName = $arUser["NAME"] . " " . $arUser["LAST_NAME"]; $MESS .= ' ' . GetMessage('EC_EVENT_REMINDER_IN_USER', array('#CALENDAR_NAME#' => $calendarName, '#USER_NAME#' => $ownerName)); } else { if ($ownerType == 'GROUP') { // Get group name if (!($arGroup = CSocNetGroup::GetByID($ownerId))) { return; } $ownerName = $arGroup["NAME"]; $MESS .= ' ' . GetMessage('EC_EVENT_REMINDER_IN_GROUP', array('#CALENDAR_NAME#' => $calendarName, '#GROUP_NAME#' => $ownerName)); } else { // Get iblock name $rsIblock = CIBlock::GetList(array(), array("ID" => $iblockId, "CHECK_PERMISSIONS" => 'N')); if (!($arIblock = $rsIblock->Fetch())) { return; } $iblockName = $arIblock['NAME']; $MESS .= ' ' . GetMessage('EC_EVENT_REMINDER_IN_COMMON', array('#CALENDAR_NAME#' => $calendarName, '#IBLOCK_NAME#' => $iblockName)); } } } $MESS .= "\n" . GetMessage('EC_EVENT_REMINDER_DETAIL', array('#URL_VIEW#' => $pathToPage)); $arMessageFields = array("=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM, "FROM_USER_ID" => $arEvent["CREATED_BY"], "TO_USER_ID" => $userId, "MESSAGE" => $MESS); CSocNetMessages::Add($arMessageFields); $db_events = GetModuleEvents("intranet", "OnRemindEventCalendar"); while ($arEvent = $db_events->Fetch()) { ExecuteModuleEventEx($arEvent, array(array('iblockId' => $iblockId, 'eventId' => $eventId, 'userId' => $userId, 'pathToPage' => $pathToPage, 'ownerType' => $ownerType, 'ownerId' => $ownerId))); } } if ($bTmpUser) { unset($GLOBALS["USER"]); } }
/** * <p>Вспомогательный метод для отправки персонального сообщения от одного пользователя социальной сети другому.</p> <p><b>Примечание</b>: для отправки системного сообщения используется метод <a href="http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/CSocNetMessages/Add.php">CSocNetMessages::Add</a>.<br> При работе метода вызываются события: <a href="http://dev.1c-bitrix.ru/api_help/socialnetwork/events/OnBeforeSocNetMessagesAdd.php">OnBeforeSocNetMessagesAdd</a> и <a href="http://dev.1c-bitrix.ru/api_help/socialnetwork/events/OnSocNetMessagesAdd.php">OnSocNetMessagesAdd</a>.</p> * * * * * @param int $senderUserId Код пользователя-отправителя сообщения. * * * * @param int $targetUserID Код пользователя-получателя сообщения. * * * * @param string $message Текст сообщения. * * * * @return bool <p>Метод возвращает true в случае успешного сохранения сообщения и * false в противном случае.</p> * * * <h4>Example</h4> * <pre> * <? * if (!CSocNetMessages::CreateMessage($GLOBALS["USER"]->GetID(), $userId, $message)) * { * if ($e = $GLOBALS["APPLICATION"]->GetException()) * $errorMessage .= $e->GetString(); * } * ?> * </pre> * * * * <h4>See Also</h4> * <ul> <li><a * href="http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/CSocNetMessages/Add.php">CSocNetMessages::Add</a></li> * </ul><a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/CSocNetMessages/CreateMessage.php * @author Bitrix */ public static function CreateMessage($senderUserID, $targetUserID, $message, $title = false) { global $APPLICATION; $senderUserID = IntVal($senderUserID); if ($senderUserID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID"); return false; } $targetUserID = IntVal($targetUserID); if ($targetUserID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_TARGET_USER_ID"), "ERROR_TARGET_USER_ID"); return false; } $message = Trim($message); if (StrLen($message) <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_MESSAGE"), "ERROR_MESSAGE"); return false; } $arFields = array("FROM_USER_ID" => $senderUserID, "TO_USER_ID" => $targetUserID, "TITLE" => $title, "MESSAGE" => $message, "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "DATE_VIEW" => false, "MESSAGE_TYPE" => SONET_MESSAGE_PRIVATE, "FROM_DELETED" => "N", "TO_DELETED" => "N", "SEND_MAIL" => "N"); if (!CSocNetMessages::Add($arFields)) { $errorMessage = ""; if ($e = $GLOBALS["APPLICATION"]->GetException()) { $errorMessage = $e->GetString(); } if (StrLen($errorMessage) <= 0) { $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_MESSAGE"); } $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_MESSAGE"); return false; } CSocNetMessages::__SpeedFileCreate($targetUserID); return true; }
public function ReceiveMessage($senderJId, array $arMessage, CXMPPClient $senderClient) { if (!$senderClient->IsAuthenticated()) { return false; } if (strlen($senderJId) <= 0) { return false; } if (!array_key_exists("message", $arMessage) || !array_key_exists(".", $arMessage["message"])) { return false; } $type = "normal"; if (array_key_exists("type", $arMessage["message"]["."])) { $type = $arMessage["message"]["."]["type"]; } if ($type == "error") { return false; } $mid = ""; if (array_key_exists("id", $arMessage["message"]["."])) { $mid = $arMessage["message"]["."]["id"]; } if (!in_array($type, array("chat", "groupchat", "headline", "normal"))) { return CXMPPUtility::GetErrorArray($senderJId, "message", "modify", "bad-request", "", $mid, "", $senderClient->GetClientDomain()); } $recipientJId = ""; if (array_key_exists("to", $arMessage["message"]["."])) { $recipientJId = $arMessage["message"]["."]["to"]; } if (strlen($recipientJId) <= 0) { return CXMPPUtility::GetErrorArray($senderJId, "message", "modify", "bad-request", "", $mid, "", $senderClient->GetClientDomain()); } $body = ""; if (array_key_exists("body", $arMessage["message"])) { $body = $arMessage["message"]["body"]["#"]; } if (strlen($body) <= 0) { return true; } //$body = CXMPPReceiveMessage::htmlspecialcharsback($body); //$body = html_entity_decode($body); $body = html_entity_decode($body, ENT_COMPAT, SITE_CHARSET); $body = str_replace("'", "'", $body); $arSender = CXMPPUtility::GetUserByJId($senderJId); if (!$arSender) { return CXMPPUtility::GetErrorArray($senderJId, "message", "auth", "forbidden", $recipientJId, $mid, "", $senderClient->GetClientDomain()); } $arRecipient = CXMPPUtility::GetUserByJId($recipientJId); if (!$arRecipient) { return CXMPPUtility::GetErrorArray($senderJId, "message", "cancel", "item-not-found", $recipientJId, $mid, "", $senderClient->GetClientDomain()); } if (!CSocNetUserPerms::CanPerformOperation($arSender["ID"], $arRecipient["ID"], "message", false)) { return CXMPPUtility::GetErrorArray($senderJId, "message", "auth", "forbidden", $recipientJId, $mid, "", $senderClient->GetClientDomain()); } if (IsModuleInstalled("im") && CModule::IncludeModule("im")) { $arMessageFields = array("FROM_USER_ID" => $arSender["ID"], "TO_USER_ID" => $arRecipient["ID"], "MESSAGE" => $body); CIMMessage::Add($arMessageFields); } else { $arMessageFields = array("=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_PRIVATE, "FROM_USER_ID" => $arSender["ID"], "TO_USER_ID" => $arRecipient["ID"], "MESSAGE" => $body); CSocNetMessages::Add($arMessageFields); } return true; }
"PATH_TO_GROUP" => "/club/group/#group_id#/", "PATH_TO_GROUP_SEARCH" => "/club/group/search/", "ITEMS_COUNT" => "4", "DATE_TIME_FORMAT" => "d.m.Y H:i:s", "DISPLAY_IMAGE" => "Y", "DISPLAY_DESCRIPTION" => "N", "DISPLAY_NUMBER_OF_MEMBERS" => "Y", "DISPLAY_SUBJECT" => "Y", "CACHE_TIME" => "180" ) );?> </div>'; CWizardUtil::ReplaceMacros($_SERVER["DOCUMENT_ROOT"] . "/index_inc.php", array('<!-- SOCNETWORK_GROUPS -->' => $strIndexIncGroup), $skipSharp = true); //welcome message $arMessageFields = array("FROM_USER_ID" => 1, "TO_USER_ID" => 1, "MESSAGE" => GetMessage("SOCNET_WELCOME_MESSAGE"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM); CSocNetMessages::Add($arMessageFields); //gallery, forum and blog examples $source_base = dirname(__FILE__); if (IsModuleInstalled('blog') && file_exists($_SERVER["DOCUMENT_ROOT"] . "/communication/blog")) { CopyDirFiles($source_base . "/public/" . $LID . "/blogs", $_SERVER["DOCUMENT_ROOT"] . "/club/blogs", false, true); DemoSiteUtil::AddMenuItem("/club/.left.menu.php", array(GetMessage("SOCNET_MENU_BLOG"), "blogs/", array(), array(), "")); } if (IsModuleInstalled('photogallery') && file_exists($_SERVER["DOCUMENT_ROOT"] . "/content/gallery") && CModule::IncludeModule("iblock")) { CopyDirFiles($source_base . "/public/" . $LID . "/gallery", $_SERVER["DOCUMENT_ROOT"] . "/club/gallery", false, true); //replace default gallery infoblock with user gallery $res = CIBlock::GetList(array(), array("CODE" => "gallery")); $res_arr = $res->Fetch(); $photo_id = $res_arr["ID"]; $res = CIBlock::GetList(array(), array("CODE" => "car_photo_user_demo")); $res_arr = $res->Fetch(); $socnet_photo_id = $res_arr["ID"];
} if (!strlen($arResult['ERROR']) && $arUser['ID'] == $USER->GetID()) { $arResult['ERROR'] = GetMessage('SPT_ERROR_CANNT_YOURSELF'); } if (!strlen($arResult['ERROR'])) { $arResult['TO_USER'] = $arUser; if (strlen($_REQUEST['send_money_now'])) { $arUserCurr = CUser::GetByID($USER->GetID())->Fetch(); CSaleUserAccount::UpdateAccount($USER->GetID(), -$arResult['MONEY_OFF'], $arResult['REQUEST_ACCOUNT'], GetMessage('SPT_TRANSACT_DESC_FROM', $arUser), 0, $arResult['~REQUEST_COMMENT']); CSaleUserAccount::UpdateAccount($arUser['ID'], $arResult['REQUEST_AMOUNT'], $arResult['REQUEST_ACCOUNT'], GetMessage('SPT_TRANSACT_DESC_TO', $arUserCurr), 0, $arResult['~REQUEST_COMMENT']); if ($arParams['NOTIFY_USER'] == 'Y' && CModule::IncludeModule('socialnetwork')) { $letter = GetMessage('SPT_MESS_DESC_TO', array_merge($arUserCurr, array('SUM' => SaleFormatCurrency($arResult['REQUEST_AMOUNT'], $arResult['REQUEST_ACCOUNT'])))); if (strlen($arResult['~REQUEST_COMMENT'])) { $letter .= ' (' . $arResult['~REQUEST_COMMENT'] . ')'; } CSocNetMessages::Add(array('FROM_USER_ID' => $USER->GetID(), 'TO_USER_ID' => $arUser['ID'], 'MESSAGE' => $letter, '=DATE_CREATE' => 'now()', 'MESSAGE_TYPE' => 'S', 'FROM_DELETED' => 'N', 'TO_DELETED' => 'N', 'SEND_MAIL' => 'Y')); } LocalRedirect($APPLICATION->GetCurPageParam('success', array('success'))); } } } if (!function_exists('asd_cmp_account')) { function asd_cmp_account($a, $b) { if ($a['CURRENT_BUDGET'] == $b['CURRENT_BUDGET']) { return 0; } return $a['CURRENT_BUDGET'] < $b['CURRENT_BUDGET'] ? 1 : -1; } } usort($arResult['FROM_ACCOUNT'], 'asd_cmp_account');
function SetOwner($userID, $groupID, $arGroup = false) { global $DB, $APPLICATION, $USER; if (!$arGroup) $arGroup = CSocNetGroup::GetByID($groupID); if (!$arGroup) return false; $DB->StartTransaction(); // setting relations for the old owner $dbRelation = CSocNetUserToGroup::GetList(array(), array("USER_ID" => $arGroup["OWNER_ID"], "GROUP_ID" => $groupID), false, false, array("ID")); if ($arRelation = $dbRelation->Fetch()) { $arFields = array( "ROLE" => SONET_ROLES_USER, "=DATE_UPDATE" => $DB->CurrentTimeFunction(), "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER, "INITIATED_BY_USER_ID" => $USER->GetID(), ); if (!CSocNetUserToGroup::Update($arRelation["ID"], $arFields)) { $errorMessage = ""; if ($e = $APPLICATION->GetException()) $errorMessage = $e->GetString(); if (StrLen($errorMessage) <= 0) $errorMessage = GetMessage("SONET_UG_ERROR_CANNOT_UPDATE_CURRENT_OWNER"); $APPLICATION->ThrowException($errorMessage, "ERROR_UPDATE_USER2GROUP"); $DB->Rollback(); return false; } } else { $errorMessage = ""; if ($e = $APPLICATION->GetException()) $errorMessage = $e->GetString(); if (StrLen($errorMessage) <= 0) $errorMessage = GetMessage("SONET_UG_ERROR_CANNOT_GET_CURRENT_OWNER_RELATION"); $APPLICATION->ThrowException($errorMessage, "ERROR_GET_USER2GROUP"); $DB->Rollback(); return false; } // delete requests to the old owner if (strlen($errorMessage) <= 0) CSocNetUserToGroup::__SpeedFileDelete($arGroup["OWNER_ID"]); if (strlen($errorMessage) <= 0) { // setting relations for the new owner $dbRelation = CSocNetUserToGroup::GetList(array(), array("USER_ID" => $userID, "GROUP_ID" => $groupID), false, false, array("ID")); if ($arRelation = $dbRelation->Fetch()) { $arFields = array( "ROLE" => SONET_ROLES_OWNER, "=DATE_UPDATE" => $DB->CurrentTimeFunction(), "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER, "INITIATED_BY_USER_ID" => $USER->GetID(), ); if (!CSocNetUserToGroup::Update($arRelation["ID"], $arFields)) { $errorMessage = ""; if ($e = $APPLICATION->GetException()) $errorMessage = $e->GetString(); if (StrLen($errorMessage) <= 0) $errorMessage = GetMessage("SONET_UG_ERROR_CANNOT_UPDATE_NEW_OWNER_RELATION"); $APPLICATION->ThrowException($errorMessage, "ERROR_UPDATE_USER2GROUP"); $DB->Rollback(); return false; } } else { $arFields = array( "USER_ID" => $userID, "GROUP_ID" => $groupID, "ROLE" => SONET_ROLES_OWNER, "=DATE_CREATE" => $DB->CurrentTimeFunction(), "=DATE_UPDATE" => $DB->CurrentTimeFunction(), "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER, "INITIATED_BY_USER_ID" => $USER->GetID(), "MESSAGE" => false, ); if (!CSocNetUserToGroup::Add($arFields)) { $errorMessage = ""; if ($e = $APPLICATION->GetException()) $errorMessage = $e->GetString(); if (StrLen($errorMessage) <= 0) $errorMessage = GetMessage("SONET_UG_ERROR_CANNOT_ADD_NEW_OWNER_RELATION"); $APPLICATION->ThrowException($errorMessage, "ERROR_ADD_USER2GROUP"); $DB->Rollback(); return false; } } } if (strlen($errorMessage) <= 0) { $GROUP_ID = CSocNetGroup::Update($groupID, array("OWNER_ID" => $userID)); if (!$GROUP_ID || IntVal($GROUP_ID) <= 0) { $errorMessage = ""; if ($e = $APPLICATION->GetException()) $errorMessage = $e->GetString(); if (StrLen($errorMessage) <= 0) $errorMessage = GetMessage("SONET_UG_ERROR_CANNOT_UPDATE_GROUP"); $APPLICATION->ThrowException($errorMessage, "ERROR_UPDATE_GROUP"); $DB->Rollback(); return false; } } // send message to the old owner $arMessageFields = array( "FROM_USER_ID" => $USER->GetID(), "TO_USER_ID" => $arGroup["OWNER_ID"], "MESSAGE" => str_replace("#NAME#", $arGroup["NAME"], GetMessage("SONET_UG_OWNER2MEMBER_MESSAGE")), "=DATE_CREATE" => $DB->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM ); CSocNetMessages::Add($arMessageFields); // send message to the new owner $arMessageFields = array( "FROM_USER_ID" => $USER->GetID(), "TO_USER_ID" => $userID, "MESSAGE" => str_replace("#NAME#", $arGroup["NAME"], GetMessage("SONET_UG_MEMBER2OWNER_MESSAGE")), "=DATE_CREATE" => $DB->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM ); CSocNetMessages::Add($arMessageFields); // add entry to log $logID = CSocNetLog::Add( array( "ENTITY_TYPE" => SONET_ENTITY_GROUP, "SITE_ID" => $arGroup["SITE_ID"], "ENTITY_ID" => $groupID, "EVENT_ID" => "system", "=LOG_DATE" => $DB->CurrentTimeFunction(), "TITLE_TEMPLATE" => false, "TITLE" => "owner", "MESSAGE" => $userID, "URL" => false, "MODULE_ID" => false, "CALLBACK_FUNC" => false, "USER_ID" => $userID, ) ); if (intval($logID) > 0) { CSocNetLog::Update($logID, array("TMP_ID" => $logID)); CSocNetLogRights::Add($logID, array("SA", "S".SONET_ENTITY_GROUP.$groupID, "S".SONET_ENTITY_GROUP.$groupID."_".SONET_ROLES_OWNER, "S".SONET_ENTITY_GROUP.$groupID."_".SONET_ROLES_MODERATOR, "S".SONET_ENTITY_GROUP.$groupID."_".SONET_ROLES_USER)); CSocNetLog::SendEvent($logID, "SONET_NEW_EVENT", $logID); } if (strlen($errorMessage) <= 0) { $DB->Commit(); return true; } else { $DB->Rollback(); return false; } }
function SendRemindEventAgentNew($taskId) { if (!CModule::IncludeModule("socialnetwork") && !CModule::IncludeModule("iblock")) { return; } $iblockId = COption::GetOptionInt("intranet", "iblock_tasks", 0); if ($iblockId <= 0) { return; } $taskId = IntVal($taskId); if (!isset($GLOBALS["USER"]) || !is_object($GLOBALS["USER"])) { $bTmpUser = True; $GLOBALS["USER"] = new CUser(); } $arTask = CIntranetTasks::GetById($taskId); if (!$arTask) { return; } if ($arTask["TaskType"] == "user") { $path2view = str_replace(array("#USER_ID#", "#TASK_ID#"), array($arTask["OwnerId"], $taskId), COption::GetOptionString("intranet", "path_task_user_entry", "/company/personal/user/#USER_ID#/tasks/task/view/#TASK_ID#/")); } else { $path2view = str_replace(array("#GROUP_ID#", "#TASK_ID#"), array($arTask["OwnerId"], $taskId), COption::GetOptionString("intranet", "path_task_group_entry", "/workgroups/group/#GROUP_ID#/tasks/task/view/#TASK_ID#/")); } $path2view = ($GLOBALS["APPLICATION"]->IsHTTPS() ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $path2view; $arMessageFields = array("=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM, "FROM_USER_ID" => $arTask["CREATED_BY"], "TO_USER_ID" => $arTask["PROPERTY_TaskAssignedTo"], "MESSAGE" => str_replace(array("#URL_VIEW#", "#NAME#"), array($path2view, $arTask["NAME"]), GetMessage("INTE_REMIND_TASK_MESSAGE"))); CSocNetMessages::Add($arMessageFields); if ($bTmpUser) { unset($GLOBALS["USER"]); } //return "CIntranetTasks::SendRemindEventAgent($iblockId, $taskId, \"$pathTemplate\");"; }