Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/grain.iiko/lib/ |
Upload File : |
<?php namespace Grain\Iiko; //Loc::loadMessages(__FILE__); use \Bitrix\Main\Config\Option; use \Bitrix\Main\Loader; class Tools { public static function getCode($name,$iblockId,$entity,$existingId=0) { static $codeSettings = false; if($codeSettings===false) { $codeSettings = array(); $codeSettings['element'] = \Bitrix\Iblock\IblockFieldTable::getList(array( 'filter' => array( 'IBLOCK_ID' => $iblockId, 'FIELD_ID' => 'CODE', ) ))->fetch(); if($codeSettings['element']) $codeSettings['element']['DEFAULT_VALUE'] = unserialize($codeSettings['element']['DEFAULT_VALUE']); $codeSettings['element']['DEFAULT_VALUE'] = is_array($codeSettings['element']['DEFAULT_VALUE'])?$codeSettings['element']['DEFAULT_VALUE']:array(); $codeSettings['section'] = \Bitrix\Iblock\IblockFieldTable::getList(array( 'filter' => array( 'IBLOCK_ID' => $iblockId, 'FIELD_ID' => 'SECTION_CODE', ) ))->fetch(); if($codeSettings['section']) $codeSettings['section']['DEFAULT_VALUE'] = unserialize($codeSettings['section']['DEFAULT_VALUE']); $codeSettings['section']['DEFAULT_VALUE'] = is_array($codeSettings['section']['DEFAULT_VALUE'])?$codeSettings['section']['DEFAULT_VALUE']:array(); } $settings = $codeSettings[$entity]; if($settings['IS_REQUIRED']!='Y' && $settings['DEFAULT_VALUE']['TRANSLITERATION']!='Y') return false; $code = \CUtil::translit($name, LANGUAGE_ID, array( "max_len" => intval($settings['DEFAULT_VALUE']['TRANS_LEN'])>0?intval($settings['DEFAULT_VALUE']['TRANS_LEN']):100, "change_case" => $settings['DEFAULT_VALUE']['TRANS_CASE'], "replace_space" => $settings['DEFAULT_VALUE']['TRANS_SPACE'], "replace_other" => $settings['DEFAULT_VALUE']['TRANS_OTHER'], "delete_repeat_replace" => $settings['DEFAULT_VALUE']['TRANS_EAT']=='Y', )); if($settings['DEFAULT_VALUE']['UNIQUE']=='Y') { $codeBase = $code; $i=1; while($i<10000) { $code = $codeBase.($i>1?$settings['DEFAULT_VALUE']['TRANS_SPACE'].$i:""); if($entity=='element') { $filter = array( 'IBLOCK_ID'=>$iblockId, '=CODE'=>$code, ); if($existingId) $filter['!ID'] = $existingId; $result = \Bitrix\Iblock\ElementTable::getList(array( 'select' => array('CNT'), 'runtime' => array( new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(*)'), ), 'filter' => $filter, )); if($row = $result->Fetch()) { if(intval($row['CNT'])<=0) break; } else break; } elseif($entity=='section') { $filter = array( 'IBLOCK_ID'=>$iblockId, '=CODE'=>$code, ); if($existingId) $filter['!ID'] = $existingId; $result = \Bitrix\Iblock\SectionTable::getList(array( 'select' => array('CNT'), 'runtime' => array( new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(*)'), ), 'filter' => $filter, )); if($row = $result->Fetch()) { if(intval($row['CNT'])<=0) break; } else break; } else break; $i++; } } return $code; } public static function getIgnoredPaysystemId($restaurantId) { $ignoredPaySystemId = array(); if($discountPaySystemId=intval(Option::get('grain.iiko','iiko_paysystem_discount_'.$restaurantId))) $ignoredPaySystemId[] = $discountPaySystemId; if( Loader::includeModule('grain.iikocard') && ($iikoCardPaySystemId=\Grain\IikoCard\Helper::getPaySystemId($restaurantId)) ) $ignoredPaySystemId[] = $iikoCardPaySystemId; return $ignoredPaySystemId; } public static function getMeasure($productId) { static $measures = array(); if(!Loader::includeModule('catalog')) return array(); $rsProduct = \Bitrix\Catalog\ProductTable::getList(array( 'select' => array('MEASURE'), 'filter' => array('=ID'=>intval($productId)), 'limit' => 1, )); if(!$product=$rsProduct->fetch()) return array(); if(!$product['MEASURE']) return array(); if(array_key_exists($product['MEASURE'], $measures)) return $measures[$product['MEASURE']]; $rsMeasure = \Bitrix\Catalog\MeasureTable::getList(array( 'filter' => array('=ID'=>$product['MEASURE']), 'select' => array('ID', 'CODE', 'MEASURE_TITLE','SYMBOL','SYMBOL_LETTER_INTL'), 'limit' => 1, )); if($measure=$rsMeasure->fetch()) { if (empty($measure['MEASURE_TITLE'])) { $measure['MEASURE_TITLE'] = \CCatalogMeasureClassifier::getMeasureTitle($measure['CODE'], 'MEASURE_TITLE'); } if (empty($measure['SYMBOL'])) { $measure['SYMBOL'] = \CCatalogMeasureClassifier::getMeasureTitle($measure['CODE'], 'SYMBOL_RUS'); } $measures[$product['MEASURE']] = $measure; } return $measures[$product['MEASURE']]; } public static function getMeasureRatio($productId) { $measureRatio = 1; if(!Loader::includeModule('catalog')) return $measureRatio; $ratioIterator = \Bitrix\Catalog\MeasureRatioTable::getList(array( 'select' => array('PRODUCT_ID', 'RATIO'), 'filter' => array('=PRODUCT_ID' => intval($productId), '=IS_DEFAULT' => 'Y') )); if(($measureRatioRow = $ratioIterator->fetch())) { $ratioInt = (int)$measureRatioRow['RATIO']; $ratioFloat = (float)$measureRatioRow['RATIO']; $ratioResult = ($ratioFloat > $ratioInt ? $ratioFloat : $ratioInt); if($ratioResult>=CATALOG_VALUE_EPSILON) $measureRatio = $ratioResult; } return $measureRatio; } }