1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
group_subject.php
См. документацию.
1<?php
2
3require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/socialnetwork/classes/general/group_subject.php");
4
6{
7 /***************************************/
8 /******** DATA MODIFICATION **********/
9 /***************************************/
10 public static function Add($arFields)
11 {
12 global $DB, $CACHE_MANAGER;
13
15
16 if (!self::CheckFields("ADD", $arFields))
17 {
18 return false;
19 }
20
21 $arSiteID = [];
22 if (array_key_exists("SITE_ID", $arFields))
23 {
24 if (is_array($arFields["SITE_ID"]))
25 {
26 foreach ($arFields["SITE_ID"] as $site_id)
27 {
28 $arSiteID[$site_id] = $DB->ForSQL($site_id);
29 }
30 }
31 else
32 {
33 $arSiteID[$arFields["SITE_ID"]] = $DB->ForSQL($arFields["SITE_ID"]);
34 }
35 }
36
37 if (empty($arSiteID))
38 {
39 unset($arFields["SITE_ID"]);
40 }
41 else
42 {
43 $arFields["SITE_ID"] = end($arSiteID);
44 }
45
46 $arInsert = $DB->PrepareInsert("b_sonet_group_subject", $arFields);
48
49 $ID = false;
50 if ($arInsert[0] <> '')
51 {
52 $strSql =
53 "INSERT INTO b_sonet_group_subject(".$arInsert[0].") ".
54 "VALUES(".$arInsert[1].")";
55 $DB->Query($strSql);
56
57 $ID = (int)$DB->LastID();
58
59 if ($ID > 0 && !empty($arSiteID))
60 {
61 $DB->Query("
62 DELETE FROM b_sonet_group_subject_site WHERE SUBJECT_ID = ".$ID."
63 ");
64
65 $DB->Query("
66 INSERT INTO b_sonet_group_subject_site(SUBJECT_ID, SITE_ID)
67 SELECT ".$ID.", LID
68 FROM b_lang
69 WHERE LID IN ('".implode("', '", $arSiteID)."')
70 ");
71
72 $events = GetModuleEvents("socialnetwork", "OnSocNetGroupSubjectAdd");
73 while ($arEvent = $events->Fetch())
74 {
76 }
77 }
78
79 if (CACHED_b_sonet_group_subjects != false)
80 {
81 $CACHE_MANAGER->CleanDir("b_sonet_group_subjects");
82 }
83 }
84
85 return $ID;
86 }
87
88 /***************************************/
89 /********** DATA SELECTION ***********/
90 /***************************************/
91 public static function GetList($arOrder = Array("SORT" => "ASC", "ID" => "DESC"), $arFilter = Array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
92 {
93 global $DB, $CACHE_MANAGER;
94
95 if (count($arSelectFields) <= 0)
96 {
97 $arSelectFields = array("ID", "SITE_ID", "NAME", "SORT");
98 }
99
100 $bShouldBeCached = false;
101 $cacheId = "";
102 if (CACHED_b_sonet_group_subjects != false)
103 {
104 if ($arSelectFields == false && $arNavStartParams == false && $arGroupBy == false)
105 {
106 $bFilterByID = array_key_exists("ID", $arFilter);
107 $bFilterBySite = array_key_exists("SITE_ID", $arFilter);
108 if (count($arFilter) == 1 && ($bFilterByID || $bFilterBySite))
109 {
110 $bShouldBeCached = true;
111 $cacheId = "b_sonet_group_subjects".md5(serialize($arOrder));
112 if ($CACHE_MANAGER->Read(CACHED_b_sonet_group_subjects, $cacheId, "b_sonet_group_subjects"))
113 {
114 $arResult = $CACHE_MANAGER->Get($cacheId);
115
116 $arReturnValue = array();
117 $cnt = count($arResult);
118 for ($i = 0; $i < $cnt; $i++)
119 {
120 if ($bFilterByID && $arResult[$i]["ID"] == $arFilter["ID"])
121 {
122 $arReturnValue[] = $arResult[$i];
123 }
124
125 if (
126 $bFilterBySite
127 && (
128 (is_array($arFilter["SITE_ID"]) && in_array($arResult[$i]["SITE_ID"], $arFilter["SITE_ID"]))
129 || (!is_array($arFilter["SITE_ID"]) && $arResult[$i]["SITE_ID"] == $arFilter["SITE_ID"])
130 )
131 )
132 {
133 $arReturnValue[] = $arResult[$i];
134 }
135 }
136
137 $res = new CDBResult;
138 $res->InitFromArray($arResult);
139 return $res;
140 }
141 }
142 }
143 }
144
145 static $arFields1 = array(
146 "ID" => Array("FIELD" => "S.ID", "TYPE" => "int"),
147 "NAME" => Array("FIELD" => "S.NAME", "TYPE" => "string"),
148 "SORT" => Array("FIELD" => "S.SORT", "TYPE" => "int"),
149 );
150
151 if (array_key_exists("SITE_ID", $arFilter))
152 {
153 $arFields["SITE_ID"] = Array("FIELD" => "SGSS.SITE_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_group_subject_site SGSS ON S.ID = SGSS.SUBJECT_ID");
154 $strDistinct = " DISTINCT ";
155 foreach ($arSelectFields as $i => $strFieldTmp)
156 {
157 if ($strFieldTmp === 'SITE_ID')
158 {
159 unset($arSelectFields[$i]);
160 }
161 }
162
163 foreach ($arOrder as $by => $order)
164 {
165 if (!in_array($by, $arSelectFields))
166 {
167 $arSelectFields[] = $by;
168 }
169 }
170 }
171 else
172 {
173 $arFields["SITE_ID"] = Array("FIELD" => "S.SITE_ID", "TYPE" => "string");
174 $strDistinct = " ";
175 }
176
177 $arFields = array_merge($arFields1, $arFields);
178
179 $arSqls = CSocNetGroup::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
180
181 $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", $strDistinct, $arSqls["SELECT"]);
182
183 if (is_array($arGroupBy) && count($arGroupBy) === 0)
184 {
185 $strSql =
186 "SELECT ".$arSqls["SELECT"]." ".
187 "FROM b_sonet_group_subject S ".
188 " ".$arSqls["FROM"]." ";
189 if ($arSqls["WHERE"] <> '')
190 {
191 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
192 }
193 if ($arSqls["GROUPBY"] <> '')
194 {
195 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
196 }
197
198 //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
199
200 $dbRes = $DB->Query($strSql);
201 if ($arRes = $dbRes->Fetch())
202 {
203 return $arRes["CNT"];
204 }
205
206 return false;
207 }
208
209 $strSql =
210 "SELECT ".$arSqls["SELECT"]." ".
211 "FROM b_sonet_group_subject S ".
212 " ".$arSqls["FROM"]." ";
213 if ($arSqls["WHERE"] <> '')
214 {
215 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
216 }
217
218 if ($arSqls["GROUPBY"] <> '')
219 {
220 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
221 }
222
223 if ($arSqls["ORDERBY"] <> '')
224 {
225 $strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";
226 }
227
228 if (
229 is_array($arNavStartParams)
230 && (int) ($arNavStartParams["nTopCount"] ?? null) <= 0
231 )
232 {
233 $strSql_tmp =
234 "SELECT COUNT('x') as CNT ".
235 "FROM b_sonet_group_subject S ".
236 " ".$arSqls["FROM"]." ";
237 if ($arSqls["WHERE"] <> '')
238 {
239 $strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
240 }
241
242 if ($arSqls["GROUPBY"] <> '')
243 {
244 $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";
245 }
246
247 //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
248
249 $dbRes = $DB->Query($strSql_tmp);
250 $cnt = 0;
251 if ($arSqls["GROUPBY"] == '')
252 {
253 if ($arRes = $dbRes->Fetch())
254 {
255 $cnt = $arRes["CNT"];
256 }
257 }
258 else
259 {
260 // ТОЛЬКО ДЛЯ MYSQL!!! ДЛЯ ORACLE ДРУГОЙ КОД
261 $cnt = $dbRes->SelectedRowsCount();
262 }
263
264 $dbRes = new CDBResult();
265
266 //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
267
268 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
269 }
270 else
271 {
272 if (is_array($arNavStartParams) && (int)$arNavStartParams["nTopCount"] > 0)
273 {
274 $strSql .= "LIMIT ".(int)$arNavStartParams["nTopCount"];
275 }
276
277 //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
278
279 //$dbRes = $DB->Query($strSql);
280
281 if (CACHED_b_sonet_group_subjects == false || !$bShouldBeCached)
282 {
283 $dbRes = $DB->Query($strSql);
284 }
285 else
286 {
287 $arResult = array();
288 $dbRes = $DB->Query($strSql);
289 while ($ar = $dbRes->Fetch())
290 {
291 $arResult[] = $ar;
292 }
293
294 $CACHE_MANAGER->Set($cacheId, $arResult);
295
296 $dbRes = new CDBResult;
297 $dbRes->InitFromArray($arResult);
298 }
299 }
300
301 return $dbRes;
302 }
303}
$arResult
Определения generate_coupon.php:16
static getEqualityFields(&$fields)
Определения util.php:207
static processEqualityFieldsToInsert($fields1, &$insert)
Определения util.php:222
static Add($arFields)
Определения group_subject.php:10
static GetList($arOrder=Array("SORT"=> "ASC", "ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения group_subject.php:91
global $CACHE_MANAGER
Определения clear_component_cache.php:7
$arFields
Определения dblapprove.php:5
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
if($ajaxMode) $ID
Определения get_user.php:27
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
$order
Определения payment.php:8
$ar
Определения options.php:199
$i
Определения factura.php:643
</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."%"
Определения waybill.php:936
$arRes
Определения options.php:104
$site_id
Определения sonet_set_content_view.php:9
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168