3define(
"FORUM_SystemFolder", 4);
12 $version = COption::GetOptionString(
"forum",
"UsePMVersion",
"2");
31 if ($version == 2 && isset(
$arFields[
"COPY_TO_OUTBOX"]) &&
$arFields[
"COPY_TO_OUTBOX"] ==
"Y")
34 $arFieldsTmp[
"USER_ID"] =
$arFields[
"AUTHOR_ID"] ??
null;
35 $arFieldsTmp[
"IS_READ"] =
"Y";
36 $arFieldsTmp[
"FOLDER_ID"] =
"3";
37 $DB->Add(
"b_forum_private_message", $arFieldsTmp, Array(
"POST_MESSAGE"));
57 $list = $list->GetNext();
68 foreach ($keys as
$key)
72 if(!isset($list[
"POST_DATE"]))
73 $list[
"~POST_DATE"] =
$DB->GetNowFunction();
75 $list[
"IS_READ"] =
"Y";
76 $list[
"REQUEST_IS_READ"] = $list[
"REQUEST_IS_READ"]!=
"Y" ?
"N" :
"Y";
81 $result =
$DB->Add(
"b_forum_private_message", $list, Array(
"POST_MESSAGE"));
112 foreach (
GetModuleEvents(
"forum",
"onBeforePMUpdate",
true) as $arEvent)
120 $strUpdate =
$DB->PrepareUpdate(
"b_forum_private_message",
$arFields);
121 $strSql =
"UPDATE b_forum_private_message SET ".$strUpdate.
" WHERE ID=".
$ID;
122 $res =
$DB->QueryBind($strSql, Array(
"POST_MESSAGE"=>
$arFields[
"POST_MESSAGE"] ??
null));
139 foreach (
GetModuleEvents(
"forum",
"onBeforePMDelete",
true) as $arEvent)
145 $eventID =
"onAfterPMDelete";
148 $DB->Query(
"DELETE FROM b_forum_private_message WHERE ID=".
$ID);
153 $eventID =
"onAfterPMTrash";
170 $version = intval(COption::GetOptionString(
"forum",
"UsePMVersion",
"2"));
174 if (
$db_res && ($resFields =
$db_res->Fetch()) && ($resFields[
"IS_READ"] !=
"Y"))
176 foreach (
GetModuleEvents(
"forum",
"onBeforePMMakeRead",
true) as $arEvent)
182 $strSql =
"UPDATE b_forum_private_message SET IS_READ='Y' WHERE ID=".$ID;
184 if ($version == 1 && ($resFields[
"IS_READ"] ==
"N"))
186 $resFields = array_merge($resFields,
array(
"USER_ID"=>$resFields[
"AUTHOR_ID"],
"FOLDER_ID"=>3,
"IS_READ"=>
"Y"));
187 $resFields[
"REQUEST_IS_READ"] = $resFields[
"REQUEST_IS_READ"]!=
"Y" ?
"N" :
"Y";
190 unset($resFields[
"ID"]);
191 return $DB->Add(
"b_forum_private_message", $resFields, Array(
"POST_MESSAGE"));
207 if(
$arRes = $dbr->Fetch())
209 if((intval(
$arRes[
"USER_ID"]) ==
$USER->GetID()) ||
210 ((intval(
$arRes[
"AUTHOR_ID"]) == intval(
$USER->GetID())) && (
$arRes[
"IS_READ"]==
"N")))
249 static $arMessage =
array();
260 $arMessage[
$ID] =
false;
285 $orSql =
array(
"M.AUTHOR_ID=".intval(
$val),
"M.FOLDER_ID=1",
"M.IS_READ='N'");
292 $arSql[] =
"M.".$key.
"=".intval(
$val);
296 $arSql[] =
"M.".$key.
"='".
$DB->ForSQL(
$val).
"'";
300 $t_val = mb_strtoupper(
$val);
301 if($t_val==
"Y" || $t_val==
"N")
302 $arSql[] =
"M.".mb_strtoupper(
$key).
"='".$t_val.
"'";
308 "AUTHOR_ID" =>
"M.AUTHOR_ID",
309 "POST_DATE" =>
"M.POST_DATE",
310 "POST_SUBJ" =>
"M.POST_SUBJ",
311 "POST_MESSAGE" =>
"M.POST_MESSAGE",
312 "USER_ID" =>
"M.USER_ID",
313 "FOLDER_ID" =>
"M.FOLDER_ID",
314 "IS_READ" =>
"M.IS_READ",
315 "USE_SMILES" =>
"M.USE_SMILES",
316 "AUTHOR_NAME"=>
"AUTHOR_NAME"
318 $arSqlOrder =
array();
319 foreach($arOrder as $by =>
$order)
321 $by = mb_strtoupper($by);
323 if(array_key_exists($by, $arOFields))
326 $order =
"DESC".($DB->type==
"ORACLE" ?
" NULLS LAST" :
"");
328 $order =
"ASC".($DB->type==
"ORACLE" ?
" NULLS FIRST" :
"");
329 $arSqlOrder[] = $arOFields[$by].
" ".
$order;
336 "SELECT M.ID, M.AUTHOR_ID, FU.LOGIN AS AUTHOR_NAME, M.RECIPIENT_ID, ".
337 " ".$DB->DateToCharFunction(
"M.POST_DATE",
"FULL").
" as POST_DATE, ".
338 " M.POST_SUBJ, M.POST_MESSAGE, M.FOLDER_ID, M.IS_READ, M.USER_ID, M.USE_SMILES, M.REQUEST_IS_READ ".
339 "FROM b_forum_private_message M ".
340 "LEFT JOIN b_user FU ON(M.AUTHOR_ID = FU.ID)";
342 $strSql .= (
count($arSql)>0) ?
" WHERE (".implode(
" AND ", $arSql).
")" :
"";
343 $strSql .= (
count($orSql)>0) ?
" OR (".implode(
" AND ", $orSql).
")" :
"";
344 $strSql .= (
count($arSqlOrder)>0) ?
" ORDER BY ".implode(
", ", $arSqlOrder) :
"";
351 "SELECT COUNT(M.ID) AS CNT, COUNT(M1.ID) AS CNT_NEW ".
352 "FROM b_forum_private_message M ".
354 "LEFT JOIN b_forum_private_message M1 ON (M.ID = M1.ID AND M1.IS_READ!='Y')";
356 $strSql = $strSqlTmp . ((
count($arSql)>0) ?
" WHERE (".implode(
" AND ", $arSql).
")" :
"");
358 $strSql .= (
count($arSqlOrder)>0) ?
" ORDER BY ".implode(
", ", $arSqlOrder) :
"";
370 $strSql = $strSqlTmp;
372 $strSql .= ((
count($arSql)>0) ?
" WHERE (".implode(
" AND ", $arSql).
")" :
"");
396 public static function PMSize($USER_ID, $CountMess =
false)
398 $USER_ID = intval($USER_ID);
399 if (COption::GetOptionString(
"forum",
"UsePMVersion",
"2") == 2)
407 $ratio =
$count[
"CNT"]/$CountMess;
408 return ($ratio < 1 ? $ratio : 1);
413 public static function GetNewPM($FOLDER_ID =
false)
416 $FOLDER_ID = ($FOLDER_ID ===
false ? 1 : intval($FOLDER_ID));
417 static $PMessageCache =
array();
418 if (!
is_set($PMessageCache, $FOLDER_ID))
421 "SELECT COUNT(PM.ID) as UNREAD_PM ".
422 "FROM b_forum_private_message PM ".
423 "WHERE PM.USER_ID = ".$USER->GetID().
" ".
424 ($FOLDER_ID <= 0 ?
"" :
" AND PM.FOLDER_ID = ".$FOLDER_ID.
" ").
425 " AND PM.IS_READ = 'N'";
429 $PMessageCache[$FOLDER_ID] =
$res;
431 $PMessageCache[$FOLDER_ID] = 0;
433 return $PMessageCache[$FOLDER_ID];
446 if ($resFolder =
$res->Fetch())
451 return $DB->Add(
"b_forum_pm_folder",
array(
"TITLE"=>
$title,
"USER_ID"=>
$USER->GetId(),
"SORT"=>
"0"));
460 while ($resFolder =
$res->GetNext())
462 if($resFolder[
"ID"]!=
$ID)
468 $strUpdate =
$DB->PrepareUpdate(
"b_forum_pm_folder",
$arFields);
469 $strSql =
"UPDATE b_forum_pm_folder SET ".$strUpdate.
" WHERE ID=".
$ID;
479 $strSql =
"SELECT F.ID, F.USER_ID, F.SORT, F.TITLE FROM b_forum_pm_folder F WHERE F.ID=".intval(
$ID);
488 $arSqlSearch =
array();
495 $key = mb_strtoupper($filter_keys[
$i]);
499 $sAddJoin =
"F.USER_ID=FPM.USER_ID AND ";
500 $arSqlSearch[] =
"F.USER_ID=".intval(
$val);
504 $arSqlSearch[] =
"F.".$key.
"=".intval(
$val);
507 $arSqlSearch[] =
"F.".$key.
"='".
$DB->ForSQL(
$val).
"'";
514 "USER_ID" =>
"F.USER_ID",
516 "TITLE" =>
"F.TITLE");
517 $arSqlOrder =
array();
518 foreach($arOrder as $by =>
$order)
520 $by = mb_strtoupper($by);
522 if(array_key_exists($by, $arOFields))
525 $order =
"DESC".($DB->type==
"ORACLE" ?
" NULLS LAST" :
"");
527 $order =
"ASC".($DB->type==
"ORACLE" ?
" NULLS FIRST" :
"");
528 $arSqlOrder[] = $arOFields[$by].
" ".
$order;
534 "SELECT F.ID, F.USER_ID, F.SORT, F.TITLE, COUNT(FPM.ID) AS CNT, COUNT(FPM1.ID) AS CNT_NEW ".
535 "FROM b_forum_pm_folder F
536 LEFT JOIN b_forum_private_message FPM ON(".$sAddJoin.
"F.ID = FPM.FOLDER_ID)
537 LEFT JOIN b_forum_private_message FPM1 ON(FPM.ID = FPM1.ID AND FPM1.IS_READ != 'Y')";
540 "SELECT COUNT(F.ID) AS CNT ".
541 "FROM b_forum_pm_folder F ";
543 $strSql .= (
count($arSqlSearch)>0) ?
" WHERE ".implode(
" AND ", $arSqlSearch) :
"";
545 $strSql .=
" GROUP BY F.ID, F.USER_ID, F.SORT, F.TITLE";
546 $strSql .= (
count($arSqlOrder)>0) ?
" ORDER BY ".implode(
", ", $arSqlOrder) :
"";
557 $dbr = CForumPMFolder::GetByID(
$ID);
558 if(
$arRes = $dbr->Fetch())
573 $DB->Query(
"DELETE FROM b_forum_private_message WHERE FOLDER_ID=".
$ID);
574 return $DB->Query(
"DELETE FROM b_forum_pm_folder WHERE ID=".
$ID);
static GetList($arOrder=array("SORT"=> "DESC", "TITLE"=>"DESC"), $arFilter, $bCnt=false)
static CheckPermissions($ID)
static Update($ID, $arFields=array())
static Send($arFields=array())
static Copy($ID, $arFields=array())
static CheckPermissions($ID)
static GetNewPM($FOLDER_ID=false)
static CheckFields(&$arFields, $update=false)
static PMSize($USER_ID, $CountMess=false)
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter, $bCnt=false)
static Update($ID, $arFields)
static IsAdmin($userId=false, $arGroups=false)
static GetListEx($arOrder=Array("ID"=>"ASC"), $arFilter=Array(), $bCount=false, $iNum=0, $arAddParams=array())
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
ExecuteModuleEventEx($arEvent, $arParams=[])
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"