/**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     @set_time_limit(0);
     @ignore_user_abort(true);
     define('CHK_EVENT', true);
     $agentManager = new \CAgent();
     $agentManager->CheckAgents();
     define('BX_CRONTAB_SUPPORT', true);
     define('BX_CRONTAB', true);
     $eventManager = new \CEvent();
     $eventManager->CheckEvents();
 }
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);
    }
}
Example #3
0
function registerUser($userInfo)
{
    $errors = array();
    $result = '';
    if (empty($userInfo['name'])) {
        $errors[] = 'Вы не ввели имя';
    }
    if (empty($userInfo['email'])) {
        $errors[] = 'Вы не ввели email';
    }
    if (empty($userInfo['phone'])) {
        $errors[] = 'Вы не ввели телефон';
    }
    if (empty($errors)) {
        $user = new CUser();
        $password = make_password(8);
        $arFields = array("NAME" => $userInfo['name'], "EMAIL" => $userInfo['email'], "LOGIN" => $userInfo['email'], "ACTIVE" => "Y", "GROUP_ID" => array(6), "PASSWORD" => $password, "CONFIRM_PASSWORD" => $password, "PERSONAL_PHONE" => $userInfo['phone']);
        $ID = $user->Add($arFields);
        if (intval($ID) > 0) {
            $result = "Вы успешно зарегистрированы.";
            $arEventField = array("NAME" => $userInfo['name'], "EMAIL" => $userInfo['email'], "PASSWORD" => $password);
            CEvent::SendImmediate("NEW_REG", "s1", $arEventField);
            unset($_POST['user']);
            global $USER;
            global $APPLICATION;
            $USER->Authorize($ID);
            LocalRedirect($APPLICATION->GetCurPageParam('', array('user[name]', 'user[email]', 'ELEMENT_CODE', 'code')));
        } else {
            $errors[] = $user->LAST_ERROR;
        }
    }
    return $errors;
}
Example #4
0
 public function __construct($sender, $model, $objectParameter, $status = ViewController::ENTITY_STATUS_AVAILABLE)
 {
     parent::__construct($sender);
     $this->model = $model;
     $this->objectParameter = $objectParameter;
     $this->status = $status;
 }
Example #5
0
 public function __construct($sender, $idObject, $where, $params = array())
 {
     parent::__construct($sender);
     $this->idObject = $idObject;
     $this->where = $where;
     $this->params = $params;
 }
 public function __construct($sender, $model, $objectParameter)
 {
     parent::__construct($sender);
     $this->visualElement = null;
     $this->model = $model;
     $this->objectParameter = $objectParameter;
 }
Example #7
0
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"]);

			}

		}
}
Example #8
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"]);
     }
 }
Example #9
0
/**
* Sub-function to collect events within a period
* @param Date the starting date of the period
* @param Date the ending date of the period
* @param array by-ref an array of links to append new items to
* @param int the length to truncate entries by
* @author Andrew Eddie <*****@*****.**>
*/
function getEventLinks($startPeriod, $endPeriod, &$links, $strMaxLen)
{
    global $AppUI, $event_filter;
    $events = CEvent::getEventsForPeriod($startPeriod, $endPeriod, $event_filter);
    // assemble the links for the events
    foreach ($events as $row) {
        $start = new CDate($row['event_start_date']);
        $end = new CDate($row['event_end_date']);
        $date = $start;
        $date->setTime(0, 0, 0);
        $cwd = explode(',', $GLOBALS['dPconfig']['cal_working_days']);
        for ($i = 0, $x = $end->dateDiff($start); $i <= $x; $i++) {
            // the link
            // optionally do not show events on non-working days
            if ($row['event_cwd'] && in_array($date->getDayOfWeek(), $cwd) || !$row['event_cwd']) {
                $link['href'] = '?m=calendar&a=view&event_id=' . $row['event_id'];
                $link['alt'] = $row['event_description'];
                $link['text'] = dPshowImage(dPfindImage('event' . $row['event_type'] . '.png', 'calendar'), 16, 16) . htmlspecialchars($row['event_title']);
                if ($i == 0) {
                    $link['alt'] .= ' [' . $AppUI->_('START') . ']';
                }
                if ($i == $x) {
                    $link['alt'] .= ' [' . $AppUI->_('END') . ']';
                }
                $links[$date->format(FMT_TIMESTAMP_DATE)][] = $link;
            }
            $date = $date->getNextDay();
        }
    }
}
Example #10
0
    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;
    }
Example #11
0
 /**
  * Constructor
  * @param mixed|null $sender sender of the event
  * @param mixed|null $onAction
  * @param $blbImage
  * @param $objProduct
  * @param int $intSequence
  */
 public function __construct($sender, $onAction, $blbImage, $objProduct, $intSequence = 0)
 {
     $this->onAction = $onAction;
     $this->blbImage = $blbImage;
     $this->objProduct = $objProduct;
     $this->intSequence = $intSequence;
     parent::__construct($sender);
 }
Example #12
0
 /**
  * Constructor.
  * @param mixed $sender sender of the event
  * @param string $code error code
  * @param string $message error message
  * @param string $file error file
  * @param integer $line error line
  */
 public function __construct($sender, $code, $message, $file, $line)
 {
     $this->code = $code;
     $this->message = $message;
     $this->file = $file;
     $this->line = $line;
     parent::__construct($sender);
 }
Example #13
0
 public function __construct($sender, $message, $type, $sticked, $time)
 {
     parent::__construct($sender);
     $this->message = $message;
     $this->type = $type;
     $this->sticked = $sticked;
     $this->time = $time;
 }
Example #14
0
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");
    //получим сообщение
}
Example #15
0
	function CheckEvents()
	{
		if((defined("DisableEventsCheck") && DisableEventsCheck===true) || (defined("FX_CRONTAB_SUPPORT") && FX_CRONTAB_SUPPORT===true && FX_CRONTAB!==true))
			return;

		global $DB;

		return CEvent::ExecuteEvents();
	}
 /**
  * @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());
 }
Example #17
0
	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)')));
     }
 }
Example #19
0
 /**
  * После окончания записи передачи уведомление пользователю
  * 
  * @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;
     }
 }
Example #20
0
/**
 * 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;
}
Example #21
0
 function fieldencode($s)
 {
     if (is_array($s)) {
         $ret_val = '';
         foreach ($s as $v) {
             $ret_val .= ($ret_val != '' ? ', ' : '') . CEvent::fieldencode($v);
         }
     } else {
         $ret_val = str_replace("%", "%2", $s);
         $ret_val = str_replace("&", "%1", $ret_val);
         $ret_val = str_replace("=", "%3", $ret_val);
     }
     return $ret_val;
 }
Example #22
0
 /**
  * Billing by all users at 3-30
  */
 public static function dailyAllUsers()
 {
     global $DB;
     $table = \Hawkart\Megatv\SubscribeTable::getTableName();
     $time_update = "03:30:00";
     $datetime = new \Bitrix\Main\Type\Datetime(date("Y-m-d " . $time_update), 'Y-m-d H:i:s');
     $datetime_next_date = new \Bitrix\Main\Type\Datetime(date('Y-m-d' . $time_update, strtotime('+1 day')), 'Y-m-d H:i:s');
     $datetime_from_db = date("d.m.Y " . $time_update);
     $datetime_to_db = date("d.m.Y " . $time_update, strtotime('+1 day'));
     /**
      * Get all users
      */
     $arUsers = array();
     $arFilter = array("ACTIVE" => "Y");
     $rsUsers = \CUser::GetList($by = "LAST_NAME", $order = "asc", $arFilter);
     while ($arUser = $rsUsers->GetNext()) {
         $arUsers[$arUser["ID"]] = $arUser;
     }
     /**
      * Get all priced subscribe for all users
      */
     $arSubscribeUsers = array();
     $result = \Hawkart\Megatv\SubscribeTable::getList(array('filter' => array("UF_ACTIVE" => 1, ">UF_CHANNEL_ID" => 0, ">UF_CHANNEL.UF_PRICE_H24" => 0, "<=UF_DATETIME_TO" => $datetime), 'select' => array("ID", "PRICE" => "UF_CHANNEL.UF_PRICE_H24", "UF_USER_ID")));
     while ($arSub = $result->fetch()) {
         $arSubscribeUsers[$arSub["UF_USER_ID"]][] = array("ID" => $arSub["ID"], "PRICE" => $arSub["PRICE"]);
     }
     $result = \Hawkart\Megatv\SubscribeTable::getList(array('filter' => array("UF_ACTIVE" => 1, ">UF_SERVICE_ID" => 0, ">UF_SERVICE.UF_PRICE" => 0), 'select' => array("ID", "PRICE" => "UF_SERVICE.UF_PRICE", "UF_USER_ID")));
     while ($arSub = $result->fetch()) {
         $arSubscribeUsers[$arSub["UF_USER_ID"]][] = array("ID" => $arSub["ID"], "PRICE" => $arSub["PRICE"]);
     }
     /**
      * Make transaction for 1 day for all users
      */
     foreach ($arSubscribeUsers as $user_id => $arSubscribes) {
         $daily_price = 0;
         foreach ($arSubscribes as $arSubscribe) {
             $daily_price += $arSubscribe["PRICE"];
         }
         $balance = \CUserEx::getBudget($user_id);
         if ($balance > 0 && $daily_price > 0) {
             \CSaleAccountEx::transaction(-1 * $daily_price, $user_id, "Оплата услуг за " . date('d.m.Y'));
             $strSql = "UPDATE " . $table . " SET UF_DATETIME_TO=curdate() + INTERVAL 1 DAY + INTERVAL 3 HOUR + INTERVAL 30 MINUTE WHERE UF_USER_ID=" . $user_id;
             $res = $DB->Query($strSql, false, $err_mess . __LINE__);
             //Send email to user to add money to budget for 3 days
             if ($balance < $daily_price * 2) {
                 \CEvent::SendImmediate("NOTIFICATION_PAY_AFTER_DAYS", SITE_ID, array("EMAIL_TO" => $arUsers[$user_id]["EMAIL"], "PRICE" => $daily_price * 5));
             }
         }
     }
 }
 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);
     }
 }
Example #24
0
 function ExecuteEvents()
 {
     $err_mess = "<br>Class: CEvent<br>File: " . __FILE__ . "<br>Function: CheckEvents<br>Line: ";
     global $DB, $CACHE_MANAGER;
     if (defined("BX_FORK_AGENTS_AND_EVENTS_FUNCTION")) {
         if (CMain::ForkActions(array("CEvent", "ExecuteEvents"))) {
             return "";
         }
     }
     $uniq = COption::GetOptionString("main", "server_uniq_id", "");
     if (strlen($uniq) <= 0) {
         $uniq = md5(uniqid(rand(), true));
         COption::SetOptionString("main", "server_uniq_id", $uniq);
     }
     $bulk = intval(COption::GetOptionString("main", "mail_event_bulk", 5));
     if ($bulk <= 0) {
         $bulk = 5;
     }
     $strSql = "SELECT 'x' " . "FROM b_event " . "WHERE SUCCESS_EXEC='N' " . "LIMIT 1";
     $db_result_event = $DB->Query($strSql);
     if ($db_result_event->Fetch()) {
         $db_lock = $DB->Query("SELECT GET_LOCK('" . $uniq . "_event', 0) as L");
         $ar_lock = $db_lock->Fetch();
         if ($ar_lock["L"] == "0") {
             return "";
         }
     } else {
         if (CACHED_b_event !== false) {
             $CACHE_MANAGER->Set("events", true);
         }
         return "";
     }
     $strSql = "\n\t\t\tSELECT ID, C_FIELDS, EVENT_NAME, MESSAGE_ID, LID, DATE_FORMAT(DATE_INSERT, '%d.%m.%Y %H:%i:%s') as DATE_INSERT, DUPLICATE\n\t\t\tFROM b_event\n\t\t\tWHERE SUCCESS_EXEC='N'\n\t\t\tORDER BY ID\n\t\t\tLIMIT " . $bulk;
     $rsMails = $DB->Query($strSql);
     while ($arMail = $rsMails->Fetch()) {
         $flag = CEvent::HandleEvent($arMail);
         /*
         '0' - нет шаблонов (не нужно было ничего отправл¤ть)
         'Y' - все отправлены
         'F' - все не смогли быть отправлены
         'P' - частично отправлены
         */
         $strSql = "\n\t\t\t\tUPDATE b_event SET\n\t\t\t\t\tDATE_EXEC = now(),\n\t\t\t\t\tSUCCESS_EXEC = '{$flag}'\n\t\t\t\tWHERE\n\t\t\t\t\tID = " . $arMail["ID"];
         $DB->Query($strSql, false, $err_mess . __LINE__);
     }
     $DB->Query("SELECT RELEASE_LOCK('" . $uniq . "_event')");
 }
 /**
  * @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;
 }
Example #26
0
/**
* Sub-function to collect events within a period
* @param Date the starting date of the period
* @param Date the ending date of the period
* @param array by-ref an array of links to append new items to
* @param int the length to truncate entries by
* @author Andrew Eddie <*****@*****.**>
*/
function getEventLinks($startPeriod, $endPeriod, &$links, $strMaxLen)
{
    global $event_filter;
    $events = CEvent::getEventsForPeriod($startPeriod, $endPeriod, $event_filter);
    // assemble the links for the events
    foreach ($events as $row) {
        $start = new CDate($row['event_start_date']);
        $end = new CDate($row['event_end_date']);
        $date = $start;
        $cwd = explode(",", $GLOBALS["dPconfig"]['cal_working_days']);
        for ($i = 0; $i <= $start->dateDiff($end); $i++) {
            // the link
            // optionally do not show events on non-working days
            if ($row['event_cwd'] && in_array($date->getDayOfWeek(), $cwd) || !$row['event_cwd']) {
                $url = '?m=calendar&a=view&event_id=' . $row['event_id'];
                $link['href'] = '';
                $link['alt'] = $row['event_description'];
                $link['text'] = '<table cellspacing="0" cellpadding="0" border="0"><tr>' . '<td><a href=' . $url . '>' . dPshowImage(dPfindImage('event' . $row['event_type'] . '.png', 'calendar'), 16, 16, '') . '</a></td>' . '<td><a href="' . $url . '" title="' . $row['event_description'] . '"><span class="event">' . $row['event_title'] . '</span></a>' . '</td></tr></table>';
                $links[$date->format(FMT_TIMESTAMP_DATE)][] = $link;
            }
            $date = $date->getNextDay();
        }
    }
}
        // check tasks access
        $result = array();
        foreach ($tasks as $key => $row) {
            $obj->load($row['task_id']);
            $canAccess = $obj->canAccess();
            if (!$canAccess) {
                continue;
            }
            $result[$key] = $row;
        }
        // execute and return
        return $result;
    }
}
// assemble the links for the events
$events = CEvent::getEventsForPeriod($first_time, $last_time, $event_filter, $user_id);
$events2 = array();
$tasks = CTask_ex::getAllTasksForPeriod($first_time, $last_time, $company_id);
$start_hour = w2PgetConfig('cal_day_start');
$end_hour = w2PgetConfig('cal_day_end');
foreach ($events as $row) {
    $start = new w2p_Utilities_Date($row['event_start_date']);
    $end = new w2p_Utilities_Date($row['event_end_date']);
    $events2[$start->format('%H%M%S')][] = $row;
    if ($start_hour > $start->format('%H')) {
        $start_hour = $start->format('%H');
    }
    if ($end_hour < $end->format('%H')) {
        $end_hour = $end->format('%H');
    }
}
Example #28
0
	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;
	}
Example #29
0
 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;
 }
Example #30
0
 public static function notifyMailDomain($type, $sid, $user_id, $cnt = 0)
 {
     $user_id = intval($user_id);
     $cnt = intval($cnt);
     if (!CModule::includeModule('mail')) {
         return '';
     }
     $arAdmin = CUser::getList($by, $order, array('ID' => $user_id, 'GROUPS_ID' => 1, 'ACTIVE' => 'Y'), array('FIELDS' => array('ID', 'EMAIL')))->fetch();
     if (empty($arAdmin)) {
         return '';
     }
     if ($cnt == 0) {
         return 'CIntranetUtils::notifyMailDomain("' . $type . '", "' . $sid . '", ' . $user_id . ', ' . ++$cnt . ');';
     }
     includeModuleLangFile(__FILE__);
     if (isModuleInstalled('bitrix24')) {
         $learnmoreLink = getMessage('INTR_MAIL_DOMAIN_LEARNMOREB24_LINK');
         $supportLink = getMessage('INTR_MAIL_DOMAIN_SUPPORTB24_LINK');
     } else {
         $learnmoreLink = getMessage('INTR_MAIL_DOMAIN_LEARNMORE_LINK');
         $supportLink = getMessage('INTR_MAIL_DOMAIN_SUPPORT_LINK');
     }
     if (in_array($type, array('nocomplete', 'nomailbox'))) {
         $sid = intval($sid);
         $service = \Bitrix\Mail\MailServicesTable::getList(array('filter' => array('=ID' => $sid)))->fetch();
         if (empty($service) || $service['ACTIVE'] != 'Y' || !in_array($service['SERVICE_TYPE'], array('domain', 'crdomain'))) {
             return '';
         }
         if ($service['SERVICE_TYPE'] == 'domain') {
             $result = CMailDomain2::getDomainStatus($service['TOKEN'], $service['SERVER'], $error);
             $stage = empty($result['stage']) ? null : $result['stage'];
         } else {
             $crResponse = CControllerClient::executeEvent('OnMailControllerCheckMemberDomain', array('DOMAIN' => $service['SERVER']));
             $stage = empty($crResponse['result']['stage']) ? null : $crResponse['result']['stage'];
         }
         if ($type == 'nocomplete') {
             if (in_array($stage, array('owner-check', 'mx-check'))) {
                 CEvent::send('INTRANET_MAILDOMAIN_NOCOMPLETE', array($service['SITE_ID']), array('EMAIL_TO' => $arAdmin['EMAIL'], 'LEARNMORE_LINK' => $learnmoreLink, 'SUPPORT_LINK' => $supportLink));
                 if ($cnt == 1) {
                     global $pPERIOD;
                     $pPERIOD = 3600 * 24 * 4;
                     return 'CIntranetUtils::notifyMailDomain("nocomplete", ' . $sid . ', ' . $user_id . ', ' . ++$cnt . ');';
                 }
             }
         } else {
             if ($stage == 'added') {
                 $dbMailboxes = CMailbox::getList(array(), array('ACTIVE' => 'Y', '!USER_ID' => 0, 'SERVICE_ID' => $sid));
                 $adminMailbox = false;
                 $userMailboxes = false;
                 while ($arMailbox = $dbMailboxes->fetch()) {
                     if ($arMailbox['USER_ID'] == $user_id) {
                         $adminMailbox = true;
                     } else {
                         $userMailboxes = true;
                         break;
                     }
                 }
                 if (!$userMailboxes) {
                     $eventType = $adminMailbox ? 'INTRANET_MAILDOMAIN_NOMAILBOX2' : 'INTRANET_MAILDOMAIN_NOMAILBOX';
                     CEvent::send($eventType, array($service['SITE_ID']), array('EMAIL_TO' => $arAdmin['EMAIL'], 'LEARNMORE_LINK' => $learnmoreLink, 'SUPPORT_LINK' => $supportLink));
                     if ($cnt == 1) {
                         global $pPERIOD;
                         $pPERIOD = 3600 * 24 * 21;
                         return 'CIntranetUtils::notifyMailDomain("nomailbox", ' . $sid . ', ' . $user_id . ', ' . ++$cnt . ');';
                     }
                 }
             }
         }
     } else {
         if ($type == 'noreg') {
             $dbServices = \Bitrix\Mail\MailServicesTable::getList(array('filter' => array('ACTIVE' => 'Y', 'SERVICE_TYPE' => 'crdomain')));
             while ($service = $dbServices->fetch()) {
                 if ($service['FLAGS'] & CMail::F_DOMAIN_REG) {
                     return '';
                 }
             }
             $r = CEvent::send('INTRANET_MAILDOMAIN_NOREG', array($sid), array('EMAIL_TO' => $arAdmin['EMAIL'], 'LEARNMORE_LINK' => $learnmoreLink, 'SUPPORT_LINK' => $supportLink));
         }
     }
     return '';
 }