1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
customrank.php
См. документацию.
1<?php
3
5{
6 var $LAST_ERROR = '';
7
8 public static function GetList($aSort = [], $aFilter = [])
9 {
10 $DB = CDatabase::GetModuleConnection('search');
11
12 $arFilter = [];
13 foreach ($aFilter as $key => $val)
14 {
15 $val = $DB->ForSql($val);
16 $key = mb_strtoupper($key);
17 if ($val == '')
18 {
19 continue;
20 }
21 switch ($key)
22 {
23 case 'SITE_ID':
24 case 'MODULE_ID':
25 case 'PARAM1':
26 case 'PARAM2':
27 case 'ITEM_ID':
28 case 'ID':
29 case 'APPLIED':
30 $arFilter[] = 'CR.' . $key . "='" . $val . "'";
31 break;
32 }
33 }
34
35 $arOrder = [];
36 foreach ($aSort as $key => $val)
37 {
38 $ord = (mb_strtoupper($val) <> 'ASC' ? 'DESC' : 'ASC');
39 $key = mb_strtoupper($key);
40 switch ($key)
41 {
42 case 'SITE_ID':
43 case 'MODULE_ID':
44 case 'PARAM1':
45 case 'PARAM2':
46 case 'ITEM_ID':
47 case 'ID':
48 case 'APPLIED':
49 case 'RANK':
50 $arOrder[] = 'CR.' . $key . ' ' . $ord;
51 break;
52 }
53 }
54
55 if (count($arOrder) == 0)
56 {
57 $arOrder = [
58 'CR.SITE_ID ASC'
59 , 'CR.MODULE_ID ASC'
60 , 'CR.PARAM1 DESC'
61 , 'CR.PARAM2 DESC'
62 , 'CR.ITEM_ID DESC'
63 ];
64 }
65 $sOrder = "\nORDER BY " . implode(', ', $arOrder);
66
67 if (count($arFilter) == 0)
68 {
69 $sFilter = '';
70 }
71 else
72 {
73 $sFilter = "\nWHERE " . implode("\nAND ", $arFilter);
74 }
75
76 $strSql = '
77 SELECT
78 CR.ID
79 ,CR.SITE_ID
80 ,CR.MODULE_ID
81 ,CR.PARAM1
82 ,CR.PARAM2
83 ,CR.ITEM_ID
84 ,CR.RANK
85 FROM
86 b_search_custom_rank CR
87 ' . $sFilter . $sOrder;
88
89 return $DB->Query($strSql);
90 }
91
92 public static function GetByID($ID)
93 {
94 $DB = CDatabase::GetModuleConnection('search');
95 $ID = intval($ID);
96
97 $strSql = '
98 SELECT CR.*
99 FROM b_search_custom_rank CR
100 WHERE CR.ID = ' . $ID . '
101 ';
102
103 return $DB->Query($strSql);
104 }
105
106 public static function Delete($ID)
107 {
108 $DB = CDatabase::GetModuleConnection('search');
109 $ID = intval($ID);
110
111 return $DB->Query('DELETE FROM b_search_custom_rank WHERE ID=' . $ID);
112 }
113
115 {
116 $this->LAST_ERROR = '';
117
118 if (is_set($arFields, 'SITE_ID') && $arFields['SITE_ID'] == '')
119 {
120 $this->LAST_ERROR .= GetMessage('customrank_error_site') . '<br>';
121 }
122 if (is_set($arFields, 'MODULE_ID') && $arFields['MODULE_ID'] == '')
123 {
124 $this->LAST_ERROR .= GetMessage('customrank_error_module') . '<br>';
125 }
126
127 if ($this->LAST_ERROR <> '')
128 {
129 return false;
130 }
131 else
132 {
133 return true;
134 }
135 }
136
137 function Add($arFields)
138 {
139 $DB = CDatabase::GetModuleConnection('search');
140
141 if (!$this->CheckFields($arFields))
142 {
143 return false;
144 }
145
146 return $DB->Add('b_search_custom_rank', $arFields);
147 }
148
150 {
151 $DB = CDatabase::GetModuleConnection('search');
152 $ID = intval($ID);
153
154 if (!$this->CheckFields($arFields))
155 {
156 return false;
157 }
158
159 unset($arFields['ID']);
160
161 $strUpdate = $DB->PrepareUpdate('b_search_custom_rank', $arFields);
162 if ($strUpdate != '')
163 {
164 $strSql =
165 'UPDATE b_search_custom_rank SET ' . $strUpdate . ' ' . 'WHERE ID=' . $ID;
166 return $DB->Query($strSql);
167 }
168 return true;
169 }
170
171 function StartUpdate()
172 {
173 $DB = CDatabase::GetModuleConnection('search');
174 $strSql = "
175 UPDATE b_search_custom_rank
176 SET APPLIED='N'
177 ";
178 $rs = $DB->Query($strSql);
179 if ($rs)
180 {
181 $strSql = '
182 UPDATE b_search_content
183 SET CUSTOM_RANK=0
184 WHERE CUSTOM_RANK<>0
185 ';
186 $rs = $DB->Query($strSql);
187 }
188 return $rs;
189 }
190
191 function NextUpdate()
192 {
193 $DB = CDatabase::GetModuleConnection('search');
194
195 $rs = $this->GetList(
196 [
197 'SITE_ID' => 'ASC',
198 'MODULE_ID' => 'ASC',
199 'PARAM1' => 'ASC',
200 'PARAM2' => 'ASC',
201 'ITEM_ID' => 'ASC',
202 ],
203 [
204 'APPLIED' => 'N',
205 ]
206 );
207 if ($ar = $rs->Fetch())
208 {
209 $strSql = '
210 UPDATE b_search_content
211 SET CUSTOM_RANK=' . intval($ar['RANK']) . '
212 WHERE CUSTOM_RANK<>' . intval($ar['RANK']) . "
213 AND EXISTS (
214 SELECT *
215 FROM b_search_content_site scs
216 WHERE scs.SEARCH_CONTENT_ID = b_search_content.ID
217 AND scs.SITE_ID = '" . $DB->ForSQL($ar['SITE_ID']) . "'
218 )
219 AND MODULE_ID='" . $DB->ForSQL($ar['MODULE_ID']) . "'
220 " . ($ar['PARAM1'] != '' ? "AND PARAM1='" . $DB->ForSQL($ar['PARAM1']) . "'" : '') . '
221 ' . ($ar['PARAM2'] != '' ? "AND PARAM2='" . $DB->ForSQL($ar['PARAM2']) . "'" : '') . '
222 ' . ($ar['ITEM_ID'] != '' ? "AND ITEM_ID='" . $DB->ForSQL($ar['ITEM_ID']) . "'" : '') . '
223 ';
224 $upd = $DB->Query($strSql);
225 if ($upd)
226 {
227 $upd = $this->Update($ar['ID'], ['APPLIED' => 'Y']);
228 }
229 else
230 {
231 $this->LAST_ERROR = GetMessage('customrank_error_update') . '<br>';
232 }
233 }
234
235 if ($this->LAST_ERROR == '')
236 {
237 $res = ['DONE' => 0, 'TODO' => 0];
238 $strSql = '
239 SELECT APPLIED,COUNT(*) C
240 FROM b_search_custom_rank
241 GROUP BY APPLIED
242 ';
243 $rs = $DB->Query($strSql);
244 while ($ar = $rs->Fetch())
245 {
246 if ($ar['APPLIED'] == 'Y')
247 {
248 $res['DONE'] = $ar['C'];
249 }
250 elseif ($ar['APPLIED'] == 'N')
251 {
252 $res['TODO'] = $ar['C'];
253 }
254 }
255 return $res;
256 }
257 else
258 {
259 return false;
260 }
261 }
262
263 public static function __GetParam($lang, $site_id, $module_id = false, $param1 = false, $param2 = false, $item_id = false)
264 {
265 $name = '';
266 if ($module_id == 'iblock' && CModule::IncludeModule('iblock'))
267 {
268 if ($item_id !== false)
269 {
270 $rs = CIBlockElement::GetByID($item_id);
271 if ($ar = $rs->GetNext())
272 {
273 $name = $ar['NAME'];
274 }
275 }
276 elseif ($param2 !== false)
277 {
278 $rs = CIBlock::GetByID($param2);
279 if ($ar = $rs->GetNext())
280 {
281 $name = $ar['NAME'];
282 }
283 }
284 elseif ($param1 !== false)
285 {
287 if (is_array($rs))
288 {
289 $name = $rs['NAME'];
290 }
291 }
292 else
293 {
294 $name = GetMessage('customrank_iblocks');
295 }
296 }
297 elseif ($module_id == 'forum' && CModule::IncludeModule('forum'))
298 {
299 if ($item_id !== false)
300 {
301 $name = '';
302 }
303 elseif ($param2 !== false)
304 {
305 $rs = CForumTopic::GetByID($param2);
306 if (is_array($rs))
307 {
308 $name = htmlspecialcharsex($rs['TITLE']);
309 }
310 }
311 elseif ($param1 !== false)
312 {
313 $rs = CForumNew::GetByID($param1);
314 if (is_array($rs))
315 {
316 $name = htmlspecialcharsex($rs['NAME']);
317 }
318 }
319 else
320 {
321 $name = GetMessage('customrank_forum');
322 }
323 }
324 elseif ($module_id == 'main')
325 {
326 if ($item_id !== false)
327 {
328 $name = '';
329 }
330 else
331 {
332 $name = GetMessage('customrank_files');
333 }
334 }
335 elseif ($module_id === false)
336 {
337 $rs = CSite::GetByID($site_id);
338 if ($ar = $rs->GetNext())
339 {
340 $name = $ar['NAME'];
341 }
342 }
343 else
344 {
345 $name = false;
346 }
347
348 return $name;
349 }
350
351 public static function ModulesList()
352 {
353 return array_merge(['main' => GetMessage('customrank_files')], CSearchParameters::GetModulesList());
354 }
355
356 public static function ModulesSelectBox($sFieldName, $sValue, $sDefaultValue = '', $sFuncName = '', $field = 'class="typeselect"')
357 {
358 $s = '<select name="' . $sFieldName . '" id="' . $sFieldName . '" ' . $field;
359 if ($sFuncName <> '')
360 {
361 $s .= ' OnChange="' . $sFuncName . '"';
362 }
363 $s .= '>' . "\n";
364
365 $s1 = '<option value="main"' . ($sValue == 'main' ? ' selected' : '') . '>' . GetMessage('customrank_files') . '</option>' . "\n";
366 foreach (CSearchParameters::GetModulesList() as $module_id => $module_name)
367 {
368 $s1 .= '<option value="' . $module_id . '"' . ($sValue == $module_id ? ' selected' : '') . '>' . htmlspecialcharsEx($module_name) . '</option>' . "\n";
369 }
370
371 if ($sDefaultValue <> '')
372 {
373 $s .= "<option value='NOT_REF'>" . htmlspecialcharsEx($sDefaultValue) . '</option>';
374 }
375
376 return $s . $s1 . '</select>';
377 }
378}
$module_id
Определения options.php:6
static GetByID($ID)
Определения forum_new.php:1399
static GetByID($ID, $arAddParams=array())
Определения topic.php:431
static GetByIDLang($ID, $LID, $bFindAny=true)
Определения iblocktype.php:274
Определения customrank.php:5
static Delete($ID)
Определения customrank.php:106
CheckFields($arFields)
Определения customrank.php:114
static __GetParam($lang, $site_id, $module_id=false, $param1=false, $param2=false, $item_id=false)
Определения customrank.php:263
static GetByID($ID)
Определения customrank.php:92
StartUpdate()
Определения customrank.php:171
$LAST_ERROR
Определения customrank.php:6
static ModulesList()
Определения customrank.php:351
static ModulesSelectBox($sFieldName, $sValue, $sDefaultValue='', $sFuncName='', $field='class="typeselect"')
Определения customrank.php:356
static GetList($aSort=[], $aFilter=[])
Определения customrank.php:8
Add($arFields)
Определения customrank.php:137
Update($ID, $arFields)
Определения customrank.php:149
NextUpdate()
Определения customrank.php:191
static GetModulesList()
Определения comp_parameters.php:145
$arFields
Определения dblapprove.php:5
$res
Определения filter_act.php:7
if($ajaxMode) $ID
Определения get_user.php:27
global $DB
Определения cron_frame.php:29
if(!defined('SITE_ID')) $lang
Определения include.php:91
htmlspecialcharsEx($str)
Определения tools.php:2685
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$name
Определения menu_edit.php:35
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$ar
Определения options.php:199
if(empty($signedUserToken)) $key
Определения quickway.php:257
</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
$val
Определения options.php:1793
$site_id
Определения sonet_set_content_view.php:9
$rs
Определения action.php:82
$arFilter
Определения user_search.php:106