Exemplo n.º 1
0
 function SetEvent($RESULT_ID, $IN_EVENT1 = false, $IN_EVENT2 = false, $IN_EVENT3 = false, $money = "", $currency = "", $goto = "", $chargeback = "N")
 {
     $err_mess = CAllFormResult::err_mess() . "<br>Function: SetEvent<br>Line: ";
     global $DB, $strError;
     if (CModule::IncludeModule("statistic")) {
         $RESULT_ID = intval($RESULT_ID);
         $strSql = "SELECT FORM_ID FROM b_form_result WHERE ID='" . $RESULT_ID . "'";
         $z = $DB->Query($strSql, false, $err_mess . __LINE__);
         if ($zr = $z->Fetch()) {
             $WEB_FORM_ID = $zr["FORM_ID"];
             $strSql = "SELECT SID, STAT_EVENT1, STAT_EVENT2, STAT_EVENT3 FROM b_form WHERE ID = '" . $WEB_FORM_ID . "'";
             $z = $DB->Query($strSql, false, $err_mess . __LINE__);
             $zr = $z->Fetch();
             if ($IN_EVENT1 === false) {
                 $event1 = strlen($zr["STAT_EVENT1"]) <= 0 ? "form" : $zr["STAT_EVENT1"];
             } else {
                 $event1 = $IN_EVENT1;
             }
             if ($IN_EVENT2 === false) {
                 $event2 = strlen($zr["STAT_EVENT2"]) <= 0 ? $zr["SID"] : $zr["STAT_EVENT2"];
             } else {
                 $event2 = $IN_EVENT2;
             }
             if ($IN_EVENT3 === false) {
                 $event3 = strlen($zr["STAT_EVENT3"]) <= 0 ? ($GLOBALS['APPLICATION']->IsHTTPS() ? "https://" : "http://") . $_SERVER["HTTP_HOST"] . "/bitrix/admin/form_result_list.php?lang=" . LANGUAGE_ID . "&WEB_FORM_ID=" . $WEB_FORM_ID . "&find_id=" . $RESULT_ID . "&find_id_exact_match=Y&set_filter=Y" : $zr["STAT_EVENT3"];
             } else {
                 $event3 = $IN_EVENT3;
             }
             CStatEvent::AddCurrent($event1, $event2, $event3, $money, $currency, $goto, $chargeback);
             return true;
         } else {
             $strError .= GetMessage("FORM_ERROR_RESULT_NOT_FOUND") . "<br>";
         }
     }
     return false;
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
 function Set($arFields, &$MID, $id = "", $checkRights = "Y", $sendEmailToAuthor = "Y", $sendEmailToTechsupport = "Y")
 {
     global $DB, $APPLICATION, $USER;
     $err_mess = CAllTicket::err_mess() . "<br>Function: Set<br>Line: ";
     $v0 = self::Set_InitVar($arFields, $id, $checkRights, $sendEmailToAuthor, $sendEmailToTechsupport);
     if (!is_array($v0)) {
         return $v0;
     }
     $v = $v0["v"];
     /* isNew, CHECK_RIGHTS, SEND_EMAIL_TO_AUTHOR, SEND_EMAIL_TO_TECHSUPPORT, bAdmin, bSupportTeam, bSupportClient, bDemo, bOwner, uid, bActiveCoupon, IsSpam */
     /** @var CSupportTableFields $f */
     $f = $v0["f"];
     /* ID, SITE_ID, MODIFIED_GUEST_ID, OWNER_USER_ID, OWNER_SID, HOLD_ON, IS_SPAM */
     // если модифицируем обращение то
     if (!$v->isNew) {
         unset($arFields['COUPON']);
         $arFields['ID'] = $f->ID;
         $arFields = CTicket::ExecuteEvents('OnBeforeTicketUpdate', $arFields, false);
         $v->closeDate = isset($arFields["CLOSE"]) && $arFields["CLOSE"] == "Y";
         //$close
         // запоминаем предыдущие важные значения
         $v->arrOldFields = array();
         $arr = array("TITLE" => "T.TITLE", "RESPONSIBLE_USER_ID" => "T.RESPONSIBLE_USER_ID", "SLA_ID" => "T.SLA_ID", "CATEGORY_ID" => "T.CATEGORY_ID", "CRITICALITY_ID" => "T.CRITICALITY_ID", "STATUS_ID" => "T.STATUS_ID", "MARK_ID" => "T.MARK_ID", "DIFFICULTY_ID" => "T.DIFFICULTY_ID", "DATE_CLOSE" => "T.DATE_CLOSE", "HOLD_ON" => "T.HOLD_ON", "RESPONSE_TIME" => "S.RESPONSE_TIME", "RESPONSE_TIME_UNIT" => "S.RESPONSE_TIME_UNIT");
         $str = "T.ID";
         foreach ($arr as $s) {
             $str .= "," . $s;
         }
         $strSql = "SELECT " . $str . ", SITE_ID FROM b_ticket T LEFT JOIN b_ticket_sla S ON T.SLA_ID = S.ID WHERE T.ID='" . $f->ID . "'";
         $z = $DB->Query($strSql, false, $err_mess . __LINE__);
         if ($zr = $z->Fetch()) {
             $f->SITE_ID = $zr["SITE_ID"];
             if (intval($v->uid) == $zr["RESPONSIBLE_USER_ID"]) {
                 $v->bSupportTeam = "Y";
             }
             foreach ($arr as $key => $s) {
                 $v->arrOldFields[$key] = $zr[$key];
             }
         }
         $f->FromArray($arFields, "SITE_ID,MODIFIED_MODULE_NAME,SLA_ID,SOURCE_ID", array(CSupportTableFields::MORE0, CSupportTableFields::NOT_EMTY_STR));
         if (!$f->MODIFIED_MODULE_NAME) {
             $f->MODIFIED_MODULE_NAME = '';
         }
         $f->FromArray($arFields, "CATEGORY_ID,RESPONSIBLE_USER_ID,STATUS_ID,DIFFICULTY_ID,CRITICALITY_ID,SUPPORT_COMMENTS");
         if (isset($arFields['CHANGE_TITLE'])) {
             $f->set('TITLE', $arFields['CHANGE_TITLE']);
         }
         $f->set("MODIFIED_USER_ID", $v->uid, array(CSupportTableFields::MORE0));
         $f->setCurrentTime("TIMESTAMP_X");
         if ($v->closeDate) {
             $f->setCurrentTime("DATE_CLOSE");
         }
         // ?remake? {
         $v->IS_GROUP_USER = '******';
         if ($v->bAdmin) {
             $IS_GROUP_USER = '******';
         } elseif ($v->CHECK_RIGHTS == 'Y' && ($v->bSupportClient || $v->bSupportTeam)) {
             if ($v->bSupportTeam) {
                 $join_query = '(T.RESPONSIBLE_USER_ID IS NOT NULL AND T.RESPONSIBLE_USER_ID=O.USER_ID)';
             } else {
                 $join_query = '(T.OWNER_USER_ID IS NOT NULL AND T.OWNER_USER_ID=O.USER_ID)';
             }
             $strSql = "SELECT 'x'\n\t\t\t\tFROM b_ticket T\n\t\t\t\tINNER JOIN b_ticket_user_ugroup O ON {$join_query}\n\t\t\t\tINNER JOIN b_ticket_user_ugroup C ON (O.GROUP_ID=C.GROUP_ID)\n\t\t\t\tINNER JOIN b_ticket_ugroups G ON (O.GROUP_ID=G.ID)\n\t\t\t\tWHERE T.ID='" . $f->ID . "' AND C.USER_ID='" . $v->uid . "' AND C.CAN_VIEW_GROUP_MESSAGES='Y' AND G.IS_TEAM_GROUP='" . ($v->bSupportTeam ? "Y" : "N") . "'";
             $z = $DB->Query($strSql);
             if ($zr = $z->Fetch()) {
                 $v->IS_GROUP_USER = '******';
             }
         }
         // }
         if (isset($arFields["AUTO_CLOSE_DAYS"]) && intval($arFields["AUTO_CLOSE_DAYS"]) >= 0) {
             if (intval($arFields["AUTO_CLOSE_DAYS"]) == 0) {
                 // get from module settings
                 $f->AUTO_CLOSE_DAYS = COption::GetOptionString('support', "DEFAULT_AUTO_CLOSE_DAYS");
             } else {
                 $f->AUTO_CLOSE_DAYS = $arFields["AUTO_CLOSE_DAYS"];
             }
         }
         if (is_array($v->arrOldFields) && is_array($arFields) && $arFields["CLOSE"] == "N" && strlen($v->arrOldFields["DATE_CLOSE"]) > 0) {
             $f->DATE_CLOSE = null;
             $f->REOPEN = "Y";
         }
         // Если есть что и мы Аднины или из группы ТП, запишем в базу
         $v->FirstUpdateRes = false;
         if ($v->bSupportTeam || $v->bAdmin) {
             $arFields_i = $f->ToArray(CSupportTableFields::ALL, array(CSupportTableFields::ONLY_CHANGED), true);
             if ($v->CHECK_RIGHTS == "N" && isset($arFields["MARK_ID"]) && intval($arFields["MARK_ID"]) > 0) {
                 $arFields_i["MARK_ID"] = intval($arFields["MARK_ID"]);
             }
             if (count($arFields_i) > 0) {
                 $v->SupportTeamUpdateRes = $DB->Update("b_ticket", $arFields_i, "WHERE ID='" . $f->ID . "'", $err_mess . __LINE__);
                 //$rows1
                 $GLOBALS["USER_FIELD_MANAGER"]->Update("SUPPORT", $f->ID, $arFields);
                 // если указана отметка о спаме то установим отметку о спаме
                 if (strlen($f->IS_SPAM) > 0) {
                     CTicket::MarkAsSpam($f->ID, $f->IS_SPAM, $v->CHECK_RIGHTS);
                 }
                 $v->newSLA = isset($arFields_i["SLA_ID"]) && $v->arrOldFields["SLA_ID"] != $arFields_i["SLA_ID"];
             }
         } elseif ($v->bOwner || $v->bSupportClient) {
             $arFields_i = $f->ToArray("TIMESTAMP_X,DATE_CLOSE,CRITICALITY_ID,MODIFIED_USER_ID,MODIFIED_GUEST_ID,MODIFIED_MODULE_NAME,REOPEN", array(CSupportTableFields::ONLY_CHANGED), true);
             $arFields_i["MARK_ID"] = intval($arFields["MARK_ID"]);
             if (count($arFields_i) > 0) {
                 $v->SupportClientUpdateRes = $DB->Update("b_ticket", $arFields_i, "WHERE ID='" . $f->ID . "' AND (OWNER_USER_ID='" . $v->uid . "' OR CREATED_USER_ID='" . $v->uid . "' OR '" . $v->CHECK_RIGHTS . "'='N' OR '" . $v->IS_GROUP_USER . "'='Y')", $err_mess . __LINE__);
                 $GLOBALS["USER_FIELD_MANAGER"]->Update("SUPPORT", $f->ID, $arFields);
             }
         }
         // поля для записи лога
         /*$arFields_log = array(
         			"LOG"							=> "Y",
         			"MESSAGE_CREATED_USER_ID"		=> $MODIFIED_USER_ID,
         			"MESSAGE_CREATED_MODULE_NAME"	=> $MODIFIED_MODULE_NAME,
         			"MESSAGE_CREATED_GUEST_ID"		=> $MODIFIED_GUEST_ID,
         			"MESSAGE_SOURCE_ID"				=> intval($arFields["SOURCE_ID"])
         		);*/
         $v->arFields_log = array("LOG" => "Y", "MESSAGE_CREATED_USER_ID" => $f->MODIFIED_USER_ID, "MESSAGE_CREATED_MODULE_NAME" => $f->MODIFIED_MODULE_NAME, "MESSAGE_CREATED_GUEST_ID" => $f->MODIFIED_GUEST_ID, "MESSAGE_SOURCE_ID" => $f->SOURCE_ID);
         // если необходимо соблюдать права то
         if ($v->CHECK_RIGHTS == "Y") {
             // если update техподдержки не прошел то
             if (intval($v->SupportTeamUpdateRes) <= 0) {
                 // убираем из массива исходных значений то что может менять только техподдержка
                 unset($v->arrOldFields["RESPONSIBLE_USER_ID"]);
                 unset($v->arrOldFields["SLA_ID"]);
                 unset($v->arrOldFields["CATEGORY_ID"]);
                 unset($v->arrOldFields["DIFFICULTY_ID"]);
                 unset($v->arrOldFields["STATUS_ID"]);
             }
             // если update автора не прошел то
             if (intval($v->SupportClientUpdateRes) <= 0) {
                 // убираем из массива исходных значений то что может менять только автор
                 unset($v->arrOldFields["MARK_ID"]);
             }
         }
         // если состоялся один из updat'ов то
         if (intval($v->SupportTeamUpdateRes) > 0 || intval($v->SupportClientUpdateRes) > 0) {
             // добавляем сообщение
             $arFields["MESSAGE_CREATED_MODULE_NAME"] = $arFields["MODIFIED_MODULE_NAME"];
             if (is_set($arFields, "IMAGE")) {
                 $arFields["FILES"][] = $arFields["IMAGE"];
             }
             $arFiles = null;
             $MID = CTicket::AddMessage($f->ID, $arFields, $arFiles, $v->CHECK_RIGHTS);
             $v->arrFILES = $arFiles;
             $MID = intval($MID);
             $dateType = array();
             $dateType["EVENT"] = array(CTicket::UPDATE);
             if ($v->newSLA) {
                 $dateType["EVENT"][] = CTicket::NEW_SLA;
                 $dateType["OLD_SLA_RESPONSE_TIME"] = $v->arrOldFields["RESPONSE_TIME"];
                 $dateType["OLD_SLA_RESPONSE_TIME_UNIT"] = $v->arrOldFields["RESPONSE_TIME_UNIT"];
             }
             if ($f->REOPEN == "Y") {
                 $dateType["EVENT"][] = CTicket::REOPEN;
             }
             //CTicket::UpdateLastParams2($f->ID, $dateType);
             CTicket::UpdateLastParamsN($f->ID, $dateType, true, true);
             /*// если обращение закрывали то
             		if($v->closeDate)
             		{
             			// удалим агентов-напоминальщиков и обновим параметры обращения
             			CTicketReminder::Remove($f->ID);
             		}*/
             if (is_array($v->arrOldFields) && is_array($arFields)) {
                 // определяем что изменилось
                 $v->arChange = array();
                 if ($MID > 0) {
                     if ($arFields["HIDDEN"] != "Y") {
                         $v->arChange["MESSAGE"] = "Y";
                     } else {
                         $v->arChange["HIDDEN_MESSAGE"] = "Y";
                     }
                 }
                 if ($arFields["CLOSE"] == "Y" && strlen($v->arrOldFields["DATE_CLOSE"]) <= 0) {
                     $v->arChange["CLOSE"] = "Y";
                 } elseif ($arFields["CLOSE"] == "N" && strlen($v->arrOldFields["DATE_CLOSE"]) > 0) {
                     $v->arChange["OPEN"] = "Y";
                 }
                 if (array_key_exists("HOLD_ON", $arFields)) {
                     if ($v->arrOldFields["HOLD_ON"] == null) {
                         $v->arrOldFields["HOLD_ON"] = 'N';
                     }
                     if ($arFields["HOLD_ON"] == null) {
                         $arFields["HOLD_ON"] = 'N';
                     }
                     if ($v->arrOldFields["HOLD_ON"] != $arFields["HOLD_ON"]) {
                         if ($arFields["HOLD_ON"] == "Y") {
                             $v->arChange["HOLD_ON_ON"] = "Y";
                         } else {
                             $v->arChange["HOLD_ON_OFF"] = "Y";
                         }
                     }
                     unset($v->arrOldFields["HOLD_ON"]);
                 }
                 foreach ($v->arrOldFields as $key => $value) {
                     if (isset($arFields[$key])) {
                         if ($key === 'TITLE' && $value !== $arFields[$key]) {
                             $v->arChange[$key] = "Y";
                         } elseif (intval($value) != intval($arFields[$key])) {
                             $v->arChange[$key] = "Y";
                         }
                     }
                 }
                 // получим текущие значения обращения
                 CTimeZone::Disable();
                 $z = CTicket::GetByID($f->ID, $f->SITE_ID, "N");
                 CTimeZone::Enable();
                 if ($zr = $z->Fetch()) {
                     $nf = (object) $zr;
                     $rsSite = CSite::GetByID($nf->SITE_ID);
                     $v->arrSite = $rsSite->Fetch();
                     self::Set_sendMails($nf, $v, $arFields);
                     //if ($v->arChange['SLA_ID'] == 'Y' || $v->arChange['OPEN'] == 'Y') CTicketReminder::Update($nf->ID, true);
                 }
             }
             CTicket::ExecuteEvents('OnAfterTicketUpdate', $arFields, false);
         }
     } else {
         // restrict to set SLA_ID directly, allow through events or automatically
         if (isset($arFields['SLA_ID']) && !($v->bSupportTeam || $v->bAdmin || $v->bDemo || $v->bActiveCoupon)) {
             unset($arFields['SLA_ID']);
         }
         $arFields = CTicket::ExecuteEvents('OnBeforeTicketAdd', $arFields, false);
         if (!$arFields) {
             return false;
         }
         if (!((strlen(trim($arFields["OWNER_SID"])) > 0 || intval($arFields["OWNER_USER_ID"]) > 0) && ($v->bSupportTeam || $v->bAdmin))) {
             $f->OWNER_USER_ID = $v->uid > 0 ? $v->uid : null;
             $f->OWNER_SID = null;
             $f->OWNER_GUEST_ID = intval($_SESSION["SESS_GUEST_ID"]) > 0 ? intval($_SESSION["SESS_GUEST_ID"]) : null;
         }
         $f->FromArray($arFields, "CREATED_USER_ID,CREATED_MODULE_NAME,CATEGORY_ID,STATUS_ID,DIFFICULTY_ID,CRITICALITY_ID,SOURCE_ID,TITLE", array(CSupportTableFields::MORE0, CSupportTableFields::NOT_EMTY_STR));
         if (!$f->CREATED_USER_ID) {
             $f->set("CREATED_USER_ID", $v->uid, array(CSupportTableFields::MORE0));
         }
         $f->setCurrentTime("LAST_MESSAGE_DATE,DAY_CREATE,TIMESTAMP_X,DEADLINE_SOURCE_DATE");
         $f->DATE_CREATE = time() + CTimeZone::GetOffset();
         // если обращение создается сотрудником техподдержки, администратором или демо пользователем
         if ($v->bSupportTeam || $v->bAdmin || $v->Demo) {
             $f->FromArray($arFields, "SUPPORT_COMMENTS", array(CSupportTableFields::NOT_EMTY_STR));
         }
         if (!self::Set_getCOUPONandSLA($v, $f, $arFields)) {
             return false;
         }
         // $f +SLA_ID $v +V_COUPON +bActiveCoupon
         if ($v->bActiveCoupon) {
             $f->COUPON = $v->V_COUPON;
         }
         self::Set_getResponsibleUser($v, $f, $arFields);
         // $f +RESPONSIBLE_USER_ID  $v +T_EVENT1 +T_EVENT2 +T_EVENT3
         // поля для записи лога
         $v->arFields_log = array("LOG" => "Y", "MESSAGE_CREATED_USER_ID" => $f->CREATED_USER_ID, "MESSAGE_CREATED_MODULE_NAME" => $f->CREATED_MODULE_NAME, "MESSAGE_CREATED_GUEST_ID" => $f->MODIFIED_GUEST_ID, "MESSAGE_SOURCE_ID" => $f->SOURCE_ID);
         $acd0 = intval(COption::GetOptionString("support", "DEFAULT_AUTO_CLOSE_DAYS"));
         $f->AUTO_CLOSE_DAYS = $acd0 <= 0 ? 7 : $acd0;
         $arFields["AUTO_CLOSE_DAYS"] = $f->AUTO_CLOSE_DAYS;
         $arFields_i = $f->ToArray(CSupportTableFields::ALL, array(CSupportTableFields::NOT_NULL, CSupportTableFields::NOT_DEFAULT), true);
         $id = $DB->Insert("b_ticket", $arFields_i, $err_mess . __LINE__);
         if (!($id > 0)) {
             return $id;
         }
         $f->ID = $id;
         $GLOBALS["USER_FIELD_MANAGER"]->Update("SUPPORT", $f->ID, $arFields);
         $arFields["MESSAGE_AUTHOR_SID"] = $f->OWNER_SID;
         $arFields["MESSAGE_AUTHOR_USER_ID"] = $f->OWNER_USER_ID;
         $arFields["MESSAGE_CREATED_MODULE_NAME"] = $f->CREATED_MODULE_NAME;
         $arFields["MESSAGE_SOURCE_ID"] = $f->SOURCE_ID;
         $arFields["HIDDEN"] = "N";
         $arFields["LOG"] = "N";
         $arFields["IS_LOG"] = "N";
         if (is_set($arFields, "IMAGE")) {
             $arFields["FILES"][] = $arFields["IMAGE"];
         }
         $arFiles = null;
         $MID = CTicket::AddMessage($f->ID, $arFields, $arFiles, $v->CHECK_RIGHTS);
         $v->arrFILES = $arFiles;
         $MID = intval($MID);
         if (intval($MID) > 0) {
             //CTicket::UpdateLastParams2($f->ID, array("EVENT"=>array(CTicket::ADD)));
             CTicket::UpdateLastParamsN($f->ID, array("EVENT" => array(CTicket::ADD)), true, true);
             // если указана отметка о спаме то установим отметку о спаме
             if (strlen($f->IS_SPAM) > 0) {
                 CTicket::MarkAsSpam($f->ID, $f->IS_SPAM, $v->CHECK_RIGHTS);
             }
             /********************************************
             				$nf - Заново прочитанные из базы поля
             			********************************************/
             CTimeZone::Disable();
             $z = CTicket::GetByID($f->ID, $f->SITE_ID, "N", "N");
             CTimeZone::Enable();
             if ($zr = $z->Fetch()) {
                 $nf = (object) $zr;
                 $rsSite = CSite::GetByID($nf->SITE_ID);
                 $v->arrSite = $rsSite->Fetch();
                 self::Set_sendMails($nf, $v, $arFields);
                 // создаем событие в модуле статистики
                 if (CModule::IncludeModule("statistic")) {
                     if (!$v->category_set) {
                         $v->T_EVENT1 = "ticket";
                         $v->T_EVENT2 = "";
                         $v->T_EVENT3 = "";
                     }
                     if (strlen($v->T_EVENT3) <= 0) {
                         $v->T_EVENT3 = "http://" . $_SERVER["HTTP_HOST"] . "/bitrix/admin/ticket_edit.php?ID=" . $f->ID . "&lang=" . $v->arrSite["LANGUAGE_ID"];
                     }
                     CStatEvent::AddCurrent($v->T_EVENT1, $v->T_EVENT2, $v->T_EVENT3);
                 }
             }
         }
         // !!! ПРОВЕРИТЬ $arFields ТОЧНО ЛИ ВСЕ $arFields[..] = .. ТАКИЕ ЖЕ КАК В ОРИГИНАЛЕ !!!
         $arFields['ID'] = $f->ID;
         $arFields['MID'] = $MID;
         CTicket::ExecuteEvents('OnAfterTicketAdd', $arFields, true);
     }
     return $f->ID;
 }
Exemplo n.º 4
0
<?php

//define("STOP_STATISTICS", true);
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
if (isset($_SESSION["player_files"]) && is_array($_SESSION["player_files"]) && isset($_REQUEST["id"]) && isset($_SESSION["player_files"][$_REQUEST["id"]])) {
    $arFile = $_SESSION["player_files"][$_REQUEST["id"]];
    if ($arFile["STAT_EVENT"] && !$arFile["WAS_STAT_EVENT"] && strlen($arFile["STAT_EVENT1"]) > 0 && CModule::IncludeModule('statistic')) {
        CStatEvent::AddCurrent($arFile["STAT_EVENT1"], $arFile["STAT_EVENT2"], $arFile["STAT_EVENT3"]);
        $_SESSION["player_files"][$_REQUEST["id"]]["WAS_STAT_EVENT"] = true;
    }
    if ($arFile["SHOW_COUNTER_EVENT"] && !$arFile["WAS_SHOW_COUNTER_EVENT"] && CModule::IncludeModule('iblock')) {
        CIBlockElement::CounterInc($_REQUEST["id"]);
        $_SESSION["player_files"][$_REQUEST["id"]]["WAS_SHOW_COUNTER_EVENT"] = true;
    }
}
require_once $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog_after.php";
Exemplo n.º 5
0
 function PrologActions()
 {
     /** @global CMain $APPLICATION */
     global $APPLICATION, $USER;
     if (defined("BX_CHECK_SHORT_URI") && BX_CHECK_SHORT_URI) {
         if ($arUri = CBXShortUri::GetUri($_SERVER["REQUEST_URI"])) {
             CBXShortUri::SetLastUsed($arUri["ID"]);
             if (CModule::IncludeModule("statistic")) {
                 CStatEvent::AddCurrent("short_uri_redirect", "", "", "", "", $arUri["URI"], "N", SITE_ID);
             }
             LocalRedirect($arUri["URI"], true, CBXShortUri::GetHttpStatusCodeText($arUri["STATUS"]));
             die;
         }
     }
     //session expander
     if (COption::GetOptionString("main", "session_expand", "Y") != "N" && (!defined("BX_SKIP_SESSION_EXPAND") || BX_SKIP_SESSION_EXPAND == false)) {
         $arPolicy = $USER->GetSecurityPolicy();
         $phpSessTimeout = ini_get("session.gc_maxlifetime");
         if ($arPolicy["SESSION_TIMEOUT"] > 0) {
             $sessTimeout = min($arPolicy["SESSION_TIMEOUT"] * 60, $phpSessTimeout);
         } else {
             $sessTimeout = $phpSessTimeout;
         }
         $cookie_prefix = COption::GetOptionString('main', 'cookie_name', 'BITRIX_SM');
         $salt = $_COOKIE[$cookie_prefix . '_UIDH'] . "|" . $_SERVER["REMOTE_ADDR"] . "|" . @filemtime($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/version.php") . "|" . LICENSE_KEY . "|" . CMain::GetServerUniqID();
         $key = md5(bitrix_sessid() . $salt);
         $bShowMess = $USER->IsAuthorized() && COption::GetOptionString("main", "session_show_message", "Y") != "N";
         $ext = array('ajax');
         if ($bShowMess) {
             $ext[] = "fx";
         }
         CUtil::InitJSCore($ext);
         $jsMsg = '<script type="text/javascript">' . "\n" . ($bShowMess ? 'bxSession.mess.messSessExpired = \'' . CUtil::JSEscape(GetMessage("MAIN_SESS_MESS", array("#TIMEOUT#" => round($sessTimeout / 60)))) . '\';' . "\n" : '') . 'bxSession.Expand(' . $sessTimeout . ', \'' . bitrix_sessid() . '\', ' . ($bShowMess ? 'true' : 'false') . ', \'' . $key . '\');' . "\n" . '</script>';
         if ($APPLICATION->IsJSOptimized()) {
             $APPLICATION->AddHeadScript('/bitrix/js/main/session.js');
             $APPLICATION->AddAdditionalJS($jsMsg);
         } else {
             $APPLICATION->AddHeadString('<script type="text/javascript" src="' . CUtil::GetAdditionalFileURL('/bitrix/js/main/session.js') . '"></script>' . "\n" . $jsMsg, true);
         }
         $_SESSION["BX_SESSION_COUNTER"] = intval($_SESSION["BX_SESSION_COUNTER"]) + 1;
         if (!defined("BX_SKIP_SESSION_TERMINATE_TIME")) {
             $_SESSION["BX_SESSION_TERMINATE_TIME"] = time() + $sessTimeout;
         }
     }
     //user auto time zone via js cookies
     if (CTimeZone::Enabled()) {
         CTimeZone::SetAutoCookie();
     }
     // check user options set via cookie
     if ($USER->IsAuthorized()) {
         $cookieName = COption::GetOptionString("main", "cookie_name", "BITRIX_SM") . "_LAST_SETTINGS";
         if (!empty($_COOKIE[$cookieName])) {
             CUserOptions::SetCookieOptions($cookieName);
         }
     }
     if (COption::GetOptionString("main", "buffer_content", "Y") == "Y" && (!defined("BX_BUFFER_USED") || BX_BUFFER_USED !== true)) {
         ob_start(array(&$APPLICATION, "EndBufferContent"));
         $APPLICATION->buffered = true;
         define("BX_BUFFER_USED", true);
         register_shutdown_function(create_function('', 'while(@ob_end_flush());'));
     }
     foreach (GetModuleEvents("main", "OnProlog", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent);
     }
 }
Exemplo n.º 6
0
	public static function Set_Event($event1, $event2="", $event3="", $goto="", $money="", $currency="", $chargeback="N", $site_id=false) { return CStatEvent::AddCurrent($event1, $event2, $event3, $money, $currency, $goto, $chargeback, $site_id); }
Exemplo n.º 7
0
define("ADMIN_SECTION", false);
if (!empty($_REQUEST['site_id']) && preg_match('/^[a-z0-9_]{2}$/i', $_REQUEST['site_id'])) {
    define('SITE_ID', $_REQUEST['site_id']);
}
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
global $APPLICATION;
if (CModule::IncludeModule("statistic")) {
    if (strlen($_REQUEST["site_id"]) <= 0) {
        $site_id = false;
        $referer_url = strlen($_SERVER["HTTP_REFERER"]) <= 0 ? $_SESSION["SESS_HTTP_REFERER"] : $_SERVER["HTTP_REFERER"];
        if (strlen($referer_url)) {
            $url = @parse_url($referer_url);
            if ($url) {
                $rs = CSite::GetList($v1 = "LENDIR", $v2 = "DESC", array("ACTIVE" => "Y", "DOMAIN" => "%" . $url["host"], "IN_DIR" => $url["path"]));
                if ($arr = $rs->Fetch()) {
                    $site_id = $arr["ID"];
                }
            }
        }
    } else {
        $site_id = $_REQUEST["site_id"];
    }
    $goto = preg_replace("/#EVENT_GID#/i", urlencode(CStatEvent::GetGID($site_id)), $_REQUEST["goto"]);
    CStatEvent::AddCurrent($_REQUEST["event1"], $_REQUEST["event2"], $_REQUEST["event3"], $_REQUEST["money"], $_REQUEST["currency"], $goto, $_REQUEST["chargeback"], $site_id);
} else {
    $goto = preg_replace("/#EVENT_GID#/i", "", $_REQUEST["goto"]);
}
if (intval($id) > 0 && CModule::IncludeModule("advertising")) {
    CAdvBanner::Click($id);
}
LocalRedirect($goto);
Exemplo n.º 8
0
<?php

define("ADMIN_SECTION", false);
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
global $APPLICATION;
if (CModule::IncludeModule("statistic")) {
    if (strlen($site_id) <= 0) {
        $referer_url = strlen($_SERVER["HTTP_REFERER"]) <= 0 ? $_SESSION["SESS_HTTP_REFERER"] : $_SERVER["HTTP_REFERER"];
        if (strlen($referer_url) > 0) {
            $url = parse_url($referer_url);
            $rs = CSite::GetList($v1 = "LENDIR", $v2 = "DESC", array("ACTIVE" => "Y", "DOMAIN" => "%" . $url["host"], "IN_DIR" => $url["path"]));
            $arr = $rs->Fetch();
            $site_id = $arr["ID"];
        }
    }
    if (strlen($site_id) <= 0) {
        $site_id = false;
    }
    $goto = eregi_replace("#EVENT_GID#", urlencode(CStatEvent::GetGID($site_id)), $goto);
    CStatEvent::AddCurrent($event1, $event2, $event3, $money, $currency, $goto, $chargeback, $site_id);
} else {
    $goto = eregi_replace("#EVENT_GID#", "", $goto);
}
LocalRedirect($goto);
Exemplo n.º 9
0
 public static function CheckUri()
 {
     if ($arUri = static::GetUri(Bitrix\Main\Context::getCurrent()->getRequest()->getDecodedUri())) {
         static::SetLastUsed($arUri["ID"]);
         if (CModule::IncludeModule("statistic")) {
             CStatEvent::AddCurrent("short_uri_redirect", "", "", "", "", $arUri["URI"], "N", SITE_ID);
         }
         LocalRedirect($arUri["URI"], true, static::GetHttpStatusCodeText($arUri["STATUS"]));
         return true;
     }
     return false;
 }