public function Send() { if(!$this->IsAvailable()) return false; $arNotification = $this->Notify->getNotification(); //No need to send about updates; if($arNotification["ACTION"] == "UPDATE") return 0; $arEmailSubscribe = array(); $arAllSubscribe = $this->GetList(array(), array("ID" => array(self::SUBSCRIBE_ALL, self::SUBSCRIBE_IDEA_COMMENT.$arNotification["POST_ID"])), false, false, array("USER_ID", "USER_EMAIL")); while($r = $arAllSubscribe->Fetch()) if(check_email($r["USER_EMAIL"])) $arEmailSubscribe[$r["USER_ID"]] = $r["USER_EMAIL"]; foreach($arEmailSubscribe as $UserId => $Email) { //Avoid to send notification to author if($UserId == $arNotification["AUTHOR_ID"]) continue; $arNotification["EMIAL_TO"] = $Email; //ADD_IDEA_COMMENT, ADD_IDEA CEvent::Send($arNotification["ACTION"].'_'.$arNotification["TYPE"], SITE_ID, $arNotification); } return count($arEmailSubscribe)>0; }
function sendOnAfterResultStatusChange($WEB_FORM_ID, $RESULT_ID, $NEW_STATUS_ID = false, $CHECK_RIGHTS = 'Y') { $NEW_STATUS_ID = intval($NEW_STATUS_ID); $dbRes = CForm::GetByID($WEB_FORM_ID); if (!($arForm = $dbRes->Fetch())) { return; } CTimeZone::Disable(); $dbRes = CFormResult::GetByID($RESULT_ID); CTimeZone::Enable(); if (!($arResult = $dbRes->Fetch()) || !$arResult['USER_ID']) { return; } $dbRes = CUser::GetByID($arResult['USER_ID']); if (!($arUser = $dbRes->Fetch())) { return; } if (!$NEW_STATUS_ID) { $NEW_STATUS_ID = CFormStatus::GetDefault($WEB_FORM_ID); } $dbRes = CFormStatus::GetByID($NEW_STATUS_ID); if (!($arStatus = $dbRes->Fetch()) || strlen($arStatus['MAIL_EVENT_TYPE']) <= 0) { return; } $arTemplates = CFormStatus::GetMailTemplateArray($NEW_STATUS_ID); if (!is_array($arTemplates) || count($arTemplates) <= 0) { return; } $arEventFields = array("EMAIL_TO" => $arUser['EMAIL'], "RS_FORM_ID" => $arForm["ID"], "RS_FORM_NAME" => $arForm["NAME"], "RS_FORM_VARNAME" => $arForm["SID"], "RS_FORM_SID" => $arForm["SID"], "RS_RESULT_ID" => $arResult["ID"], "RS_DATE_CREATE" => $arResult["DATE_CREATE"], "RS_USER_ID" => $arResult['USER_ID'], "RS_USER_EMAIL" => $arUser['EMAIL'], "RS_USER_NAME" => $arUser["NAME"] . " " . $arUser["LAST_NAME"], "RS_STATUS_ID" => $arStatus["ID"], "RS_STATUS_NAME" => $arStatus["TITLE"]); $dbRes = CEventMessage::GetList($by = "id", $order = "asc", array('ID' => implode('|', $arTemplates), "ACTIVE" => "Y", "EVENT_NAME" => $arStatus["MAIL_EVENT_TYPE"])); while ($arTemplate = $dbRes->Fetch()) { CEvent::Send($arTemplate["EVENT_NAME"], $arTemplate["SITE_ID"], $arEventFields, "Y", $arTemplate["ID"]); } }
function Delivery(&$arFields){ CModule::IncludeModule("iblock"); $arSelect = Array("ID","PROPERTY_iblock","PROPERTY_send","NAME"); $arFilter = Array("IBLOCK_ID"=>38, "ACTIVE"=>"Y"); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect); while($ob = $res->GetNextElement()) { $arFields1 = $ob->GetFields(); $delivery[$arFields1["PROPERTY_IBLOCK_VALUE"]]=$arFields1; $id_ac[]=$arFields1["PROPERTY_IBLOCK_VALUE"]; } if (in_array($arFields['IBLOCK_ID'],$id_ac)) { $arSelect = Array("ID","PROPERTY_email","NAME"); $arFilter = Array("IBLOCK_ID"=>34, "ACTIVE"=>"Y","PROPERTY_delivery"=>$arFields['IBLOCK_ID']); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50000), $arSelect); while($ob = $res->GetNextElement()) { $arFields1 = $ob->GetFields(); $receivers[]=$arFields1; } foreach ($receivers as $receiver){ $arEventFields = array( "ID" => $arFields["ID"], "EMAIL_TO" => $receiver["PROPERTY_EMAIL_VALUE"], "TITLE" => $arFields["NAME"], ); $ev_id[]=CEvent::Send('DELIVERY', 's1', $arEventFields,"N",$delivery[$arFields['IBLOCK_ID']]["PROPERTY_SEND_VALUE"]); } } }
function my_OnAfterIBlockElementAdd(&$arFields) { $elem = CIBlockElement::GetList(array(), array("IBLOCK_ID" => 12, "ID" => $arFields["ID"]), false, false, array("NAME", "PROPERTY_email", "PROPERTY_phone", "PROPERTY_message")); while ($elem_info = $elem->Fetch()) { $mailFields = array("EMAIL_TO" => "*****@*****.**", "AUTHOR" => $elem_info["NAME"], "AUTHOR_EMAIL" => $elem_info["PROPERTY_EMAIL_VALUE"], "AUTHOR_PHONE" => $elem_info["PROPERTY_PHONE_VALUE"], "TEXT" => $elem_info["PROPERTY_MESSAGE_VALUE"]); } CEvent::Send("FEEDBACK_FORM", "s1", $mailFields, "N"); //получим сообщение }
/** * @param MailPackage $package * @param bool $duplicate * @return int */ public function send(MailPackage $package, $duplicate = false) { $rsSites = \CSite::GetList($by = "sort", $order = "desc", array()); $siteIds = array(); while ($arSite = $rsSites->Fetch()) { $siteIds[] = $arSite['ID']; } return \CEvent::Send($package->getEventName(), $siteIds, $package->getFields(), $duplicate ? 'Y' : 'N', $package->getMessageId()); }
protected function json_request() { if($_REQUEST["json_request_callback_form"] && $_REQUEST["json_request_callback_form"] == "Y"){ global $APPLICATION; $APPLICATION->restartBuffer(); $this->arResult = array(); $this->arResult["error"] = array(); if(!empty($_REQUEST["form"])){ foreach($_REQUEST["form"] as $val){ $this->arResult["form"][$val["name"]]=$val["value"]; if(($val["name"] == "USER_NAME" && strlen($val["value"]) < 2) || ($val["name"] == "USER_PHONE" && strlen($val["value"] < 6))){ $this->arResult["error"][] = array( "name" => $val["name"], "message" => GetMessage("ERROR_".$val["name"]) ); }else{ $this->arResult["field"][$val["name"]] = $val["value"]; } } } if(count($this->arResult["error"]) == 0){ CEvent::Send("SB_CALLBACK_FORM",SITE_ID,$this->arResult["form"]); \Bitrix\Main\Loader::includeModule("softbalance.callback"); $data = array( "CREATED" => new \Bitrix\Main\Type\DateTime(), "NAME" => $this->arResult["field"]["USER_NAME"], "STATUS" => "new", "PHONE" => $this->arResult["field"]["USER_PHONE"], "USER_COMMENT"=> $this->arResult["field"]["USER_COMMENT"], "ADMIN_COMMENT" => "", "SITE_ID" => SITE_ID ); $result = \Softbalance\Callback\CallbackTable::add($data); if($result){ $this->arResult["complete"]=true; $this->arResult["ok"]=GetMessage("ok"); } } echo json_encode($this->arResult); die(); } }
public function execute(Form $form) { $sendData = $form->getData(); if ($this->fieldsUppercase) { $submitArray = array_change_key_case($sendData, CASE_UPPER); } $result = \CEvent::Send($this->emailEvent, SITE_ID, $submitArray); if (!$result && $this->isCritical) { throw new \Exception('CEvent::Send false'); } elseif (!$result && !$this->isCritical) { $form->setErrors(array($this->getErrorMessage('ошибка отправки почты (CEvent::Send)'))); } }
/** * После окончания записи передачи уведомление пользователю * * @param array $arParams * @return boolean */ public static function afterRecord($arParams) { if (!empty($arParams["USER_EMAIL"])) { $arEventFields = array("RECORD_ID" => $arParams["RECORD_ID"], "RECORD_TITLE" => $arParams["RECORD_NAME"], "EMAIL" => $arParams["USER_EMAIL"], "USER_ID" => $arParams["USER_ID"], "USER_NAME" => $arParams["USER_NAME"], "URL" => $arParams["URL"], "PICTURE" => $arParams["PICTURE"]); if (CEvent::Send("RECORD_AFTER", array(SITE_ID), $arEventFields)) { return true; } else { return false; } } else { return true; } }
/** * Created by JetBrains PhpStorm. * User: professor * Date: 28.10.12 * Time: 15:45 * To change this template use File | Settings | File Templates. */ function send() { die; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; CModule::IncludeModule("iblock"); $ob = CIBlockElement::GetList(array("SORT" => "ASC"), array("!PROPERTY_EMAIL_MANAGER" => fale, "IBLOCK_ID" => IB_CLUB_ID), FALSE, FALSE, array("ID", "NAME", "PROPERTY_EMAIL_MANAGER")); while ($row = $ob->Fetch()) { if (trim($row['PROPERTY_EMAIL_MANAGER_VALUE'] != "")) { $arEventFields = array("EMAIL" => $row['PROPERTY_EMAIL_MANAGER_VALUE']); CEvent::Send("RASSYLKA", "s1", $arEventFields); } } return true; }
function _OnUserAdd(&$arFields, &$userID) { $GLOBALS["cntUsersImport"]++; unset($arFields["GROUP_ID"]); $arFields["ID"] = $arFields["USER_ID"] = $userID; $arFields["URL_LOGIN"] = urlencode($arFields["LOGIN"]); if (isset($arFields["EXTERNAL_AUTH_ID"]) && strlen($arFields["EXTERNAL_AUTH_ID"]) > 0 && strlen($GLOBALS["eventLdapLangID"]) > 0) { $arFields["BACK_URL"] = "/"; $event = new CEvent(); $event->Send("LDAP_USER_CONFIRM", $GLOBALS["eventLdapLangID"], $arFields); } elseif ($GLOBALS["sendEmail"] == "Y" && $arFields["EMAIL"] != $GLOBALS["defaultUserEmail"] && strlen($GLOBALS["eventLangID"]) > 0) { $event = new CEvent(); $event->Send("USER_INVITE", $GLOBALS["eventLangID"], $arFields); } }
function addOrder($data) { if ($data['product'] > 0 and strlen(trim($data['name'])) > 0 and (strlen(trim($data['phone'])) > 0 or strlen(trim($data['email'])) > 0)) { /** * save form */ $arFields = array('IBLOCK_ID' => (int) $GLOBALS['AQW_ORDER']['IBLOCK_ID'], 'NAME' => GetMessage("AQW_SHOP_NOVYY_ZAKAZ_OT") . date("d.m.Y H:i:s"), 'PROPERTY_VALUES' => array('PRODUCT' => $data['product'], 'COLOR' => $data['color'], 'SIZE' => $data['size'], 'NAME' => $data['name'], 'PHONE' => $data['phone'], 'EMAIL' => $data['email'], 'ORDER_URL' => getenv("REQUEST_URI"))); $iBlock = new CIBlockElement(); $ORDER_ID = $iBlock->Add($arFields); /** * send email */ $arEventFields = array("IBLOCK_TYPE" => $GLOBALS['AQW_ORDER']['IBLOCK_TYPE'], "IBLOCK_ID" => (int) $GLOBALS['AQW_ORDER']['IBLOCK_ID'], "ORDER_ID" => $ORDER_ID, "PRODUCT" => $data['product'], "COLOR" => $data['color'], "SIZE" => $data['size'], "NAME" => $data['name'], "PHONE" => $data['phone'], "EMAIL" => $data['email'], "ORDER_URL" => getenv("REQUEST_URI")); CEvent::Send("NEW_ORDER", SITE_ID, $arEventFields); } }
/** * @param string $emailFrom * @param string $emailUser * @param string $text * @param string $title * @return int */ public static function sendMessOnEmail($emailFrom, $emailUser, $title, $text = "") { $nameMessageTemplate = "NEW_NOTICE"; switch ($title) { case "NEW_ANSWER": $titleMessage = "Новый ответ"; $textMessage = "На Ваш вопрос поступил новый ответ"; break; default: $titleMessage = "Приятные пожелания"; $textMessage = "Удачного Вам сегодня Дня!!!"; break; } $arEventFields = array("FROM_EMAIL" => $emailFrom, "EMAIL" => $emailUser, "TITLE" => $titleMessage, "TEXT" => $textMessage); $idTemplateMessage = 70; $result = CEvent::Send($nameMessageTemplate, "s1", $arEventFields, $idTemplateMessage); return $result; }
"ORDER_LIST" => $strOrderList, "SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@".$SERVER_NAME), "DELIVERY_PRICE" => $arOrder["DELIVERY_PRICE"], ); $eventName = "SALE_NEW_ORDER"; $bSend = true; foreach(GetModuleEvents("sale", "OnOrderNewSendEmail", true) as $arEvent) if (ExecuteModuleEventEx($arEvent, array($ID, &$eventName, &$arFields))===false) $bSend = false; if($bSend) { $event = new CEvent; $event->Send($eventName, $LID, $arFields, "N"); } CSaleMobileOrderPush::send("ORDER_CREATED", array("ORDER" => $arOrderNew)); } } else { foreach($arErrors as $val) { if (is_array($val)) $errorMessage .= $val["TEXT"]."<br>"; else $errorMessage .= $val; } }
continue; } $strOrderList .= $val["NAME"] . " - " . $val["QUANTITY"] . " " . GetMessage("SOA_SHT") . ": " . SaleFormatCurrency($val["PRICE"], $arBasketItems["CURRENCY"]); $strOrderList .= "\n"; } $arFields = array("ORDER_ID" => $ORDER_ID, "ORDER_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT", SITE_ID))), "ORDER_USER" => strlen($payerName) > 0 ? $payerName : $USER->GetFullName(), "PRICE" => SaleFormatCurrency($arBasketItems["PRICE"], $arBasketItems["CURRENCY"]), "BCC" => COption::GetOptionString("sale", "order_email", "order@" . $SERVER_NAME), "EMAIL" => strlen($payerEMail) > 0 ? $payerEMail : $USER->GetEmail(), "ORDER_LIST" => $strOrderList, "SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@" . $SERVER_NAME), "DELIVERY_PRICE" => $arBasketItems["PRICE_DELIVERY"]); $eventName = "SALE_NEW_ORDER"; $bSend = true; foreach (GetModuleEvents("sale", "OnOrderNewSendEmail", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ORDER_ID, &$eventName, &$arFields)) === false) { $bSend = false; } } if ($bSend) { $event = new CEvent(); $event->Send($eventName, SITE_ID, $arFields, "N"); } /*end mail*/ CSaleMobileOrderPush::send("ORDER_CREATED", array("ORDER_ID" => $arFields["ORDER_ID"])); if (Loader::includeModule("statistic")) { $event1 = "eStore"; $event2 = "order_confirm"; $event3 = $arResult["ORDER_ID"]; $e = $event1 . "/" . $event2 . "/" . $event3; if (!is_array($_SESSION["ORDER_EVENTS"]) || is_array($_SESSION["ORDER_EVENTS"]) && !in_array($e, $_SESSION["ORDER_EVENTS"])) { CStatistic::Set_Event($event1, $event2, $event3); $_SESSION["ORDER_EVENTS"][] = $e; } } $urlError = ""; if ($PAYSYSTEM_ID == "account") {
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; }
if (strlen($serverName) <= 0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) { $serverName = SITE_SERVER_NAME; } else { $serverName = COption::GetOptionString("main", "server_name", ""); } if (strlen($serverName) <= 0) { $serverName = $_SERVER["SERVER_NAME"]; } } $arMailFields = array("BLOG_ID" => $arBlog["ID"], "BLOG_NAME" => $arBlog["NAME"], "BLOG_URL" => $arBlog["URL"], "BLOG_ADR" => "http://" . $serverName . CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_BLOG"]), array("blog" => $arBlog["URL"])), "USER_ID" => $user_id, "USER" => $AuthorName, "USER_URL" => "http://" . $serverName . CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_USER"]), array("user_id" => $user_id)), "EMAIL_FROM" => COption::GetOptionString("main", "email_from", "*****@*****.**")); $arF1 = $arF2 = $arMailFields; $arF1["EMAIL_TO"] = $arUser["EMAIL"]; $arF2["EMAIL_TO"] = $arUserBlog["EMAIL"]; CEvent::Send("BLOG_YOU_TO_BLOG", SITE_ID, $arF1); CEvent::Send("BLOG_USER_TO_YOUR_BLOG", SITE_ID, $arF2); } else { $arResult["ERROR_MESSAGE"] = GetMessage("B_B_MES_REQUEST_ERROR") . "<br />"; } } } else { $arResult["ERROR_MESSAGE"] .= GetMessage("B_B_MES_REQUEST_AUTH") . "<br />"; } } if ($_GET["delete"] == "Y") { if (check_bitrix_sessid() && CBlogPost::CanUserDeletePost(IntVal($arParams["ID"]), $USER->IsAuthorized() ? $arResult["USER_ID"] : 0)) { if (CBlogPost::Delete($arParams["ID"])) { BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/pages/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/first_page/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/calendar/"); BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/post/" . $arParams["ID"] . "/");
if (intVal($arParams["MID"]) <= 0) { $err = $APPLICATION->GetException(); $arError[] = array("id" => "bad_send", "text" => $err->GetString()); } elseif ($arParams["version"] == 2) { $db_res = CForumPrivateMessage::GetListEx(array(), array("ID" => $arParams["MID"])); if (!($db_res && ($res = $db_res->GetNext()))) { ""; } elseif (!empty($res["RECIPIENT_EMAIL"])) { $event = new CEvent(); $arSiteInfo = $event->GetSiteFieldsArray(SITE_ID); if (!isset(${"parser_" . LANGUAGE_ID})) { ${"parser_" . LANGUAGE_ID} = new forumTextParser(LANGUAGE_ID); } $POST_MESSAGE = ${"parser_" . LANGUAGE_ID}->convert4mail(str_replace("#SERVER_NAME#", SITE_SERVER_NAME, $_REQUEST["POST_MESSAGE"])); $arFields = array("FROM_NAME" => $res["AUTHOR_NAME"], "FROM_USER_ID" => $USER->GetID(), "FROM_EMAIL" => $USER->GetEmail(), "TO_NAME" => $res["RECIPIENT_NAME"], "TO_USER_ID" => $res["RECIPIENT_ID"], "TO_EMAIL" => $res["RECIPIENT_EMAIL"], "SUBJECT" => $_REQUEST["POST_SUBJ"], "MESSAGE" => $POST_MESSAGE, "MESSAGE_DATE" => date("d.m.Y H:i:s"), "MESSAGE_LINK" => "http://" . SITE_SERVER_NAME . CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_PM_READ"], array("FID" => "1", "MID" => $arParams["MID"])) . " \n"); $event->Send("NEW_FORUM_PRIVATE_MESSAGE", SITE_ID, $arFields, "N"); } } if ($arParams['AUTOSAVE']) { $arParams['AUTOSAVE']->Reset(); } // Clear cache. BXClearCache(true, "/bitrix/forum/user/" . $res["RECIPIENT_ID"] . "/"); $arComponentPath = array("bitrix:forum"); foreach ($arComponentPath as $path) { $componentRelativePath = CComponentEngine::MakeComponentPath($path); $arComponentDescription = CComponentUtil::GetComponentDescr($path); if (strLen($componentRelativePath) <= 0 || !is_array($arComponentDescription)) { continue; } elseif (!array_key_exists("CACHE_PATH", $arComponentDescription)) { continue;
$db_sales = CSaleOrder::GetList(false, ["USER_ID" => $arUser['ID'], ">=DATE_INSERT" => $filterDate]); while ($ar_sales = $db_sales->Fetch()) { $arFilterBasket = array("ORDER_ID" => $ar_sales['ID']); $arBasketItems = array(); $dbB = CSaleBasket::GetList(array("ID" => "ASC"), $arFilterBasket, false, false, array("ID", "PRODUCT_ID", "NAME", "QUANTITY", "PRICE", "CURRENCY", "DETAIL_PAGE_URL", "LID", "CAN_BUY", "SUBSCRIBE", "DELAY", 'ORDER_ID')); // Создадим массив с товарами, которые находятся в заказах, распределенными по пользователям while ($arB = $dbB->Fetch()) { $arOrderedItemsByUser[$arUser['ID']][$arB['PRODUCT_ID']] = $arB['PRODUCT_ID']; } } } // Отфильтруем из отложенных товаров те, которые были отправленны в заказ. Для этого создадим новый массив foreach ($arItemsByUser as $userID => $userItems) { foreach ($userItems as $itemIndex => $arItem) { if (!in_array($arItem['PRODUCT_ID'], $arOrderedItemsByUser[$userID])) { $arItemsByUserFinal[$userID][] = $arItem; } } } // Создадим почтовые события foreach ($arItemsByUserFinal as $userID => $arItems) { $arUser = $arUsers[$userID]; $products = ''; foreach ($arItems as $arItem) { $products .= $arItem['NAME'] . "\r\n"; } $arEventFields = array("NAME" => $arUser['NAME'], "LAST_NAME" => $arUser['LAST_NAME'], "EMAIL_TO" => $arUser['EMAIL'], "PRODUCT_LIST" => $products); CEvent::Send("REMIND_BASKET", 's1', $arEventFields); } // Отправим письма CEvent::CheckEvents();
function Update($ID, $arFields, $bDateUpdate = true) { global $DB, $USER_FIELD_MANAGER, $CACHE_MANAGER; $ID = IntVal($ID); $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CSaleOrder::CheckFields("UPDATE", $arFields, $ID)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeOrderUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $strUpdate = $DB->PrepareUpdate("b_sale_order", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($strUpdate) > 0) { $strUpdate .= ", "; } $strUpdate .= $key . "=" . $value . " "; } //get old fields $arOrderOldFields = CSaleOrder::GetByID($ID); $strSql = "UPDATE b_sale_order SET " . "\t" . $strUpdate . " "; if ($bDateUpdate) { $strSql .= ",\tDATE_UPDATE = " . $DB->GetNowFunction() . " "; } $strSql .= "WHERE ID = " . $ID . " "; $res = $DB->Query($strSql, true, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (!$res) { return false; } $USER_FIELD_MANAGER->Update("ORDER", $ID, $arFields); if ($res) { CSaleOrderChange::AddRecordsByFields($ID, $arOrderOldFields, $arFields); } unset($GLOBALS["SALE_ORDER"]["SALE_ORDER_CACHE_" . $ID]); foreach (GetModuleEvents("sale", "OnOrderUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } if (isset($arFields["TRACKING_NUMBER"])) { foreach (GetModuleEvents("sale", "OnTrackingNumberChange", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields["TRACKING_NUMBER"])); } if (strlen($arFields["TRACKING_NUMBER"]) > 0 && $arOrderOldFields["TRACKING_NUMBER"] != $arFields["TRACKING_NUMBER"]) { $accountNumber = isset($arFields["ACCOUNT_NUMBER"]) ? $arFields["ACCOUNT_NUMBER"] : $arOrderOldFields["ACCOUNT_NUMBER"]; $userId = isset($arFields["USER_ID"]) ? $arFields["USER_ID"] : $arOrderOldFields["USER_ID"]; $payerName = ""; $payerEMail = ''; $dbUser = CUser::GetByID($userId); if ($arUser = $dbUser->Fetch()) { if (strlen($payerName) <= 0) { $payerName = $arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"]; } if (strlen($payerEMail) <= 0) { $payerEMail = $arUser["EMAIL"]; } } $arEmailFields = array("ORDER_ID" => $accountNumber, "ORDER_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT", $arOrderOldFields["LID"]))), "ORDER_USER" => $payerName, "ORDER_TRACKING_NUMBER" => $arFields["TRACKING_NUMBER"], "BCC" => COption::GetOptionString("sale", "order_email", "order@" . $SERVER_NAME), "EMAIL" => $payerEMail, "SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@" . $SERVER_NAME)); $event = new CEvent(); $event->Send("SALE_ORDER_TRACKING_NUMBER", $arOrderOldFields["LID"], $arEmailFields, "N"); } } if (defined("CACHED_b_sale_order") && $bDateUpdate && $arFields["UPDATED_1C"] != "Y") { $CACHE_MANAGER->Read(CACHED_b_sale_order, "sale_orders"); $CACHE_MANAGER->SetImmediate("sale_orders", true); } return $ID; }
$errors = registerUser($_POST['user']); } elseif (isset($_GET['user'])) { $userInfo = $_GET['user']; } elseif (isset($_POST['forget'])) { if (!$_POST['forget']['email']) { $forgetError = 'Неверно указан почтовый адрес'; } else { $user = CUser::GetList($by = "id", $order = "desc", array('EMAIL' => $_POST['forget']['email'], 'ACTIVE' => 'Y'))->Fetch(); if (!$user) { $forgetError = 'Неверно указан почтовый адрес'; } else { $objUser = new CUser(); $password = make_password(8); $objUser->Update($user['ID'], array('PASSWORD' => $password, 'CONFIRM_PASSWORD' => $password)); $eventFields = array('NAME' => $user['NAME'], 'PASSWORD' => $password, 'EMAIL' => $user['EMAIL']); $eventSent = CEvent::Send('FORGET_PASS', 's1', $eventFields); } } } ?> <script type="text/javascript"> $(document).ready(function(){ $('.open-auth').click(function(e){ e.preventDefault(); $('#auth-handler').dialog('open'); return false; }); $('.open-reg').click(function(e){ e.preventDefault(); $('#reg-handler').dialog('open');
} } } $APPLICATION->ThrowException($errorMessage, "ERROR_DELETE_RELATION"); } } if (strlen($errorMessage) > 0) { $arResult["ErrorMessage"] = $errorMessage; } } elseif (CModule::IncludeModule('extranet') && CExtranet::IsExtranetSite() && intval($_REQUEST["invite_user_id"]) > 0) { $rsInvitedUser = CUser::GetByID(intval($_REQUEST["invite_user_id"])); if (($arInvitedUser = $rsInvitedUser->Fetch()) && (!is_array($arInvitedUser["UF_DEPARTMENT"]) || intval($arInvitedUser["UF_DEPARTMENT"][0]) <= 0)) { if (strlen($arInvitedUser["LAST_LOGIN"]) <= 0 && strlen($arInvitedUser["LAST_ACTIVITY_DATE"]) <= 0) { $event = new CEvent(); $arFields = array("USER_ID" => $arInvitedUser["ID"], "CHECKWORD" => $arInvitedUser["CONFIRM_CODE"], "EMAIL" => $arInvitedUser["EMAIL"]); $event->Send("EXTRANET_INVITATION", SITE_ID, $arFields); LocalRedirect($APPLICATION->GetCurPageParam("invite_sent=Y", array("invite_user_id", "employee"))); } } } $parser = new CSocNetTextParser(LANGUAGE_ID, $arParams["PATH_TO_SMILE"]); $arResult["Requests"] = false; $dbRequests = CSocNetUserToGroup::GetList(array("DATE_CREATE" => "ASC"), array("GROUP_ID" => $arResult["Group"]["ID"], "ROLE" => SONET_ROLES_REQUEST, "INITIATED_BY_TYPE" => SONET_INITIATED_BY_GROUP), false, $arNavParams, array("ID", "USER_ID", "DATE_CREATE", "DATE_UPDATE", "MESSAGE", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "USER_PERSONAL_PHOTO", "USER_PERSONAL_GENDER")); if ($dbRequests) { $arResult["Requests"] = array(); $arResult["Requests"]["List"] = false; while ($arRequests = $dbRequests->GetNext()) { if ($arResult["Requests"]["List"] == false) { $arResult["Requests"]["List"] = array(); } $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arRequests["USER_ID"]));
function RemindPayment() { $reminder = COption::GetOptionString("sale", "pay_reminder", ""); $arReminder = unserialize($reminder); if (!empty($arReminder)) { $arSites = array(); $minDay = mktime(); foreach ($arReminder as $key => $val) { if ($val["use"] == "Y") { $arSites[] = $key; $days = array(); for ($i = 0; $i <= floor($val["period"] / $val["frequency"]); $i++) { $day = AddToTimeStamp(array("DD" => -($val["after"] + $val["period"] - $val["frequency"] * $i))); if ($day < mktime()) { if ($minDay > $day) { $minDay = $day; } $day = ConvertTimeStamp($day); $days[] = $day; } } $arReminder[$key]["days"] = $days; } } if (!empty($arSites)) { $bTmpUser = False; if (!isset($GLOBALS["USER"]) || !is_object($GLOBALS["USER"])) { $bTmpUser = True; $GLOBALS["USER"] = new CUser(); } $arFilter = array("LID" => $arSites, "PAYED" => "N", "CANCELED" => "N", "ALLOW_DELIVERY" => "N", ">=DATE_INSERT" => ConvertTimeStamp($minDay)); $dbOrder = CSaleOrder::GetList(array("ID" => "DESC"), $arFilter, false, false, array("ID", "DATE_INSERT", "PAYED", "USER_ID", "LID", "PRICE", "CURRENCY")); while ($arOrder = $dbOrder->GetNext()) { $date_insert = ConvertDateTime($arOrder["DATE_INSERT"], CSite::GetDateFormat("SHORT")); if (in_array($date_insert, $arReminder[$arOrder["LID"]]["days"])) { $strOrderList = ""; $dbBasketTmp = CSaleBasket::GetList(array("NAME" => "ASC"), array("ORDER_ID" => $arOrder["ID"]), false, false, array("ID", "NAME", "QUANTITY")); while ($arBasketTmp = $dbBasketTmp->Fetch()) { $strOrderList .= $arBasketTmp["NAME"] . " (" . $arBasketTmp["QUANTITY"] . ")"; $strOrderList .= "\n"; } $payerEMail = ""; $dbOrderProp = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $arOrder["ID"], "PROP_IS_EMAIL" => "Y")); if ($arOrderProp = $dbOrderProp->Fetch()) { $payerEMail = $arOrderProp["VALUE"]; } $payerName = ""; $dbUser = CUser::GetByID($arOrder["USER_ID"]); if ($arUser = $dbUser->Fetch()) { if (strlen($payerName) <= 0) { $payerName = $arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"]; } if (strlen($payerEMail) <= 0) { $payerEMail = $arUser["EMAIL"]; } } $arFields = array("ORDER_ID" => $arOrder["ID"], "ORDER_DATE" => $date_insert, "ORDER_USER" => $payerName, "PRICE" => SaleFormatCurrency($arOrder["PRICE"], $arOrder["CURRENCY"]), "BCC" => COption::GetOptionString("sale", "order_email", "order@" . $_SERVER["SERVER_NAME"]), "EMAIL" => $payerEMail, "ORDER_LIST" => $strOrderList, "SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@" . $SERVER_NAME)); $eventName = "SALE_ORDER_REMIND_PAYMENT"; $bSend = true; foreach (GetModuleEvents("sale", "OnOrderRemindSendEmail", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($arOrder["ID"], &$eventName, &$arFields)) === false) { $bSend = false; } } if ($bSend) { $event = new CEvent(); $event->Send($eventName, $arOrder["LID"], $arFields, "N"); } } } if ($bTmpUser) { unset($GLOBALS["USER"]); } } } return "CSaleOrder::RemindPayment();"; }
function Notify($arPost, $arBlog, $arParams) { global $DB; if (empty($arBlog)) { $arBlog = CBlog::GetByID($arPost["BLOG_ID"]); } if ($arParams["bSoNet"] || $arBlog["EMAIL_NOTIFY"] == "Y" && $arParams["user_id"] != $arBlog["OWNER_ID"]) { $BlogUser = CBlogUser::GetByID($arParams["user_id"], BLOG_BY_USER_ID); $BlogUser = CBlogTools::htmlspecialcharsExArray($BlogUser); $res = CUser::GetByID($arBlog["OWNER_ID"]); $arOwner = $res->GetNext(); $dbUser = CUser::GetByID($arParams["user_id"]); $arUser = $dbUser->Fetch(); $AuthorName = CBlogUser::GetUserNameEx($arUser, $BlogUser, $arParams); $parserBlog = new blogTextParser(false, $arParams["PATH_TO_SMILE"]); $text4mail = $arPost["DETAIL_TEXT"]; if ($arPost["DETAIL_TEXT_TYPE"] == "html") { $text4mail = HTMLToTxt($text4mail); } $arImages = array(); $res = CBlogImage::GetList(array("ID" => "ASC"), array("POST_ID" => $arPost["ID"], "BLOG_ID" => $arBlog["ID"], "IS_COMMENT" => "N")); while ($arImage = $res->Fetch()) { $arImages[$arImage['ID']] = $arImage['FILE_ID']; } $text4mail = $parserBlog->convert4mail($text4mail, $arImages); $dbSite = CSite::GetByID(SITE_ID); $arSite = $dbSite->Fetch(); $serverName = htmlspecialcharsEx($arSite["SERVER_NAME"]); if (strlen($serverName) <= 0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) { $serverName = SITE_SERVER_NAME; } else { $serverName = COption::GetOptionString("main", "server_name", ""); } } } if (!$arParams["bSoNet"] && $arBlog["EMAIL_NOTIFY"] == "Y" && $arParams["user_id"] != $arBlog["OWNER_ID"] && IntVal($arBlog["OWNER_ID"]) > 0) { CEvent::Send("NEW_BLOG_MESSAGE", SITE_ID, array("BLOG_ID" => $arBlog["ID"], "BLOG_NAME" => htmlspecialcharsBack($arBlog["NAME"]), "BLOG_URL" => $arBlog["URL"], "MESSAGE_TITLE" => $arPost["TITLE"], "MESSAGE_TEXT" => $text4mail, "MESSAGE_DATE" => GetTime(MakeTimeStamp($arPost["DATE_PUBLISH"]) - CTimeZone::GetOffset(), "FULL"), "MESSAGE_PATH" => "http://" . $serverName . CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack($arParams["PATH_TO_POST"]), array("blog" => $arBlog["URL"], "post_id" => $arPost["ID"], "user_id" => $arBlog["OWNER_ID"], "group_id" => $arParams["SOCNET_GROUP_ID"])), "AUTHOR" => $AuthorName, "EMAIL_FROM" => COption::GetOptionString("main", "email_from", "*****@*****.**"), "EMAIL_TO" => $arOwner["EMAIL"])); } if ($arParams["bSoNet"] && $arPost["ID"] && CModule::IncludeModule("socialnetwork")) { if ($arPost["DETAIL_TEXT_TYPE"] == "html" && $arParams["allowHTML"] == "Y" && $arBlog["ALLOW_HTML"] == "Y") { $arAllow = array("HTML" => "Y", "ANCHOR" => "Y", "IMG" => "Y", "SMILES" => "N", "NL2BR" => "N", "VIDEO" => "Y", "QUOTE" => "Y", "CODE" => "Y"); if ($arParams["allowVideo"] != "Y") { $arAllow["VIDEO"] = "N"; } $text4message = $parserBlog->convert($arPost["DETAIL_TEXT"], false, $arImages, $arAllow); } else { $arAllow = array("HTML" => "N", "ANCHOR" => "N", "BIU" => "N", "IMG" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "TABLE" => "N", "LIST" => "N", "SMILES" => "N", "NL2BR" => "N", "VIDEO" => "N"); $text4message = $parserBlog->convert($arPost["DETAIL_TEXT"], false, $arImages, $arAllow, array("isSonetLog" => true)); } $arSoFields = array("EVENT_ID" => "blog_post", "=LOG_DATE" => strlen($arPost["DATE_PUBLISH"]) > 0 ? MakeTimeStamp($arPost["DATE_PUBLISH"], CSite::GetDateFormat("FULL", $SITE_ID)) > time() + CTimeZone::GetOffset() ? $DB->CharToDateFunction($arPost["DATE_PUBLISH"], "FULL", SITE_ID) : $DB->CurrentTimeFunction() : $DB->CurrentTimeFunction(), "TITLE_TEMPLATE" => "#USER_NAME# " . GetMessage("BLG_SONET_TITLE"), "TITLE" => $arPost["TITLE"], "MESSAGE" => $text4message, "TEXT_MESSAGE" => $text4mail, "MODULE_ID" => "blog", "CALLBACK_FUNC" => false, "SOURCE_ID" => $arPost["ID"], "ENABLE_COMMENTS" => array_key_exists("ENABLE_COMMENTS", $arPost) && $arPost["ENABLE_COMMENTS"] == "N" ? "N" : "Y"); $arSoFields["RATING_TYPE_ID"] = "BLOG_POST"; $arSoFields["RATING_ENTITY_ID"] = intval($arPost["ID"]); if ($arParams["bGroupMode"]) { $arSoFields["ENTITY_TYPE"] = SONET_ENTITY_GROUP; $arSoFields["ENTITY_ID"] = $arParams["SOCNET_GROUP_ID"]; $arSoFields["URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST"], array("blog" => $arBlog["URL"], "user_id" => $arBlog["OWNER_ID"], "group_id" => $arParams["SOCNET_GROUP_ID"], "post_id" => $arPost["ID"])); } else { $arSoFields["ENTITY_TYPE"] = SONET_ENTITY_USER; $arSoFields["ENTITY_ID"] = $arBlog["OWNER_ID"]; $arSoFields["URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_POST"], array("blog" => $arBlog["URL"], "user_id" => $arBlog["OWNER_ID"], "group_id" => $arParams["SOCNET_GROUP_ID"], "post_id" => $arPost["ID"])); } if (intval($arParams["user_id"]) > 0) { $arSoFields["USER_ID"] = $arParams["user_id"]; } $logID = CSocNetLog::Add($arSoFields, false); if (intval($logID) > 0) { $socnetPerms = CBlogPost::GetSocNetPermsCode($arPost["ID"]); if (!in_array("U" . $arPost["AUTHOR_ID"], $socnetPerms)) { $socnetPerms[] = "U" . $arPost["AUTHOR_ID"]; } $socnetPerms[] = "SA"; // socnet admin CSocNetLog::Update($logID, array("TMP_ID" => $logID)); if (CModule::IncludeModule("extranet")) { $arSiteID = CExtranet::GetSitesByLogDestinations($socnetPerms); CSocNetLog::Update($logID, array("SITE_ID" => $arSiteID)); } CSocNetLogRights::DeleteByLogID($logID); CSocNetLogRights::Add($logID, $socnetPerms); CSocNetLog::SendEvent($logID, "SONET_NEW_EVENT", $logID); return $logID; } } }
function UseCoupon($coupon) { global $DB, $USER; $ret = false; $arFields = false; $arLogFields = false; $arCoupon = false; $curr = ConvertTimeStamp(); $arFilter = array('LOGIC' => 'AND', 'COUPON' => $coupon, '=ACTIVE' => 'Y', array('LOGIC' => 'OR', 'ACTIVE_FROM' => false, '<=ACTIVE_FROM' => $curr), array('LOGIC' => 'OR', 'ACTIVE_TO' => false, '>=ACTIVE_TO' => $curr)); $DB->StartTransaction(); $rs = CSupportSuperCoupon::GetList(false, $arFilter); if ($arCoupon = $rs->Fetch()) { $countTickets = intval($arCoupon['COUNT_TICKETS']); if ($countTickets > 0) { $countTickets--; $arFields = array('COUNT_TICKETS' => $countTickets, 'TIMESTAMP_X' => $DB->GetNowFunction(), 'COUNT_USED' => 'COUNT_USED + 1'); if (isset($USER) && is_object($USER)) { $arFields['UPDATED_USER_ID'] = $USER->GetID(); } if ($aff_rows = $DB->Update('b_ticket_supercoupons', $arFields, 'WHERE ID=' . $arCoupon['ID'])) { $ret = true; } } $arLogFields = array('~TIMESTAMP_X' => $DB->GetNowFunction(), 'COUPON_ID' => $arCoupon['ID'], 'USER_ID' => isset($USER) && is_object($USER) ? $USER->GetID() : false, 'SUCCESS' => $ret ? 'Y' : 'N', 'AFTER_COUNT' => $countTickets, 'SESSION_ID' => array_key_exists('SESS_SESSION_ID', $_SESSION) ? $_SESSION['SESS_SESSION_ID'] : false, 'GUEST_ID' => array_key_exists('SESS_GUEST_ID', $_SESSION) ? $_SESSION['SESS_GUEST_ID'] : false, 'AFFECTED_ROWS' => $aff_rows, 'COUPON' => $coupon); $arInsert = $DB->PrepareInsert('b_ticket_supercoupons_log', $arLogFields); $strSql = "INSERT INTO b_ticket_supercoupons_log (" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")"; $DB->Query($strSql, false, 'File: ' . __FILE__ . ' Line: ' . __LINE__); $arMail = array('COUPON' => $coupon, 'COUPON_ID' => $arCoupon['ID'], 'DATE' => ConvertTimeStamp(false, 'FULL'), 'USER_ID' => isset($USER) && is_object($USER) ? $USER->GetID() : -1, 'SESSION_ID' => array_key_exists('SESS_SESSION_ID', $_SESSION) ? $_SESSION['SESS_SESSION_ID'] : -1, 'GUEST_ID' => array_key_exists('SESS_GUEST_ID', $_SESSION) ? $_SESSION['SESS_GUEST_ID'] : -1); $rsEvents = GetModuleEvents('support', 'OnBeforeSendCouponEMail'); while ($arEvent = $rsEvents->Fetch()) { $arMail = ExecuteModuleEventEx($arEvent, array($arMail)); } if ($arMail) { $e = new CEvent(); $e->Send('TICKET_GENERATE_SUPERCOUPON', SITE_ID, $arMail); } } $DB->Commit(); $rsEvents = GetModuleEvents('support', 'OnAfterUseCoupon'); while ($arEvent = $rsEvents->Fetch()) { ExecuteModuleEventEx($arEvent, array($coupon, $arCoupon, $arFields, $arLogFields)); } return $ret; }
/** * @param Main\Event $event * * @return Main\EventResult */ public static function onSaleOrderCancelSendEmail(Main\Event $event) { $parameters = $event->getParameters(); /** @var Sale\Order $order */ $order = $parameters[0]; if (!$order instanceof Sale\Order) { return new Main\EventResult(Main\EventResult::ERROR, new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_EVENT_COMPATIBILITY_ORDER_CANCEL_SEND_EMAIL_WRONG_ORDER'), 'SALE_EVENT_COMPATIBILITY_ORDER_CANCEL_SEND_EMAIL_WRONG_ORDER'), 'sale'); } $id = $order->getId(); $value = $order->getField('CANCELED'); $description = $order->getField('REASON_CANCELED'); if ($value == "Y") { $userEmail = ""; /** @var Sale\PropertyValueCollection $propertyCollection */ if ($propertyCollection = $order->getPropertyCollection()) { if ($propUserEmail = $propertyCollection->getUserEmail()) { $userEmail = $propUserEmail->getValue(); } } if (strval($userEmail) == '') { $resUser = \CUser::GetByID($order->getUserId()); if ($userData = $resUser->Fetch()) { $userEmail = $userData["EMAIL"]; } } $fields = array("ORDER_ID" => $order->getField("ACCOUNT_NUMBER"), "ORDER_DATE" => $order->getDateInsert()->toString(), "EMAIL" => $userEmail, "ORDER_CANCEL_DESCRIPTION" => $description, "SALE_EMAIL" => Main\Config\Option::get("sale", "order_email", "order@" . $_SERVER["SERVER_NAME"])); $eventName = "SALE_ORDER_CANCEL"; $send = true; foreach (GetModuleEvents("sale", static::EVENT_COMPATIBILITY_ON_ORDER_CANCEL_SEND_EMAIL, true) as $oldEvent) { if (ExecuteModuleEventEx($oldEvent, array($id, &$eventName, &$fields)) === false) { $send = false; } } if ($send) { $event = new \CEvent(); $event->Send($eventName, $order->getField('LID'), $fields, "N"); } $orderFields = null; /** @var Sale\Result $r */ $r = OrderCompatibility::getOrderFields($order); if ($r->isSuccess()) { if ($resultOrderFieldsData = $r->getData()) { if (!empty($resultOrderFieldsData['ORDER_FIELDS']) && is_array($resultOrderFieldsData['ORDER_FIELDS'])) { $orderFields = $resultOrderFieldsData['ORDER_FIELDS']; } } } \CSaleMobileOrderPush::send("ORDER_CANCELED", array("ORDER" => $orderFields)); if (Main\Loader::includeModule("statistic")) { \CStatEvent::AddByEvents("eStore", "order_cancel", $id, "", $order->getField("STAT_GID")); } } return new Main\EventResult(Main\EventResult::SUCCESS, null, 'sale'); }
public static function KeepVoting() { global $DB, $VOTING_LAMP, $USER_ALREADY_VOTE, $USER_GROUP_PERMISSION, $USER; $err_mess = CAllVote::err_mess() . "<br>Function: KeepVoting<br>Line: "; $VOTING_LAMP = "green"; $USER_ALREADY_VOTE = "N"; $PUBLIC_VOTE_ID = intval($_REQUEST["PUBLIC_VOTE_ID"]); $aMsg = array(); $VOTE_ID = 0; $arVote = array(); $arQuestions = array(); if (!(!empty($_REQUEST["vote"]) && $PUBLIC_VOTE_ID > 0 && check_bitrix_sessid())) { $aMsg[] = array("id" => "bad_params", "text" => GetMessage("VOTE_NOT_FOUND")); } elseif (($VOTE_ID = intVal(GetVoteDataByID($PUBLIC_VOTE_ID, $arChannel, $arVote, $arQuestions, $arAnswers, $arDropDown, $arMultiSelect, $arGroupAnswers, "N"))) && ($VOTE_ID <= 0 || $arVote["LAMP"] != "green")) { $VOTING_LAMP = "red"; if ($VOTE_ID <= 0) { $aMsg[] = array("id" => "VOTE_ID", "text" => GetMessage("VOTE_NOT_FOUND")); } else { $aMsg[] = array("id" => "LAMP", "text" => GetMessage("VOTE_RED_LAMP")); } } elseif ($arChannel["USE_CAPTCHA"] == "Y" && !$USER->IsAuthorized()) { include_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/captcha.php"; $cpt = new CCaptcha(); if (!empty($_REQUEST["captcha_word"])) { $captchaPass = COption::GetOptionString("main", "captcha_password", ""); if (!$cpt->CheckCodeCrypt($_REQUEST["captcha_word"], $_REQUEST["captcha_code"], $captchaPass)) { $GLOBALS["BAD_CAPTCHA"] = "Y"; $aMsg[] = array("id" => "CAPTCHA", "text" => GetMessage("VOTE_BAD_CAPTCHA")); } } else { if (!$cpt->CheckCode($_REQUEST["captcha_word"], 0)) { $GLOBALS["NO_CAPTCHA"] = "Y"; $aMsg[] = array("id" => "CAPTCHA", "text" => GetMessage("VOTE_BAD_CAPTCHA")); } } } if (empty($aMsg)) { // get user id $_SESSION["VOTE_USER_ID"] = CVote::SetVoteUserID(); $GLOBALS["VOTING_ID"] = $VOTE_ID; // check: can user vote $UNIQUE_TYPE = $arVote["UNIQUE_TYPE"]; $KEEP_IP_SEC = $arVote["KEEP_IP_SEC"]; $CHANNEL_ID = $arVote["CHANNEL_ID"]; $StatusVote = CVote::UserAlreadyVote($VOTE_ID, $_SESSION["VOTE_USER_ID"], $UNIQUE_TYPE, $KEEP_IP_SEC, $USER->GetID()); $USER_ALREADY_VOTE = $StatusVote != false ? "Y" : "N"; $USER_GROUP_PERMISSION = CVote::UserGroupPermission($CHANNEL_ID); // if user can vote that if (($USER_ALREADY_VOTE == "N" || $StatusVote == 8 && $_REQUEST["REVOTE_ID"] == $VOTE_ID) && $USER_GROUP_PERMISSION >= 2) { $arSqlAnswers = array(); // check answers foreach ($arQuestions as $qID => $arQuestion) { $arSqlAnswers[$arQuestion["ID"]] = array(); $bIndicators = array(); foreach ($arQuestion["ANSWERS"] as $arAnswer) { switch ($arAnswer["FIELD_TYPE"]) { case 0: // radio // radio case 2: // dropdown list $fieldName = ($arAnswer["FIELD_TYPE"] == 0 ? "vote_radio_" : "vote_dropdown_") . $qID; $aID = intval($GLOBALS[$fieldName]); if (!isset($bIndicators[$fieldName]) && array_key_exists($aID, $arQuestion["ANSWERS"])) { if (!empty($arAnswer['MESSAGE'])) { $arSqlAnswers[$qID][$aID] = array("ANSWER_ID" => $aID); } $bIndicators[$fieldName] = "Y"; } break; case 1: // checkbox // checkbox case 3: // multiselect list $fieldName = ($arAnswer["FIELD_TYPE"] == 1 ? "vote_checkbox_" : "vote_multiselect_") . $qID; $res = $GLOBALS[$fieldName]; if (!isset($bIndicators[$fieldName]) && is_array($res) && !empty($res)) { reset($res); foreach ($res as $aID) { if (array_key_exists($aID, $arQuestion["ANSWERS"])) { $arSqlAnswers[$qID][$aID] = array("ANSWER_ID" => $aID); } } $bIndicators[$fieldName] = "Y"; } break; case 4: // field // field case 5: // text $aID = $arAnswer["ID"]; $fieldName = ($arAnswer["FIELD_TYPE"] == 4 ? "vote_field_" : "vote_memo_") . $aID; $MESSAGE = trim($GLOBALS[$fieldName]); if ($MESSAGE != "") { $arSqlAnswers[$qID][$aID] = array("ANSWER_ID" => $aID, "MESSAGE" => "'" . $DB->ForSql(trim($MESSAGE), 2000) . "'"); } break; } } if (empty($arSqlAnswers[$qID])) { unset($arSqlAnswers[$qID]); if ($arQuestion['REQUIRED'] == 'Y') { $aMsg[] = array("id" => "QUESTION_" . $qID, "text" => GetMessage("VOTE_REQUIRED_MISSING")); $GLOBALS["VOTE_REQUIRED_MISSING"] = "Y"; break; } } } if (!empty($aMsg)) { /* do nothing; */ } elseif (!empty($arSqlAnswers)) { // vote event $arFields = array("VOTE_ID" => $VOTE_ID, "VOTE_USER_ID" => intval($_SESSION["VOTE_USER_ID"]), "DATE_VOTE" => $DB->GetNowFunction(), "STAT_SESSION_ID" => intval($_SESSION["SESS_SESSION_ID"]), "IP" => "'" . $DB->ForSql($_SERVER["REMOTE_ADDR"], 15) . "'", "VALID" => "'Y'"); /***************** Event onBeforeVoting ****************************/ foreach (GetModuleEvents("vote", "onBeforeVoting", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array(&$arFields, &$arSqlAnswers)) === false) { return false; } } /***************** /Event ******************************************/ if ($StatusVote == 8 && $_REQUEST["REVOTE_ID"] == $VOTE_ID) { $strSql = "SELECT VE.ID, VEQ.QUESTION_ID, VEA.ANSWER_ID" . " FROM b_vote_event VE " . "\tLEFT JOIN b_vote_event_question VEQ ON (VEQ.EVENT_ID=VE.ID)" . "\tLEFT JOIN b_vote_event_answer VEA ON (VEA.EVENT_QUESTION_ID=VEQ.ID)" . "\tLEFT JOIN b_vote_user VU ON (VE.VOTE_USER_ID = VU.ID)" . " WHERE VE.VOTE_ID=" . $VOTE_ID . " AND VU.AUTH_USER_ID=" . intval($USER->GetID()) . " ORDER BY VE.ID ASC, VEQ.QUESTION_ID ASC"; $db_res = $DB->Query($strSql, false, $err_mess . __LINE__); if ($db_res && ($res = $db_res->Fetch())) { if ($USER->GetID() > 0 && CModule::IncludeModule("im")) { CIMNotify::DeleteByTag("VOTING|" . $VOTE_ID, $USER->GetID()); } $del = false; $delQ = false; do { if ($delQ !== $res["QUESTION_ID"]) { if ($del !== $res["ID"]) { CVoteEvent::Delete($res["ID"]); $del = $res["ID"]; $arVote["COUNTER"] = intval($arVote["COUNTER"]) - 1; } $delQ = $res["QUESTION_ID"]; $arQuestions[$res["QUESTION_ID"]]["COUNTER"] = intval($arQuestions[$res["QUESTION_ID"]]["COUNTER"]) - 1; } $arQuestions[$res["QUESTION_ID"]]["ANSWERS"][$res["ANSWER_ID"]]["COUNTER"] = intval($arQuestions[$res["QUESTION_ID"]]["ANSWERS"][$res["ANSWER_ID"]]["COUNTER"]) - 1; } while ($res = $db_res->Fetch()); } $USER_ALREADY_VOTE = "N"; } unset($GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]); unset($GLOBALS["VOTE_CACHE"]["VOTE"][$VOTE_ID]); $EVENT_ID = intval($DB->Insert("b_vote_event", $arFields, $err_mess . __LINE__)); if ($EVENT_ID > 0) { $arSqlQuestionsID = array(); $arSqlAnswersID = array(); foreach ($arSqlAnswers as $qID => $arSqlAnswer) { $arFields = array("EVENT_ID" => $EVENT_ID, "QUESTION_ID" => $qID); $EVENT_QUESTION_ID = intval($DB->Insert("b_vote_event_question", $arFields, $err_mess . __LINE__)); if ($EVENT_QUESTION_ID > 0) { $arSqlQuestionsID[] = $qID; $arQuestions[$qID]["COUNTER"] = intval($arQuestions[$qID]["COUNTER"]) + 1; foreach ($arSqlAnswer as $aID => $res) { $res["EVENT_QUESTION_ID"] = $EVENT_QUESTION_ID; if ($DB->Insert("b_vote_event_answer", $res, $err_mess . __LINE__)) { $arSqlAnswersID[$aID] = $qID; $arQuestions[$qID]["ANSWERS"][$aID]["COUNTER"] = intval($arQuestions[$qID]["ANSWERS"][$aID]["COUNTER"]) + 1; } } } } if (empty($arSqlQuestionsID) || empty($arSqlAnswersID)) { $DB->Query("DELETE FROM b_vote_event WHERE ID=" . $EVENT_ID, $arFields, $err_mess . __LINE__); } else { $arFields = array("COUNTER" => "COUNTER+1"); $DB->Update("b_vote", $arFields, "WHERE ID='" . $VOTE_ID . "'", $err_mess . __LINE__); $arVote["COUNTER"] = intval($arVote["COUNTER"]) + 1; $DB->Update("b_vote_question", $arFields, "WHERE ID in (" . implode(", ", $arSqlQuestionsID) . ")", $err_mess . __LINE__); $DB->Update("b_vote_answer", $arFields, "WHERE ID in (" . implode(", ", array_keys($arSqlAnswersID)) . ")", $err_mess . __LINE__); // increment user counter CVote::UpdateVoteUserID($_SESSION["VOTE_USER_ID"]); $GLOBALS["VOTING_OK"] = "Y"; $_SESSION["VOTE_ARRAY"][] = $VOTE_ID; if ($UNIQUE_TYPE & 8) { $_SESSION["VOTE"]["VOTES"][$VOTE_ID] = $EVENT_ID; } // statistic module if (CModule::IncludeModule("statistic")) { $event3 = $arVote["EVENT3"]; if (!empty($event3)) { $event3 = "http://" . $_SERVER["HTTP_HOST"] . "/bitrix/admin/vote_user_results.php?EVENT_ID=" . $EVENT_ID . "&lang=" . LANGUAGE_ID; } CStatEvent::AddCurrent($arVote["EVENT1"], $arVote["EVENT2"], $event3); } // notification if (!!$arVote["AUTHOR_ID"] && $arVote["AUTHOR_ID"] != $USER->GetID()) { if (empty($arVote["TITLE"])) { $arQuestion = reset($arQuestions); $arVote["TITLE"] = $arQuestion["QUESTION"]; } if ($arVote["NOTIFY"] == "I" && CModule::IncludeModule("im")) { $arVote["TOTAL_URL"] = ""; if (!empty($arVote["URL"])) { if (defined('SITE_SERVER_NAME')) { $arVote["TOTAL_URL"] = SITE_SERVER_NAME; } $arVote["TOTAL_URL"] = !empty($arVote["TOTAL_URL"]) ? $arVote["TOTAL_URL"] : COption::GetOptionString("main", "server_name", $GLOBALS["SERVER_NAME"]); if (!empty($arVote["TOTAL_URL"])) { $arVote["TOTAL_URL"] = (CMain::IsHTTPS() ? "https" : "http") . "://" . $arVote["TOTAL_URL"] . $arVote["URL"]; } } // send notification $gender = $USER->getParam("PERSONAL_GENDER") == "F" ? "_F" : ""; $arMessageFields = array("MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => $arVote["AUTHOR_ID"], "FROM_USER_ID" => $USER->GetID(), "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "vote", "NOTIFY_EVENT" => "voting", "NOTIFY_TAG" => "VOTING|" . $VOTE_ID, "NOTIFY_MESSAGE" => !empty($arVote["URL"]) ? GetMessage("V_NOTIFY_MESSAGE_HREF" . $gender, array("#VOTE_TITLE#" => $arVote["TITLE"], "#VOTE_URL#" => $arVote["URL"])) : GetMessage("V_NOTIFY_MESSAGE" . $gender, array("#VOTE_TITLE#" => $arVote["TITLE"])), "NOTIFY_MESSAGE_OUT" => !empty($arVote["TOTAL_URL"]) ? GetMessage("V_NOTIFY_MESSAGE_OUT_HREF" . $gender, array("#VOTE_TITLE#" => $arVote["TITLE"], "#VOTE_URL#" => $arVote["TOTAL_URL"])) : GetMessage("V_NOTIFY_MESSAGE" . $gender, array("#VOTE_TITLE#" => $arVote["TITLE"]))); CIMNotify::Add($arMessageFields); } else { if ($arVote["NOTIFY"] == "Y") { // send e-mail $db_user = CUser::GetById($arVote["AUTHOR_ID"]); if ($db_user && ($arUser = $db_user->Fetch()) && !empty($arUser["EMAIL"])) { $arEventFields = array("EMAIL_TO" => $arUser["EMAIL"], "VOTE_STATISTIC" => "", "ID" => $EVENT_ID, "TIME" => GetTime(time(), "FULL"), "VOTE_TITLE" => $arVote["TITLE"], "VOTE_DESCRIPTION" => $arVote["DESCRIPTION"], "VOTE_ID" => $arVote["ID"], "VOTE_COUNTER" => $arVote["COUNTER"], "URL" => $arVote["URL"], "CHANNEL" => $arChannel["TITLE"], "CHANNEL_ID" => $arChannel["ID"], "VOTER_ID" => $_SESSION["VOTE_USER_ID"], "USER_NAME" => $USER->GetFullName(), "LOGIN" => $USER->GetLogin(), "USER_ID" => $USER->GetID(), "STAT_GUEST_ID" => intval($_SESSION["SESS_GUEST_ID"]), "SESSION_ID" => intval($_SESSION["SESS_SESSION_ID"]), "IP" => $_SERVER["REMOTE_ADDR"]); $arEventFields["USER_NAME"] = !!$arEventFields["USER_NAME"] ? $arEventFields["USER_NAME"] : $arEventFields["LOGIN"]; // VOTE_STATISTIC $text = array(); foreach ($arSqlAnswersID as $aID => $qID) { $text[$qID] = is_array($text[$qID]) ? $text[$qID] : array(); if ($arQuestions[$qID]["ANSWERS"][$aID]["FIELD_TYPE"] == 4 || $arQuestions[$qID]["ANSWERS"][$aID]["FIELD_TYPE"] == 5) { if (!empty($arSqlAnswers[$qID][$aID]["MESSAGE"])) { $text[$qID][] = $arSqlAnswers[$qID][$aID]["MESSAGE"]; } } else { $text[$qID][] = $arQuestions[$qID]["ANSWERS"][$aID]["MESSAGE"]; } } foreach ($text as $qID => $txt) { $text[$qID] = " - " . $arQuestions[$qID]["QUESTION"] . "\n - " . implode(", ", $text[$qID]); } $arEventFields["VOTE_STATISTIC"] = "\n" . implode("\n\n", $text); $arrSites = CVoteChannel::GetSiteArray($arChannel["ID"]); CEvent::Send("VOTE_FOR", $arrSites, $arEventFields, "N"); } } } } } /***************** Event onAfterVoting *****************************/ foreach (GetModuleEvents("vote", "onAfterVoting", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($VOTE_ID, $EVENT_ID)); } /***************** /Event ******************************************/ } } else { $GLOBALS["USER_VOTE_EMPTY"] = "Y"; $aMsg[] = array("id" => "VOTE_ID", "text" => GetMessage("USER_VOTE_EMPTY")); } } else { $aMsg[] = array("id" => "VOTE_ID", "text" => $USER_GROUP_PERMISSION >= 2 ? GetMessage("VOTE_ALREADY_VOTE") : GetMessage("VOTE_ACCESS_DENIED")); } } if (!empty($aMsg)) { $e = new CAdminException($aMsg, "CVote::KeepVoting"); $GLOBALS["APPLICATION"]->ThrowException($e); $GLOBALS["VOTING_OK"] = "N"; return false; } return true; }
function ConfirmEvent($ID, $SITE_ID = SITE_ID) { static $SITE_DIR_CACHE = array(); CTimeZone::Disable(); $subscr = CSubscription::GetByID($ID); CTimeZone::Enable(); if ($subscr_arr = $subscr->Fetch()) { if (!array_key_exists($SITE_ID, $SITE_DIR_CACHE)) { $db_lang = CLang::GetByID($SITE_ID); if ($ar_lang = $db_lang->Fetch()) { $SITE_DIR_CACHE[$SITE_ID] = $ar_lang["DIR"]; } else { $SITE_DIR_CACHE[$SITE_ID] = LANG_DIR; } } $subscr_arr["USER_NAME"] = ""; $subscr_arr["USER_LAST_NAME"] = ""; if (intval($subscr_arr["USER_ID"]) > 0) { $rsUser = CUser::GetByID($subscr_arr["USER_ID"]); if ($arUser = $rsUser->Fetch()) { $subscr_arr["USER_NAME"] = $arUser["NAME"]; $subscr_arr["USER_LAST_NAME"] = $arUser["LAST_NAME"]; } } $arFields = array("ID" => $subscr_arr["ID"], "EMAIL" => $subscr_arr["EMAIL"], "CONFIRM_CODE" => $subscr_arr["CONFIRM_CODE"], "USER_NAME" => $subscr_arr["USER_NAME"] . " " . $subscr_arr["USER_LAST_NAME"], "DATE_SUBSCR" => $subscr_arr["DATE_UPDATE"] != "" ? $subscr_arr["DATE_UPDATE"] : $subscr_arr["DATE_INSERT"], "SUBSCR_SECTION" => str_replace(array("#SITE_DIR#", "#LANG_DIR#"), array($SITE_DIR_CACHE[$SITE_ID], $SITE_DIR_CACHE[$SITE_ID]), COption::GetOptionString("subscribe", "subscribe_section"))); CEvent::Send("SUBSCRIBE_CONFIRM", $SITE_ID, $arFields); return true; } return false; }
function Set($arFields, $BANNER_ID, $CHECK_RIGHTS = "Y") { $err_mess = CAdvBanner_all::err_mess() . "<br>Function: Set<br>Line: "; global $DB, $USER; $BANNER_ID = intval($BANNER_ID); if (CAdvBanner::CheckFields($arFields, $BANNER_ID, $CHECK_RIGHTS)) { if ($CHECK_RIGHTS == "Y") { $USER_ID = intval($USER->GetID()); $isAdmin = CAdvContract::IsAdmin(); $isManager = CAdvContract::IsManager(); $CHECK_CONTRACT_RIGHTS = "Y"; if ($isManager) { $CHECK_CONTRACT_RIGHTS = "N"; } } else { $USER_ID = 0; $isAdmin = $isManager = true; $CHECK_CONTRACT_RIGHTS = "N"; } $arFields_i = array(); $arrKeys = array_keys($arFields); $arBanner = array(); if ($BANNER_ID > 0) { $rsBanner = CAdvBanner::GetByID($BANNER_ID, $CHECK_RIGHTS); $arBanner = $rsBanner->Fetch(); if (!in_array("CONTRACT_ID", $arrKeys)) { $CONTRACT_ID = intval($arBanner["CONTRACT_ID"]); } else { $CONTRACT_ID = intval($arFields["CONTRACT_ID"]); } } else { $CONTRACT_ID = intval($arFields["CONTRACT_ID"]); } $modify_status = "N"; if ($CONTRACT_ID > 0) { if ($BANNER_ID <= 0 && (!$isAdmin || !$isManager || in_array("STATUS_SID", $arrKeys))) { $modify_status = "Y"; } $rsContract = CAdvContract::GetByID($CONTRACT_ID, $CHECK_CONTRACT_RIGHTS); $arContract = $rsContract->Fetch(); if (($isAdmin || $isManager) && in_array("RESET_VISITOR_COUNT", $arrKeys) && $arFields["RESET_VISITOR_COUNT"]) { $arFields_i["VISITOR_COUNT"] = 0; // если баннер уже показывался то if (intval($arBanner["VISITOR_COUNT"]) > 0) { // уменьшим счетчик у контракта $value = intval($arContract["VISITOR_COUNT"]) - intval($arBanner["VISITOR_COUNT"]); $value = $value < 0 ? 0 : $value; CAdvContract::Set(array("VISITOR_COUNT" => $value), $arContract["ID"], $CHECK_CONTRACT_RIGHTS); } } if (($isAdmin || $isManager) && in_array("RESET_SHOW_COUNT", $arrKeys) && $arFields["RESET_SHOW_COUNT"]) { $arFields_i["SHOW_COUNT"] = 0; // если баннер уже показывался то if (intval($arBanner["SHOW_COUNT"]) > 0) { // уменьшим счетчик у контракта $value = intval($arContract["SHOW_COUNT"]) - intval($arBanner["SHOW_COUNT"]); $value = $value < 0 ? 0 : $value; CAdvContract::Set(array("SHOW_COUNT" => $value), $arContract["ID"], $CHECK_CONTRACT_RIGHTS); } } if (($isAdmin || $isManager) && in_array("FIX_CLICK", $arrKeys) && ($arFields["FIX_CLICK"] == "Y" || $arFields["FIX_CLICK"] == "N")) { $arFields_i["FIX_CLICK"] = "'" . $arFields["FIX_CLICK"] . "'"; } if (($isAdmin || $isManager) && in_array("FIX_SHOW", $arrKeys) && ($arFields["FIX_SHOW"] == "Y" || $arFields["FIX_SHOW"] == "N")) { $arFields_i["FIX_SHOW"] = "'" . $arFields["FIX_SHOW"] . "'"; } if (($isAdmin || $isManager) && in_array("FLYUNIFORM", $arrKeys) && ($arFields["FLYUNIFORM"] == "Y" || $arFields["FLYUNIFORM"] == "N")) { $arFields_i["FLYUNIFORM"] = "'" . $arFields["FLYUNIFORM"] . "'"; } if (($isAdmin || $isManager) && in_array("RESET_CLICK_COUNT", $arrKeys) && $arFields["RESET_CLICK_COUNT"]) { $arFields_i["CLICK_COUNT"] = 0; // если на баннер уже кликали то if (intval($arBanner["CLICK_COUNT"]) > 0) { // уменьшим счетчик у контракта $value = intval($arContract["CLICK_COUNT"]) - intval($arBanner["CLICK_COUNT"]); $value = $value < 0 ? 0 : $value; CAdvContract::Set(array("CLICK_COUNT" => $value), $arContract["ID"], $CHECK_CONTRACT_RIGHTS); } } if (($isAdmin || $isManager) && in_array("KEYWORDS", $arrKeys)) { $arFields_i["KEYWORDS"] = "'" . $DB->ForSql($arFields["KEYWORDS"], 2000) . "'"; } if (in_array("CONTRACT_ID", $arrKeys) && intval($arFields["CONTRACT_ID"]) > 0) { $arFields_i["CONTRACT_ID"] = intval($arFields["CONTRACT_ID"]); } if (in_array("TYPE_SID", $arrKeys) && strlen($arFields["TYPE_SID"]) > 0) { $arFields_i["TYPE_SID"] = "'" . $DB->ForSql($arFields["TYPE_SID"], 255) . "'"; if ("'" . $DB->ForSql($arBanner["TYPE_SID"], 255) . "'" != $arFields_i["TYPE_SID"]) { $modify_status = "Y"; } } if (in_array("NAME", $arrKeys)) { $arFields_i["NAME"] = "'" . $DB->ForSql($arFields["NAME"], 255) . "'"; } if (in_array("GROUP_SID", $arrKeys)) { $arFields_i["GROUP_SID"] = "'" . $DB->ForSql($arFields["GROUP_SID"], 255) . "'"; } if (in_array("ACTIVE", $arrKeys) && ($arFields["ACTIVE"] == "Y" || $arFields["ACTIVE"] == "N")) { $arFields_i["ACTIVE"] = "'" . $arFields["ACTIVE"] . "'"; } if (in_array("WEIGHT", $arrKeys)) { $arFields_i["WEIGHT"] = intval($arFields["WEIGHT"]); } if (in_array("MAX_VISITOR_COUNT", $arrKeys)) { if (strlen($arFields["MAX_VISITOR_COUNT"]) > 0) { $arFields_i["MAX_VISITOR_COUNT"] = intval($arFields["MAX_VISITOR_COUNT"]); } else { $arFields_i["MAX_VISITOR_COUNT"] = "null"; } } if (in_array("SHOWS_FOR_VISITOR", $arrKeys)) { if (strlen($arFields["SHOWS_FOR_VISITOR"]) > 0) { $arFields_i["SHOWS_FOR_VISITOR"] = intval($arFields["SHOWS_FOR_VISITOR"]); } else { $arFields_i["SHOWS_FOR_VISITOR"] = "null"; } } if (in_array("MAX_SHOW_COUNT", $arrKeys)) { if (strlen($arFields["MAX_SHOW_COUNT"]) > 0) { $arFields_i["MAX_SHOW_COUNT"] = intval($arFields["MAX_SHOW_COUNT"]); } else { $arFields_i["MAX_SHOW_COUNT"] = "null"; } } if (in_array("MAX_CLICK_COUNT", $arrKeys)) { if (strlen($arFields["MAX_CLICK_COUNT"]) > 0) { $arFields_i["MAX_CLICK_COUNT"] = intval($arFields["MAX_CLICK_COUNT"]); } else { $arFields_i["MAX_CLICK_COUNT"] = "null"; } } if (in_array("DATE_SHOW_FROM", $arrKeys)) { if (strlen($arFields["DATE_SHOW_FROM"]) > 0) { $arFields_i["DATE_SHOW_FROM"] = $DB->CharToDateFunction($arFields["DATE_SHOW_FROM"]); } else { $arFields_i["DATE_SHOW_FROM"] = "null"; } } if (in_array("DATE_SHOW_TO", $arrKeys)) { if (strlen($arFields["DATE_SHOW_TO"]) > 0) { $time = ""; if (defined("FORMAT_DATE") && strlen($arFields["DATE_SHOW_TO"]) <= strlen(FORMAT_DATE)) { $time = " 23:59:59"; } $arFields_i["DATE_SHOW_TO"] = $DB->CharToDateFunction($arFields["DATE_SHOW_TO"] . $time); } else { $arFields_i["DATE_SHOW_TO"] = "null"; } } if (in_array("DATE_SHOW_FIRST", $arrKeys)) { $arFields_i["DATE_SHOW_FIRST"] = "null"; } if (in_array("arrIMAGE_ID", $arrKeys) && is_array($arFields["arrIMAGE_ID"])) { $arIMAGE = $arFields["arrIMAGE_ID"]; $arIMAGE["MODULE_ID"] = "advertising"; if ($BANNER_ID > 0) { $z = $DB->Query("SELECT IMAGE_ID FROM b_adv_banner WHERE ID='{$BANNER_ID}'", false, $err_mess . __LINE__); $zr = $z->Fetch(); $arIMAGE["old_file"] = $zr["IMAGE_ID"]; } if (strlen($arIMAGE["name"]) > 0 || strlen($arIMAGE["del"]) > 0) { $subdir = COption::GetOptionString("advertising", "UPLOAD_SUBDIR"); $fid = CFile::SaveFile($arIMAGE, $subdir); if (intval($fid) > 0) { $arFields_i["IMAGE_ID"] = intval($fid); } else { $arFields_i["IMAGE_ID"] = "null"; } if (intval($arBanner["IMAGE_ID"]) != intval($arFields_i["IMAGE_ID"])) { $modify_status = "Y"; } } } if (in_array("IMAGE_ALT", $arrKeys)) { $arFields_i["IMAGE_ALT"] = "'" . $DB->ForSql($arFields["IMAGE_ALT"], 255) . "'"; if ("'" . $DB->ForSql($arBanner["IMAGE_ALT"], 255) . "'" != $arFields_i["IMAGE_ALT"]) { $modify_status = "Y"; } } if (in_array("URL", $arrKeys)) { $arFields_i["URL"] = "'" . $DB->ForSql($arFields["URL"], 2000) . "'"; if ("'" . $DB->ForSql($arBanner["URL"], 2000) . "'" != $arFields_i["URL"]) { $modify_status = "Y"; } } if (in_array("URL_TARGET", $arrKeys)) { $arFields_i["URL_TARGET"] = "'" . $DB->ForSql($arFields["URL_TARGET"], 255) . "'"; if ("'" . $DB->ForSql($arBanner["URL_TARGET"], 255) . "'" != $arFields_i["URL_TARGET"]) { $modify_status = "Y"; } } if (in_array("NO_URL_IN_FLASH", $arrKeys) && ($arFields["NO_URL_IN_FLASH"] == "Y" || $arFields["NO_URL_IN_FLASH"] == "N")) { $arFields_i["NO_URL_IN_FLASH"] = "'" . $arFields["NO_URL_IN_FLASH"] . "'"; if ($arBanner["NO_URL_IN_FLASH"] != $arFields_i["NO_URL_IN_FLASH"]) { $modify_status = "Y"; } } if (in_array("CODE", $arrKeys)) { $arFields_i["CODE"] = $arFields["CODE"]; if ($arBanner["CODE"] != $arFields_i["CODE"]) { $modify_status = "Y"; } } if (in_array("FLASH_JS", $arrKeys) && ($arFields["FLASH_JS"] == "Y" || $arFields["FLASH_JS"] == "N")) { $arFields_i["FLASH_JS"] = "'" . $arFields["FLASH_JS"] . "'"; if ("'" . $arBanner["FLASH_JS"] . "'" != $arFields_i["FLASH_JS"]) { $modify_status = "Y"; } } if (in_array("FLASH_VER", $arrKeys)) { $arFields_i["FLASH_VER"] = "'" . $DB->ForSQL($arFields["FLASH_VER"], 20) . "'"; if ("'" . $DB->ForSQL($arBanner["FLASH_VER"], 20) . "'" != $arFields_i["FLASH_VER"]) { $modify_status = "Y"; } } if (in_array("arrFlashIMAGE_ID", $arrKeys) && is_array($arFields["arrFlashIMAGE_ID"])) { $arrFlashIMAGE = $arFields["arrFlashIMAGE_ID"]; $arrFlashIMAGE["MODULE_ID"] = "advertising"; if ($BANNER_ID > 0) { $z = $DB->Query("SELECT FLASH_IMAGE FROM b_adv_banner WHERE ID='{$BANNER_ID}'", false, $err_mess . __LINE__); if ($zr = $z->Fetch()) { $arrFlashIMAGE["old_file"] = $zr["FLASH_IMAGE"]; } } if (strlen($arrFlashIMAGE["name"]) > 0 || strlen($arrFlashIMAGE["del"]) > 0) { $subdir = COption::GetOptionString("advertising", "UPLOAD_SUBDIR"); $fid = CFile::SaveFile($arrFlashIMAGE, $subdir); if (intval($fid) > 0) { $arFields_i["FLASH_IMAGE"] = intval($fid); } else { $arFields_i["FLASH_IMAGE"] = "null"; } if (intval($arBanner["FLASH_IMAGE"]) != intval($arFields_i["FLASH_IMAGE"])) { $modify_status = "Y"; } } } if (in_array("AD_TYPE", $arrKeys)) { $arFields_i["AD_TYPE"] = "'" . $DB->ForSql($arFields["AD_TYPE"], 20) . "'"; if ("'" . $DB->ForSql($arBanner["AD_TYPE"], 20) . "'" != $arFields_i["AD_TYPE"]) { $modify_status = "Y"; } } if (in_array("FLASH_TRANSPARENT", $arrKeys)) { $arFields_i["FLASH_TRANSPARENT"] = "'" . $DB->ForSql($arFields["FLASH_TRANSPARENT"], 11) . "'"; if ("'" . $DB->ForSql($arBanner["FLASH_TRANSPARENT"], 11) . "'" != $arFields_i["FLASH_TRANSPARENT"]) { $modify_status = "Y"; } } if (in_array("CODE_TYPE", $arrKeys)) { $arFields_i["CODE_TYPE"] = $arFields["CODE_TYPE"] == "text" ? "'text'" : "'html'"; $value = $arBanner["CODE_TYPE"] == "text" ? "'text'" : "'html'"; if ($value != $arFields_i["CODE_TYPE"]) { $modify_status = "Y"; } } if (in_array("STAT_EVENT_1", $arrKeys)) { $arFields_i["STAT_EVENT_1"] = "'" . $DB->ForSql($arFields["STAT_EVENT_1"], 255) . "'"; } if (in_array("STAT_EVENT_2", $arrKeys)) { $arFields_i["STAT_EVENT_2"] = "'" . $DB->ForSql($arFields["STAT_EVENT_2"], 255) . "'"; } if (in_array("STAT_EVENT_3", $arrKeys)) { $arFields_i["STAT_EVENT_3"] = "'" . $DB->ForSql($arFields["STAT_EVENT_3"], 255) . "'"; } if (in_array("FOR_NEW_GUEST", $arrKeys)) { if ($arFields["FOR_NEW_GUEST"] == "Y" || $arFields["FOR_NEW_GUEST"] == "N") { $arFields_i["FOR_NEW_GUEST"] = "'" . $arFields["FOR_NEW_GUEST"] . "'"; } elseif ($arFields["FOR_NEW_GUEST"] == "NOT_REF" || $arFields["FOR_NEW_GUEST"] == "ALL" || strlen($arFields["FOR_NEW_GUEST"]) <= 0) { $arFields_i["FOR_NEW_GUEST"] = "null"; } } if (in_array("COMMENTS", $arrKeys)) { $arFields_i["COMMENTS"] = "'" . $DB->ForSql($arFields["COMMENTS"], 2000) . "'"; } if (($isAdmin || $isManager) && in_array("STATUS_COMMENTS", $arrKeys)) { $arFields_i["STATUS_COMMENTS"] = "'" . $DB->ForSql($arFields["STATUS_COMMENTS"], 2000) . "'"; } $email_notify = "N"; if ($modify_status == "Y" || in_array("STATUS_SID", $arrKeys) && ($isAdmin || $isManager)) { $new_status = $isAdmin || $isManager ? $arFields["STATUS_SID"] : $arContract["DEFAULT_STATUS_SID"]; $arFields_i["STATUS_SID"] = "'" . $DB->ForSql($new_status, 255) . "'"; // если статус изменился то if ("'" . $DB->ForSql($arBanner["STATUS_SID"], 255) . "'" != $arFields_i["STATUS_SID"]) { $email_notify = "Y"; } } if (in_array("arrSITE", $arrKeys)) { $arFields_i["FIRST_SITE_ID"] = "''"; if (is_array($arFields["arrSITE"])) { $arrSITE = array_unique($arFields["arrSITE"]); reset($arrSITE); list(, $site_id) = each($arrSITE); $arFields_i["FIRST_SITE_ID"] = "'" . $DB->ForSql($site_id, 2) . "'"; } } if (in_array("SHOW_USER_GROUP", $arrKeys)) { if ($arFields["SHOW_USER_GROUP"] == "Y" && (in_array("arrUSERGROUP", $arrKeys) && count($arFields["arrUSERGROUP"]) > 0)) { $SHOW_USER_GROUP = "Y"; } else { $SHOW_USER_GROUP = "N"; } $arFields_i["SHOW_USER_GROUP"] = "'" . $DB->ForSql($SHOW_USER_GROUP, 1) . "'"; } if (in_array("STAT_TYPE", $arrKeys)) { if ($arFields["STAT_TYPE"] === "CITY") { $arFields_i["STAT_TYPE"] = "'CITY'"; } elseif ($arFields["STAT_TYPE"] === "REGION") { $arFields_i["STAT_TYPE"] = "'REGION'"; } else { $arFields_i["STAT_TYPE"] = "'COUNTRY'"; } } if (intval($BANNER_ID) > 0) { if (in_array("DATE_MODIFY", $arrKeys) && CheckDateTime($arFields["DATE_MODIFY"])) { $arFields_i["DATE_MODIFY"] = $DB->CharToDateFunction($arFields["DATE_MODIFY"]); } else { $arFields_i["DATE_MODIFY"] = $DB->GetNowFunction(); } if (in_array("MODIFIED_BY", $arrKeys)) { $arFields_i["MODIFIED_BY"] = intval($arFields["MODIFIED_BY"]); } else { $arFields_i["MODIFIED_BY"] = $USER_ID; } CAdvBanner::Update($arFields_i, $BANNER_ID); } else { if (in_array("DATE_CREATE", $arrKeys) && CheckDateTime($arFields["DATE_CREATE"])) { $arFields_i["DATE_CREATE"] = $DB->CharToDateFunction($arFields["DATE_CREATE"]); } else { $arFields_i["DATE_CREATE"] = $DB->GetNowFunction(); } if (in_array("CREATED_BY", $arrKeys)) { $arFields_i["CREATED_BY"] = intval($arFields["CREATED_BY"]); } else { $arFields_i["CREATED_BY"] = $USER_ID; } if (in_array("DATE_MODIFY", $arrKeys) && CheckDateTime($arFields["DATE_MODIFY"])) { $arFields_i["DATE_MODIFY"] = $DB->CharToDateFunction($arFields["DATE_MODIFY"]); } else { $arFields_i["DATE_MODIFY"] = $DB->GetNowFunction(); } if (in_array("MODIFIED_BY", $arrKeys)) { $arFields_i["MODIFIED_BY"] = intval($arFields["MODIFIED_BY"]); } else { $arFields_i["MODIFIED_BY"] = $USER_ID; } $BANNER_ID = CAdvBanner::Add($arFields_i); } $BANNER_ID = intval($BANNER_ID); if ($BANNER_ID > 0) { if (in_array("arrSITE", $arrKeys)) { CAdvBanner::DeleteSiteLink($BANNER_ID); if (is_array($arFields["arrSITE"])) { $arrSITE = array_unique($arFields["arrSITE"]); reset($arrSITE); foreach ($arrSITE as $sid) { if (strlen(trim($sid)) > 0) { $strSql = "INSERT INTO b_adv_banner_2_site (BANNER_ID, SITE_ID) VALUES ({$BANNER_ID}, '" . $DB->ForSql($sid, 2) . "')"; $DB->Query($strSql, false, $err_mess . __LINE__); } } } } if (in_array("arrSHOW_PAGE", $arrKeys)) { CAdvBanner::DeletePageLink($BANNER_ID, " and SHOW_ON_PAGE='Y'"); if (is_array($arFields["arrSHOW_PAGE"])) { $arrPage = array_unique($arFields["arrSHOW_PAGE"]); foreach ($arrPage as $page) { $page = trim($page); if (strlen($page) > 0) { $arFields_i = array("BANNER_ID" => $BANNER_ID, "PAGE" => "'" . $DB->ForSql($page, 255) . "'", "SHOW_ON_PAGE" => "'Y'"); $DB->Insert("b_adv_banner_2_page", $arFields_i, $err_mess . __LINE__); } } } } if (in_array("arrNOT_SHOW_PAGE", $arrKeys)) { CAdvBanner::DeletePageLink($BANNER_ID, " and SHOW_ON_PAGE='N'"); if (is_array($arFields["arrNOT_SHOW_PAGE"])) { $arrPage = array_unique($arFields["arrNOT_SHOW_PAGE"]); foreach ($arrPage as $page) { $page = trim($page); if (strlen($page) > 0) { $arFields_i = array("BANNER_ID" => $BANNER_ID, "PAGE" => "'" . $DB->ForSql($page, 255) . "'", "SHOW_ON_PAGE" => "'N'"); $DB->Insert("b_adv_banner_2_page", $arFields_i, $err_mess . __LINE__); } } } } if (in_array("arrCOUNTRY", $arrKeys)) { $iCounter = 0; CAdvBanner::DeleteCountryLink($BANNER_ID); if (is_array($arFields["arrCOUNTRY"])) { $arrCOUNTRY = array(); foreach ($arFields["arrCOUNTRY"] as $COUNTRY) { if (is_array($COUNTRY)) { $COUNTRY["COUNTRY_ID"] = trim($COUNTRY["COUNTRY_ID"]); if (strlen($COUNTRY["COUNTRY_ID"]) <= 0) { continue; } $key = $COUNTRY["COUNTRY_ID"] . "|" . $COUNTRY["REGION"] . "|" . $COUNTRY["CITY_ID"]; $strInsert = "'" . $DB->ForSQL($COUNTRY["COUNTRY_ID"], 2) . "', " . (strlen($COUNTRY["REGION"]) <= 0 ? "null" : "'" . $DB->ForSQL($COUNTRY["REGION"], 200) . "'") . ", " . (intval($COUNTRY["CITY_ID"]) <= 0 ? "null" : intval($COUNTRY["CITY_ID"])) . ""; } else { $COUNTRY = trim($COUNTRY); if (strlen($COUNTRY) <= 0) { continue; } $key = $COUNTRY . "||"; $strInsert = "'" . $DB->ForSQL($COUNTRY, 2) . "', null, null"; } $arrCOUNTRY[$key] = $strInsert; } foreach ($arrCOUNTRY as $strInsert) { $strSql = "INSERT INTO b_adv_banner_2_country (BANNER_ID, COUNTRY_ID, REGION, CITY_ID) VALUES ({$BANNER_ID}, " . $strInsert . ")"; $DB->Query($strSql, false, $err_mess . __LINE__); $iCounter++; } } $DB->Query("UPDATE b_adv_banner SET STAT_COUNT = " . $iCounter . " WHERE ID = " . $BANNER_ID); } if (in_array("arrSTAT_ADV", $arrKeys)) { CAdvBanner::DeleteStatAdvLink($BANNER_ID); if (is_array($arFields["arrSTAT_ADV"])) { $arrSTAT_ADV = array_unique($arFields["arrSTAT_ADV"]); foreach ($arrSTAT_ADV as $aid) { if (intval($aid) > 0) { $strSql = "INSERT INTO b_adv_banner_2_stat_adv (BANNER_ID, STAT_ADV_ID) VALUES ({$BANNER_ID}, '" . intval($aid) . "')"; $DB->Query($strSql, false, $err_mess . __LINE__); } } } } if (in_array("arrWEEKDAY", $arrKeys)) { CAdvBanner::DeleteWeekdayLink($BANNER_ID); if (is_array($arFields["arrWEEKDAY"])) { $arrWeekday = array_keys($arFields["arrWEEKDAY"]); $arrWeekday = array_unique($arrWeekday); if (is_array($arrWeekday) && count($arrWeekday) > 0) { foreach ($arrWeekday as $weekday) { if (is_array($arFields["arrWEEKDAY"][$weekday]) && count($arFields["arrWEEKDAY"][$weekday]) > 0) { $arrHour = $arFields["arrWEEKDAY"][$weekday]; array_walk($arrHour, create_function("&\$item", "\$item=intval(\$item);")); $arrHour = array_unique($arrHour); foreach ($arrHour as $hour) { if ($hour >= 0 && $hour <= 23) { $strSql = "INSERT INTO b_adv_banner_2_weekday (BANNER_ID, C_WEEKDAY, C_HOUR) VALUES ({$BANNER_ID}, '" . $DB->ForSql($weekday, 10) . "', {$hour})"; $DB->Query($strSql, false, $err_mess . __LINE__); } } } } } } } if (in_array("arrUSERGROUP", $arrKeys)) { CAdvBanner::DeleteGroupLink($BANNER_ID); if (is_array($arFields["arrUSERGROUP"])) { $arrGROUPS = array_unique($arFields["arrUSERGROUP"]); foreach ($arrGROUPS as $uid) { if (intval($uid) > 0) { $strSql = "INSERT INTO b_adv_banner_2_group (BANNER_ID, GROUP_ID) VALUES ({$BANNER_ID}, " . IntVal($uid) . ")"; $DB->Query($strSql, false, $err_mess . __LINE__); } } } } // если необходимо оповестить $SEND_EMAIL = $arFields["SEND_EMAIL"] == "N" ? "N" : "Y"; if ($email_notify == "Y" && (!$isAdmin || !$isManager || $SEND_EMAIL == "Y")) { // получаем данные по баннеру CTimeZone::Disable(); $rsBanner = CAdvBanner::GetByID($BANNER_ID, $CHECK_RIGHTS); CTimeZone::Enable(); if ($arBanner = $rsBanner->Fetch()) { $BCC = array(); $OWNER_EMAIL = array(); $ADD_EMAIL = array(); $STAT_EMAIL = array(); $EDIT_EMAIL = array(); $MANAGER_EMAIL = CAdvContract::GetManagerEmails(); $ADMIN_EMAIL = CAdvContract::GetAdminEmails(); $ADMIN_EMAIL = array_merge($MANAGER_EMAIL, $ADMIN_EMAIL); $ADMIN_EMAIL = array_unique($ADMIN_EMAIL); CAdvContract::GetOwnerEmails($CONTRACT_ID, $OWNER_EMAIL, $ADD_EMAIL, $STAT_EMAIL, $EDIT_EMAIL); $CREATED_BY = $MODIFIED_BY = 0; if (intval($arBanner["CREATED_BY"]) > 0) { $rsUser = CUser::GetByID($arBanner["CREATED_BY"]); if ($arUser = $rsUser->Fetch()) { $CREATED_BY = "[" . $arUser["ID"] . "] (" . $arUser["LOGIN"] . ") " . $arUser["NAME"] . " " . $arUser["LAST_NAME"]; } } if (intval($arBanner["MODIFIED_BY"]) == intval($arBanner["CREATED_BY"]) && intval($arBanner["CREATED_BY"]) > 0) { $MODIFIED_BY = $CREATED_BY; } elseif (intval($arBanner["MODIFIED_BY"]) > 0) { $rsUser = CUser::GetByID($arBanner["MODIFIED_BY"]); if ($arUser = $rsUser->Fetch()) { $MODIFIED_BY = "[" . $arUser["ID"] . "] (" . $arUser["LOGIN"] . ") " . $arUser["NAME"] . " " . $arUser["LAST_NAME"]; } } $arImage = CFile::GetFileArray($arBanner["IMAGE_ID"]); if ($arImage) { $IMAGE_LINK = CHTTP::URN2URI($arImage["SRC"]); } else { $IMAGE_LINK = ""; } $arImage = CFile::GetFileArray($arBanner["FLASH_IMAGE"]); if ($arImage) { $FLASHIMAGE_LINK = CHTTP::URN2URI($arImage["SRC"]); } else { $FLASHIMAGE_LINK = ""; } $EMAIL_TO = $OWNER_EMAIL; if (count($EMAIL_TO) <= 0) { $EMAIL_TO = $ADMIN_EMAIL; } else { $BCC = $ADMIN_EMAIL; } $arEventFields = array("ID" => $arBanner["ID"], "EMAIL_TO" => implode(",", $EMAIL_TO), "ADMIN_EMAIL" => implode(",", $ADMIN_EMAIL), "ADD_EMAIL" => implode(",", $ADD_EMAIL), "STAT_EMAIL" => implode(",", $STAT_EMAIL), "EDIT_EMAIL" => implode(",", $EDIT_EMAIL), "OWNER_EMAIL" => implode(",", $OWNER_EMAIL), "BCC" => implode(",", $BCC), "CONTRACT_ID" => $CONTRACT_ID, "CONTRACT_NAME" => $arContract["NAME"], "TYPE_SID" => $arBanner["TYPE_SID"], "TYPE_NAME" => $arBanner["TYPE_NAME"], "STATUS" => strlen($arBanner["STATUS_SID"]) > 0 ? GetMessage("AD_STATUS_" . $arBanner["STATUS_SID"]) : "", "STATUS_COMMENTS" => $arBanner["STATUS_COMMENTS"], "NAME" => $arBanner["NAME"], "GROUP_SID" => $arBanner["GROUP_SID"], "INDICATOR" => GetMessage("AD_" . strtoupper($arBanner["LAMP"]) . "_BANNER_STATUS"), "ACTIVE" => $arBanner["ACTIVE"], "MAX_SHOW_COUNT" => $arBanner["MAX_SHOW_COUNT"], "SHOW_COUNT" => $arBanner["SHOW_COUNT"], "MAX_CLICK_COUNT" => $arBanner["MAX_CLICK_COUNT"], "CLICK_COUNT" => $arBanner["CLICK_COUNT"], "DATE_LAST_SHOW" => $arBanner["DATE_LAST_SHOW"], "DATE_LAST_CLICK" => $arBanner["DATE_LAST_CLICK"], "DATE_SHOW_FROM" => $arBanner["DATE_SHOW_FROM"], "DATE_SHOW_TO" => $arBanner["DATE_SHOW_TO"], "IMAGE_LINK" => $IMAGE_LINK, "IMAGE_ALT" => $arBanner["IMAGE_ALT"], "URL" => $arBanner["URL"], "URL_TARGET" => $arBanner["URL_TARGET"], "NO_URL_IN_FLASH" => $arBanner["NO_URL_IN_FLASH"], "CODE" => $arBanner["CODE"], "CODE_TYPE" => $arBanner["CODE_TYPE"], "COMMENTS" => $arBanner["COMMENTS"], "DATE_CREATE" => $arBanner["DATE_CREATE"], "CREATED_BY" => $CREATED_BY, "DATE_MODIFY" => $arBanner["DATE_MODIFY"], "MODIFIED_BY" => $MODIFIED_BY, "AD_TYPE" => $arBanner["AD_TYPE"], "FLASH_TRANSPARENT" => $arBanner["FLASH_TRANSPARENT"], "FLASH_IMAGE_LINK" => $FLASHIMAGE_LINK, "FLASH_JS" => $arBanner["FLASH_JS"], "FLASH_VER" => $arBanner["FLASH_VER"]); $arrSITE = CAdvBanner::GetSiteArray($arBanner["ID"]); CEvent::Send("ADV_BANNER_STATUS_CHANGE", $arrSITE, $arEventFields); } } } } } return $BANNER_ID; }
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($userGroupID, $mailTemplate = "SONET_INVITE_GROUP") { $userGroupID = IntVal($userGroupID); if ($userGroupID <= 0) { return false; } $dbRelation = CSocNetUserToGroup::GetList(array(), array("ID" => $userGroupID), false, false, array("ID", "USER_ID", "GROUP_ID", "ROLE", "DATE_CREATE", "MESSAGE", "INITIATED_BY_TYPE", "INITIATED_BY_USER_ID", "GROUP_NAME", "USER_NAME", "USER_LAST_NAME", "USER_EMAIL", "USER_LID")); $arRelation = $dbRelation->Fetch(); if (!$arRelation) { return false; } if (CModule::IncludeModule("extranet")) { $arUserGroup = CUser::GetUserGroup($arRelation["USER_ID"]); } $rsGroupSite = CSocNetGroup::GetSite($arRelation["GROUP_ID"]); while ($arGroupSite = $rsGroupSite->Fetch()) { if (IsModuleInstalled("extranet")) { if (CExtranet::IsExtranetSite($arGroupSite["LID"]) && in_array(CExtranet::GetExtranetUserGroupID(), $arUserGroup) || !CExtranet::IsExtranetSite($arGroupSite["LID"]) && !in_array(CExtranet::GetExtranetUserGroupID(), $arUserGroup)) { $siteID = $arGroupSite["LID"]; break; } else { continue; } } else { $siteID = $arGroupSite["LID"]; break; } } if ($siteID == false || StrLen($siteID) <= 0) { return false; } $requestsPagePath = str_replace("#USER_ID#", $arRelation["USER_ID"], COption::GetOptionString("socialnetwork", "user_request_page", IsModuleInstalled("intranet") ? "/company/personal/user/#USER_ID#/requests/" : "/club/user/#USER_ID#/requests/", $siteID)); $arUserInitiatedForEmail = array("NAME" => "", "LAST_NAME" => ""); if (intval($arRelation["INITIATED_BY_USER_ID"]) > 0) { $dbUserInitiated = CUser::GetList($by = "id", $order = "desc", array("ID" => $arRelation["INITIATED_BY_USER_ID"])); if ($arUserInitiated = $dbUserInitiated->Fetch()) { $arUserInitiatedForEmail = array("NAME" => $arUserInitiated["NAME"], "LAST_NAME" => $arUserInitiated["LAST_NAME"]); } } $arFields = array("RELATION_ID" => $userGroupID, "URL" => $requestsPagePath, "GROUP_ID" => $arRelation["GROUP_ID"], "USER_ID" => $arRelation["USER_ID"], "GROUP_NAME" => $arRelation["GROUP_NAME"], "USER_NAME" => $arRelation["USER_NAME"], "USER_LAST_NAME" => $arRelation["USER_LAST_NAME"], "USER_EMAIL" => $arRelation["USER_EMAIL"], "INITIATED_USER_NAME" => $arUserInitiatedForEmail["NAME"], "INITIATED_USER_LAST_NAME" => $arUserInitiatedForEmail["LAST_NAME"], "MESSAGE" => $arRelation["MESSAGE"]); $event = new CEvent(); $event->Send($mailTemplate, $siteID, $arFields, "N"); return true; }