/** * <p>Функция возвращает параметры варианта значения свойства заказа по коду свойства заказа и значению.</p> * * * * * @param int $PropID Код свойства заказа. </ht * * * * @param string $Value Значение свойства. </h * * * * @return array <p>Возвращается ассоциативный массив значений параметров заказа * с ключами:</p> <table class="tnormal" width="100%"> <tr> <th width="15%">Код</th> <th>Описание</th> * </tr> <tr> <td>ID</td> <td>Код варианта значения свойства заказа.</td> </tr> <tr> * <td>ORDER_PROPS_ID</td> <td>Код свойства заказа.</td> </tr> <tr> <td>NAME</td> <td>Название * варианта.</td> </tr> <tr> <td>VALUE</td> <td>Значение варианта.</td> </tr> <tr> <td>SORT</td> * <td>Индекс сортировки.</td> </tr> <tr> <td>DESCRIPTION</td> <td>Описание варианта * значения свойства заказа.</td> </tr> </table> <a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * $arVal = CSaleOrderPropsVariant::GetByValue(12, "F"); * echo $arVal["NAME"]; * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorderpropsvariant/csaleorderpropsvariant__getbyvalue.48f24a76.php * @author Bitrix */ public static function GetByValue($PropID, $Value) { $PropID = IntVal($PropID); $db_res = CSaleOrderPropsVariant::GetList($by = "SORT", $order = "ASC", array("ORDER_PROPS_ID" => $PropID, "VALUE" => $Value)); if ($res = $db_res->Fetch()) { return $res; } return False; }
static function GetProfileProps($profileID, $personID) { if (!empty($profileID)) { // получаем значения свойств $props = array(); $res = CSaleOrderUserPropsValue::GetList(array(), array('USER_PROPS_ID'=>$profileID), false, false, array('ID', 'ORDER_PROPS_ID', 'VALUE')); while ($arRes = $res->Fetch()) { $props[$arRes['ORDER_PROPS_ID']] = array('VALUE' => htmlspecialchars($arRes['VALUE'])); } } // если не задан $personID if (empty($personID)) { $res = CSalePersonType::GetList(Array(), Array()); if ($arRes = $res->Fetch()) { $personID = $arRes["ID"]; } } // получаем свойства $arProps = array(); $res = CSaleOrderProps::GetList(array("SORT"=>"ASC"), array("PERSON_TYPE_ID" => $personID, "USER_PROPS" => "Y"), false, false, array()); while ($arRes = $res->Fetch()) { if (in_array($arRes["TYPE"], array("SELECT", "MULTISELECT", "RADIO"))) { $rs = \CSaleOrderPropsVariant::GetList(array(), array("ORDER_PROPS_ID" => $arRes["ID"])); while ($arRs = $rs->Fetch()) { $arRes["variants"][] = $arRs; } } if (!empty($props[$arRes['ID']])) { $arProps[$arRes['ID']] = array_merge($props[$arRes['ID']], $arRes); } else { $arProps[$arRes['ID']] = $arRes; } } return $arProps; }
array( "PERSON_TYPE_ID" => $arUserProps["PERSON_TYPE_ID"], "PROPS_GROUP_ID" => $arOrderPropsGroup["ID"], "USER_PROPS" => "Y", "ACTIVE" => "Y", "UTIL" => "N" ), false, false, array("ID", "PERSON_TYPE_ID", "NAME", "TYPE", "REQUIED", "DEFAULT_VALUE", "SORT", "USER_PROPS", "IS_LOCATION", "PROPS_GROUP_ID", "SIZE1", "SIZE2", "DESCRIPTION", "IS_EMAIL", "IS_PROFILE_NAME", "IS_PAYER", "IS_LOCATION4TAX", "CODE", "SORT") ); while($arOrderProps = $dbOrderProps->GetNext()) { if ($arOrderProps["REQUIED"]=="Y" || $arOrderProps["IS_EMAIL"]=="Y" || $arOrderProps["IS_PROFILE_NAME"]=="Y" || $arOrderProps["IS_LOCATION"]=="Y" || $arOrderProps["IS_PAYER"]=="Y") $arOrderProps["REQUIED"] = "Y"; if (in_array($arOrderProps["TYPE"], Array("SELECT", "MULTISELECT", "RADIO"))) { $dbVars = CSaleOrderPropsVariant::GetList(($by="SORT"), ($order="ASC"), Array("ORDER_PROPS_ID"=>$arOrderProps["ID"])); while ($vars = $dbVars->GetNext()) $arOrderProps["VALUES"][] = $vars; } elseif($arOrderProps["TYPE"]=="LOCATION") { $propsOfTypeLocation[$arOrderProps['ID']] = true; // required for mapping ID<=>CODE below if(CSaleLocation::isLocationProMigrated()) { $arOrderProps["VALUES"] = array(); if(strlen($arOrderProps["DEFAULT_VALUE"])) $arOrderProps["DEFAULT_VALUE"] = CSaleLocation::getLocationIDbyCODE($arOrderProps["DEFAULT_VALUE"]); } else {
// this is not a COUNTRY, REGION or CITY, but must appear in $arProperties["VARIANTS"] if (CSaleLocation::isLocationProMigrated() && !$locationFound && IntVal($curVal)) { // CSaleLocation::GetById() is enought intelligent to accept modern (not-country-or-region-or-city) ID or CODE $item = CSaleLocation::GetById($curVal); if ($item) { $item['NAME'] = $item["COUNTRY_NAME"] . (strlen($item["CITY_NAME"]) > 0 ? " - " : "") . $item["CITY_NAME"]; $item['SELECTED'] = 'Y'; $arProperties["VARIANTS"][] = $item; } } if (count($arProperties["VARIANTS"]) == 1) { $arProperties["VALUE"] = $arProperties["VARIANTS"][0]["ID"]; } } elseif ($arProperties["TYPE"] == "RADIO") { $arProperties["VARIANTS"] = array(); $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*")); while ($arVariants = $dbVariants->GetNext()) { if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) { $arVariants["CHECKED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["NAME"]; } $arProperties["VARIANTS"][] = $arVariants; } } if ($arProperties["TYPE"] == "CHECKBOX" && strlen($curVal) <= 0 && $arProperties["REQUIED"] != "Y") { $curVal = "N"; } if (!empty($curVal) && is_array($curVal) || !is_array($curVal) && (string) $curVal != "") { $arPropValues[$arProperties["ID"]] = $curVal; } if ($arProperties["USER_PROPS"] == "Y") {
function getOrderPropertiesHTML($arOrderProps, $arPropValues = array(), $LID, $USER_ID = '', $ORDER_ID = 0, $formVarsSubmit = false) { $propertyGroupID = -1; $arDisableFieldForLocation = array(); $resultHtml = "<table id=\"order_related_props\">"; // get order properties values if ($formVarsSubmit) { $locationIndexForm = ""; foreach ($_POST as $key => $value) { if (substr($key, 0, strlen("CITY_ORDER_PROP_")) == "CITY_ORDER_PROP_") { $arPropValues[intval(substr($key, strlen("CITY_ORDER_PROP_")))] = htmlspecialcharsbx($value); $locationIndexForm = intval(substr($key, strlen("CITY_ORDER_PROP_"))); } if (substr($key, 0, strlen("ORDER_PROP_")) == "ORDER_PROP_") { if ($locationIndexForm != intval(substr($key, strlen("ORDER_PROP_")))) { if (!is_array($value)) $arPropValues[intval(substr($key, strlen("ORDER_PROP_")))] = htmlspecialcharsbx($value); else { $arValues = array(); foreach ($value as $k => $v) $arValues[$key] = htmlspecialcharsbx($v); $arPropValues[intval(substr($key, strlen("ORDER_PROP_")))] = $arValues; } } } } } // iterate over list of properties if (is_array($arOrderProps)) { foreach ($arOrderProps as $arProperties) { if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID) { $resultHtml .= "<tr><td colspan=\"2\" style=\"text-align:center;font-weight:bold;font-size:14px;color:rgb(75, 98, 103);\" >".htmlspecialcharsEx($arProperties["GROUP_NAME"])."\n</td>\n</tr>"; $propertyGroupID = intval($arProperties["PROPS_GROUP_ID"]); } if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID) $propertyGroupID = intval($arProperties["PROPS_GROUP_ID"]); $adit = ""; $requiredField = ""; if ($arProperties["REQUIED"] == "Y" || $arProperties["IS_PROFILE_NAME"] == "Y" || $arProperties["IS_LOCATION"] == "Y" || $arProperties["IS_LOCATION4TAX"] == "Y" || $arProperties["IS_PAYER"] == "Y" || $arProperties["IS_ZIP"] == "Y") { $adit = " class=\"adm-detail-required-field\""; $requiredField = " class=\"adm-detail-content-cell-l\""; } //delete town from location if (in_array($arProperties["ID"], $arDisableFieldForLocation)) $resultHtml .= "<tr style=\"display:none;\" id=\"town_location_".$arProperties["ID"]."\"".$adit.">\n"; else $resultHtml .= "<tr id=\"town_location_".$arProperties["ID"]."\"".$adit.">\n"; if(($arProperties["TYPE"] == "MULTISELECT" || $arProperties["TYPE"] == "TEXTAREA") || ($ORDER_ID <= 0 && $arProperties["IS_PROFILE_NAME"] == "Y") ) $resultHtml .= "<td valign=\"top\" class=\"adm-detail-content-cell-l\" width=\"40%\">\n"; else $resultHtml .= "<td align=\"right\" width=\"40%\" ".$requiredField.">\n"; $resultHtml .= $arProperties["NAME"].":</td>"; $curVal = $arPropValues[intval($arProperties["ID"])]; if($arProperties["IS_EMAIL"] == "Y" || $arProperties["IS_PAYER"] == "Y") { if(strlen($arProperties["DEFAULT_VALUE"]) <= 0 && intval($USER_ID) > 0) { $rsUser = CUser::GetByID($USER_ID); if ($arUser = $rsUser->Fetch()) { if($arProperties["IS_EMAIL"] == "Y") $arProperties["DEFAULT_VALUE"] = $arUser["EMAIL"]; else { if (strlen($arUser["LAST_NAME"]) > 0) $arProperties["DEFAULT_VALUE"] .= $arUser["LAST_NAME"]; if (strlen($arUser["NAME"]) > 0) $arProperties["DEFAULT_VALUE"] .= " ".$arUser["NAME"]; if (strlen($arUser["SECOND_NAME"]) > 0 AND strlen($arUser["NAME"]) > 0) $arProperties["DEFAULT_VALUE"] .= " ".$arUser["SECOND_NAME"]; } } } } $resultHtml .= "<td class=\"adm-detail-content-cell-r\" width=\"60%\">"; if ($arProperties["TYPE"] == "CHECKBOX") { $resultHtml .= '<input type="checkbox" class="inputcheckbox" '; $resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" value="Y"'; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '; if ($curVal=="Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"]=="Y") $resultHtml .= " checked"; $resultHtml .= '>'; } elseif ($arProperties["TYPE"] == "TEXT") { $change = ""; if ($arProperties["IS_ZIP"] == "Y") { $DELIVERY_LOCATION_ZIP = $curVal; $resultHtml .= '<script> locationZipID = \''.$arProperties["ID"].'\';</script>'; $locationZipID = ((isset($curVal)) ? htmlspecialcharsEx($curVal) : htmlspecialcharsex($arProperties["DEFAULT_VALUE"])); } if ($arProperties["IS_PAYER"] == "Y" && intval($USER_ID) <= 0) { $resultHtml .= '<div id="BREAK_NAME"'; if ($ORDER_ID > 0 || ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist")) $resultHtml .= ' style="display:none"'; $resultHtml .= '>'; $BREAK_LAST_NAME_TMP = GetMessage('NEWO_BREAK_LAST_NAME'); if (isset($_REQUEST["BREAK_LAST_NAME"]) && strlen($_REQUEST["BREAK_LAST_NAME"]) > 0) $BREAK_LAST_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_LAST_NAME"])); $NEWO_BREAK_NAME_TMP = GetMessage('NEWO_BREAK_NAME'); if (isset($_REQUEST["BREAK_NAME"]) && strlen($_REQUEST["BREAK_NAME"]) > 0) $NEWO_BREAK_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_NAME"])); $BREAK_SECOND_NAME_TMP = GetMessage('NEWO_BREAK_SECOND_NAME'); if (isset($_REQUEST["BREAK_SECOND_NAME"]) && strlen($_REQUEST["BREAK_SECOND_NAME"]) > 0) $BREAK_SECOND_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_SECOND_NAME"])); $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='".CUtil::JSEscape(GetMessage('NEWO_BREAK_LAST_NAME'))."';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='".CUtil::JSEscape(GetMessage('NEWO_BREAK_LAST_NAME'))."') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_LAST_NAME\" id=\"BREAK_LAST_NAME\" size=\"30\" value=\"".$BREAK_LAST_NAME_TMP."\" /></div>"; $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='".CUtil::JSEscape(GetMessage('NEWO_BREAK_NAME'))."';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='".CUtil::JSEscape(GetMessage('NEWO_BREAK_NAME'))."') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_NAME\" id=\"BREAK_NAME_BUYER\" size=\"30\" value=\"".$NEWO_BREAK_NAME_TMP."\" /></div>"; $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='".CUtil::JSEscape(GetMessage('NEWO_BREAK_SECOND_NAME'))."';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='".CUtil::JSEscape(GetMessage('NEWO_BREAK_SECOND_NAME'))."') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_SECOND_NAME\" id=\"BREAK_SECOND_NAME\" size=\"30\" value=\"".$BREAK_SECOND_NAME_TMP."\" /></div>"; $resultHtml .= '</div>'; $resultHtml .= '<div id="NO_BREAK_NAME"'; if ($ORDER_ID <= 0) $tmpNone = ' style="display:none"'; if ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist") $tmpNone = ' style="display:block"'; $resultHtml .= $tmpNone.'>'; } $resultHtml .= '<input type="text" maxlength="250" '; $resultHtml .= 'size="30" '; $resultHtml .= 'value="'.((isset($curVal)) ? $curVal : $arProperties["DEFAULT_VALUE"]).'" '; $resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '.$change.'>'; if ($arProperties["IS_PAYER"] == "Y" && intval($USER_ID) <= 0) $resultHtml .= '</div>'; } elseif ($arProperties["TYPE"] == "SELECT") { $size = (intval($arProperties["SIZE1"]) > 0) ? intval($arProperties["SIZE1"]) : 5; $resultHtml .= '<select name="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'size='.$size.' '; $resultHtml .= 'class="typeselect">'; $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); while ($arVariants = $dbVariants->Fetch()) { $resultHtml .= '<option value="'.htmlspecialcharsex($arVariants["VALUE"]).'"'; if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) $resultHtml .= " selected"; $resultHtml .= '>'.htmlspecialcharsEx($arVariants["NAME"]).'</option>'; } $resultHtml .= '</select>'; } elseif ($arProperties["TYPE"] == "MULTISELECT") { $size = (intval($arProperties["SIZE1"]) > 0) ? intval($arProperties["SIZE1"]) : 5; $resultHtml .= '<select multiple name="ORDER_PROP_'.$arProperties["ID"].'[]" '; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'size='.$size.' '; $resultHtml .= 'class="typeselect" type="multyselect">'; if (!is_array($curVal)) { if (strlen($curVal) > 0 OR $ORDER_ID != "") $curVal = explode(",", $curVal); else $curVal = explode(",", $arProperties["DEFAULT_VALUE"]); $arCurVal = array(); $countCurVal = count($curVal); for ($i = 0; $i < $countCurVal; $i++) $arCurVal[$i] = Trim($curVal[$i]); } else $arCurVal = $curVal; $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); while ($arVariants = $dbVariants->Fetch()) { $resultHtml .= '<option value="'.htmlspecialcharsex($arVariants["VALUE"]).'"'; if (in_array($arVariants["VALUE"], $arCurVal)) $resultHtml .= " selected"; $resultHtml .= '>'.htmlspecialcharsEx($arVariants["NAME"]).'</option>'; } $resultHtml .= '</select>'; } elseif ($arProperties["TYPE"] == "TEXTAREA") { $resultHtml .= '<textarea '; $resultHtml .= 'rows="4" '; $resultHtml .= 'cols="40" '; $resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" type="textarea">'; $resultHtml .= ((isset($curVal)) ? $curVal : $arProperties["DEFAULT_VALUE"]); $resultHtml .= '</textarea>'; } elseif ($arProperties["TYPE"] == "LOCATION") { $countryID = ""; $cityID = ""; $cityList = ""; $DELIVERY_LOCATION = $arPropValues[intval($arProperties["ID"])]; $locationID = $curVal; $tmpLocation = ''; ob_start(); CSaleLocation::proxySaleAjaxLocationsComponent( array( "SITE_ID" => $LID, "AJAX_CALL" => "N", "COUNTRY_INPUT_NAME" => "ORDER_PROP_".$arProperties["ID"], "REGION_INPUT_NAME" => "REGION_ORDER_PROP_".$arProperties["ID"], "CITY_INPUT_NAME" => "CITY_ORDER_PROP_".$arProperties["ID"], "CITY_OUT_LOCATION" => "Y", "ALLOW_EMPTY_CITY" => "Y", "LOCATION_VALUE" => $curVal, "COUNTRY" => "", "ONCITYCHANGE" => "", "PUBLIC" => "N", ), array( "ID" => "", "CODE" => $curVal, "PROVIDE_LINK_BY" => "code", ) ); $tmpLocation = ob_get_contents(); ob_end_clean(); $resultHtml .= '<script>var locationID = \''.$arProperties["ID"].'\';</script>'; $resultHtml .= $tmpLocation; } elseif ($arProperties["TYPE"] == "RADIO") { $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); $resultHtml .= '<div id="ORDER_PROP_'.$arProperties["ID"].'">';// type="radio" while ($arVariants = $dbVariants->Fetch()) { $resultHtml .= '<input type="radio" class="inputradio" '; $resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'value="'.htmlspecialcharsex($arVariants["VALUE"]).'"'; if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) $resultHtml .= " checked"; $resultHtml .= '>'.htmlspecialcharsEx($arVariants["NAME"]).'<br>'; } $resultHtml .= '</div>'; } elseif ($arProperties["TYPE"] == "FILE") { $arValues = array(); $arTmpValues = array(); if (isset($arPropValues[$arProperties["ID"]]) && !is_array($arPropValues[$arProperties["ID"]])) { $arTmpValues = explode(", ", $arPropValues[$arProperties["ID"]]); foreach ($arTmpValues as $key => $value) $arValues[$value] = $value; } $resultHtml .= fShowFilePropertyField("ORDER_PROP_".$arProperties["ID"], $arProperties, $arValues, $arProperties["SIZE1"], $formVarsSubmit); } if (strlen($arProperties["DESCRIPTION"]) > 0) { $resultHtml .= "<br><small>".htmlspecialcharsEx($arProperties["DESCRIPTION"])."</small>"; } $resultHtml .= "\n</td>\n</tr>"; }//end while } $resultHtml .= "</table>"; return $resultHtml; }
</td> <td align="center"><?php echo GetMessage("SALE_VARIANTS_SORT"); ?> </td> <td align="center"><?php echo GetMessage("SALE_VARIANTS_DESCR"); ?> </td> <td align="center"><?php echo GetMessage("SALE_VARIANTS_DEL"); ?> </td> </tr> <?php $db_propsVars = CSaleOrderPropsVariant::GetList($b = "SORT", $o = "ASC", array("ORDER_PROPS_ID" => $ID)); $ind = -1; $oldind = -1; while ($db_propsVars->ExtractFields("f_")) { $ind++; $oldind++; if ($bInitVars) { $DB->InitTableVarsForEdit("b_sale_order_props_variant", "", "f_", "_" . $oldind); } ?> <tr> <td> <input type="hidden" name="ID_<?php echo $ind; ?> " value="<?php
static function DoProcessOrder(&$arOrder, $arOrderPropsValues, &$arErrors, &$arWarnings) { if (!is_array($arOrderPropsValues)) { $arOrderPropsValues = array(); } $arUser = null; $dbOrderProps = CSaleOrderProps::GetList(array("SORT" => "ASC"), array("PERSON_TYPE_ID" => $arOrder["PERSON_TYPE_ID"], "ACTIVE" => "Y"), false, false, array("ID", "NAME", "TYPE", "IS_LOCATION", "IS_LOCATION4TAX", "IS_PROFILE_NAME", "IS_PAYER", "IS_EMAIL", "REQUIED", "SORT", "IS_ZIP", "CODE", "DEFAULT_VALUE")); while ($arOrderProp = $dbOrderProps->Fetch()) { if (!array_key_exists($arOrderProp["ID"], $arOrderPropsValues)) { $curVal = $arOrderProp["DEFAULT_VALUE"]; if (strlen($curVal) <= 0) { if ($arOrderProp["IS_EMAIL"] == "Y" || $arOrderProp["IS_PAYER"] == "Y") { if ($arUser == null) { $dbUser = CUser::GetList($by = "ID", $order = "desc", array("ID_EQUAL_EXACT" => $arOrder["USER_ID"])); $arUser = $dbUser->Fetch(); } if ($arOrderProp["IS_EMAIL"] == "Y") { $curVal = is_array($arUser) ? $arUser["EMAIL"] : ""; } elseif ($arOrderProp["IS_PAYER"] == "Y") { $curVal = is_array($arUser) ? $arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"] : ""; } } } } else { $curVal = $arOrderPropsValues[$arOrderProp["ID"]]; } if (!is_array($curVal) && strlen($curVal) > 0 || is_array($curVal) && count($curVal) > 0) { //if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "MULTISELECT" || $arOrderProp["TYPE"] == "RADIO") if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "RADIO") { $arVariants = array(); $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ORDER_PROPS_ID" => $arOrderProp["ID"]), false, false, array("*")); while ($arVariant = $dbVariants->Fetch()) { $arVariants[] = $arVariant["VALUE"]; } if (!is_array($curVal)) { $curVal = array($curVal); } $arKeys = array_keys($curVal); foreach ($arKeys as $k) { if (!in_array($curVal[$k], $arVariants)) { unset($curVal[$k]); } } if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "RADIO") { $curVal = array_shift($curVal); } } elseif ($arOrderProp["TYPE"] == "LOCATION") { if (is_array($curVal)) { $curVal = array_shift($curVal); } $curVal = intval($curVal); $dbVariants = CSaleLocation::GetList(array(), array("ID" => $curVal), false, false, array("ID")); if ($arVariant = $dbVariants->Fetch()) { $curVal = intval($arVariant["ID"]); } else { $curVal = null; } } } if ($arOrderProp["TYPE"] == "LOCATION" && ($arOrderProp["IS_LOCATION"] == "Y" || $arOrderProp["IS_LOCATION4TAX"] == "Y")) { $curVal = intval($curVal); if ($arOrderProp["IS_LOCATION"] == "Y") { $arOrder["DELIVERY_LOCATION"] = $curVal; } if ($arOrderProp["IS_LOCATION4TAX"] == "Y") { $arOrder["TAX_LOCATION"] = $curVal; } if ($curVal <= 0) { $bErrorField = true; } } elseif ($arOrderProp["IS_PROFILE_NAME"] == "Y" || $arOrderProp["IS_PAYER"] == "Y" || $arOrderProp["IS_EMAIL"] == "Y" || $arOrderProp["IS_ZIP"] == "Y") { $curVal = trim($curVal); if ($arOrderProp["IS_PROFILE_NAME"] == "Y") { $arOrder["PROFILE_NAME"] = $curVal; } if ($arOrderProp["IS_PAYER"] == "Y") { $arOrder["PAYER_NAME"] = $curVal; } if ($arOrderProp["IS_ZIP"] == "Y") { $arOrder["DELIVERY_LOCATION_ZIP"] = $curVal; } if ($arOrderProp["IS_EMAIL"] == "Y") { $arOrder["USER_EMAIL"] = $curVal; if (!check_email($curVal)) { $arWarnings[] = array("CODE" => "PARAM", "TEXT" => str_replace(array("#EMAIL#", "#NAME#"), array(htmlspecialcharsbx($curVal), htmlspecialcharsbx($arOrderProp["NAME"])), GetMessage("SALE_GOPE_WRONG_EMAIL"))); } } if (strlen($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["REQUIED"] == "Y") { if ($arOrderProp["TYPE"] == "TEXT" || $arOrderProp["TYPE"] == "TEXTAREA" || $arOrderProp["TYPE"] == "RADIO" || $arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "CHECKBOX") { if (strlen($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["TYPE"] == "LOCATION") { if (intval($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["TYPE"] == "MULTISELECT") { //if (!is_array($curVal) || count($curVal) <= 0) if (strlen($curVal) <= 0) { $bErrorField = true; } } } if ($bErrorField) { $arWarnings[] = array("CODE" => "PARAM", "TEXT" => str_replace("#NAME#", htmlspecialcharsbx($arOrderProp["NAME"]), GetMessage("SALE_GOPE_FIELD_EMPTY"))); $bErrorField = false; } $arOrder["ORDER_PROP"][$arOrderProp["ID"]] = $curVal; } }
function getOrderPropFormated($arProperties, $arResult, &$arUserResult, &$arDeleteFieldLocation = array()) { global $USER; $curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]]; $curLocation = false; static $propertyGroupID = 0; static $propertyUSER_PROPS = ""; // take data from user profile if ($arUserResult["PROFILE_CHANGE"] == "Y" && intval($arUserResult["PROFILE_ID"]) > 0 && !($arResult["HAVE_PREPAYMENT"] && $arUserResult["PROFILE_DEFAULT"] == "Y" && !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]]))) { $dbUserPropsValues = CSaleOrderUserPropsValue::GetList(array("SORT" => "ASC"), array("USER_PROPS_ID" => $arUserResult["PROFILE_ID"], "ORDER_PROPS_ID" => $arProperties["ID"], "USER_ID" => intval($USER->GetID())), false, false, array("VALUE", "PROP_TYPE", "VARIANT_NAME", "SORT", "ORDER_PROPS_ID")); if ($arUserPropsValues = $dbUserPropsValues->Fetch()) { $valueTmp = ""; if ($arUserPropsValues["PROP_TYPE"] == "MULTISELECT") { $arUserPropsValues["VALUE"] = explode(",", $arUserPropsValues["VALUE"]); } $curVal = $arUserPropsValues["VALUE"]; } } elseif ($arUserResult["PROFILE_CHANGE"] == "Y" && intval($arUserResult["PROFILE_ID"]) <= 0) { if (isset($curVal)) { unset($curVal); } } elseif (isset($arUserResult["ORDER_PROP"][$arProperties["ID"]])) { $curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]]; } elseif ($arResult["HAVE_PREPAYMENT"] && !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]])) { $curVal = $arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]]; if ($arProperties["TYPE"] == "LOCATION") { $curLocation = $curVal; } } if (intval($_REQUEST["NEW_LOCATION_" . $arProperties["ID"]]) > 0) { $curVal = intval($_REQUEST["NEW_LOCATION_" . $arProperties["ID"]]); } $arProperties["FIELD_NAME"] = "ORDER_PROP_" . $arProperties["ID"]; if (strlen($arProperties["CODE"]) > 0) { $arProperties["FIELD_ID"] = "ORDER_PROP_" . $arProperties["CODE"]; } else { $arProperties["FIELD_ID"] = "ORDER_PROP_" . $arProperties["ID"]; } if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID || $propertyUSER_PROPS != $arProperties["USER_PROPS"]) { $arProperties["SHOW_GROUP_NAME"] = "Y"; } $propertyGroupID = $arProperties["PROPS_GROUP_ID"]; $propertyUSER_PROPS = $arProperties["USER_PROPS"]; if ($arProperties["REQUIED"] == "Y" || $arProperties["IS_EMAIL"] == "Y" || $arProperties["IS_PROFILE_NAME"] == "Y" || $arProperties["IS_LOCATION"] == "Y" || $arProperties["IS_LOCATION4TAX"] == "Y" || $arProperties["IS_PAYER"] == "Y" || $arProperties["IS_ZIP"] == "Y") { $arProperties["REQUIED_FORMATED"] = "Y"; } if ($arProperties["TYPE"] == "CHECKBOX") { if ($curVal == "Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"] == "Y") { $arProperties["CHECKED"] = "Y"; $arProperties["VALUE_FORMATED"] = GetMessage("SOA_Y"); } else { $arProperties["VALUE_FORMATED"] = GetMessage("SOA_N"); } $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 30; } elseif ($arProperties["TYPE"] == "TEXT") { if (strlen($curVal) <= 0) { if (strlen($arProperties["DEFAULT_VALUE"]) > 0 && !isset($curVal)) { $arProperties["VALUE"] = $arProperties["DEFAULT_VALUE"]; } elseif ($arProperties["IS_EMAIL"] == "Y") { $arProperties["VALUE"] = $USER->GetEmail(); } elseif ($arProperties["IS_PAYER"] == "Y") { //$arProperties["VALUE"] = $USER->GetFullName(); $rsUser = CUser::GetByID($USER->GetID()); $fio = ""; if ($arUser = $rsUser->Fetch()) { $fio = CUser::FormatName(CSite::GetNameFormat(false), array("NAME" => $arUser["NAME"], "LAST_NAME" => $arUser["LAST_NAME"], "SECOND_NAME" => $arUser["SECOND_NAME"]), false, false); } $arProperties["VALUE"] = $fio; } } else { $arProperties["VALUE"] = $curVal; } //select ZIP for LOCATION if ($arProperties["IS_ZIP"] == "Y" && $arUserResult["PROFILE_CHANGE"] == "N") { $dbPropertiesLoc = CSaleOrderProps::GetList(array("ID" => "DESC"), array("PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"], "ACTIVE" => "Y", "UTIL" => "N", "IS_LOCATION" => "Y"), false, false, array("ID")); $arPropertiesLoc = $dbPropertiesLoc->Fetch(); if ($arPropertiesLoc["ID"] > 0) { $arZipLocation = array(); if (strlen($curVal) > 0) { $arZipLocation = CSaleLocation::GetByZIP($curVal); } $rsZipList = CSaleLocation::GetLocationZIP($arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]]); if ($arZip = $rsZipList->Fetch()) { if (strlen($arZip["ZIP"]) > 0 && (empty($arZipLocation) || $arZipLocation["ID"] != $arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]])) { $arProperties["VALUE"] = $arZip["ZIP"]; } } } } if ($arProperties["IS_ZIP"] == "Y") { $arUserResult["DELIVERY_LOCATION_ZIP"] = $arProperties["VALUE"]; } $arProperties["VALUE"] = htmlspecialcharsEx($arProperties["VALUE"]); $arProperties["VALUE_FORMATED"] = $arProperties["VALUE"]; } elseif ($arProperties["TYPE"] == "SELECT") { $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 1; $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*")); $flagDefault = "N"; $nameProperty = ""; while ($arVariants = $dbVariants->GetNext()) { if ($flagDefault == "N" && $nameProperty == "") { $nameProperty = $arVariants["NAME"]; } if ($arVariants["VALUE"] == $curVal || (!isset($curVal) || $curVal == "") && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) { $arVariants["SELECTED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["NAME"]; $flagDefault = "Y"; } $arProperties["VARIANTS"][] = $arVariants; } if ($flagDefault == "N") { $arProperties["VARIANTS"][0]["SELECTED"] = "Y"; $arProperties["VARIANTS"][0]["VALUE_FORMATED"] = $nameProperty; } } elseif ($arProperties["TYPE"] == "MULTISELECT") { $arProperties["FIELD_NAME"] = "ORDER_PROP_" . $arProperties["ID"] . '[]'; $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 5; $arDefVal = explode(",", $arProperties["DEFAULT_VALUE"]); $countDefVal = count($arDefVal); for ($i = 0; $i < $countDefVal; $i++) { $arDefVal[$i] = Trim($arDefVal[$i]); } $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*")); $i = 0; while ($arVariants = $dbVariants->GetNext()) { if (is_array($curVal) && in_array($arVariants["VALUE"], $curVal) || !isset($curVal) && in_array($arVariants["VALUE"], $arDefVal)) { $arVariants["SELECTED"] = "Y"; if ($i > 0) { $arProperties["VALUE_FORMATED"] .= ", "; } $arProperties["VALUE_FORMATED"] .= $arVariants["NAME"]; $i++; } $arProperties["VARIANTS"][] = $arVariants; } } elseif ($arProperties["TYPE"] == "TEXTAREA") { $arProperties["SIZE2"] = intval($arProperties["SIZE2"]) > 0 ? $arProperties["SIZE2"] : 4; $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 40; $arProperties["VALUE"] = htmlspecialcharsEx(isset($curVal) ? $curVal : $arProperties["DEFAULT_VALUE"]); $arProperties["VALUE_FORMATED"] = $arProperties["VALUE"]; } elseif ($arProperties["TYPE"] == "LOCATION") { //enable location town text if ($_REQUEST["is_ajax_post"] == "Y" && $arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0 && isset($_REQUEST["ORDER_PROP_" . $arProperties["ID"]])) { $rsLocationsList = CSaleLocation::GetList(array(), array("ID" => $curVal), false, false, array("ID", "CITY_ID")); $arCity = $rsLocationsList->GetNext(); if (intval($arCity["CITY_ID"]) <= 0) { unset($arDeleteFieldLocation[$arProperties["ID"]]); } else { $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; } } elseif ($arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0) { $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; } $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 1; $dbVariants = CSaleLocation::GetList(array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG")); while ($arVariants = $dbVariants->GetNext()) { if (intval($arVariants["ID"]) == intval($curVal) || !isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"]) || strlen($curLocation) > 0 && ToUpper($curLocation) == ToUpper($arVariants["CITY_NAME"])) { $arVariants["SELECTED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"] . (strlen($arVariants["CITY_NAME"]) > 0 ? " - " : "") . $arVariants["CITY_NAME"]; $arProperties["VALUE"] = $arVariants["ID"]; if ($arProperties["IS_LOCATION"] == "Y") { $arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"]; } if ($arProperties["IS_LOCATION4TAX"] == "Y") { $arUserResult["TAX_LOCATION"] = $arProperties["VALUE"]; } } $arVariants["NAME"] = $arVariants["COUNTRY_NAME"] . (strlen($arVariants["CITY_NAME"]) > 0 ? " - " : "") . $arVariants["CITY_NAME"]; $arProperties["VARIANTS"][] = $arVariants; } if (count($arProperties["VARIANTS"]) == 1) { $arProperties["VALUE"] = $arProperties["VARIANTS"][0]["ID"]; if ($arProperties["IS_LOCATION"] == "Y") { $arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"]; } if ($arProperties["IS_LOCATION4TAX"] == "Y") { $arUserResult["TAX_LOCATION"] = $arProperties["VALUE"]; } } } elseif ($arProperties["TYPE"] == "RADIO") { $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*")); while ($arVariants = $dbVariants->GetNext()) { if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) { $arVariants["CHECKED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["NAME"]; } $arProperties["VARIANTS"][] = $arVariants; } } elseif ($arProperties["TYPE"] == "FILE") { $arProperties["SIZE1"] = intval($arProperties["SIZE1"]); $arProperties["VALUE"] = isset($curVal) ? CSaleHelper::getFileInfo($curVal) : $arProperties["DEFAULT_VALUE"]; } return $arProperties; }
function getOrderPropFormated($arProperties, $arResult, &$arUserResult, &$arDeleteFieldLocation = array()) { global $USER; $isProfileChanged = ($arUserResult["PROFILE_CHANGE"] == "Y"); $isEmptyUserResult = (empty($arUserResult["ORDER_PROP"])); $curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]]; $curLocation = false; static $propertyGroupID = 0; static $propertyUSER_PROPS = ""; // take data from user profile if ($arUserResult["PROFILE_CHANGE"] == "Y" && intval($arUserResult["PROFILE_ID"]) > 0 && !($arResult["HAVE_PREPAYMENT"] && $arUserResult["PROFILE_DEFAULT"] == "Y" && !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]]))) { $dbUserPropsValues = CSaleOrderUserPropsValue::GetList( array("SORT" => "ASC"), array( "USER_PROPS_ID" => $arUserResult["PROFILE_ID"], "ORDER_PROPS_ID" => $arProperties["ID"], "USER_ID" => intval($USER->GetID()), ), false, false, array("VALUE", "PROP_TYPE", "VARIANT_NAME", "SORT", "ORDER_PROPS_ID") ); if ($arUserPropsValues = $dbUserPropsValues->Fetch()) { $valueTmp = ""; if ($arUserPropsValues["PROP_TYPE"] == "MULTISELECT") { $arUserPropsValues["VALUE"] = explode(",", $arUserPropsValues["VALUE"]); } $curVal = $arUserPropsValues["VALUE"]; } } elseif($arUserResult["PROFILE_CHANGE"] == "Y" && intval($arUserResult["PROFILE_ID"]) <= 0) { if (isset($curVal)) unset($curVal); } elseif(isset($arUserResult["ORDER_PROP"][$arProperties["ID"]])) $curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]]; elseif($arResult["HAVE_PREPAYMENT"] && !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]])) { $curVal = $arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]]; if($arProperties["TYPE"] == "LOCATION") $curLocation = $curVal; } if (intval($_REQUEST["NEW_LOCATION_".$arProperties["ID"]]) > 0) $curVal = intval($_REQUEST["NEW_LOCATION_".$arProperties["ID"]]); $arProperties["FIELD_NAME"] = "ORDER_PROP_".$arProperties["ID"]; if(strlen($arProperties["CODE"]) > 0) $arProperties["FIELD_ID"] = "ORDER_PROP_".$arProperties["CODE"]; else $arProperties["FIELD_ID"] = "ORDER_PROP_".$arProperties["ID"]; if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID || $propertyUSER_PROPS != $arProperties["USER_PROPS"]) $arProperties["SHOW_GROUP_NAME"] = "Y"; $propertyGroupID = $arProperties["PROPS_GROUP_ID"]; $propertyUSER_PROPS = $arProperties["USER_PROPS"]; if ($arProperties["REQUIED"]=="Y" || $arProperties["IS_EMAIL"]=="Y" || $arProperties["IS_PROFILE_NAME"]=="Y" || $arProperties["IS_LOCATION"]=="Y" || $arProperties["IS_LOCATION4TAX"]=="Y" || $arProperties["IS_PAYER"]=="Y" || $arProperties["IS_ZIP"]=="Y") $arProperties["REQUIED_FORMATED"]="Y"; if ($arProperties["TYPE"] == "CHECKBOX") { if ($curVal=="Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"]=="Y") { $arProperties["CHECKED"] = "Y"; $arProperties["VALUE_FORMATED"] = GetMessage("SOA_Y"); } else $arProperties["VALUE_FORMATED"] = GetMessage("SOA_N"); $arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 30); if ($isProfileChanged || $isEmptyUserResult) { $arUserResult["ORDER_PROP"][$arProperties["ID"]] = (isset($arProperties["CHECKED"]) && $arProperties["CHECKED"] == "Y" ? 'Y' : "N"); } } elseif ($arProperties["TYPE"] == "TEXT") { if (strlen($curVal) <= 0) { if(strlen($arProperties["DEFAULT_VALUE"])>0 && !isset($curVal)) $arProperties["VALUE"] = $arProperties["DEFAULT_VALUE"]; elseif ($arProperties["IS_EMAIL"] == "Y") $arProperties["VALUE"] = $USER->GetEmail(); elseif ($arProperties["IS_PAYER"] == "Y") { //$arProperties["VALUE"] = $USER->GetFullName(); $rsUser = CUser::GetByID($USER->GetID()); $fio = ""; if ($arUser = $rsUser->Fetch()) { $fio = CUser::FormatName(CSite::GetNameFormat(false), array("NAME" => $arUser["NAME"], "LAST_NAME" => $arUser["LAST_NAME"], "SECOND_NAME" => $arUser["SECOND_NAME"]), false, false); } $arProperties["VALUE"] = $fio; } $arProperties["SOURCE"] = 'DEFAULT'; } else { $arProperties["VALUE"] = $curVal; $arProperties["SOURCE"] = 'FORM'; } //select ZIP for LOCATION if ($arProperties["IS_ZIP"] == "Y" && $arUserResult["PROFILE_CHANGE"] == "N") { $dbPropertiesLoc = CSaleOrderProps::GetList( array("ID" => "DESC"), array( "PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"], "ACTIVE" => "Y", "UTIL" => "N", "IS_LOCATION" => "Y" ), false, false, array("ID") ); $arPropertiesLoc = $dbPropertiesLoc->Fetch(); if ($arPropertiesLoc["ID"] > 0) { $arZipLocation = array(); if(strlen($curVal) > 0) $arZipLocation = CSaleLocation::GetByZIP($curVal); $rsZipList = CSaleLocation::GetLocationZIP($arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]]); if($arZip = $rsZipList->Fetch()) { if (strlen($arZip["ZIP"]) > 0 && (empty($arZipLocation) || $arZipLocation["ID"] != $arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]])) $arProperties["VALUE"] = $arZip["ZIP"]; } } } if ($arProperties["IS_ZIP"]=="Y") $arUserResult["DELIVERY_LOCATION_ZIP"] = $arProperties["VALUE"]; $arProperties["VALUE"] = htmlspecialcharsEx($arProperties["VALUE"]); $arProperties["VALUE_FORMATED"] = $arProperties["VALUE"]; if ($isProfileChanged || $isEmptyUserResult) { $arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arProperties["VALUE"]; } } elseif ($arProperties["TYPE"] == "SELECT") { $arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 1); $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC", "NAME" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); $flagDefault = "N"; $nameProperty = ""; while ($arVariants = $dbVariants->GetNext()) { if ($flagDefault == "N" && $nameProperty == "") { $nameProperty = $arVariants["NAME"]; } if (($arVariants["VALUE"] == $curVal) || ((!isset($curVal) || $curVal == "") && ($arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]))) { $arVariants["SELECTED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["NAME"]; $flagDefault = "Y"; if ($isProfileChanged || $isEmptyUserResult) { $arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arVariants["NAME"]; } } $arProperties["VARIANTS"][] = $arVariants; } if ($flagDefault == "N") { $arProperties["VARIANTS"][0]["SELECTED"]= "Y"; $arProperties["VARIANTS"][0]["VALUE_FORMATED"] = $nameProperty; if ($isProfileChanged || $isEmptyUserResult) { $arUserResult["ORDER_PROP"][$arProperties["ID"]] = $nameProperty; } } } elseif ($arProperties["TYPE"] == "MULTISELECT") { $setValue = array(); $arProperties["FIELD_NAME"] = "ORDER_PROP_".$arProperties["ID"].'[]'; $arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 5); $arDefVal = explode(",", $arProperties["DEFAULT_VALUE"]); $countDefVal = count($arDefVal); for ($i = 0; $i < $countDefVal; $i++) $arDefVal[$i] = Trim($arDefVal[$i]); $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); $i = 0; while ($arVariants = $dbVariants->GetNext()) { if ((is_array($curVal) && in_array($arVariants["VALUE"], $curVal)) || (!isset($curVal) && in_array($arVariants["VALUE"], $arDefVal))) { $arVariants["SELECTED"] = "Y"; if ($i > 0) $arProperties["VALUE_FORMATED"] .= ", "; $arProperties["VALUE_FORMATED"] .= $arVariants["NAME"]; $setValue[] = $arVariants["VALUE"]; $i++; } $arProperties["VARIANTS"][] = $arVariants; } if ($isProfileChanged || $isEmptyUserResult) { $arUserResult["ORDER_PROP"][$arProperties["ID"]] = $setValue; } } elseif ($arProperties["TYPE"] == "TEXTAREA") { $arProperties["SIZE2"] = ((intval($arProperties["SIZE2"]) > 0) ? $arProperties["SIZE2"] : 4); $arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 40); $arProperties["VALUE"] = htmlspecialcharsEx(isset($curVal) ? $curVal : $arProperties["DEFAULT_VALUE"]); $arProperties["VALUE_FORMATED"] = $arProperties["VALUE"]; if ($isProfileChanged || $isEmptyUserResult) { $arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arProperties["VALUE"]; } } elseif ($arProperties["TYPE"] == "LOCATION") { if(CSaleLocation::isLocationProEnabled()) { $arProperties["VALUE"] = $curVal; // variants $locationFound = false; $dbVariants = CSaleLocation::GetList( array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG", "CITY_ID") ); while ($arVariants = $dbVariants->GetNext()) { if (intval($arVariants["ID"]) == intval($curVal) || (!isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"])) || (strlen($curLocation) > 0 && ToUpper($curLocation) == ToUpper($arVariants["CITY_NAME"]))) { // set formatted value $arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"]; // location found, set it as DELIVERY_LOCATION and TAX_LOCATION $arUserResult["DELIVERY_LOCATION"] = $arVariants['ID']; if($arProperties["IS_LOCATION4TAX"]=="Y") $arUserResult["TAX_LOCATION"] = $arVariants['ID']; $locationFound = $arVariants; $arVariants["SELECTED"] = "Y"; if ($isProfileChanged || $isEmptyUserResult) { $arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arVariants['ID']; } } $arVariants["NAME"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"]; // save to variants $arProperties["VARIANTS"][] = $arVariants; } // this is not a COUNTRY, REGION or CITY, but must appear in $arProperties["VARIANTS"] if(!$locationFound && IntVal($curVal)) { $item = CSaleLocation::GetById($curVal); if($item) { // set formatted value $arProperties["VALUE_FORMATED"] = $item["COUNTRY_NAME"].((strlen($item["CITY_NAME"]) > 0) ? " - " : "").$item["CITY_NAME"]; // location found, set it as DELIVERY_LOCATION and TAX_LOCATION $arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"]; if($arProperties["IS_LOCATION4TAX"]=="Y") $arUserResult["TAX_LOCATION"] = $arProperties["VALUE"]; if ($isProfileChanged || $isEmptyUserResult) { $arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arProperties["VALUE"]; } $locationFound = $item; $item['SELECTED'] = 'Y'; $item['NAME'] = $item["COUNTRY_NAME"].((strlen($item["CITY_NAME"]) > 0) ? " - " : "").$item["CITY_NAME"]; // save to variants $arProperties["VARIANTS"][] = $item; } } if($locationFound) { // enable location town text if(isset($arResult['LOCATION_ALT_PROP_DISPLAY_MANUAL'])) // its an ajax-hit and sale.location.selector.steps is used { if(intval($arResult['LOCATION_ALT_PROP_DISPLAY_MANUAL'][$arProperties["ID"]])) // user MANUALLY selected "Other location" in the selector { // Manually chosen, decide... //if(intval($locationFound['CITY_ID'])) // we are already selected CITY, no town property needed // $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; //else // somewhere above unset($arDeleteFieldLocation[$arProperties["ID"]]); } else { $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; } } else { // first load, dont know what to do. default: hide $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; } } else { $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; } } else { //enable location town text if ($_REQUEST["is_ajax_post"] == "Y" && $arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0 && isset($_REQUEST["ORDER_PROP_".$arProperties["ID"]])) { $rsLocationsList = CSaleLocation::GetList( array(), array("ID" => $curVal), false, false, array("ID", "CITY_ID") ); $arCity = $rsLocationsList->GetNext(); if (intval($arCity["CITY_ID"]) <= 0) unset($arDeleteFieldLocation[$arProperties["ID"]]); else $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; } elseif ($arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0) { $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; } $arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 1); $dbVariants = CSaleLocation::GetList( array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG") ); while ($arVariants = $dbVariants->GetNext()) { if (intval($arVariants["ID"]) == intval($curVal) || (!isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"])) || (strlen($curLocation) > 0 && ToUpper($curLocation) == ToUpper($arVariants["CITY_NAME"]))) { $arVariants["SELECTED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"]; $arProperties["VALUE"] = $arVariants["ID"]; if ($arProperties["IS_LOCATION"]=="Y") $arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"]; if ($arProperties["IS_LOCATION4TAX"]=="Y") $arUserResult["TAX_LOCATION"] = $arProperties["VALUE"]; if ($isProfileChanged || $isEmptyUserResult) { $arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arProperties["VALUE"]; } } $arVariants["NAME"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"]; $arProperties["VARIANTS"][] = $arVariants; } if(count($arProperties["VARIANTS"]) == 1) { $arProperties["VALUE"] = $arProperties["VARIANTS"][0]["ID"]; if($arProperties["IS_LOCATION"]=="Y") $arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"]; if($arProperties["IS_LOCATION4TAX"]=="Y") $arUserResult["TAX_LOCATION"] = $arProperties["VALUE"]; } } } elseif ($arProperties["TYPE"] == "RADIO") { $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); while ($arVariants = $dbVariants->GetNext()) { if ($arVariants["VALUE"] == $curVal || (!isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"])) { $arVariants["CHECKED"]="Y"; $arProperties["VALUE_FORMATED"] = $arVariants["NAME"]; if ($isProfileChanged || $isEmptyUserResult) { $arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arVariants["VALUE"]; } } $arProperties["VARIANTS"][] = $arVariants; } } elseif ($arProperties["TYPE"] == "FILE") { $arProperties["SIZE1"] = intval($arProperties["SIZE1"]); $arProperties["VALUE"] = isset($curVal) ? CSaleHelper::getFileInfo($curVal) : $arProperties["DEFAULT_VALUE"]; if ($isProfileChanged || $isEmptyUserResult) { $arUserResult["ORDER_PROP"][$arProperties["ID"]] = $arProperties["VALUE"]; } } return $arProperties; }
static function DoProcessOrder(&$arOrder, $arOrderPropsValues, &$arErrors, &$arWarnings, $paysystemId = 0, $deliveryId = "", $arOptions = array()) { if (!is_array($arOrderPropsValues)) { $arOrderPropsValues = array(); } $arUser = null; $arFilter = array("PERSON_TYPE_ID" => $arOrder["PERSON_TYPE_ID"], "ACTIVE" => "Y"); if ($paysystemId != 0) { $arFilter["RELATED"]["PAYSYSTEM_ID"] = $paysystemId; $arFilter["RELATED"]["TYPE"] = "WITH_NOT_RELATED"; } if (strlen($deliveryId) > 0) { $arFilter["RELATED"]["DELIVERY_ID"] = $deliveryId; $arFilter["RELATED"]["TYPE"] = "WITH_NOT_RELATED"; } $dbOrderProps = CSaleOrderProps::GetList(array("SORT" => "ASC"), $arFilter, false, false, array("ID", "NAME", "TYPE", "IS_LOCATION", "IS_LOCATION4TAX", "IS_PROFILE_NAME", "IS_PAYER", "IS_EMAIL", "REQUIED", "SORT", "IS_ZIP", "CODE", "DEFAULT_VALUE")); while ($arOrderProp = $dbOrderProps->Fetch()) { if (!array_key_exists($arOrderProp["ID"], $arOrderPropsValues)) { $curVal = $arOrderProp["DEFAULT_VALUE"]; if (strlen($curVal) <= 0) { if ($arOrderProp["IS_EMAIL"] == "Y" || $arOrderProp["IS_PAYER"] == "Y") { if ($arUser == null) { $dbUser = CUser::GetList($by = "ID", $order = "desc", array("ID_EQUAL_EXACT" => $arOrder["USER_ID"])); $arUser = $dbUser->Fetch(); } if ($arOrderProp["IS_EMAIL"] == "Y") { $curVal = is_array($arUser) ? $arUser["EMAIL"] : ""; } elseif ($arOrderProp["IS_PAYER"] == "Y") { $curVal = is_array($arUser) ? $arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"] : ""; } } } } else { $curVal = $arOrderPropsValues[$arOrderProp["ID"]]; } if (!is_array($curVal) && strlen($curVal) > 0 || is_array($curVal) && count($curVal) > 0) { //if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "MULTISELECT" || $arOrderProp["TYPE"] == "RADIO") if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "RADIO") { $arVariants = array(); $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ORDER_PROPS_ID" => $arOrderProp["ID"]), false, false, array("*")); while ($arVariant = $dbVariants->Fetch()) { $arVariants[] = $arVariant["VALUE"]; } if (!is_array($curVal)) { $curVal = array($curVal); } $arKeys = array_keys($curVal); foreach ($arKeys as $k) { if (!in_array($curVal[$k], $arVariants)) { unset($curVal[$k]); } } if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "RADIO") { $curVal = array_shift($curVal); } } elseif ($arOrderProp["TYPE"] == "LOCATION") { if (is_array($curVal)) { $curVal = array_shift($curVal); } if (CSaleLocation::isLocationProMigrated()) { // if we came from places like CRM, we got location in CODEs, because CRM knows nothing about location IDs. // so, CRM sends LOCATION_IN_CODES in options array. In the other case, we assume we got locations as IDs $res = CSaleLocation::GetById($curVal); if (intval($res['ID'])) { $curVal = $res['ID']; $locId = $res['ID']; } else { $curVal = null; $locId = false; } } else { $dbVariants = CSaleLocation::GetList(array(), array("ID" => $curVal), false, false, array("ID")); if ($arVariant = $dbVariants->Fetch()) { $curVal = intval($arVariant["ID"]); } else { $curVal = null; } } } } if ($arOrderProp["TYPE"] == "LOCATION" && ($arOrderProp["IS_LOCATION"] == "Y" || $arOrderProp["IS_LOCATION4TAX"] == "Y")) { if ($arOrderProp["IS_LOCATION"] == "Y") { $arOrder["DELIVERY_LOCATION"] = $locId; } if ($arOrderProp["IS_LOCATION4TAX"] == "Y") { $arOrder["TAX_LOCATION"] = $locId; } if (!$locId) { $bErrorField = true; } } elseif ($arOrderProp["IS_PROFILE_NAME"] == "Y" || $arOrderProp["IS_PAYER"] == "Y" || $arOrderProp["IS_EMAIL"] == "Y" || $arOrderProp["IS_ZIP"] == "Y") { $curVal = trim($curVal); if ($arOrderProp["IS_PROFILE_NAME"] == "Y") { $arOrder["PROFILE_NAME"] = $curVal; } if ($arOrderProp["IS_PAYER"] == "Y") { $arOrder["PAYER_NAME"] = $curVal; } if ($arOrderProp["IS_ZIP"] == "Y") { $arOrder["DELIVERY_LOCATION_ZIP"] = $curVal; } if ($arOrderProp["IS_EMAIL"] == "Y") { $arOrder["USER_EMAIL"] = $curVal; if (!check_email($curVal)) { $arWarnings[] = array("CODE" => "PARAM", "TEXT" => str_replace(array("#EMAIL#", "#NAME#"), array(htmlspecialcharsbx($curVal), htmlspecialcharsbx($arOrderProp["NAME"])), GetMessage("SALE_GOPE_WRONG_EMAIL"))); } } if (strlen($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["REQUIED"] == "Y") { if ($arOrderProp["TYPE"] == "TEXT" || $arOrderProp["TYPE"] == "TEXTAREA" || $arOrderProp["TYPE"] == "RADIO" || $arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "CHECKBOX") { if (strlen($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["TYPE"] == "LOCATION") { if (intval($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["TYPE"] == "MULTISELECT") { //if (!is_array($curVal) || count($curVal) <= 0) if (strlen($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["TYPE"] == "FILE") { if (is_array($curVal)) { foreach ($curVal as $index => $arFileData) { if (!array_key_exists("name", $arFileData) && !array_key_exists("file_id", $arFileData)) { $bErrorField = true; } } } else { $bErrorField = true; } } } if ($bErrorField) { $arWarnings[] = array("CODE" => "PARAM", "TEXT" => str_replace("#NAME#", htmlspecialcharsbx($arOrderProp["NAME"]), GetMessage("SALE_GOPE_FIELD_EMPTY"))); $bErrorField = false; } $arOrder["ORDER_PROP"][$arOrderProp["ID"]] = $curVal; } }
// input settings $inputSettings = Input\Manager::getSettings($property, $reload); if (isset($resetInputSettings)) { unset($property['DEFAULT_VALUE'], $property['SETTINGS']); $property = array_diff_key($property, $inputSettings); if ($propertyId && $existentProperty && $property['TYPE'] == $existentProperty['TYPE']) { $property['MULTIPLE'] = $existentProperty['MULTIPLE']; $property['DEFAULT_VALUE'] = $existentProperty['DEFAULT_VALUE']; $property += $existentProperty['SETTINGS']; } } // load property metadata switch ($property['TYPE']) { case 'ENUM': if (!$variants) { $result = CSaleOrderPropsVariant::GetList($b = 'SORT', $o = 'ASC', array('ORDER_PROPS_ID' => $propertyId)); while ($row = $result->Fetch()) { $variants[] = $row; } } break; case 'FILE': $property['DEFAULT_VALUE'] = Input\File::loadInfo($property['DEFAULT_VALUE']); break; } // variant settings $variantSettings = array('VALUE' => array('TYPE' => 'STRING', 'LABEL' => Loc::getMessage('SALE_VARIANTS_CODE'), 'SIZE' => '5', 'MAXLENGTH' => 255, 'REQUIRED' => 'Y'), 'NAME' => array('TYPE' => 'STRING', 'LABEL' => Loc::getMessage('SALE_VARIANTS_NAME'), 'SIZE' => '20', 'MAXLENGTH' => 255, 'REQUIRED' => 'Y'), 'SORT' => array('TYPE' => 'NUMBER', 'LABEL' => Loc::getMessage('SALE_VARIANTS_SORT'), 'MIN' => 0, 'STEP' => 1, 'VALUE' => 100), 'DESCRIPTION' => array('TYPE' => 'STRING', 'LABEL' => Loc::getMessage('SALE_VARIANTS_DESCR'), 'SIZE' => '30', 'MAXLENGTH' => 255), 'ID' => array('TYPE' => 'NUMBER', 'MIN' => 0, 'STEP' => 1, 'HIDDEN' => 'Y')); // common settings $groupOptions = array(); $result = \CSaleOrderPropsGroup::GetList($b = "NAME", $o = "ASC", array('PERSON_TYPE_ID' => $personTypeId)); while ($row = $result->Fetch()) {
function fGetBuyerType($PERSON_TYPE_ID, $LID, $USER_ID = '', $ORDER_ID = 0, $formVarsSubmit = false) { global $locationZipID, $locationID, $DELIVERY_LOCATION, $DELIVERY_LOCATION_ZIP; $resultHtml = "<script>locationZipID = 0;locationID = 0;</script><table width=\"100%\" id=\"order_type_props\" class=\"edit-table\">"; //select person type $arPersonTypeList = array(); $personTypeSelect = "<select name='buyer_type_id' id='buyer_type_id' OnChange='fBuyerChangeType(this);' >"; $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ACTIVE" => "Y")); while ($arPersonType = $dbPersonType->GetNext()) { if (!in_array($LID, $arPersonType["LIDS"])) { continue; } if (!isset($PERSON_TYPE_ID) or $PERSON_TYPE_ID == "") { $PERSON_TYPE_ID = $arPersonType["ID"]; } $class = ""; if (IntVal($arPersonType["ID"]) == IntVal($PERSON_TYPE_ID)) { $class = " selected"; } $personTypeSelect .= "<option value=\"" . $arPersonType["ID"] . "\" " . $class . ">" . $arPersonType["NAME"] . " [" . $arPersonType["ID"] . "]</option>"; } $personTypeSelect .= "</select>"; $userComment = ""; $userDisplay = "none"; if (IntVal($ORDER_ID) > 0) { $dbOrder = CSaleOrder::GetList(array(), array("ID" => $ORDER_ID, "ACTIVE" => "Y"), false, false, array()); $arOrder = $dbOrder->Fetch(); $userComment = $arOrder["USER_DESCRIPTION"]; $userDisplay = "table-row"; } if ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerNew") { $userDisplay = "none"; } elseif ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist") { $userDisplay = "table-row"; } $resultHtml .= "<tr id=\"btnBuyerExistField\" style=\"display:" . $userDisplay . "\">\n\t\t\t<td class=\"adm-detail-content-cell-l\" width=\"40%\">" . GetMessage("NEWO_BUYER") . ":</td>\n\t\t\t<td class=\"adm-detail-content-cell-r\" width=\"60%\"><div id=\"user_name\">" . fGetUserName($USER_ID) . "</div></td></tr>"; $resultHtml .= "<tr class=\"adm-detail-required-field\">\n\t\t<td class=\"adm-detail-content-cell-l\" width=\"40%\">" . GetMessage("SOE_PERSON_TYPE") . ":</td>\n\t\t<td class=\"adm-detail-content-cell-r\" width=\"60%\">" . $personTypeSelect . "</td>\n\t</tr>"; $bShowTrProfile = "none"; if ($formVarsSubmit && $_POST["btnTypeBuyer"] == "btnBuyerExist") { $bShowTrProfile = "table-row"; } $resultHtml .= "<tr id=\"buyer_profile_display\" style=\"display:" . $bShowTrProfile . "\" class=\"adm-detail-required-field\">\n\t\t<td class=\"adm-detail-content-cell-l\">" . GetMessage("NEWO_BUYER_PROFILE") . ":</td>\n\t\t<td class=\"adm-detail-content-cell-r\">\n\t\t\t<div id=\"buyer_profile_select\">"; if ($formVarsSubmit && $_POST["btnTypeBuyer"] == "btnBuyerExist") { $resultHtml .= fUserProfile(IntVal($_POST["user_id"]), IntVal($_POST["buyer_type_id"]), $default = ''); } $resultHtml .= "</div></td>\n\t</tr>"; if ($ORDER_ID <= 0) { $arCountProps = fGetCountProfileProps($PERSON_TYPE_ID); $resultHtml .= "<tr id=\"btnBuyerNewField\">"; if (count($arCountProps) < 3) { $resultHtml .= "<td colspan=2>\n\t\t\t\t\t<table width=\"100%\" class=\"edit-table\" >"; if (IntVal($arCountProps["IS_EMAIL"]) <= 0) { $resultHtml .= "<tr class=\"adm-detail-required-field\">\n\t\t\t\t\t\t\t<td class=\"adm-detail-content-cell-l\" width=\"40%\">" . GetMessage("NEWO_BUYER_REG_MAIL") . "</td>\n\t\t\t\t\t\t\t<td class=\"adm-detail-content-cell-r\"><input type=\"text\" name=\"NEW_BUYER_EMAIL\" size=\"30\" value=\"" . htmlspecialcharsbx(trim($_REQUEST["NEW_BUYER_EMAIL"])) . "\" tabindex=\"1\" /></td>\n\t\t\t\t\t\t</tr>"; } if (IntVal($arCountProps["IS_PAYER"]) <= 0) { $resultHtml .= "<tr class=\"adm-detail-required-field\">\n\t\t\t\t\t\t\t<td class=\"adm-detail-content-cell-l\">" . GetMessage("NEWO_BUYER_REG_LASTNAME") . "</td>\n\t\t\t\t\t\t\t<td class=\"adm-detail-content-cell-r\"><input type=\"text\" name=\"NEW_BUYER_LAST_NAME\" size=\"30\" value=\"" . htmlspecialcharsbx(trim($_REQUEST["NEW_BUYER_LAST_NAME"])) . "\" tabindex=\"3\" /></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class=\"adm-detail-required-field\">\n\t\t\t\t\t\t\t<td class=\"adm-detail-content-cell-l\">" . GetMessage("NEWO_BUYER_REG_NAME") . "</td>\n\t\t\t\t\t\t\t<td class=\"adm-detail-content-cell-r\"><input type=\"text\" name=\"NEW_BUYER_NAME\" size=\"30\" value=\"" . htmlspecialcharsbx(trim($_REQUEST["NEW_BUYER_NAME"])) . "\" tabindex=\"2\" /></td>\n\t\t\t\t\t\t</tr>"; } $resultHtml .= "</table>\n\t\t\t\t</td>"; } $resultHtml .= "</tr>"; } $arPropValues = array(); if ($formVarsSubmit) { $locationIndexForm = ""; foreach ($_POST as $key => $value) { if (substr($key, 0, strlen("CITY_ORDER_PROP_")) == "CITY_ORDER_PROP_") { $arPropValues[IntVal(substr($key, strlen("CITY_ORDER_PROP_")))] = htmlspecialcharsbx($value); $locationIndexForm = IntVal(substr($key, strlen("CITY_ORDER_PROP_"))); } if (substr($key, 0, strlen("ORDER_PROP_")) == "ORDER_PROP_") { if ($locationIndexForm != IntVal(substr($key, strlen("ORDER_PROP_")))) { $arPropValues[IntVal(substr($key, strlen("ORDER_PROP_")))] = htmlspecialcharsbx($value); } } } $userComment = $_POST["USER_DESCRIPTION"]; } elseif ($ORDER_ID == "" and $USER_ID != "") { //profile $userProfile = array(); $userProfile = CSaleOrderUserProps::DoLoadProfiles($USER_ID, $PERSON_TYPE_ID); $arPropValues = $userProfile[$PERSON_TYPE_ID]["VALUES"]; } elseif ($ORDER_ID != "") { $dbPropValuesList = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $ORDER_ID, "ACTIVE" => "Y"), false, false, array("ID", "ORDER_PROPS_ID", "NAME", "VALUE", "CODE")); while ($arPropValuesList = $dbPropValuesList->Fetch()) { $arPropValues[IntVal($arPropValuesList["ORDER_PROPS_ID"])] = htmlspecialcharsbx($arPropValuesList["VALUE"]); } } //select field (town) for disable $arDisableFieldForLocation = array(); $dbProperties = CSaleOrderProps::GetList(array(), array("PERSON_TYPE_ID" => $PERSON_TYPE_ID, "ACTIVE" => "Y", ">INPUT_FIELD_LOCATION" => 0), false, false, array("INPUT_FIELD_LOCATION")); while ($arProperties = $dbProperties->Fetch()) { $arDisableFieldForLocation[$arProperties["INPUT_FIELD_LOCATION"]] = $arProperties["INPUT_FIELD_LOCATION"]; } //show town if location is another $arEnableTownProps = array(); $dbOrderProps = CSaleOrderPropsValue::GetOrderProps($ORDER_ID); while ($arOrderProps = $dbOrderProps->Fetch()) { if ($arOrderProps["TYPE"] == "LOCATION" && $arOrderProps["ACTIVE"] == "Y" && $arOrderProps["IS_LOCATION"] == "Y" && in_array($arOrderProps["INPUT_FIELD_LOCATION"], $arDisableFieldForLocation)) { $arLocation = CSaleLocation::GetByID($arPropValues[$arOrderProps["ORDER_PROPS_ID"]]); if (IntVal($arLocation["CITY_ID"]) <= 0) { unset($arDisableFieldForLocation[$arOrderProps["INPUT_FIELD_LOCATION"]]); } } } $dbProperties = CSaleOrderProps::GetList(array("GROUP_SORT" => "ASC", "PROPS_GROUP_ID" => "ASC", "SORT" => "ASC", "NAME" => "ASC"), array("PERSON_TYPE_ID" => $PERSON_TYPE_ID, "ACTIVE" => "Y"), false, false, array("*")); $propertyGroupID = -1; while ($arProperties = $dbProperties->Fetch()) { if (IntVal($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID) { $resultHtml .= "<tr><td colspan=\"2\" style=\"text-align:center;font-weight:bold;font-size:14px;color:rgb(75, 98, 103);\" >" . htmlspecialcharsEx($arProperties["GROUP_NAME"]) . "\n</td>\n</tr>"; $propertyGroupID = IntVal($arProperties["PROPS_GROUP_ID"]); } if (IntVal($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID) { $propertyGroupID = IntVal($arProperties["PROPS_GROUP_ID"]); } $adit = ""; $requiredField = ""; if ($arProperties["REQUIED"] == "Y" || $arProperties["IS_PROFILE_NAME"] == "Y" || $arProperties["IS_LOCATION"] == "Y" || $arProperties["IS_LOCATION4TAX"] == "Y" || $arProperties["IS_PAYER"] == "Y" || $arProperties["IS_ZIP"] == "Y") { $adit = " class=\"adm-detail-required-field\""; $requiredField = " class=\"adm-detail-content-cell-l\""; } //delete town from location if (in_array($arProperties["ID"], $arDisableFieldForLocation)) { $resultHtml .= "<tr style=\"display:none;\" id=\"town_location_" . $arProperties["ID"] . "\"" . $adit . ">\n"; } else { $resultHtml .= "<tr id=\"town_location_" . $arProperties["ID"] . "\"" . $adit . ">\n"; } if ($arProperties["TYPE"] == "MULTISELECT" || $arProperties["TYPE"] == "TEXTAREA" || $ORDER_ID <= 0 && $arProperties["IS_PROFILE_NAME"] == "Y") { $resultHtml .= "<td valign=\"top\" class=\"adm-detail-content-cell-l\" width=\"40%\">\n"; } else { $resultHtml .= "<td align=\"right\" width=\"40%\" " . $requiredField . ">\n"; } $resultHtml .= htmlspecialcharsEx($arProperties["NAME"]) . ":</td>"; $curVal = $arPropValues[IntVal($arProperties["ID"])]; if ($arProperties["IS_EMAIL"] == "Y" || $arProperties["IS_PAYER"] == "Y") { if (strlen($arProperties["DEFAULT_VALUE"]) <= 0 && IntVal($USER_ID) > 0) { $rsUser = CUser::GetByID($USER_ID); if ($arUser = $rsUser->Fetch()) { if ($arProperties["IS_EMAIL"] == "Y") { $arProperties["DEFAULT_VALUE"] = $arUser["EMAIL"]; } else { if (strlen($arUser["LAST_NAME"]) > 0) { $arProperties["DEFAULT_VALUE"] .= $arUser["LAST_NAME"]; } if (strlen($arUser["NAME"]) > 0) { $arProperties["DEFAULT_VALUE"] .= " " . $arUser["NAME"]; } if (strlen($arUser["SECOND_NAME"]) > 0 and strlen($arUser["NAME"]) > 0) { $arProperties["DEFAULT_VALUE"] .= " " . $arUser["SECOND_NAME"]; } } } } } $resultHtml .= "<td class=\"adm-detail-content-cell-r\" width=\"60%\">"; if ($arProperties["TYPE"] == "CHECKBOX") { $resultHtml .= '<input type="checkbox" class="inputcheckbox" '; $resultHtml .= 'name="ORDER_PROP_' . $arProperties["ID"] . '" value="Y"'; $resultHtml .= 'id="ORDER_PROP_' . $arProperties["ID"] . '" '; if ($curVal == "Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"] == "Y") { $resultHtml .= " checked"; } $resultHtml .= '>'; } elseif ($arProperties["TYPE"] == "TEXT") { $change = ""; if ($arProperties["IS_ZIP"] == "Y") { $DELIVERY_LOCATION_ZIP = $curVal; $resultHtml .= '<script> locationZipID = \'' . $arProperties["ID"] . '\';</script>'; $locationZipID = isset($curVal) ? htmlspecialcharsEx($curVal) : htmlspecialcharsex($arProperties["DEFAULT_VALUE"]); } if ($arProperties["IS_PAYER"] == "Y" && IntVal($USER_ID) <= 0) { $resultHtml .= '<div id="BREAK_NAME"'; if ($ORDER_ID > 0 || $formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist") { $resultHtml .= ' style="display:none"'; } $resultHtml .= '>'; $BREAK_LAST_NAME_TMP = GetMessage('NEWO_BREAK_LAST_NAME'); if (isset($_REQUEST["BREAK_LAST_NAME"]) && strlen($_REQUEST["BREAK_LAST_NAME"]) > 0) { $BREAK_LAST_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_LAST_NAME"])); } $NEWO_BREAK_NAME_TMP = GetMessage('NEWO_BREAK_NAME'); if (isset($_REQUEST["BREAK_NAME"]) && strlen($_REQUEST["BREAK_NAME"]) > 0) { $NEWO_BREAK_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_NAME"])); } $BREAK_SECOND_NAME_TMP = GetMessage('NEWO_BREAK_SECOND_NAME'); if (isset($_REQUEST["BREAK_SECOND_NAME"]) && strlen($_REQUEST["BREAK_SECOND_NAME"]) > 0) { $BREAK_SECOND_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_SECOND_NAME"])); } $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='" . GetMessage('NEWO_BREAK_LAST_NAME') . "';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='" . GetMessage('NEWO_BREAK_LAST_NAME') . "') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_LAST_NAME\" id=\"BREAK_LAST_NAME\" size=\"30\" value=\"" . $BREAK_LAST_NAME_TMP . "\" /></div>"; $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='" . GetMessage('NEWO_BREAK_NAME') . "';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='" . GetMessage('NEWO_BREAK_NAME') . "') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_NAME\" id=\"BREAK_NAME_BUYER\" size=\"30\" value=\"" . $NEWO_BREAK_NAME_TMP . "\" /></div>"; $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='" . GetMessage('NEWO_BREAK_SECOND_NAME') . "';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='" . GetMessage('NEWO_BREAK_SECOND_NAME') . "') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_SECOND_NAME\" id=\"BREAK_SECOND_NAME\" size=\"30\" value=\"" . $BREAK_SECOND_NAME_TMP . "\" /></div>"; $resultHtml .= '</div>'; $resultHtml .= '<div id="NO_BREAK_NAME"'; if ($ORDER_ID <= 0) { $tmpNone = ' style="display:none"'; } if ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist") { $tmpNone = ' style="display:block"'; } $resultHtml .= $tmpNone . '>'; } $resultHtml .= '<input type="text" maxlength="250" '; $resultHtml .= 'size="30" '; $resultHtml .= 'value="' . (isset($curVal) ? $curVal : $arProperties["DEFAULT_VALUE"]) . '" '; $resultHtml .= 'name="ORDER_PROP_' . $arProperties["ID"] . '" '; $resultHtml .= 'id="ORDER_PROP_' . $arProperties["ID"] . '" ' . $change . '>'; if ($arProperties["IS_PAYER"] == "Y" && IntVal($USER_ID) <= 0) { $resultHtml .= '</div>'; } } elseif ($arProperties["TYPE"] == "SELECT") { $resultHtml .= '<select name="ORDER_PROP_' . $arProperties["ID"] . '" '; $resultHtml .= 'id="ORDER_PROP_' . $arProperties["ID"] . '" '; $resultHtml .= 'size="5" '; $resultHtml .= 'class="typeselect">'; $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*")); while ($arVariants = $dbVariants->Fetch()) { $resultHtml .= '<option value="' . htmlspecialcharsex($arVariants["VALUE"]) . '"'; if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) { $resultHtml .= " selected"; } $resultHtml .= '>' . htmlspecialcharsEx($arVariants["NAME"]) . '</option>'; } $resultHtml .= '</select>'; } elseif ($arProperties["TYPE"] == "MULTISELECT") { $resultHtml .= '<select multiple name="ORDER_PROP_' . $arProperties["ID"] . '[]" '; $resultHtml .= 'id="ORDER_PROP_' . $arProperties["ID"] . '" '; $resultHtml .= 'size="5" '; $resultHtml .= 'class="typeselect" type="multyselect">'; if (!is_array($curVal)) { if (strlen($curVal) > 0 or $ORDER_ID != "") { $curVal = explode(",", $curVal); } else { $curVal = explode(",", $arProperties["DEFAULT_VALUE"]); } $arCurVal = array(); $countCurVal = count($curVal); for ($i = 0; $i < $countCurVal; $i++) { $arCurVal[$i] = Trim($curVal[$i]); } } else { $arCurVal = $curVal; } $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*")); while ($arVariants = $dbVariants->Fetch()) { $resultHtml .= '<option value="' . htmlspecialcharsex($arVariants["VALUE"]) . '"'; if (in_array($arVariants["VALUE"], $arCurVal)) { $resultHtml .= " selected"; } $resultHtml .= '>' . htmlspecialcharsEx($arVariants["NAME"]) . '</option>'; } $resultHtml .= '</select>'; } elseif ($arProperties["TYPE"] == "TEXTAREA") { $resultHtml .= '<textarea '; $resultHtml .= 'rows="4" '; $resultHtml .= 'cols="40" '; $resultHtml .= 'name="ORDER_PROP_' . $arProperties["ID"] . '" '; $resultHtml .= 'id="ORDER_PROP_' . $arProperties["ID"] . '" type="textarea">'; $resultHtml .= isset($curVal) ? $curVal : $arProperties["DEFAULT_VALUE"]; $resultHtml .= '</textarea>'; } elseif ($arProperties["TYPE"] == "LOCATION") { $countryID = ""; $cityID = ""; $cityList = ""; $DELIVERY_LOCATION = $arPropValues[IntVal($arProperties["ID"])]; $locationID = $curVal; $tmpLocation = ''; ob_start(); $tmpLocation = $GLOBALS["APPLICATION"]->IncludeComponent('bitrix:sale.ajax.locations', '', array("SITE_ID" => $LID, "AJAX_CALL" => "N", "COUNTRY_INPUT_NAME" => "ORDER_PROP_" . $arProperties["ID"], "REGION_INPUT_NAME" => "REGION_ORDER_PROP_" . $arProperties["ID"], "CITY_INPUT_NAME" => "CITY_ORDER_PROP_" . $arProperties["ID"], "CITY_OUT_LOCATION" => "Y", "ALLOW_EMPTY_CITY" => "Y", "LOCATION_VALUE" => $curVal, "COUNTRY" => "", "ONCITYCHANGE" => "fRecalProduct('', '', 'N');", "PUBLIC" => "N"), null, array('HIDE_ICONS' => 'Y')); $tmpLocation = ob_get_contents(); ob_end_clean(); $resultHtml .= '<script>var locationID = \'' . $arProperties["ID"] . '\';</script>'; $resultHtml .= $tmpLocation; } elseif ($arProperties["TYPE"] == "RADIO") { $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*")); $resultHtml .= '<div id="ORDER_PROP_' . $arProperties["ID"] . '">'; // type="radio" while ($arVariants = $dbVariants->Fetch()) { $resultHtml .= '<input type="radio" class="inputradio" '; $resultHtml .= 'name="ORDER_PROP_' . $arProperties["ID"] . '" '; $resultHtml .= 'value="' . htmlspecialcharsex($arVariants["VALUE"]) . '"'; if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) { $resultHtml .= " checked"; } $resultHtml .= '>' . htmlspecialcharsEx($arVariants["NAME"]) . '<br>'; } $resultHtml .= '</div>'; } if (strlen($arProperties["DESCRIPTION"]) > 0) { $resultHtml .= "<br><small>" . htmlspecialcharsEx($arProperties["DESCRIPTION"]) . "</small>"; } $resultHtml .= "\n</td>\n</tr>"; } //end while $resultHtml .= "<tr>\n<td valign=\"top\" class=\"adm-detail-content-cell-l\">" . GetMessage("SOE_BUYER_COMMENT") . ":\n\t\t\t</td>\n\t\t\t<td class=\"adm-detail-content-cell-r\">\n\t\t\t\t<textarea name=\"USER_DESCRIPTION\" rows=\"4\" cols=\"40\">" . htmlspecialcharsbx($userComment) . "</textarea>\n\t\t\t</td>\n\t\t</tr>"; $resultHtml .= "</table>"; return $resultHtml; }
?> </option><?php } ?> </select> <?php } elseif ($value["TYPE"] == "RADIO") { ?> <input type="radio" name="filter_prop_<?php echo $key; ?> " value=""><?php echo GetMessage("SALE_F_ALL"); ?> <br /><?php $db_vars = CSaleOrderPropsVariant::GetList($by = "SORT", $order = "ASC", array("ORDER_PROPS_ID" => $value["ID"])); while ($vars = $db_vars->Fetch()) { ?> <input type="radio" name="filter_prop_<?php echo $key; ?> " value="<?php echo $vars["VALUE"]; ?> "<?php if ($vars["VALUE"] == $curVal) { echo " checked"; } ?> ><?php echo htmlspecialcharsbx($vars["NAME"]);
function getOrderPropFormated($arProperties, $arResult, &$arUserResult, &$arDeleteFieldLocation = array()) { global $USER; $curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]]; $curLocation = false; static $propertyGroupID = 0; static $propertyUSER_PROPS = ""; // take data from user profile if ($arUserResult["PROFILE_CHANGE"] == "Y" && intval($arUserResult["PROFILE_ID"]) > 0 && !($arResult["HAVE_PREPAYMENT"] && $arUserResult["PROFILE_DEFAULT"] == "Y" && !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]]))) { $dbUserPropsValues = CSaleOrderUserPropsValue::GetList( array("SORT" => "ASC"), array( "USER_PROPS_ID" => $arUserResult["PROFILE_ID"], "ORDER_PROPS_ID" => $arProperties["ID"], "USER_ID" => intval($USER->GetID()), ), false, false, array("VALUE", "PROP_TYPE", "VARIANT_NAME", "SORT", "ORDER_PROPS_ID") ); if ($arUserPropsValues = $dbUserPropsValues->Fetch()) { $valueTmp = ""; if ($arUserPropsValues["PROP_TYPE"] == "MULTISELECT") { $arUserPropsValues["VALUE"] = explode(",", $arUserPropsValues["VALUE"]); } $curVal = $arUserPropsValues["VALUE"]; if(CSaleLocation::isLocationProMigrated()) { if($arProperties['TYPE'] == 'LOCATION') $curVal = CSaleLocation::getLocationIDbyCODE($curVal); } } } elseif($arUserResult["PROFILE_CHANGE"] == "Y" && intval($arUserResult["PROFILE_ID"]) <= 0) { if (isset($curVal)) unset($curVal); } elseif(isset($arUserResult["ORDER_PROP"][$arProperties["ID"]])) $curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]]; elseif($arResult["HAVE_PREPAYMENT"] && !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]])) { $curVal = $arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]]; if($arProperties["TYPE"] == "LOCATION") $curLocation = $curVal; } if (intval($_REQUEST["NEW_LOCATION_".$arProperties["ID"]]) > 0) $curVal = intval($_REQUEST["NEW_LOCATION_".$arProperties["ID"]]); $arProperties["FIELD_NAME"] = "ORDER_PROP_".$arProperties["ID"]; if(strlen($arProperties["CODE"]) > 0) $arProperties["FIELD_ID"] = "ORDER_PROP_".$arProperties["CODE"]; else $arProperties["FIELD_ID"] = "ORDER_PROP_".$arProperties["ID"]; if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID || $propertyUSER_PROPS != $arProperties["USER_PROPS"]) $arProperties["SHOW_GROUP_NAME"] = "Y"; $propertyGroupID = $arProperties["PROPS_GROUP_ID"]; $propertyUSER_PROPS = $arProperties["USER_PROPS"]; if ($arProperties["REQUIED"]=="Y" || $arProperties["IS_EMAIL"]=="Y" || $arProperties["IS_PROFILE_NAME"]=="Y" || $arProperties["IS_LOCATION"]=="Y" || $arProperties["IS_LOCATION4TAX"]=="Y" || $arProperties["IS_PAYER"]=="Y" || $arProperties["IS_ZIP"]=="Y") $arProperties["REQUIED_FORMATED"]="Y"; if ($arProperties["TYPE"] == "CHECKBOX") { if ($curVal=="Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"]=="Y") { $arProperties["CHECKED"] = "Y"; $arProperties["VALUE_FORMATED"] = GetMessage("SOA_Y"); } else $arProperties["VALUE_FORMATED"] = GetMessage("SOA_N"); $arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 30); } elseif ($arProperties["TYPE"] == "TEXT") { if (strlen($curVal) <= 0) { if(strlen($arProperties["DEFAULT_VALUE"])>0 && !isset($curVal)) $arProperties["VALUE"] = $arProperties["DEFAULT_VALUE"]; elseif ($arProperties["IS_EMAIL"] == "Y") $arProperties["VALUE"] = $USER->GetEmail(); elseif ($arProperties["IS_PAYER"] == "Y") { //$arProperties["VALUE"] = $USER->GetFullName(); $rsUser = CUser::GetByID($USER->GetID()); $fio = ""; if ($arUser = $rsUser->Fetch()) { $fio = CUser::FormatName(CSite::GetNameFormat(false), array("NAME" => $arUser["NAME"], "LAST_NAME" => $arUser["LAST_NAME"], "SECOND_NAME" => $arUser["SECOND_NAME"]), false, false); } $arProperties["VALUE"] = $fio; } $arProperties["SOURCE"] = 'DEFAULT'; } else { $arProperties["VALUE"] = $curVal; $arProperties["SOURCE"] = 'FORM'; } //select ZIP for LOCATION if ($arProperties["IS_ZIP"] == "Y" && $arUserResult["PROFILE_CHANGE"] == "N") { $dbPropertiesLoc = CSaleOrderProps::GetList( array("ID" => "DESC"), array( "PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"], "ACTIVE" => "Y", "UTIL" => "N", "IS_LOCATION" => "Y" ), false, false, array("ID") ); $arPropertiesLoc = $dbPropertiesLoc->Fetch(); if ($arPropertiesLoc["ID"] > 0) { $arZipLocation = array(); if(strlen($curVal) > 0) $arZipLocation = CSaleLocation::GetByZIP($curVal); $rsZipList = CSaleLocation::GetLocationZIP($arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]]); if($arZip = $rsZipList->Fetch()) { if (strlen($arZip["ZIP"]) > 0 && (empty($arZipLocation) || $arZipLocation["ID"] != $arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]])) $arProperties["VALUE"] = $arZip["ZIP"]; } } } if ($arProperties["IS_ZIP"]=="Y") $arUserResult["DELIVERY_LOCATION_ZIP"] = $arProperties["VALUE"]; $arProperties["VALUE"] = htmlspecialcharsEx($arProperties["VALUE"]); $arProperties["VALUE_FORMATED"] = $arProperties["VALUE"]; } elseif ($arProperties["TYPE"] == "SELECT") { $arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 1); $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC", "NAME" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); $flagDefault = "N"; $nameProperty = ""; while ($arVariants = $dbVariants->GetNext()) { if ($flagDefault == "N" && $nameProperty == "") { $nameProperty = $arVariants["NAME"]; } if (($arVariants["VALUE"] == $curVal) || ((!isset($curVal) || $curVal == "") && ($arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]))) { $arVariants["SELECTED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["NAME"]; $flagDefault = "Y"; } $arProperties["VARIANTS"][] = $arVariants; } if ($flagDefault == "N") { $arProperties["VARIANTS"][0]["SELECTED"]= "Y"; $arProperties["VARIANTS"][0]["VALUE_FORMATED"] = $nameProperty; } } elseif ($arProperties["TYPE"] == "MULTISELECT") { $arProperties["FIELD_NAME"] = "ORDER_PROP_".$arProperties["ID"].'[]'; $arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 5); $arDefVal = explode(",", $arProperties["DEFAULT_VALUE"]); $countDefVal = count($arDefVal); for ($i = 0; $i < $countDefVal; $i++) $arDefVal[$i] = Trim($arDefVal[$i]); $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); $i = 0; while ($arVariants = $dbVariants->GetNext()) { if ((is_array($curVal) && in_array($arVariants["VALUE"], $curVal)) || (!isset($curVal) && in_array($arVariants["VALUE"], $arDefVal))) { $arVariants["SELECTED"] = "Y"; if ($i > 0) $arProperties["VALUE_FORMATED"] .= ", "; $arProperties["VALUE_FORMATED"] .= $arVariants["NAME"]; $i++; } $arProperties["VARIANTS"][] = $arVariants; } } elseif ($arProperties["TYPE"] == "TEXTAREA") { $arProperties["SIZE2"] = ((intval($arProperties["SIZE2"]) > 0) ? $arProperties["SIZE2"] : 4); $arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 40); $arProperties["VALUE"] = htmlspecialcharsEx(isset($curVal) ? $curVal : $arProperties["DEFAULT_VALUE"]); $arProperties["VALUE_FORMATED"] = $arProperties["VALUE"]; } elseif ($arProperties["TYPE"] == "LOCATION") { if(CSaleLocation::isLocationProEnabled()) { if(!strlen($curVal) && strlen($arProperties["DEFAULT_VALUE"])) $curVal = CSaleLocation::getLocationIDbyCODE($arProperties["DEFAULT_VALUE"]); //enable location town text if ($_REQUEST["is_ajax_post"] == "Y" && $arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0 && isset($_REQUEST["ORDER_PROP_".$arProperties["ID"]])) { if(isset($arResult['LOCATION_ALT_PROP_DISPLAY_MANUAL'][$arProperties["ID"]])) // look at the manual flag { if($arResult['LOCATION_ALT_PROP_DISPLAY_MANUAL'][$arProperties["ID"]]) // if it set to TRUE, show alt location unset($arDeleteFieldLocation[$arProperties["ID"]]); else $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; // otherwise, hide } else { // now we have no had-coded type-table for locations, so turn this logic on only when there is "CITY" type if(!CSaleLocation::checkLocationIsAboveCity($curVal)) { $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; // remove by default } else { unset($arDeleteFieldLocation[$arProperties["ID"]]); } } } elseif ($arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0) { $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; } $arProperties["VALUE"] = $curVal; ####################### ####################### ####################### # here we sacrifice perfromance for the sake of compatibility $arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"]; if($arProperties["IS_LOCATION4TAX"]=="Y") $arUserResult["TAX_LOCATION"] = $arProperties["VALUE"]; // variants $locationFound = false; $dbVariants = CSaleLocation::GetList( array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG") ); while ($arVariants = $dbVariants->GetNext()) { if (intval($arVariants["ID"]) == intval($curVal) || (!isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"])) || (strlen($curLocation) > 0 && ToUpper($curLocation) == ToUpper($arVariants["CITY_NAME"]))) { $locationFound = true; $arVariants["SELECTED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"]; } $arVariants["NAME"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"]; $arProperties["VARIANTS"][] = $arVariants; } // this is not a COUNTRY, REGION or CITY, but must appear in $arProperties["VARIANTS"] if(!$locationFound && IntVal($curVal)) { $item = CSaleLocation::GetById($curVal); if($item) { $item['NAME'] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"]; $item['SELECTED'] = 'Y'; $arProperties["VARIANTS"][] = $item; } } } else { //enable location town text if ($_REQUEST["is_ajax_post"] == "Y" && $arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0 && isset($_REQUEST["ORDER_PROP_".$arProperties["ID"]])) { $rsLocationsList = CSaleLocation::GetList( array(), array("ID" => $curVal), false, false, array("ID", "CITY_ID") ); $arCity = $rsLocationsList->GetNext(); if (intval($arCity["CITY_ID"]) <= 0) unset($arDeleteFieldLocation[$arProperties["ID"]]); else $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; } elseif ($arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0) { $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; } $arProperties["SIZE1"] = ((intval($arProperties["SIZE1"]) > 0) ? $arProperties["SIZE1"] : 1); $dbVariants = CSaleLocation::GetList( array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG") ); while ($arVariants = $dbVariants->GetNext()) { if (intval($arVariants["ID"]) == intval($curVal) || (!isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"])) || (strlen($curLocation) > 0 && ToUpper($curLocation) == ToUpper($arVariants["CITY_NAME"]))) { $arVariants["SELECTED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"]; $arProperties["VALUE"] = $arVariants["ID"]; if ($arProperties["IS_LOCATION"]=="Y") $arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"]; if ($arProperties["IS_LOCATION4TAX"]=="Y") $arUserResult["TAX_LOCATION"] = $arProperties["VALUE"]; } $arVariants["NAME"] = $arVariants["COUNTRY_NAME"].((strlen($arVariants["CITY_NAME"]) > 0) ? " - " : "").$arVariants["CITY_NAME"]; $arProperties["VARIANTS"][] = $arVariants; } if(count($arProperties["VARIANTS"]) == 1) { $arProperties["VALUE"] = $arProperties["VARIANTS"][0]["ID"]; if($arProperties["IS_LOCATION"]=="Y") $arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"]; if($arProperties["IS_LOCATION4TAX"]=="Y") $arUserResult["TAX_LOCATION"] = $arProperties["VALUE"]; } } } elseif ($arProperties["TYPE"] == "RADIO") { $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); while ($arVariants = $dbVariants->GetNext()) { if ($arVariants["VALUE"] == $curVal || (!isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"])) { $arVariants["CHECKED"]="Y"; $arProperties["VALUE_FORMATED"] = $arVariants["NAME"]; } $arProperties["VARIANTS"][] = $arVariants; } } elseif ($arProperties["TYPE"] == "FILE") { $arProperties["SIZE1"] = intval($arProperties["SIZE1"]); $arProperties["VALUE"] = isset($curVal) ? CSaleHelper::getFileInfo($curVal) : $arProperties["DEFAULT_VALUE"]; } return $arProperties; }