1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
helper.php
См. документацию.
1<?
3
5{
6 public static function IsAssociativeArray($ar)
7 {
8 if (count($ar) <= 0)
9 return false;
10
11 $fl = false;
12
13 $arKeys = array_keys($ar);
14 $ind = -1;
15 foreach ($arKeys as $key)
16 {
17 $ind++;
18 if ($key."!" !== $ind."!" && "".$key !== "n".$ind)
19 {
20 $fl = true;
21 break;
22 }
23 }
24
25 return $fl;
26 }
27
35 public static function WriteToLog($text, $arVars = array(), $code = "")
36 {
37 $filename = $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale.log";
38
39 if ($f = fopen($filename, "a"))
40 {
41 fwrite($f, date("Y-m-d H:i:s")." - ".$code." - ".$text."\n");
42
43 if (is_array($arVars))
44 {
45 foreach ($arVars as $varName => $varData)
46 {
47 fwrite($f, $varName.": ");
48 fwrite($f, print_r($varData, true));
49 fwrite($f, "\n");
50 }
51 }
52
53 fwrite($f, "\n");
54 fclose($f);
55 }
56 }
57
66 public static function getAdminHtml($fieldId, $arField, $fieldName, $formName)
67 {
68 $arField["VALUE"] = CSaleDeliveryHelper::getConfValue($arField);
69 $resultHtml = '';
70 $name = htmlspecialcharsbx($fieldName.($fieldId <> '' ? '['.$fieldId.']' : ''));
71
72 if(isset($arField['PRE_TEXT']))
73 $resultHtml = $arField['PRE_TEXT'].' ';
74
75 if(isset($arField['BLOCK_HIDEABLE']))
76 $resultHtml .= '<a href="javascript:void(0);" style="border-bottom: 1px dashed; text-decoration: none;">';
77
78 switch ($arField["TYPE"])
79 {
80 case "TEXT_RO": //read only text
81
82 $resultHtml .= htmlspecialcharsbx($arField["VALUE"]);
83
84 break;
85
86 case "CHECKBOX":
87
88 $resultHtml .= '<input '.
89 'type="checkbox" '.
90 'name="'.$name.'" '.
91 'value="Y" '.
92 ($arField["VALUE"] == "Y" ? "checked=\"checked\"" : "");
93
94 if(isset($arField['HIDE_BY_NAMES']) && is_array($arField['HIDE_BY_NAMES']))
95 $resultHtml .= 'onclick="hideFormElementsByNames(this, '.CUtil::PhpToJSObject($arField['HIDE_BY_NAMES']).');"';
96
97 $resultHtml .= '/>';
98
99 if(isset($arField['HIDE_BY_NAMES']) && is_array($arField['HIDE_BY_NAMES']))
100 {
101 $resultHtml .= '
102 <script>
103 BX.ready(
104 function(){
105 var cbObj = document.forms["'.$formName.'"]["'.$name.'"];
106
107 if(cbObj)
108 hideFormElementsByNames(cbObj, '.CUtil::PhpToJSObject($arField['HIDE_BY_NAMES']).');
109 }
110 );
111 </script>';
112 }
113
114 break;
115
116 case "RADIO":
117
118 foreach ($arField["VALUES"] as $value => $title)
119 {
120 $resultHtml .= '<input type="radio"
121 id="hc_'.htmlspecialcharsbx($fieldId).'_'.htmlspecialcharsbx($value).'"'.
122 'name="'.$name.'" '.
123 'value="'.htmlspecialcharsbx($value).'"'.
124 ($value == $arField["VALUE"] ? " checked=\"checked\"" : "").' />'.
125 '<label for="hc_'.htmlspecialcharsbx($fieldId).'_'.htmlspecialcharsbx($value).'">'.
126 htmlspecialcharsbx($title).'</label><br />';
127 }
128
129 break;
130
131 case "PASSWORD":
132
133 $resultHtml .= '<input '.
134 'type="password" '.
135 'name="'.$name.'" '.
136 'value="'.htmlspecialcharsbx($arField["VALUE"]).'" />';
137
138 break;
139
140 case "DROPDOWN":
141
142 $resultHtml .= '<select name="'.$name.'" ';
143
144 if(isset($arField['ONCHANGE']))
145 $resultHtml .= ' onchange = "'.$arField['ONCHANGE'].'"';
146
147 $resultHtml .='>';
148
149 foreach ($arField["VALUES"] as $value => $title)
150 {
151 $resultHtml .= '<option '.
152 'value="'.htmlspecialcharsbx($value).'"'.
153 ($value == $arField["VALUE"] ? " selected=\"selected\"" : "").'>'.
155 '</option>';
156 }
157
158 $resultHtml .= '</select>';
159
160 break;
161
162 case "MULTISELECT":
163 $resultHtml .= '<select name="'.$name.'" multiple="multiple">';
164
165 foreach ($arField["VALUES"] as $value => $title)
166 $resultHtml .= '<option '.
167 'value="'.htmlspecialcharsbx($value).'"'.
168 (in_array($value, $arField["VALUE"]) ? " selected=\"selected\"" : "").'>'.
170 '</option>';
171
172 $resultHtml .= '</select>';
173 break;
174
175 case "SECTION":
176 case "TEXT_CENTERED":
177 case "MULTI_CONTROL_STRING":
178
179 $resultHtml .= htmlspecialcharsbx($arField["TITLE"]);
180
181 break;
182
183 case "CUSTOM":
184 $resultHtml .= $arField["VALUE"];
185 break;
186
187 default:
188 $resultHtml .= '<input type="text"'.
189 'name="'.$name.'" '.
190 'value="'.htmlspecialcharsbx($arField["VALUE"]).'" '.
191 (isset($arField["SIZE"]) ? 'size="'.$arField["SIZE"].'"' : '').
192 '/>';
193 }
194
195 if(isset($arField['BLOCK_HIDEABLE']))
196 $resultHtml .= '</a>';
197
198 if(isset($arField['POST_TEXT'])):
199 $resultHtml .= ' '.$arField['POST_TEXT'];
200 endif;
201
202 return $resultHtml;
203 }
204
205 public static function getAdminMultilineControl($arMultiControlQuery)
206 {
207 $resultHtml = '';
208
209 if(is_array($arMultiControlQuery))
210 {
211 reset($arMultiControlQuery);
212 $key = key($arMultiControlQuery);
213 if(isset($arMultiControlQuery[$key]['ITEMS']) && isset($arMultiControlQuery[$key]['CONFIG']))
214 {
215 $multiHtml = implode(' ', $arMultiControlQuery[$key]['ITEMS']);
216 $resultHtml = self::wrapAdminHtml($multiHtml, $arMultiControlQuery[$key]['CONFIG']);
217 }
218 }
219
220 return $resultHtml;
221 }
222
223 public static function wrapAdminHtml($controlHtml, &$arConfig)
224 {
225 $wrapHtml = '';
226
227 $tdStyle = isset($arConfig["TOP_LINE"]) && $arConfig["TOP_LINE"] == "Y" ? ' border-top: 1px solid #DDDDDD;' : '';
228
229 switch ($arConfig["TYPE"])
230 {
231 case "SECTION":
232 $wrapHtml .= '<tr class="heading"><td colspan="2">'.$controlHtml.'</td></tr>';
233 break;
234
235 case "TEXT_CENTERED":
236 $wrapHtml .= '<tr';
237
238 if(isset($arConfig["BLOCK_HIDEABLE"]))
239 $wrapHtml .= ' onclick="BX.Sale.PaySystem.toggleNextSiblings(this,'.intval($arConfig["BLOCK_LENGTH"]).');" class="ps-admin-hide" ';
240
241 $wrapHtml .= '><td style="text-align: center; font-weight: bold;'.$tdStyle.'" colspan="2">'.$controlHtml;
242
243 if(isset($arConfig["BLOCK_DELETABLE"]))
244 $wrapHtml .= '&nbsp;&nbsp;<a href="javascript:void(0);" onclick="BX.Sale.PaySystem.deleteObjectAndNextSiblings(this,'.intval($arConfig["BLOCK_LENGTH"]).',2);" style="border-bottom: 1px dashed; text-decoration: none;">'.GetMessage("SALE_HELPER_DELETE").'</a>';
245
246 $wrapHtml .= '</td></tr>';
247 break;
248
249 default:
250 $wrapHtml .= '<tr>'.
251 '<td style="'.$tdStyle.'" class="field-name"'.(($arConfig["TYPE"] == "MULTISELECT") ? ' valign="top"' : '').' width="40%" align="right">'.htmlspecialcharsbx($arConfig["TITLE"]).':</td>'.
252 '<td style="'.$tdStyle.'" valign="top" width="60%">'.
253 $controlHtml.
254 '</td>'.
255 '</tr>';
256 }
257
258 return $wrapHtml;
259 }
260
261 public static function getOptionOrImportValues($optName, $importFuncName = false, $arFuncParams = array(), $siteId = "")
262 {
263 $arResult = array();
264
265 if(trim($optName) !== '')
266 {
267 $optValue = COption::GetOptionString('sale', $optName, '', $siteId);
268 $arOptValue = unserialize($optValue, ['allowed_classes' => false]);
269
270 if(empty($arOptValue))
271 {
272 if($importFuncName !== false && is_callable($importFuncName))
273 {
274 $arResult = call_user_func_array($importFuncName, $arFuncParams);
275 COption::SetOptionString('sale', $optName, serialize($arResult), false, $siteId);
276 }
277 }
278 else
279 {
280 $arResult = $arOptValue;
281 }
282 }
283
284 return $arResult;
285 }
286
287 private static function getShopLocationParams($siteId = false): array
288 {
289 $loc_diff = COption::GetOptionString('sale', 'ADDRESS_different_set', 'N');
290
291 if ($loc_diff == "Y" && ($siteId !== false || defined('SITE_ID')))
292 {
293 if($siteId === false)
295
296 $locId = COption::GetOptionString('sale', 'location', '', $siteId);
297 $locZip = COption::GetOptionString('sale', 'location_zip', '', $siteId);
298 }
299 else
300 {
301 $locId = COption::GetOptionString('sale', 'location', '');
302 $locZip = COption::GetOptionString('sale', 'location_zip', '');
303
304 if($locId == '')
305 {
306 static $defSite = null;
307 if (!isset($defSite))
308 $defSite = CSite::GetDefSite();
309
310 if($defSite)
311 {
312 $locId = COption::GetOptionString('sale', 'location', '', $defSite);
313 $locZip = COption::GetOptionString('sale', 'location_zip', '', $defSite);
314 }
315 }
316 }
317
318 if((string)$locId !== '')
319 {
321
322 if (is_array($location) && (int)$location['ID'])
323 {
324 $locId = $location['ID'];
325 }
326 }
327
328 return [
329 'ID' => $locId,
330 'ZIP' => $locZip,
331 ];
332 }
333
334 public static function getShopLocationId($siteId)
335 {
336 static $shopLocationId = array();
337
338 if(!isset($shopLocationId[$siteId]))
339 {
340 $locParams = self::getShopLocationParams($siteId);
341
342 if(isset($locParams['ID']) && $locParams['ID'] <> '')
343 $shopLocationId[$siteId] = $locParams['ID'];
344 }
345
346 return $shopLocationId[$siteId] ?? '';
347 }
348
349 public static function getShopLocationZIP()
350 {
351 static $shopLocationZip = '';
352
353 if($shopLocationZip == '')
354 {
355 $locParams = self::getShopLocationParams();
356
357 if(isset($locParams['ZIP']) && $locParams['ZIP'] <> '')
358 $shopLocationZip = strval($locParams['ZIP']);
359 }
360
361 return $shopLocationZip;
362 }
363
364 public static function getShopLocation($siteId = false)
365 {
366 static $shopLocation = array();
367
368 if(empty($shopLocation))
369 {
370 $shopLocationId = self::getShopLocationId($siteId);
371
372 if(intval($shopLocationId) > 0)
373 $shopLocation = CSaleLocation::GetByID($shopLocationId);
374 }
375
376 return $shopLocation;
377 }
378
379 public static function getCsvObject($filePath)
380 {
381 $csvFile = new CCSVData();
382 $csvFile->LoadFile($filePath);
383 $csvFile->SetFieldsType("R");
384 $csvFile->SetFirstHeader(false);
385 $csvFile->SetDelimiter(",");
386
387 return $csvFile;
388 }
389
398 public static function getFileInfo($fileId, $arSize = array("WIDTH" => 90, "HEIGHT" => 90))
399 {
400 $resultHTML = "";
401 $arFile = CFile::GetFileArray($fileId);
402 if ($arFile)
403 {
404 $is_image = CFile::IsImage($arFile["FILE_NAME"], $arFile["CONTENT_TYPE"]);
405 if ($is_image)
406 $resultHTML = CFile::ShowImage($arFile["ID"], $arSize["WIDTH"], $arSize["HEIGHT"], "border=0", $arFile["SRC"], true);
407 else
408 $resultHTML = '<a href="'.$arFile["SRC"].'">'.$arFile["ORIGINAL_NAME"].'</a>';
409 }
410 return $resultHTML;
411 }
412
413 public static function getIblockPropInfo($value, $propData, $arSize = array("WIDTH" => 90, "HEIGHT" => 90))
414 {
415 $res = "";
416
417 if ($propData["MULTIPLE"] == "Y")
418 {
419 $arVal = array();
420 if (!is_array($value))
421 {
422 if (mb_strpos($value, ",") !== false)
423 $arVal = explode(",", $value);
424 else
425 $arVal[] = $value;
426 }
427 else
428 $arVal = $value;
429
430 if (count($arVal) > 0)
431 {
432 foreach ($arVal as $key => $val)
433 {
434 if ($propData["PROPERTY_TYPE"] == "F")
435 {
436 if ($res <> '')
437 $res .= "<br/> ".CSaleHelper::getFileInfo(trim($val), $arSize);
438 else
439 $res = CSaleHelper::getFileInfo(trim($val), $arSize);
440 }
441 else
442 {
443 if ($res <> '')
444 $res .= ", ".$val;
445 else
446 $res = $val;
447 }
448 }
449 }
450 }
451 else
452 {
453 if ($propData["PROPERTY_TYPE"] == "F")
454 $res = CSaleHelper::getFileInfo($value, $arSize);
455 else
456 $res = $value;
457 }
458
459 return $res;
460 }
461
462 public static function getLocationByIdHitCached($id)
463 {
464 static $result = array();
465
466 if(!isset($result[$id]))
468
469 return $result[$id];
470 }
471}
$arVal
Определения options.php:1785
$arResult
Определения generate_coupon.php:16
static GetOptionString($module_id, $name, $def="", $site=false, $bExactSite=false)
Определения option.php:8
static GetByIDForLegacyDelivery($primary, $strLang=LANGUAGE_ID)
Определения location.php:2160
static GetDefSite($LID=false)
Определения site.php:760
Определения csv_data.php:10
static getConfValue($arField)
Определения delivery_helper.php:148
Определения helper.php:5
static getCsvObject($filePath)
Определения helper.php:379
static wrapAdminHtml($controlHtml, &$arConfig)
Определения helper.php:223
static getShopLocation($siteId=false)
Определения helper.php:364
static getIblockPropInfo($value, $propData, $arSize=array("WIDTH"=> 90, "HEIGHT"=> 90))
Определения helper.php:413
static getAdminMultilineControl($arMultiControlQuery)
Определения helper.php:205
static getLocationByIdHitCached($id)
Определения helper.php:462
static getShopLocationId($siteId)
Определения helper.php:334
static getFileInfo($fileId, $arSize=array("WIDTH"=> 90, "HEIGHT"=> 90))
Определения helper.php:398
static getOptionOrImportValues($optName, $importFuncName=false, $arFuncParams=array(), $siteId="")
Определения helper.php:261
static getShopLocationZIP()
Определения helper.php:349
static WriteToLog($text, $arVars=array(), $code="")
Определения helper.php:35
static IsAssociativeArray($ar)
Определения helper.php:6
static getAdminHtml($fieldId, $arField, $fieldName, $formName)
Определения helper.php:66
static GetByID($primary, $strLang=LANGUAGE_ID)
Определения location.php:118
$f
Определения component_props.php:52
$filename
Определения file_edit.php:47
</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
$result
Определения get_property_values.php:14
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
endif
Определения csv_new_setup.php:990
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения options.php:195
$siteId
Определения ajax.php:8
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$name
Определения menu_edit.php:35
$ar
Определения options.php:199
if(empty($signedUserToken)) $key
Определения quickway.php:257
$text
Определения template_pdf.php:79
</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
$title
Определения pdf.php:123
$val
Определения options.php:1793
$location
Определения options.php:2729
const SITE_ID
Определения sonet_set_content_view.php:12