コード例 #1
0
ファイル: user.php プロジェクト: rasuldev/torino
 public static function GetFormattedNameFieldsForSelect($arParams = array(), $bReturnAll = true)
 {
     $arParams = is_array($arParams) ? $arParams : array($arParams);
     $arParams["sNameTemplate"] = trim($arParams["sNameTemplate"]);
     $arParams["sUserTablePrefix"] = rtrim(!empty($arParams["sUserTablePrefix"]) ? $arParams["sUserTablePrefix"] : "U", ".") . ".";
     $arParams["sForumUserTablePrefix"] = rtrim(!empty($arParams["sForumUserTablePrefix"]) ? $arParams["sForumUserTablePrefix"] : "FU", ".") . ".";
     $arParams["sFieldName"] = !empty($arParams["sFieldName"]) ? $arParams["sFieldName"] : "AUTHOR_NAME_FRMT";
     $arParams["sUserIDFieldName"] = !empty($arParams["sUserIDFieldName"]) ? $arParams["sUserIDFieldName"] : "F.LAST_POSTER_ID";
     $res = array("select" => "CASE " . " WHEN (" . $arParams["sForumUserTablePrefix"] . "USER_ID > 0 " . " AND " . $arParams["sForumUserTablePrefix"] . "SHOW_NAME = 'Y' " . " AND " . "LENGTH(TRIM(CONCAT_WS(''," . CForumUser::GetNameFieldsForQuery($arParams["sNameTemplate"], $arParams["sUserTablePrefix"]) . "))) > 0" . ") " . " THEN TRIM(REPLACE(CONCAT_WS(' '," . CForumUser::GetNameFieldsForQuery($arParams["sNameTemplate"], $arParams["sUserTablePrefix"]) . "), '  ', ' '))" . " ELSE " . $arParams["sUserTablePrefix"] . "LOGIN " . " END AS " . $arParams["sFieldName"], "join" => "LEFT JOIN b_forum_user " . rtrim($arParams["sForumUserTablePrefix"], ".") . " ON (" . $arParams["sUserIDFieldName"] . "=" . $arParams["sForumUserTablePrefix"] . "USER_ID) " . "LEFT JOIN b_user " . rtrim($arParams["sUserTablePrefix"], ".") . " ON (" . $arParams["sUserIDFieldName"] . "=" . $arParams["sUserTablePrefix"] . "ID) ");
     if ($bReturnAll) {
         return $res;
     }
     return $res["select"];
 }
コード例 #2
0
ファイル: private_message.php プロジェクト: rasuldev/torino
 public static function GetListEx($arOrder = array("ID" => "ASC"), $arFilter = array(), $bCount = false, $iNum = 0, $arAddParams = array())
 {
     global $DB;
     $arSqlSearch = array();
     $arSqlOrder = array();
     $strSqlSearch = "";
     $strSqlOrder = "";
     $strSqlFrom = "";
     $arFilter = is_array($arFilter) ? $arFilter : array();
     if (is_array($bCount) && empty($arAddParams)) {
         $arAddParams = $bCount;
         $bCount = false;
         $iNum = 0;
     }
     $arAddParams = is_array($arAddParams) ? $arAddParams : array($arAddParams);
     if (is_set($arAddParams, "nameTemplate")) {
         $arAddParams["sNameTemplate"] = $arAddParams["nameTemplate"];
     }
     $arAddParams["bCount"] = !!$bCount || !!$arAddParams["bCount"];
     $arAddParams["nTopCount"] = $iNum > 0 ? $iNum : ($arAddParams["nTopCount"] > 0 ? $arAddParams["nTopCount"] : 0);
     foreach ($arFilter as $key => $val) {
         $key_res = CForumNew::GetFilterOperation($key);
         $key = strtoupper($key_res["FIELD"]);
         $strNegative = $key_res["NEGATIVE"];
         $strOperation = $key_res["OPERATION"];
         switch ($key) {
             case "ID":
             case "FOLDER_ID":
             case "AUTHOR_ID":
             case "RECIPIENT_ID":
             case "USER_ID":
                 if (IntVal($val) <= 0) {
                     $arSqlSearch[] = ($strNegative == "Y" ? "NOT" : "") . "(PM." . $key . " IS NULL OR PM." . $key . "<=0)";
                 } elseif (strToUpper($strOperation) == "IN") {
                     $arSqlSearch[] = ($strNegative == "Y" ? " PM." . $key . " IS NULL OR NOT " : "") . "(PM." . $key . " " . $strOperation . " (" . IntVal($val) . ") )";
                 } else {
                     $arSqlSearch[] = ($strNegative == "Y" ? " PM." . $key . " IS NULL OR NOT " : "") . "(PM." . $key . " " . $strOperation . " " . IntVal($val) . " )";
                 }
                 break;
             case "OWNER_ID":
                 if (COption::GetOptionString("forum", "UsePMVersion", "2") == 2) {
                     $user_id = 0;
                     if (is_array($val) && intVal($val["USER_ID"]) > 0) {
                         $user_id = intVal($val["USER_ID"]);
                     } else {
                         $user_id = intVal($val);
                     }
                     $arSqlSearch[] = "(PM.USER_ID=" . $user_id . " AND ((PM.FOLDER_ID=2) OR (PM.FOLDER_ID=3)))";
                 } else {
                     $arSqlSearch[] = "((PM.AUTHOR_ID=" . intVal($val) . ") AND (PM.IS_READ='N')) OR (PM.USER_ID=" . intVal($val) . " AND (PM.FOLDER_ID=2))";
                 }
                 break;
             case "POST_SUBJ":
             case "POST_MESSAGE":
             case "USE_SMILES":
             case "IS_READ":
                 if (strlen($val) <= 0) {
                     $arSqlSearch[] = ($strNegative == "Y" ? "NOT" : "") . "(PM." . $key . " IS NULL OR LENGTH(PM." . $key . ")<=0)";
                 } elseif (strToUpper($strOperation) == "IN") {
                     $arSqlSearch[] = ($strNegative == "Y" ? " PM." . $key . " IS NULL OR NOT " : "") . "(PM." . $key . " " . $strOperation . " ('" . $DB->ForSql($val) . "') )";
                 } else {
                     $arSqlSearch[] = ($strNegative == "Y" ? " PM." . $key . " IS NULL OR NOT " : "") . "(PM." . $key . " " . $strOperation . " '" . $DB->ForSql($val) . "' )";
                 }
                 break;
             case "POST_DATE":
                 if (strlen($val) <= 0) {
                     $arSqlSearch[] = ($strNegative == "Y" ? "NOT" : "") . "(PM." . $key . " IS NULL OR LENGTH(PM." . $key . ")<=0)";
                 } else {
                     $arSqlSearch[] = ($strNegative == "Y" ? " PM." . $key . " IS NULL OR NOT " : "") . "(PM." . $key . " " . $strOperation . " " . $DB->CharToDateFunction($DB->ForSql($val), "FULL") . " )";
                 }
                 break;
         }
     }
     if (!empty($arSqlSearch)) {
         $strSqlSearch = " AND (" . implode(") AND (", $arSqlSearch) . ") ";
     }
     $iCnt = 0;
     if ($arAddParams["bCount"] || is_set($arAddParams, "bDescPageNumbering")) {
         $strSql = "SELECT COUNT(PM.ID) AS CNT FROM b_forum_private_message PM WHERE (1=1) " . $strSqlSearch;
         $db_res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $iCnt = $db_res && ($res = $db_res->Fetch()) ? intval($res["CNT"]) : 0;
         if ($arAddParams["bCount"]) {
             return $iCnt;
         }
     }
     foreach ($arOrder as $by => $order) {
         $by = strtoupper($by);
         $order = strtoupper($order);
         if ($order != "ASC") {
             $order = "DESC";
         }
         if ($by == "AUTHOR_NAME") {
             $arSqlOrder[] = " AUTHOR_NAME " . $order . " ";
         } elseif ($by == "RECIPIENT_NAME") {
             $arSqlOrder[] = " RECIPIENT_NAME " . $order . " ";
         } elseif ($by == "AUTHOR_ID") {
             $arSqlOrder[] = " PM.AUTHOR_ID " . $order . " ";
         } elseif ($by == "RECIPIENT_ID") {
             $arSqlOrder[] = " PM.RECIPIENT_ID " . $order . " ";
         } elseif ($by == "POST_DATE") {
             $arSqlOrder[] = " PM.POST_DATE " . $order . " ";
         } elseif ($by == "POST_SUBJ") {
             $arSqlOrder[] = " PM.POST_SUBJ " . $order . " ";
         } elseif ($by == "POST_MESSAGE") {
             $arSqlOrder[] = " PM.POST_MESSAGE " . $order . " ";
         } elseif ($by == "IS_READ") {
             $arSqlOrder[] = " PM.IS_READ " . $order . " ";
         } elseif ($by == "USE_SMILES") {
             $arSqlOrder[] = " PM.USE_SMILES " . $order . " ";
         } else {
             $arSqlOrder[] = " PM.POST_DATE " . $order . " ";
             $by = "POST_DATE";
         }
     }
     DelDuplicateSort($arSqlOrder);
     if (!empty($arSqlOrder)) {
         $strSqlOrder = " ORDER BY " . implode(", ", $arSqlOrder);
     }
     $strSql = "SELECT \n\t\t\t\tPM.ID, PM.POST_SUBJ, PM.POST_MESSAGE, PM.FOLDER_ID, PM.IS_READ, PM.USE_SMILES, PM.REQUEST_IS_READ, \n\t\t\t\t" . $DB->DateToCharFunction("PM.POST_DATE", "FULL") . " as POST_DATE, \n\t\t\t\tPM.USER_ID,\n\t\t\t\t\n\t\t\t\tPM.AUTHOR_ID, U.EMAIL AS AUTHOR_EMAIL, U.LOGIN AS AUTHOR_LOGIN, \n\t\t\t\tCASE\n\t\t\t\t\tWHEN ((FU.SHOW_NAME='Y') AND (LENGTH(TRIM(CONCAT_WS(''," . CForumUser::GetNameFieldsForQuery($arAddParams["sNameTemplate"]) . ")))>0))\n\t\t\t\t\t\tTHEN TRIM(REPLACE(CONCAT_WS(' '," . CForumUser::GetNameFieldsForQuery($arAddParams["sNameTemplate"]) . "), '  ', ' '))\n\t\t\t\t\t\tELSE U.LOGIN\n\t\t\t\t\tEND AS AUTHOR_NAME, \n\t\t\t\tPM.RECIPIENT_ID, UU.EMAIL AS RECIPIENT_EMAIL, UU.LOGIN AS RECIPIENT_LOGIN,\n\t\t\t\tCASE\n\t\t\t\t\tWHEN ((FUU.SHOW_NAME='Y') AND (LENGTH(TRIM(CONCAT_WS(''," . CForumUser::GetNameFieldsForQuery($arAddParams["sNameTemplate"], "UU.") . ")))>0))\n\t\t\t\t\tTHEN TRIM(REPLACE(CONCAT_WS(' '," . CForumUser::GetNameFieldsForQuery($arAddParams["sNameTemplate"], "UU.") . "), '  ', ' '))\n\t\t\t\t\tELSE UU.LOGIN\n\t\t\t\tEND AS RECIPIENT_NAME\n\t\t\tFROM b_forum_private_message PM\n\t\t\t\tLEFT JOIN b_forum_user FU ON (PM.AUTHOR_ID = FU.USER_ID)\n\t\t\t\tLEFT JOIN b_forum_user FUU ON (PM.RECIPIENT_ID = FUU.USER_ID)\n\t\t\t\tLEFT JOIN b_user U ON (PM.AUTHOR_ID = U.ID)\n\t\t\t\tLEFT JOIN b_user UU ON (PM.RECIPIENT_ID = UU.ID)\n\t\t\tWHERE 1=1 " . $strSqlSearch . "\n\t\t\t" . $strSqlOrder;
     if (is_set($arAddParams, "bDescPageNumbering")) {
         $db_res = new CDBResult();
         $db_res->NavQuery($strSql, $iCnt, $arAddParams);
     } else {
         if ($arAddParams["nTopCount"] > 0) {
             $strSql .= " LIMIT 0," . $arAddParams["nTopCount"];
         }
         $db_res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $db_res;
 }