Last active
November 9, 2023 12:41
-
-
Save EscApp2/039034bb9a921c358081bf90a5e4efe6 to your computer and use it in GitHub Desktop.
NAV_ORDER_MAKE bitrix order make support class
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
class NAV_ORDER_MAKE{ | |
function MergeOrderProps($arResult,$sort=true){ | |
if(isset($arResult['ORDER_PROP']['USER_PROPS_MERGE'])){ | |
return $arResult; | |
} | |
if (!is_array($arResult["ORDER_PROP"]["USER_PROPS_Y"]) && is_array($arResult["ORDER_PROP"]["USER_PROPS_N"])){ | |
$arResult['ORDER_PROP']['USER_PROPS_MERGE'] = $arResult["ORDER_PROP"]["USER_PROPS_N"]; | |
return $arResult; | |
}elseif(is_array($arResult["ORDER_PROP"]["USER_PROPS_Y"]) && !is_array($arResult["ORDER_PROP"]["USER_PROPS_N"])){ | |
$arResult['ORDER_PROP']['USER_PROPS_MERGE'] = $arResult["ORDER_PROP"]["USER_PROPS_Y"]; | |
return $arResult; | |
}elseif(!is_array($arResult["ORDER_PROP"]["USER_PROPS_Y"]) && !is_array($arResult["ORDER_PROP"]["USER_PROPS_N"])){ | |
$arResult['ORDER_PROP']['USER_PROPS_MERGE'] = NULL; | |
return $arResult; | |
} | |
$arResult['ORDER_PROP']['USER_PROPS_MERGE'] = $arResult["ORDER_PROP"]["USER_PROPS_Y"]+$arResult["ORDER_PROP"]["USER_PROPS_N"]; | |
if($sort){ | |
uasort($arResult['ORDER_PROP']['USER_PROPS_MERGE'],"NAV_ORDER_MAKE::cmp_prop_cust"); | |
} | |
return $arResult; | |
} | |
function cmp_prop_cust($a, $b) { | |
if ($a['SORT'] == $b['SORT']) { | |
return 0; | |
} | |
return ($a['SORT']<$b['SORT']) ? -1 : 1; | |
} | |
function FindPropByCode($arCode,$arResult){ | |
$arResult = self::MergeOrderProps($arResult,false); | |
foreach($arResult["ORDER_PROP"]['USER_PROPS_MERGE'] as $Prop){ | |
if($Prop['CODE'] == $arCode){ | |
return $Prop; | |
} | |
} | |
} | |
function GetLocationProp($arResult){ | |
$arResult = self::MergeOrderProps($arResult); | |
foreach($arResult['ORDER_PROP']['USER_PROPS_MERGE'] as $PROP){ | |
if($PROP['TYPE'] == "LOCATION"){ | |
return $PROP; | |
} | |
} | |
return false; | |
} | |
function GetLocation($arResult){ | |
$LocationProp = self::GetLocationProp($arResult); | |
foreach($LocationProp['VARIANTS'] as $arVariant){ | |
if ($arVariant["SELECTED"] == "Y"){ | |
return $arVariant; | |
} | |
} | |
return false; | |
} | |
function GetPropByCode($arCode,$PersonalType){ | |
$ret = null; | |
$db = CSaleOrderProps::GetList(array("SORT"=>"ASC"),array("CODE"=>$arCode,"PERSON_TYPE_ID"=>$PersonalType)); | |
while( $ar = $db->Fetch()){ | |
$ret = $ar; | |
} | |
return $ret; | |
} | |
function DataAjax(){ | |
if ($_REQUEST['is_ajax_post'] == "Y" || $_REQUEST["AJAX_CALL"] == "Y"){ | |
if($_REQUEST['profile_change'] == "Y"){ | |
return false; | |
} | |
if($_REQUEST['PERSON_TYPE'] == $_REQUEST['PERSON_TYPE_OLD']){ | |
return true; | |
} | |
} | |
return false; | |
} | |
function DisablePayment($Pay_ID,$arResult){ | |
if(count($arResult['PAY_SYSTEM'])<=1){ | |
return $arResult; | |
} | |
$New_pay_system = array(); | |
$Recheck = false; | |
foreach($arResult['PAY_SYSTEM'] as $pay_system){ | |
if($pay_system['ID'] == $Pay_ID){ | |
if($pay_system['CHECKED'] == "Y"){ | |
$Recheck = true; | |
} | |
continue; | |
} | |
$New_pay_system[$pay_system['ID']] = $pay_system; | |
} | |
if($Recheck){ | |
foreach($New_pay_system as $key=>$val){ | |
$New_pay_system[$key]['CHECKED'] = "Y"; | |
break; | |
} | |
} | |
$arResult['PAY_SYSTEM'] = $New_pay_system; | |
return $arResult; | |
} | |
function ActivePersonType($arResult){ | |
foreach($arResult['PERSON_TYPE'] as $key=>$val){ | |
if ($val['CHECKED'] == "Y"){ | |
return $val; | |
} | |
} | |
} | |
function DisableProperties($arCode,$arResult){ | |
if (!is_array($arCode)){ | |
$arCode = array($arCode); | |
} | |
foreach($arCode as $code){ | |
foreach($arResult['ORDER_PROP']['USER_PROPS_MERGE'] as $key=>$props){ | |
if ($props['CODE'] == $code){ | |
unset($arResult["ORDER_PROP"]["USER_PROPS_MERGE"][$key]); | |
break; | |
} | |
} | |
$Next = true; | |
foreach($arResult["ORDER_PROP"]["USER_PROPS_Y"] as $key=>$props){ | |
if ($props['CODE'] == $code){ | |
unset($arResult["ORDER_PROP"]["USER_PROPS_Y"][$key]); | |
$Next = false; | |
break; | |
} | |
} | |
if ($Next){ | |
foreach($arResult["ORDER_PROP"]["USER_PROPS_N"] as $key=>$props){ | |
if ($props['CODE'] == $code){ | |
unset($arResult["ORDER_PROP"]["USER_PROPS_N"][$key]); | |
break; | |
} | |
} | |
} | |
} | |
return $arResult; | |
//return false; | |
} | |
function EnableProperties($arCode,$arResult){ | |
if (!is_array($arCode)){ | |
$arCode = array($arCode); | |
} | |
foreach($arResult['ORDER_PROP']['USER_PROPS_MERGE'] as $key=>$props){ | |
if (!in_array($props['CODE'],$arCode)){ | |
unset($arResult["ORDER_PROP"]["USER_PROPS_MERGE"][$key]); | |
} | |
} | |
foreach($arResult['ORDER_PROP']['USER_PROPS_Y'] as $key=>$props){ | |
if (!in_array($props['CODE'],$arCode)){ | |
unset($arResult["ORDER_PROP"]["USER_PROPS_Y"][$key]); | |
} | |
} | |
foreach($arResult['ORDER_PROP']['USER_PROPS_N'] as $key=>$props){ | |
if (!in_array($props['CODE'],$arCode)){ | |
unset($arResult["ORDER_PROP"]["USER_PROPS_N"][$key]); | |
} | |
} | |
uasort($arResult['ORDER_PROP']['USER_PROPS_MERGE'],"NAV_ORDER_MAKE::cmp_prop_cust"); | |
return $arResult; | |
} | |
function MoveProperties($arCode,&$arResult,$flagWhere = "Y"){ | |
if (!is_array($arCode)){ | |
$arCode = array($arCode); | |
} | |
$keyWhere = false; | |
if($flagWhere == "Y"){ | |
$keyWhere = 'USER_PROPS_Y'; | |
}elseif($flagWhere == "N"){ | |
$keyWhere = 'USER_PROPS_N'; | |
} | |
if(!empty($keyWhere)){ | |
$tmp = $arResult; | |
$tmp = self::MergeOrderProps($tmp); | |
$props = array(); | |
foreach($arCode as $code){ | |
$arProp = self::FindPropByCode($code,$tmp); | |
if($arProp){ | |
$arResult = self::DisableProperties($code,$arResult); | |
$arResult['ORDER_PROP'][$keyWhere][$arProp['ID']] = $arProp; | |
} | |
} | |
uasort($arResult['ORDER_PROP'][$keyWhere],"NAV_ORDER_MAKE::cmp_prop_cust"); | |
} | |
} | |
function SetPropData($arCode,&$arResult, $DataKey,$value, $double = false){ | |
if (!is_array($arCode)){ | |
$arCode = array($arCode); | |
} | |
foreach($arCode as $code){ | |
foreach($arResult['ORDER_PROP']['USER_PROPS_MERGE'] as $key=>$props){ | |
if ($props['CODE'] == $code){ | |
$arResult["ORDER_PROP"]["USER_PROPS_MERGE"][$key][$DataKey] = $value; | |
if($double){ | |
$arResult["ORDER_PROP"]["USER_PROPS_MERGE"][$key]['~'.$DataKey] = $value; | |
} | |
break; | |
} | |
} | |
$Next = true; | |
foreach($arResult["ORDER_PROP"]["USER_PROPS_Y"] as $key=>$props){ | |
if ($props['CODE'] == $code){ | |
$arResult["ORDER_PROP"]["USER_PROPS_Y"][$key][$DataKey] = $value; | |
if($double){ | |
$arResult["ORDER_PROP"]["USER_PROPS_Y"][$key]['~'.$DataKey] = $value; | |
} | |
$Next = false; | |
break; | |
} | |
} | |
if ($Next){ | |
foreach($arResult["ORDER_PROP"]["USER_PROPS_N"] as $key=>$props){ | |
if ($props['CODE'] == $code){ | |
$arResult["ORDER_PROP"]["USER_PROPS_N"][$key][$DataKey] = $value; | |
if($double){ | |
$arResult["ORDER_PROP"]["USER_PROPS_N"][$key]['~'.$DataKey] = $value; | |
} | |
break; | |
} | |
} | |
} | |
} | |
return false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment