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/cvetdv.ru/bitrix/modules/goodde.yandexturboapi/admin/ |
Upload File : |
<? namespace Goodde\YandexTurbo; use Bitrix\Main, Bitrix\Currency, Bitrix\Main\Loader, Bitrix\Main\Localization\Loc; if(!Loader::includeModule ('iblock')) { ShowError(Loc::getMessage('IBLOCK_MODULE_NOT_INSTALLED')); return; } Loc::loadMessages(__FILE__); class CIBlockPropertyUserID { public static function GetUserTypeDescription() { return array( "PROPERTY_TYPE" => "S", "USER_TYPE" => "UserID", "DESCRIPTION" => Loc::getMessage("IBLOCK_PROP_USERID_DESC"), "GetAdminListViewHTML" => array("CIBlockPropertyUserID","GetAdminListViewHTML"), "GetPropertyFieldHtml" => array("CIBlockPropertyUserID","GetPropertyFieldHtml"), "ConvertToDB" => array("CIBlockPropertyUserID","ConvertToDB"), "ConvertFromDB" => array("CIBlockPropertyUserID","ConvertFromDB"), "GetSettingsHTML" => array("CIBlockPropertyUserID","GetSettingsHTML"), ); } public static function GetAdminListViewHTML($arProperty, $value, $strHTMLControlName) { static $cache = array(); $value = intVal($value["VALUE"]); if(!array_key_exists($value, $cache)) { $rsUsers = CUser::GetList($by, $order, array("ID" => $value)); $cache[$value] = $rsUsers->Fetch(); } $arUser = $cache[$value]; if($arUser) { return "[<a title='".Loc::getMessage("MAIN_EDIT_USER_PROFILE")."' href='user_edit.php?ID=".$arUser["ID"]."&lang=".LANG."'>".$arUser["ID"]."</a>] (".htmlspecialcharsbx($arUser["LOGIN"]).") ".htmlspecialcharsbx($arUser["NAME"])." ".htmlspecialcharsbx($arUser["LAST_NAME"]); } else return " "; } public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName) { global $USER; $default_value = intVal($value["VALUE"]); $res = ""; if ($default_value == $USER->GetID()) { $select = "CU"; $res = "[<a title='".Loc::getMessage("MAIN_EDIT_USER_PROFILE")."' href='/bitrix/admin/user_edit.php?ID=".$USER->GetID()."&lang=".LANG."'>".$USER->GetID()."</a>] (".htmlspecialcharsbx($USER->GetLogin()).") ".htmlspecialcharsbx($USER->GetFirstName())." ".htmlspecialcharsbx($USER->GetLastName()); } elseif ($default_value > 0) { $select = "SU"; $rsUsers = \CUser::GetList($by, $order, array("ID" => $default_value)); if ($arUser = $rsUsers->Fetch()) $res = "[<a title='".Loc::getMessage("MAIN_EDIT_USER_PROFILE")."' href='/bitrix/admin/user_edit.php?ID=".$arUser["ID"]."&lang=".LANG."'>".$arUser["ID"]."</a>] (".htmlspecialcharsbx($arUser["LOGIN"]).") ".htmlspecialcharsbx($arUser["NAME"])." ".htmlspecialcharsbx($arUser["LAST_NAME"]); else $res = " ".Loc::getMessage("MAIN_NOT_FOUND"); } else { $select = "none"; $default_value = ""; } $name_x = preg_replace("/([^a-z0-9])/is", "x", $strHTMLControlName["VALUE"]); if (mb_strlen(trim($strHTMLControlName["FORM_NAME"])) <= 0) $strHTMLControlName["FORM_NAME"] = "form_element"; ob_start(); ?><select id="SELECT<?=htmlspecialcharsbx($strHTMLControlName["VALUE"])?>" name="SELECT<?=htmlspecialcharsbx($strHTMLControlName["VALUE"])?>" onchange="if(this.value == 'none') { var v=document.getElementById('<?=htmlspecialcharsbx($strHTMLControlName["VALUE"])?>'); v.value = ''; v.readOnly = true; document.getElementById('FindUser<?=$name_x?>').disabled = true; } else { var v=document.getElementById('<?=htmlspecialcharsbx($strHTMLControlName["VALUE"])?>'); v.value = this.value == 'CU'?'<?=$USER->GetID()?>':''; v.readOnly = false; document.getElementById('FindUser<?=$name_x?>').disabled = false; }"> <option value="none"<?if($select=="none")echo " selected"?>><?=Loc::getMessage("IBLOCK_PROP_USERID_NONE")?></option> <option value="CU"<?if($select=="CU")echo " selected"?>><?=Loc::getMessage("IBLOCK_PROP_USERID_CURR")?></option> <option value="SU"<?if($select=="SU")echo " selected"?>><?=Loc::getMessage("IBLOCK_PROP_USERID_OTHR")?></option> </select> <?echo self::FindUserIDNew(htmlspecialcharsbx($strHTMLControlName["VALUE"]), $value["VALUE"], $res, htmlspecialcharsEx($strHTMLControlName["FORM_NAME"]), $select); $return = ob_get_contents(); ob_end_clean(); return $return; } public static function ConvertToDB($arProperty, $value) { $value["VALUE"] = intval($value["VALUE"]); if($value["VALUE"] <= 0) $value["VALUE"] = ""; return $value; } public static function ConvertFromDB($arProperty, $value) { $value["VALUE"] = intval($value["VALUE"]); if($value["VALUE"] <= 0) $value["VALUE"] = ""; return $value; } public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields) { $arPropertyFields = array( "HIDE" => array("WITH_DESCRIPTION"), ); return ''; } public static function FindUserIDNew($tag_name, $tag_value, $user_name="", $form_name = "form1", $select="none", $tag_size = "3", $tag_maxlength="", $button_value = "...", $tag_class="typeinput", $button_class="tablebodybutton", $search_page="/bitrix/admin/user_search.php") { global $APPLICATION, $USER; $tag_name_x = preg_replace("/([^a-z0-9])/is", "x", $tag_name); $tag_name_escaped = \CUtil::JSEscape($tag_name); if($APPLICATION->GetGroupRight("main") >= "R") { $strReturn = " <input type=\"text\" name=\"".$tag_name."\" id=\"".$tag_name."\" value=\"".($select=="none"?"":$tag_value)."\" size=\"".$tag_size."\" maxlength=\"".$tag_maxlength."\" class=\"".$tag_class."\"> <IFRAME style=\"width:0px; height:0px; border: 0px\" src=\"javascript:void(0)\" name=\"hiddenframe".$tag_name."\" id=\"hiddenframe".$tag_name."\"></IFRAME> <input class=\"".$button_class."\" type=\"button\" name=\"FindUser".$tag_name_x."\" id=\"FindUser".$tag_name_x."\" OnClick=\"window.open('".$search_page."?lang=".LANGUAGE_ID."&FN=".$form_name."&FC=".$tag_name_escaped."', '', 'scrollbars=yes,resizable=yes,width=760,height=500,top='+Math.floor((screen.height - 560)/2-14)+',left='+Math.floor((screen.width - 760)/2-5));\" value=\"".$button_value."\" ".($select=="none"?"disabled":"")."> <span id=\"div_".$tag_name."\">".$user_name."</span> <script> "; if($user_name=="") $strReturn.= "var tv".$tag_name_x."='';\n"; else $strReturn.= "var tv".$tag_name_x."='".\CUtil::JSEscape($tag_value)."';\n"; $strReturn.= " function Ch".$tag_name_x."() { var DV_".$tag_name_x."; DV_".$tag_name_x." = document.getElementById(\"div_".$tag_name_escaped."\"); if (!!DV_".$tag_name_x.") { if ( document.".$form_name." && document.".$form_name."['".$tag_name_escaped."'] && typeof tv".$tag_name_x." != 'undefined' && tv".$tag_name_x." != document.".$form_name."['".$tag_name_escaped."'].value ) { tv".$tag_name_x."=document.".$form_name."['".$tag_name_escaped."'].value; if (tv".$tag_name_x."!='') { DV_".$tag_name_x.".innerHTML = '<i>".Loc::getMessage("MAIN_WAIT")."</i>'; if (tv".$tag_name_x."!=".intVal($USER->GetID()).") { document.getElementById(\"hiddenframe".$tag_name_escaped."\").src='/bitrix/admin/get_user.php?ID=' + tv".$tag_name_x."+'&strName=".$tag_name_escaped."&lang=".LANG.(defined("ADMIN_SECTION") && ADMIN_SECTION===true?"&admin_section=Y":"")."'; document.getElementById('SELECT".$tag_name_escaped."').value = 'SU'; } else { DV_".$tag_name_x.".innerHTML = '".\CUtil::JSEscape("[<a title=\"".Loc::getMessage("MAIN_EDIT_USER_PROFILE")."\" class=\"tablebodylink\" href=\"/bitrix/admin/user_edit.php?ID=".$USER->GetID()."&lang=".LANG."\">".$USER->GetID()."</a>] (".htmlspecialcharsbx($USER->GetLogin()).") ".htmlspecialcharsbx($USER->GetFirstName())." ".htmlspecialcharsbx($USER->GetLastName()))."'; document.getElementById('SELECT".$tag_name_escaped."').value = 'CU'; } } else { DV_".$tag_name_x.".innerHTML = ''; document.getElementById('SELECT".$tag_name_escaped."').value = 'SU'; } } else if ( DV_".$tag_name_x." && DV_".$tag_name_x.".innerHTML.length > 0 && document.".$form_name." && document.".$form_name."['".$tag_name_escaped."'] && document.".$form_name."['".$tag_name_escaped."'].value == '' ) { document.getElementById('div_".$tag_name."').innerHTML = ''; } } setTimeout(function(){Ch".$tag_name_x."()},1000); } Ch".$tag_name_x."(); //--> </script> "; } else { $strReturn = " <input type=\"text\" name=\"$tag_name\" id=\"$tag_name\" value=\"$tag_value\" size=\"$tag_size\" maxlength=\"strMaxLenght\"> <input type=\"button\" name=\"FindUser".$tag_name_x."\" id=\"FindUser".$tag_name_x."\" OnClick=\"window.open('".$search_page."?lang=".LANGUAGE_ID."&FN=$form_name&FC=$tag_name_escaped', '', 'scrollbars=yes,resizable=yes,width=760,height=560,top='+Math.floor((screen.height - 560)/2-14)+',left='+Math.floor((screen.width - 760)/2-5));\" value=\"$button_value\"> $user_name "; } return $strReturn; } } class CGooddeYandexTurboTools { public static $useCatalog; public static $iblockInfo; public static $useOffers; public static function isCatalog() { if(!isset($useCatalog)) self::$useCatalog = Loader::includeModule('catalog'); return self::$useCatalog; } public static function getIblockInfo($iblockId) { if(!isset(self::$iblockInfo) && self::$useCatalog) { $catalog = \CCatalogSku::GetInfoByIBlock($iblockId); if(!empty($catalog) && is_array($catalog)) { self::$iblockInfo = $catalog; self::$useOffers = ($catalog['CATALOG_TYPE'] == \CCatalogSku::TYPE_FULL || $catalog['CATALOG_TYPE'] == \CCatalogSku::TYPE_PRODUCT); } } } public static function construct() { self::isCatalog(); } public static function ShowElementField($name, $property_fields, $values, $bVarsFromForm = false) { global $bCopy; $index = 0; $show = true; $MULTIPLE_CNT = intval($property_fields["MULTIPLE_CNT"]); if ($MULTIPLE_CNT <= 0 || $MULTIPLE_CNT > 30) $MULTIPLE_CNT = 5; $bInitDef = $bInitDef && ($property_fields["DEFAULT_VALUE"] <> ''); $cnt = ($property_fields["MULTIPLE"] == "Y"? $MULTIPLE_CNT + ($bInitDef? 1: 0) : 1); if(!is_array($values)) $values = array(); $fixIBlock = $property_fields["LINK_IBLOCK_ID"] > 0; echo '<table cellpadding="0" cellspacing="0" border="0" class="nopadding" width="100%" id="tb'.md5($name).'">'; foreach ($values as $key=>$val) { $show = false; if ($bCopy) { $key = "n".$index; $index++; } if (is_array($val) && array_key_exists("VALUE", $val)) $val = $val["VALUE"]; $db_res = \CIBlockElement::GetByID($val); $ar_res = $db_res->GetNext(); echo '<tr><td>'. '<input name="'.$name.'" id="'.$name.'['.$key.']" value="'.htmlspecialcharsex($val).'" size="5" type="text">'. '<input type="button" value="..." onClick="jsUtils.OpenWindow(\'/bitrix/admin/iblock_element_search.php?lang='.LANGUAGE_ID.'&IBLOCK_ID='.$ar_res["IBLOCK_ID"].'&n='.$name.'&k='.$key.($fixIBlock ? '&iblockfix=y' : '').'\', 900, 700);">'. ' <span id="sp_'.md5($name).'_'.$key.'" >'.$ar_res['NAME'].'</span>'. '</td></tr>'; if ($property_fields["MULTIPLE"] != "Y") { $bVarsFromForm = true; break; } } if (!$bVarsFromForm || $show) { for ($i = 0; $i < $cnt; $i++) { $val = ""; $key = "n".$index; $index++; echo '<tr><td>'. '<input name="'.$name.'['.$key.']" id="'.$name.'['.$key.']" value="'.htmlspecialcharsex($val).'" size="5" type="text">'. '<input type="button" value="..." onClick="jsUtils.OpenWindow(\'/bitrix/admin/iblock_element_search.php?lang='.LANGUAGE_ID.'&IBLOCK_ID='.$property_fields["LINK_IBLOCK_ID"].'&n='.$name.'&k='.$key.($fixIBlock ? '&iblockfix=y' : '').'\', 900, 700);">'. ' <span id="sp_'.md5($name).'_'.$key.'"></span>'. '</td></tr>'; } } if($property_fields["MULTIPLE"]=="Y") { echo '<tr><td>'. '<input type="button" value="'.Loc::getMessage("IBLOCK_AT_PROP_ADD").'..." onClick="jsUtils.OpenWindow(\'/bitrix/admin/iblock_element_search.php?lang='.LANGUAGE_ID.'&IBLOCK_ID='.$property_fields["LINK_IBLOCK_ID"].'&n='.$name.'&m=y&k='.$key.($fixIBlock ? '&iblockfix=y' : '').'\', 900, 700);">'. '<span id="sp_'.md5($name).'_'.$key.'" ></span>'. '</td></tr>'; } echo '</table>'; echo '<script type="text/javascript">'."\r\n"; echo "var MV_".md5($name)." = ".$index.";\r\n"; echo "function InS".md5($name)."(id, name){ \r\n"; echo " oTbl=document.getElementById('tb".md5($name)."');\r\n"; echo " oRow=oTbl.insertRow(oTbl.rows.length-1); \r\n"; echo " oCell=oRow.insertCell(-1); \r\n"; echo " oCell.innerHTML=". "'<input name=\"".$name."[n'+MV_".md5($name)."+']\" value=\"'+id+'\" id=\"".$name."[n'+MV_".md5($name)."+']\" size=\"5\" type=\"text\">'+\r\n". "'<input type=\"button\" value=\"...\" '+\r\n". "'onClick=\"jsUtils.OpenWindow(\'/bitrix/admin/iblock_element_search.php?lang=".LANGUAGE_ID."&IBLOCK_ID=".$property_fields["LINK_IBLOCK_ID"]."&n=".$name."&k=n'+MV_".md5($name)."+'".($fixIBlock ? '&iblockfix=y' : '')."\', '+\r\n". "' 900, 700);\">'+". "' <span id=\"sp_".md5($name)."_'+MV_".md5($name)."+'\" >'+name+'</span>". "';"; echo 'MV_'.md5($name).'++;'; echo '}'; echo "\r\n</script>"; } public static function ShowUserField($name, $property_fields, $values, $form_name = "preorder_edit_form", $bCopy = false) { return CIBlockPropertyUserID::GetPropertyFieldHtml( array( 'ID' => 10101, 'CODE' => $name, 'PROPERTY_TYPE' => 'S', 'MULTIPLE' => 'N', 'USER_TYPE' => 'UserID', ), $values, array( 'VALUE' => $name, 'DESCRIPTION' => $name."[DESCRIPTION]", 'FORM_NAME' => $form_name, 'MODE' => 'FORM_FILL', 'COPY' => "" ) ); } public static function ShowLidField($name, $values = false, $optionAll = false) { $str = '<select name="'.$name.'">'; if($optionAll) $str .= '<option value="" selected >'.Loc::getMessage("IBLOCK_PROP_USERID_ALL").'</option>'; $rsSite = \CSite::GetList($by='id', $order='asc', $arFilter=array("ACTIVE" => "Y")); while ($arSite = $rsSite->GetNext()) { $str .= '<option value="'.$arSite['LID'].'" '.($values == $arSite['LID'] ? 'selected' : '').'>('.$arSite['LID'].') '.$arSite["NAME"].'</option>'; } $str .= '</select>'; echo $str; } public static function GetAdminElementEditLink($ELEMENT_ID, $url = '', $arParams = array(), $strAdd = "") { if($ELEMENT_ID !== null) $url.= intval($ELEMENT_ID); else return false; $url.= "&lang=".urlencode(LANGUAGE_ID); foreach ($arParams as $name => $value) if (isset($value)) $url.= "&".urlencode($name)."=".urlencode($value); return $url.$strAdd; } public static function sanitizeUrl($url, $regex = false) { // Make sure that the old URL is relative $url = preg_replace('@^https?://(.*?)/@', '/', $url); $url = preg_replace('@^https?://(.*?)$@', '/', $url); // No new lines $url = preg_replace("/[\r\n\t].*?$/s", '', $url); // Clean control codes $url = preg_replace('/[^\PC\s]/u', '', $url); // Ensure a slash at start if(mb_substr($url, 0, 1) !== '/' && $regex === false) { $url = '/'.$url; } return $url; } // List or section tree public static function getCatalogSections($iblockId, $getAll = false) { if(!$iblockId) return false; $arSections = array(); $arSort = array('left_margin' => 'asc'); $arSelect = array('ID', 'DEPTH_LEVEL', 'NAME'); $arFilter = array( 'IBLOCK_ID' => $iblockId, 'ACTIVE' => 'Y', ); if(!$getAll) $arFilter['DEPTH_LEVEL'] = 1; $rsSection = \CIBlockSection::GetList($arSort, $arFilter, false, $arSelect); while($arSection = $rsSection->Fetch()) { if($arFilter['DEPTH_LEVEL'] == 1) $arSections[ $arSection['ID'] ] = $arSection['NAME']; else $arSections[ $arSection['ID'] ] = str_repeat(' . ', $arSection['DEPTH_LEVEL']) . $arSection['NAME']; } return $arSections; } // List stores public static function getStoreList() { $stores = array(); if(self::isCatalog()) { $res = \Bitrix\Catalog\StoreTable::getList(array( 'select' => array('ID', 'TITLE'), 'filter' => array('=ACTIVE' => 'Y') )); while ($arStore = $res->fetch()) { $stores[$arStore['ID']] = $arStore['TITLE']; } } return $stores; } // Currency public static function getCurrency() { if(Loader::includeModule('currency')) { $currencies = Currency\CurrencyManager::getCurrencyList(); } else { $currencies = Loc::getMessage('GOODDE_TYRBO_API_CURRENCIES'); } return (array)$currencies; } // Currency rates public static function getCurrencyRates() { return Loc::getMessage('GOODDE_TYRBO_API_CURRENCY_RATES'); } // Price types public static function getPriceTypes() { $types = (array)Loc::getMessage('GOODDE_TYRBO_API_OPTIMAL_RICE'); if(Loader::includeModule('catalog')) { $res = \CCatalogGroup::GetList(array('SORT' => 'ASC'), array(), false, false, array('ID', 'NAME', 'NAME_LANG')); while($type = $res->Fetch()) $types[ $type['ID'] ] = $type['NAME_LANG']; } return $types; } // Iblock or catalog public static function getCatalogs($bUseCatalog = false) { $arAll = $arIblock = array(); $bCatalog = Loader::includeModule('catalog'); if(!$bCatalog) $bUseCatalog = false; $res = \CIBlock::GetList(array("NAME" => "ASC")); while($ar_res = $res->Fetch()) { if($bUseCatalog) if(!\CCatalog::GetByID($ar_res["ID"])) continue; $arIblock[] = $ar_res; } foreach($arIblock as $iBlock) { $arIbType = \CIBlockType::GetByIDLang($iBlock['IBLOCK_TYPE_ID'], LANG); $arAll[ $arIbType['ID'] ]['ID'] = $arIbType['ID']; $arAll[ $arIbType['ID'] ]['NAME'] = $arIbType['NAME'] . ' [' . $arIbType['ID'] . ']'; $arAll[ $arIbType['ID'] ]['IBLOCK'][ $iBlock['ID'] ] = $iBlock['NAME'] . ' [' . $iBlock['ID'] . ']';; } return $arAll; } // Sites public static function getSites() { $arSites = array(); $res = \CSite::GetList($by = "sort", $order = "desc"); while($ar_res = $res->Fetch()) { $arSites[ $ar_res['ID'] ] = $ar_res; } return $arSites; } public static function getHttpFilePath($path) { if($path) $path = (\CMain::IsHTTPS() ? 'https://' : 'http://') . $_SERVER['SERVER_NAME'] . $path; else $path = Loc::getMessage('GOODDE_TYRBO_API_DEFAULT_FILE_PATH'); return $path; } // Element field selector public static function getOfferFieldsSelect($iblockId) { static::construct(); static::getIblockInfo($iblockId); static $iblockProps; static $offerProps; static $storeProps; // Element Fields $arFields['FIELDS'] = Loc::getMessage('GOODDE_TYRBO_API_OFFER_FIELDS_LANG'); // Fields offers $arFields['OFFER_FIELD'] = Loc::getMessage('GOODDE_TYRBO_API_OFFER_FIELDS_LANG'); // Element Property if(!isset($iblockProps)){ $res = \CIBlockProperty::GetList(array('NAME' => 'ASC'), array('IBLOCK_ID' => $iblockId, 'ACTIVE' => "Y")); while($arProp = $res->Fetch()) { $iblockProps[ $arProp['ID'] ] = $arProp; } } if($iblockProps){ $arFields['PROPERTY'] = $iblockProps; } // Property offers if(!isset($offerProps) && self::$useOffers){ if($offerIblockId = self::$iblockInfo['IBLOCK_ID']){ $res = \CIBlockProperty::GetList(array('NAME' => 'ASC'), array('IBLOCK_ID' => $offerIblockId, 'ACTIVE' => "Y")); while($arProp = $res->Fetch()) { $offerProps[ $arProp['ID'] ] = $arProp; } } } if($offerProps){ $arFields['OFFER_PROPERTY'] = $offerProps; } // Element Fields $arFields["PRODUCT"] = Loc::getMessage('GOODDE_TYRBO_API_CATALOG_FIELDS_LANG'); // Price $arFields['PRICE'] = Loc::getMessage('GOODDE_TYRBO_API_PRICE_FIELDS_LANG'); // Old price $arFields['OLD_PRICE'] = Loc::getMessage('GOODDE_TYRBO_API_PRICE_FIELDS_LANG'); // Store $arFields['STORE'] = Loc::getMessage('GOODDE_TYRBO_API_STORE_FIELDS_LANG'); // Store Property if(!isset($storeProps)){ $res = \CUserTypeEntity::GetList(array('SORT' => 'ASC'), array('ENTITY_ID' => 'CAT_STORE')); while($arProp = $res->Fetch()) { $storeProps['STORE_'.$arProp['FIELD_NAME']] = $arProp['FIELD_NAME']; } } if($storeProps){ $arFields['STORE'] = array_merge($arFields['STORE'], $storeProps); } //Currency $arFields['CURRENCY'] = static::getCurrency(); // Meta-tag $arFields['IPROPERTY'] = Loc::getMessage('GOODDE_TYRBO_API_IPROPERTY_FIELDS_LANG'); return $arFields; } public static function showOfferFieldsSelect($arIBlockId = array(), $type = 'FIELD', $value = '') { $arOptions = array(); $arOptions[] = '<option value="">' . Loc::getMessage('GOODDE_TYRBO_API_SELECT_OPTION_EMPTY') . '</option>'; $arIBlock = self::getOfferFieldsSelect($arIBlockId); // Element Fields if($type == 'FIELD' && $arIBlock['FIELDS']) { foreach($arIBlock["FIELDS"] as $id => $name) { $selected = (is_array($value) && in_array($id, $value) || $id == $value) ? ' selected' : ''; $arOptions[] = "<option value=\"$id\"$selected>[{$id}] {$name}</option>"; } unset($id,$name,$selected); } // Fields offers if($type == 'OFFER_FIELD' && $arIBlock['OFFER_FIELD']) { foreach($arIBlock["OFFER_FIELD"] as $id => $name) { $selected = (is_array($value) && in_array($id, $value) || $id == $value) ? ' selected' : ''; $arOptions[] = "<option value=\"$id\"$selected>[{$id}] {$name}</option>"; } unset($id,$name,$selected); } //Element Property if($type == 'PROPERTY' && $arIBlock['PROPERTY']) { foreach($arIBlock["PROPERTY"] as $id => $fields) { $selected = ((is_array($value) && in_array($fields['CODE'], $value)) || $fields['CODE'] == $value ? ' selected' : ''); $arOptions[] = "<option value=\"{$fields["CODE"]}\"$selected>[{$id}] {$fields["NAME"]}</option>"; } unset($id,$name,$selected); } // Property offers if($type == 'OFFER_PROPERTY' && $arIBlock['OFFER_PROPERTY']) { foreach($arIBlock["OFFER_PROPERTY"] as $id => $fields) { $selected = ((is_array($value) && in_array($fields['CODE'], $value)) || $fields['CODE'] == $value ? ' selected' : ''); $arOptions[] = "<option value=\"{$fields["CODE"]}\"$selected>[{$id}] {$fields["NAME"]}</option>"; } unset($id,$name,$selected); } // Element Fields if($type == 'PRODUCT' && $arIBlock['PRODUCT']) { foreach($arIBlock["PRODUCT"] as $id => $name) { $selected = (is_array($value) && in_array($id, $value) || $id == $value) ? ' selected' : ''; $arOptions[] = "<option value=\"$id\"$selected>[{$id}] {$name}</option>"; } unset($id,$name,$selected); } // Price if($type == 'PRICE' && $arIBlock['PRICE']) { foreach($arIBlock["PRICE"] as $id => $name) { $selected = (is_array($value) && in_array($id, $value) || $id == $value) ? ' selected' : ''; $arOptions[] = "<option value=\"$id\"$selected>[{$id}] {$name}</option>"; } unset($id,$name,$selected); } // Old Price if($type == 'OLD_PRICE' && $arIBlock['OLD_PRICE']) { foreach($arIBlock["OLD_PRICE"] as $id => $name) { $selected = (is_array($value) && in_array($id, $value) || $id == $value) ? ' selected' : ''; $arOptions[] = "<option value=\"$id\"$selected>[{$id}] {$name}</option>"; } unset($id,$name,$selected); } // Store if($type == 'STORE' && $arIBlock['STORE']) { foreach($arIBlock["STORE"] as $id => $name) { $selected = (is_array($value) && in_array($id, $value) || $id == $value) ? ' selected' : ''; $arOptions[] = "<option value=\"$id\"$selected>[{$id}] {$name}</option>"; } unset($id,$name,$selected); } // Store Property if($type == 'STORE_PROPERTY' && $arIBlock['STORE_PROPERTY']) { foreach($arIBlock["STORE_PROPERTY"] as $id => $name) { $selected = (is_array($value) && in_array($id, $value) || $id == $value) ? ' selected' : ''; $arOptions[] = "<option value=\"$id\"$selected>[{$id}] {$name}</option>"; } unset($id,$name,$selected); } // Currency if($type == 'CURRENCY' && $arIBlock['CURRENCY']) { foreach($arIBlock["CURRENCY"] as $id => $name) { $selected = (is_array($value) && in_array($id, $value) || $id == $value) ? ' selected' : ''; $arOptions[] = "<option value=\"$id\"$selected>[{$id}] {$name}</option>"; } unset($id,$name,$selected); } // Meta-tag if($type == 'IPROPERTY' && $arIBlock['IPROPERTY']) { foreach($arIBlock["IPROPERTY"] as $group) { $arOptions[] = '<optgroup label="'. $group['NAME'] .'">'; foreach($group["VALUES"] as $id => $name) { $selected = (is_array($value) && in_array($id, $value) || $id == $value) ? ' selected' : ''; $arOptions[] = "<option value=\"$id\"$selected>[{$id}] {$name}</option>"; } $arOptions[] = '</optgroup>'; } unset($id,$name,$selected); } $strOptions = implode("\n", $arOptions); return $strOptions; } /** List of "field type" */ public static function showFieldTypeSelect($iblockId, $typeId, $typeVal, $isXmlProfile = false) { static::construct(); static::getIblockInfo($iblockId); $options = array(); if($isXmlProfile) { $arType = (array)Loc::getMessage('GOODDE_TYRBO_API_FIELD_TYPE_SELECT_XML_PROFILE'); } else { $arType = (array)Loc::getMessage('GOODDE_TYRBO_API_FIELD_TYPE_SELECT'); } if(!self::$useOffers) { unset($arType['OFFER_FIELD'], $arType['OFFER_PROPERTY']); } if(!self::$iblockInfo) { unset($arType['PRODUCT'], $arType['STORE'], $arType['PRICE'], $arType['CURRENCY']); } foreach($arType as $key => $value) { $selected = ($key == $typeId ? 'selected' : ''); $options[] = "<option value=\"{$key}\" {$selected}>{$value}</option>"; } return implode("\n", $options); } //all type descriptions by group public static function getOfferTypes() { $arOfferTypes = array(); $arExportTypes = array(); $dir = (__DIR__ . '/type'); $arFiles = scandir($dir); foreach($arFiles as $file) { if($file != '.' && $file != '..') require($dir . '/' . $file); } \Bitrix\Main\Type\Collection::sortByColumn($arExportTypes, 'SORT'); foreach($arExportTypes as $arType) { $arOfferTypes[$arType['GROUP']][] = array( 'CODE' => $arType['CODE'], 'NAME' => $arType['NAME'], ); } return $arOfferTypes; } //one type descriptions public static function getOfferType($type) { $arExportTypes = array(); $dir = (__DIR__ . '/type'); $arFiles = scandir($dir); foreach($arFiles as $file) { if($file != '.' && $file != '..') require($dir . '/' . $file); } return $arExportTypes[$type]; } //setings profile defaults public static function getProfileDefaults() { $defSite = array(); $defType = 'ym_simple'; $arSites = self::getSites(); foreach($arSites as $arSite) { if($arSite['DEF'] == 'Y') $defSite = $arSite; } $defSite['SITE_NAME'] = ($defSite['SITE_NAME'] ? $defSite['SITE_NAME'] : $defSite['NAME']); $arType = self::getOfferType($defType); return array( 'ACTIVE' => 'Y', 'NAME' => $defSite['SITE_NAME'], 'SITE_ID' => $defSite['ID'], 'SORT' => 500, 'LIMIT' => 300, 'SHOP_NAME' => $defSite['SITE_NAME'], 'SHOP_COMPANY' => $defSite['SITE_NAME'], 'SHOP_URL' => (\CMain::IsHTTPS() ? 'https://' : 'http://') . $defSite['SERVER_NAME'], 'DELIVERY' => unserialize('a:3:{s:4:"cost";a:1:{i:0;s:3:"300";}s:4:"days";a:1:{i:0;s:1:"1";}s:12:"order_before";a:1:{i:0;s:2:"17";}}'), 'USE_CATALOG' => 'Y', 'USE_SUBSECTIONS' => 'N', 'ELEMENTS_FILTER' => unserialize('a:1:{s:6:"ACTIVE";s:1:"Y";}'), 'OFFERS_FILTER' => unserialize('a:1:{s:6:"ACTIVE";s:1:"Y";}'), 'TYPE' => $defType, 'FIELDS' => $arType['FIELDS'], ); } //setings static defaults public static function getStaticFileDefaults($lid = '') { $defSite = array(); $arSites = self::getSites(); if($lid <> '' && $arSites[$lid]['LID'] === $lid) { $defSite = $arSites[$lid]; } else { foreach($arSites as $arSite) { if($arSite['DEF'] == 'Y') { $defSite = $arSite; break; } } } $defSite['SITE_NAME'] = ($defSite['SITE_NAME'] ? $defSite['SITE_NAME'] : $defSite['NAME']); return array( 'ACTIVE' => 'Y', 'NAME' => $defSite['SITE_NAME'], 'LID' => $defSite['LID'], 'SERVER_ADDRESS' => (\CMain::IsHTTPS() ? 'https://' : 'http://') . $defSite['SERVER_NAME'], 'ITEM_STATUS' => 'N', 'IN_AGENT' => 'N', 'SETTINGS' => unserialize('a:3:{s:3:"DIR";a:1:{s:1:"'.$defSite['DIR'].'";s:1:"Y";}s:4:"FILE";a:0:{}s:9:"FILE_MASK";s:12:"*.php,*.html";}'), ); } public static function TurboYandexgetDir($bLogical = true, $site_id, $dir, $depth, $checked, $arChecked = array()) { if(Loader::includeModule('seo')) { if(!is_array($arChecked)) $arChecked = array(); $arDirs = \CSeoUtils::getDirStructure($bLogical, $site_id, $dir); if(count($arDirs) > 0) { foreach ($arDirs as $arDir) { $d = \Bitrix\Main\IO\Path::combine($dir,$arDir['FILE']); $bChecked = $arChecked[$d] === 'Y' || $checked && $arChecked[$d] !== 'N'; $r = RandString(8); $varName = $arDir['TYPE'] == 'D' ? 'DIR' : 'FILE'; ?> <div class="sitemap-dir-item"> <? if($arDir['TYPE']=='D') { ?><span onclick="loadDir(<?=$bLogical?'true':'false'?>, this, '<?=\CUtil::JSEscape($d)?>', '<?=$r?>', '<?=$depth+1?>', BX('DIR_<?=$d?>').checked)" class="sitemap-tree-icon"></span><? } ?><span class="sitemap-dir-item-text"> <input type="hidden" name="<?=$varName?>[<?=$d?>]" value="N" /> <input type="checkbox" name="<?=$varName?>[<?=$d?>]" id="DIR_<?=$d?>"<?=$bChecked ? ' checked="checked"' : ''?> value="Y" onclick="checkAll('<?=$r?>', this.checked);" /> <label for="DIR_<?=$d?>"><?=$arDir['NAME'].($bLogical ? (' ('.$arDir['FILE'].')') : '')?></label> </span> <div id="subdirs_<?=$r?>" class="sitemap-dir-item-children"></div> </div> <? } } else { echo GetMessage('GOODDE_TYRBO_API_NO_DIRS_FOUND'); } } else { echo GetMessage('IBLOCK_MODULE_NOT_INSTALLED'); } } }