Skip to content

Instantly share code, notes, and snippets.

@EscApp2
Last active November 9, 2023 12:41
Show Gist options
  • Save EscApp2/039034bb9a921c358081bf90a5e4efe6 to your computer and use it in GitHub Desktop.
Save EscApp2/039034bb9a921c358081bf90a5e4efe6 to your computer and use it in GitHub Desktop.
NAV_ORDER_MAKE bitrix order make support class
<?
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