Esempio n. 1
0
 function GetList(&$by, &$order, $arFilter = array())
 {
     $err_mess = CEventMessage::err_mess() . "<br>Function: GetList<br>Line: ";
     global $DB, $USER;
     $arSqlSearch = array();
     $strSqlSearch = "";
     if (is_array($arFilter)) {
         $filter_keys = array_keys($arFilter);
         for ($i = 0; $i < count($filter_keys); $i++) {
             $key = $filter_keys[$i];
             $val = $arFilter[$filter_keys[$i]];
             if (strlen($val) <= 0 || "{$val}" == "NOT_REF") {
                 continue;
             }
             if (is_array($val) && count($val) <= 0) {
                 continue;
             }
             $match_value_set = in_array($key . "_EXACT_MATCH", $filter_keys) ? true : false;
             $key = strtoupper($key);
             switch ($key) {
                 case "ID":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N";
                     $arSqlSearch[] = GetFilterQuery("M.ID", $val, $match);
                     break;
                 case "TYPE":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y";
                     $arSqlSearch[] = GetFilterQuery("M.EVENT_NAME, T.NAME", $val, $match);
                     break;
                 case "EVENT_NAME":
                 case "TYPE_ID":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N";
                     $arSqlSearch[] = GetFilterQuery("M.EVENT_NAME", $val, $match);
                     break;
                 case "TIMESTAMP_1":
                     $arSqlSearch[] = "M.TIMESTAMP_X >= " . $DB->CharToDateFunction($val, "SHORT");
                     break;
                 case "TIMESTAMP_2":
                     $arSqlSearch[] = "M.TIMESTAMP_X < dateadd(day, 1, " . $DB->CharToDateFunction($val, "SHORT") . ")";
                     break;
                 case "LID":
                 case "LANG":
                 case "SITE_ID":
                     if (is_array($val)) {
                         $val = implode(" | ", $val);
                     }
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N";
                     $arSqlSearch[] = GetFilterQuery("MS.SITE_ID", $val, $match);
                     $join_site = "\n\t\t\t\t\t\t\tLEFT JOIN b_event_message_site MS ON (M.ID = MS.EVENT_MESSAGE_ID)\n\t\t\t\t\t\t\t";
                     break;
                 case "ACTIVE":
                     $arSqlSearch[] = $val == "Y" ? "M.ACTIVE = 'Y'" : "M.ACTIVE = 'N'";
                     break;
                 case "FROM":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y";
                     $arSqlSearch[] = GetFilterQuery("M.EMAIL_FROM", $val, $match);
                     break;
                 case "TO":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y";
                     $arSqlSearch[] = GetFilterQuery("M.EMAIL_TO", $val, $match);
                     break;
                 case "BCC":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y";
                     $arSqlSearch[] = GetFilterQuery("M.BCC", $val, $match);
                     break;
                 case "SUBJECT":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y";
                     $arSqlSearch[] = GetFilterQuery("M.SUBJECT", $val, $match);
                     break;
                 case "BODY_TYPE":
                     $arSqlSearch[] = $val == "text" ? "M.BODY_TYPE = 'text'" : "M.BODY_TYPE = 'html'";
                     break;
                 case "BODY":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y";
                     $arSqlSearch[] = GetFilterQuery("M.MESSAGE", $val, $match);
                     break;
             }
         }
     }
     if ($by == "id") {
         $strSqlOrder = " ORDER BY M.ID ";
     } elseif ($by == "active") {
         $strSqlOrder = " ORDER BY M.ACTIVE ";
     } elseif ($by == "event_name") {
         $strSqlOrder = " ORDER BY M.EVENT_NAME ";
     } elseif ($by == "to") {
         $strSqlOrder = " ORDER BY M.TO ";
     } elseif ($by == "bcc") {
         $strSqlOrder = " ORDER BY M.BCC ";
     } elseif ($by == "body_type") {
         $strSqlOrder = " ORDER BY M.BODY_TYPE ";
     } elseif ($by == "lid" || $by == "site_id") {
         $strSqlOrder = " ORDER BY M.LID ";
     } elseif ($by == "subject") {
         $strSqlOrder = " ORDER BY M.SUBJECT ";
     } else {
         $strSqlOrder = " ORDER BY M.ID ";
         $by = "id";
     }
     if ($order != "asc") {
         $strSqlOrder .= " desc ";
         $order = "desc";
     }
     $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
     $strSql = "\n\t\t\tSELECT\n\t\t\t\tM.ID,\n\t\t\t\tM.EVENT_NAME,\n\t\t\t\tM.ACTIVE,\n\t\t\t\tM.LID,\n\t\t\t\tM.LID as SITE_ID,\n\t\t\t\tM.EMAIL_FROM,\n\t\t\t\tM.EMAIL_TO,\n\t\t\t\tM.SUBJECT,\n\t\t\t\tM.MESSAGE,\n\t\t\t\tM.BODY_TYPE,\n\t\t\t\tM.BCC,\n\t\t\t\t" . $DB->DateToCharFunction("M.TIMESTAMP_X") . " as TIMESTAMP_X,\n\t\t\t\tCASE\n\t\t\t\t\twhen T.ID is null then M.EVENT_NAME\n\t\t\t\t\telse '[ ' + T.EVENT_NAME + ' ] ' + isnull(T.NAME,'')\n\t\t\t\tEND as EVENT_TYPE\n\t\t\tFROM\n\t\t\t\tb_event_message M\n\t\t\tLEFT JOIN b_event_type T ON (T.EVENT_NAME = M.EVENT_NAME and T.LID = '" . LANGUAGE_ID . "')\n\t\t\t{$join_site}\n\t\t\tWHERE\n\t\t\t\t{$strSqlSearch}\n\t\t\t\t{$strSqlOrder}\n\t\t\t";
     $res = $DB->Query($strSql, false, $err_mess . __LINE__);
     $res->is_filtered = IsFiltered($strSqlSearch);
     return $res;
 }