1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
customrank.php
См. документацию.
1
<?php
2
IncludeModuleLangFile
(__FILE__);
3
4
class
CSearchCustomRank
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
114
function
CheckFields
(
$arFields
)
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
149
function
Update
(
$ID
,
$arFields
)
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
{
286
$rs
=
CIBlockType::GetByIDLang
($param1,
$lang
);
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
$module_id
Определения
options.php:6
CAllForumNew\GetByID
static GetByID($ID)
Определения
forum_new.php:1399
CAllForumTopic\GetByID
static GetByID($ID, $arAddParams=array())
Определения
topic.php:431
CIBlockType\GetByIDLang
static GetByIDLang($ID, $LID, $bFindAny=true)
Определения
iblocktype.php:274
CSearchCustomRank
Определения
customrank.php:5
CSearchCustomRank\Delete
static Delete($ID)
Определения
customrank.php:106
CSearchCustomRank\CheckFields
CheckFields($arFields)
Определения
customrank.php:114
CSearchCustomRank\__GetParam
static __GetParam($lang, $site_id, $module_id=false, $param1=false, $param2=false, $item_id=false)
Определения
customrank.php:263
CSearchCustomRank\GetByID
static GetByID($ID)
Определения
customrank.php:92
CSearchCustomRank\StartUpdate
StartUpdate()
Определения
customrank.php:171
CSearchCustomRank\$LAST_ERROR
$LAST_ERROR
Определения
customrank.php:6
CSearchCustomRank\ModulesList
static ModulesList()
Определения
customrank.php:351
CSearchCustomRank\ModulesSelectBox
static ModulesSelectBox($sFieldName, $sValue, $sDefaultValue='', $sFuncName='', $field='class="typeselect"')
Определения
customrank.php:356
CSearchCustomRank\GetList
static GetList($aSort=[], $aFilter=[])
Определения
customrank.php:8
CSearchCustomRank\Add
Add($arFields)
Определения
customrank.php:137
CSearchCustomRank\Update
Update($ID, $arFields)
Определения
customrank.php:149
CSearchCustomRank\NextUpdate
NextUpdate()
Определения
customrank.php:191
CSearchParameters\GetModulesList
static GetModulesList()
Определения
comp_parameters.php:145
$arFields
$arFields
Определения
dblapprove.php:5
$res
$res
Определения
filter_act.php:7
$ID
if($ajaxMode) $ID
Определения
get_user.php:27
$DB
global $DB
Определения
cron_frame.php:29
$lang
if(!defined('SITE_ID')) $lang
Определения
include.php:91
htmlspecialcharsEx
htmlspecialcharsEx($str)
Определения
tools.php:2685
IncludeModuleLangFile
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения
tools.php:3778
is_set
is_set($a, $k=false)
Определения
tools.php:2133
GetMessage
GetMessage($name, $aReplace=null)
Определения
tools.php:3397
$name
$name
Определения
menu_edit.php:35
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
$ar
$ar
Определения
options.php:199
$key
if(empty($signedUserToken)) $key
Определения
quickway.php:257
count
</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
$val
Определения
options.php:1793
$site_id
$site_id
Определения
sonet_set_content_view.php:9
$rs
$rs
Определения
action.php:82
$arFilter
$arFilter
Определения
user_search.php:106
bitrix
modules
search
classes
general
customrank.php
Создано системой
1.14.0