=0){c=BX.create("LI",{children:[BX.create("DIV",{props:{className:"bx-soa-pp-list-termin"},html:this.params.MESS_PRICE+":"}),BX.create("DIV",{props:{className:"bx-soa-pp-list-description"},children:this.getDeliveryPriceNodes(i)})]})}if(i.PERIOD_TEXT&&i.PERIOD_TEXT.length){p=BX.create("LI",{children:[BX.create("DIV",{props:{className:"bx-soa-pp-list-termin"},html:this.params.MESS_PERIOD+":"}),BX.create("DIV",{props:{className:"bx-soa-pp-list-description"},html:i.PERIOD_TEXT})]})}h=BX.create("DIV",{style:{clear:"both"}});d=BX.create("UL",{props:{className:"bx-soa-pp-list"},children:[c,p]});u=this.getDeliveryExtraServices(i);if(u.length){f=BX.create("DIV",{props:{className:"bx-soa-pp-company-block"},children:u})}t.appendChild(BX.create("DIV",{props:{className:"bx-soa-pp-company"},children:[o,l,n,h,f,d]}));e.appendChild(t);if(this.params.DELIVERY_NO_AJAX!="Y")this.deliveryCachedInfo[i.ID]=i},getDeliveryPriceNodes:function(e){var t;if(typeof e.DELIVERY_DISCOUNT_PRICE!=="undefined"&&parseFloat(e.DELIVERY_DISCOUNT_PRICE)!=parseFloat(e.PRICE)){if(parseFloat(e.DELIVERY_DISCOUNT_PRICE)>parseFloat(e.PRICE))t=[e.DELIVERY_DISCOUNT_PRICE_FORMATED];else t=[e.DELIVERY_DISCOUNT_PRICE_FORMATED,BX.create("BR"),BX.create("SPAN",{props:{className:"bx-price-old"},html:e.PRICE_FORMATED})]}else{t=[e.PRICE_FORMATED]}return t},getDeliveryExtraServices:function(e){var t=[],i=false,s,a,r,o,l;for(s in e.EXTRA_SERVICES){if(!e.EXTRA_SERVICES.hasOwnProperty(s))continue;a=e.EXTRA_SERVICES[s];if(!a.canUserEditValue)continue;if(a.editControl.indexOf("this.checked")==-1){o=BX.create("LABEL",{html:BX.util.htmlspecialchars(a.name)+(a.price?" ("+a.priceFormatted+")":"")});if(s==0)i=true;r=BX.create("DIV",{props:{className:"form-group bx-soa-pp-field"},html:a.editControl+(a.description&&a.description.length?''+BX.util.htmlspecialchars(a.description)+"
":"")});BX.prepend(o,r);l=r.querySelector("input[type=text]");if(!l)l=r.querySelector("select");if(l)BX.addClass(l,"form-control")}else{r=BX.create("DIV",{props:{className:"checkbox"},children:[BX.create("LABEL",{html:a.editControl+BX.util.htmlspecialchars(a.name)+(a.price?" ("+a.priceFormatted+")":"")+(a.description&&a.description.length?''+BX.util.htmlspecialchars(a.description)+"
":"")})]})}t.push(r)}i&&t.unshift(BX.create("BR"));return t},editFadeDeliveryBlock:function(){var e=this.deliveryBlockNode.querySelector(".bx-soa-section-content"),t;if(this.initialized.delivery){this.deliveryHiddenBlockNode.appendChild(e)}else{this.editActiveDeliveryBlock(false);BX.remove(BX.lastChild(this.deliveryBlockNode))}t=this.getNewContainer(true);this.deliveryBlockNode.appendChild(t);this.editFadeDeliveryContent(t);if(this.params.SHOW_COUPONS_DELIVERY=="Y")this.editCouponsFade(t)},createDeliveryItem:function(e){var t=e.CHECKED=="Y",i=parseInt(e.ID),s=[BX.create("INPUT",{props:{id:"ID_DELIVERY_ID_"+i,name:"DELIVERY_ID",type:"checkbox",className:"bx-soa-pp-company-checkbox",value:i,checked:t}})],a=this.deliveryCachedInfo[i],r,o,l,n,c;c=BX.create("DIV",{props:{className:"bx-soa-pp-company-image"}});r=this.getImageSources(e,"LOGOTIP");if(r&&r.src_2x){c.setAttribute("style","background-image: url("+r.src_1x+");"+"background-image: -webkit-image-set(url("+r.src_1x+") 1x, url("+r.src_2x+") 2x)")}else{r=r&&r.src_1x||this.defaultDeliveryLogo;c.setAttribute("style","background-image: url("+r+");")}s.push(c);if(e.PRICE>=0||typeof e.DELIVERY_DISCOUNT_PRICE!=="undefined"){s.push(BX.create("DIV",{props:{className:"bx-soa-pp-delivery-cost"},html:typeof e.DELIVERY_DISCOUNT_PRICE!=="undefined"?e.DELIVERY_DISCOUNT_PRICE_FORMATED:e.PRICE_FORMATED}))}else if(a&&(a.PRICE>=0||typeof a.DELIVERY_DISCOUNT_PRICE!=="undefined")){s.push(BX.create("DIV",{props:{className:"bx-soa-pp-delivery-cost"},html:typeof a.DELIVERY_DISCOUNT_PRICE!=="undefined"?a.DELIVERY_DISCOUNT_PRICE_FORMATED:a.PRICE_FORMATED}))}o=BX.create("DIV",{props:{className:"bx-soa-pp-company-graf-container"+(e.CALCULATE_ERRORS||a&&a.CALCULATE_ERRORS?" bx-bd-waring":"")},children:s});if(this.params.SHOW_DELIVERY_LIST_NAMES=="Y"){l=BX.create("DIV",{props:{className:"bx-soa-pp-company-smalltitle"},text:this.params.SHOW_DELIVERY_PARENT_NAMES!="N"?e.NAME:e.OWN_NAME})}n=BX.create("DIV",{props:{className:"bx-soa-pp-company col-6"},children:[o,l],events:{click:BX.proxy(this.selectDelivery,this)}});t&&BX.addClass(n,"bx-selected");if(t&&this.result.LAST_ORDER_DATA.PICK_UP)this.lastSelectedDelivery=i;return n},editFadeDeliveryContent:function(e){var t=this.getSelectedDelivery(),i=this.params.SHOW_DELIVERY_PARENT_NAMES!="N"?t.NAME:t.OWN_NAME,s=this.deliveryHiddenBlockNode.querySelector("div.alert.alert-danger"),a=this.deliveryHiddenBlockNode.querySelector("div.alert.alert-warning.alert-show"),r,o,l,n,c;if(s&&s.innerHTML)e.appendChild(s.cloneNode(true));else this.getErrorContainer(e);if(a&&a.innerHTML)e.appendChild(a.cloneNode(true));if(t&&t.NAME){o=this.getImageSources(t,"LOGOTIP");l=o&&o.src_1x||this.defaultDeliveryLogo;n=[BX.create("IMG",{props:{src:l,alt:""},style:{height:"18px"}}),BX.create("STRONG",{text:i})];if(this.params.DELIVERY_FADE_EXTRA_SERVICES=="Y"&&BX.util.object_keys(t.EXTRA_SERVICES).length){n.push(BX.create("BR"));for(c in t.EXTRA_SERVICES){if(t.EXTRA_SERVICES.hasOwnProperty(c)){r=t.EXTRA_SERVICES[c];if(r.value&&r.value!="N"&&r.canUserEditValue){n.push(BX.create("BR"));n.push(BX.create("STRONG",{text:r.name+": "}));n.push(r.viewControl)}}}}e.appendChild(BX.create("DIV",{props:{className:"row"},children:[BX.create("DIV",{props:{className:"col-sm-9 bx-soa-pp-company-selected"},children:n}),BX.create("DIV",{props:{className:"col-sm bx-soa-pp-price"},children:this.getDeliveryPriceNodes(t)})]}))}else e.appendChild(BX.create("STRONG",{text:BX.message("SOA_DELIVERY_SELECT_ERROR")}));e.appendChild(BX.create("DIV",{style:{clear:"both"}}));BX.bind(e.querySelector(".alert.alert-danger"),"click",BX.proxy(this.showByClick,this));BX.bind(e.querySelector(".alert.alert-warning"),"click",BX.proxy(this.showByClick,this))},selectDelivery:function(e){if(!this.orderBlockNode)return;var t=e.target||e.srcElement,i=BX.hasClass(t,"bx-soa-pp-company")?t:BX.findParent(t,{className:"bx-soa-pp-company"}),s=this.deliveryBlockNode.querySelector(".bx-soa-pp-company.bx-selected"),a,r;if(BX.hasClass(i,"bx-selected"))return BX.PreventDefault(e);if(i){a=i.querySelector("input[type=checkbox]");BX.addClass(i,"bx-selected");a.checked=true}if(s){r=s.querySelector("input[type=checkbox]");BX.removeClass(s,"bx-selected");r.checked=false}this.sendRequest()},getSelectedDelivery:function(){var e=this.deliveryBlockNode.querySelector("input[type=checkbox][name=DELIVERY_ID]:checked"),t=false,i,s;if(!e)e=this.deliveryHiddenBlockNode.querySelector("input[type=checkbox][name=DELIVERY_ID]:checked");if(!e)e=this.deliveryHiddenBlockNode.querySelector("input[type=hidden][name=DELIVERY_ID]");if(e){i=e.value;for(s in this.result.DELIVERY){if(this.result.DELIVERY[s].ID==i){t=this.result.DELIVERY[s];break}}}return t},activatePickUp:function(e){if(!this.pickUpBlockNode||!this.pickUpHiddenBlockNode)return;this.pickUpBlockNode.style.display="";this.pickUpBlockNode.querySelector('[data-entity="section-title"]').innerHTML=''+BX.util.htmlspecialchars(e);if(BX.hasClass(this.pickUpBlockNode,"bx-active"))return;BX.addClass(this.pickUpBlockNode,"bx-active");this.pickUpBlockNode.style.display=""},deactivatePickUp:function(){if(!this.pickUpBlockNode||!this.pickUpHiddenBlockNode)return;if(!BX.hasClass(this.pickUpBlockNode,"bx-active"))return;BX.removeClass(this.pickUpBlockNode,"bx-active");this.pickUpBlockNode.style.display="none"},editPickUpBlock:function(e){if(!this.pickUpBlockNode||!this.pickUpHiddenBlockNode||!BX.hasClass(this.pickUpBlockNode,"bx-active")||!this.result.DELIVERY)return;this.initialized.pickup=false;if(e)this.editActivePickUpBlock(true);else this.editFadePickUpBlock();this.initialized.pickup=true},editActivePickUpBlock:function(e){var t=e?this.pickUpBlockNode:this.pickUpHiddenBlockNode,i,s;if(this.initialized.pickup){BX.remove(BX.lastChild(t));t.appendChild(BX.firstChild(this.pickUpHiddenBlockNode));if(this.params.SHOW_NEAREST_PICKUP==="Y"&&this.maps&&!this.maps.maxWaitTimeExpired){this.maps.maxWaitTimeExpired=true;this.initPickUpPagination();this.editPickUpList(true);this.pickUpFinalAction()}if(this.maps&&!this.pickUpMapFocused){this.pickUpMapFocused=true;setTimeout(BX.proxy(this.maps.pickUpMapFocusWaiter,this.maps),200)}}else{i=t.querySelector(".bx-soa-section-content");if(!i){i=this.getNewContainer();t.appendChild(i)}BX.cleanNode(i);s=BX.create("DIV",{props:{className:"col"}});this.editPickUpMap(s);this.editPickUpLoader(s);i.appendChild(BX.create("DIV",{props:{className:"bx_soa_pickup row"},children:[s]}));if(this.params.SHOW_PICKUP_MAP!="Y"||this.params.SHOW_NEAREST_PICKUP!="Y"){this.initPickUpPagination();this.editPickUpList(true);this.pickUpFinalAction()}this.getBlockFooter(i)}},editFadePickUpBlock:function(){var e=this.pickUpBlockNode.querySelector(".bx-soa-section-content"),t;if(this.initialized.pickup){this.pickUpHiddenBlockNode.appendChild(e)}else{this.editActivePickUpBlock(false);BX.remove(BX.lastChild(this.pickUpBlockNode))}t=this.getNewContainer();this.pickUpBlockNode.appendChild(t);this.editFadePickUpContent(t)},editFadePickUpContent:function(e){var t=this.getSelectedPickUp(),i="",s,a;if(t){if(this.params.SHOW_STORES_IMAGES=="Y"){s=this.getImageSources(t,"IMAGE_ID");a=s.src_1x||this.defaultStoreLogo;i+='
'}i+=""+BX.util.htmlspecialchars(t.TITLE)+"";if(t.ADDRESS)i+="
"+BX.message("SOA_PICKUP_ADDRESS")+": "+BX.util.htmlspecialchars(t.ADDRESS);if(t.PHONE)i+="
"+BX.message("SOA_PICKUP_PHONE")+": "+BX.util.htmlspecialchars(t.PHONE);if(t.SCHEDULE)i+="
"+BX.message("SOA_PICKUP_WORK")+": "+BX.util.htmlspecialchars(t.SCHEDULE);if(t.DESCRIPTION)i+="
"+BX.message("SOA_PICKUP_DESC")+": "+BX.util.htmlspecialchars(t.DESCRIPTION);e.innerHTML=i;if(this.params.SHOW_STORES_IMAGES=="Y"){BX.bind(e.querySelector(".bx-soa-pickup-preview-img"),"click",BX.delegate(function(e){this.popupShow(e,s&&s.src_orig||a)},this))}}},getPickUpInfoArray:function(e){if(!e||e.length<=0)return[];var t=[],i;for(i=0;i=this.options.pickUpMap.minToShowNearestBlock){this.editPickUpRecommendList(e.geoObjects.get(0))}this.initPickUpPagination();this.editPickUpList(true);this.pickUpFinalAction()},geoLocationFailCallback:function(){this.initPickUpPagination();this.editPickUpList(true);this.pickUpFinalAction()},initMaps:function(){this.maps=BX.Sale.OrderAjaxComponent.Maps.init(this);if(this.maps){this.mapsReady=true;this.resizeMapContainers();if(this.params.SHOW_PICKUP_MAP==="Y"&&BX("pickUpMap")){var e=this.getSelectedDelivery();if(e&&e.STORE&&e.STORE.length){var t=this.getPickUpInfoArray(e.STORE)}if(t&&t.length){var i=this.getSelectedPickUp();this.maps.initializePickUpMap(i);if(this.params.SHOW_NEAREST_PICKUP==="Y"){this.maps.showNearestPickups(BX.proxy(this.geoLocationSuccessCallback,this),BX.proxy(this.geoLocationFailCallback,this))}this.maps.buildBalloons(t)}}if(this.params.SHOW_MAP_IN_PROPS==="Y"&&BX("propsMap")){var s=this.getPropertyMapData();this.maps.initializePropsMap(s)}}},getPropertyMapData:function(){var e,t,i;var s=this.options.propertyMap.defaultMapPosition;for(i in this.result.ORDER_PROP.properties){if(this.result.ORDER_PROP.properties.hasOwnProperty(i)){e=this.result.ORDER_PROP.properties[i];if(e.IS_LOCATION=="Y"){t=e.ID;break}}}if(this.locations[t]&&this.locations[t][0]&&this.locations[t][0].coordinates){e=this.locations[t][0].coordinates;var a=parseFloat(e.LONGITUDE),r=parseFloat(e.LATITUDE);if(!isNaN(a)&&!isNaN(r)&&a!=0&&r!=0){s.lon=a;s.lat=r}}return s},resizeMapContainers:function(){var e=BX("pickUpMap"),t=BX("propsMap"),i=this.propsBlockNode,s,a;if(i&&(e||t)){s=i.clientWidth;a=parseInt(s/16*9);if(this.params.SHOW_PICKUP_MAP==="Y"&&e){e.style.height=a+"px"}if(this.params.SHOW_MAP_IN_PROPS==="Y"&&t){t.style.height=a+"px"}}},editPickUpMap:function(e){e.appendChild(BX.create("DIV",{props:{id:"pickUpMap"},style:{width:"100%",marginBottom:"10px"}}))},editPickUpLoader:function(e){e.appendChild(BX.create("DIV",{props:{id:"pickUpLoader",className:"text-center"},children:[BX.create("IMG",{props:{src:this.templateFolder+"/images/loader.gif"}})]}))},editPickUpList:function(e){if(!this.pickUpPagination.currentPage||!this.pickUpPagination.currentPage.length)return;BX.remove(BX("pickUpLoader"));var t=BX.create("DIV",{props:{className:"bx-soa-pickup-list main"}}),i=BX("BUYER_STORE"),s,a,r,o=false,l,n,c,p;if(i)s=i.value;l=this.pickUpBlockNode.querySelector(".bx-soa-pickup-list.recommend");if(!l)l=this.pickUpHiddenBlockNode.querySelector(".bx-soa-pickup-list.recommend");if(!l||!l.querySelector(".bx-soa-pickup-list-item.bx-selected")){n=this.getSelectedDelivery();if(n&&n.STORE){for(r=0;r.col");if(!a)a=this.pickUpBlockNode.querySelector(".bx_soa_pickup>.col");a.appendChild(BX.create("DIV",{props:{className:"bx-soa-pickup-subTitle"},html:this.params.MESS_PICKUP_LIST}));a.appendChild(t)}else{a=this.pickUpBlockNode.querySelector(".bx-soa-pickup-list.main");BX.insertAfter(t,a);BX.remove(a)}this.pickUpPagination.show&&this.showPagination("pickUp",t)},pickUpFinalAction:function(){var e=this.getSelectedDelivery(),t;if(e){t=this.lastSelectedDelivery!==parseInt(e.ID);this.lastSelectedDelivery=parseInt(e.ID)}if(t&&this.pickUpBlockNode.id!==this.activeSectionId){if(this.pickUpBlockNode.id!==this.activeSectionId){this.editFadePickUpContent(BX.lastChild(this.pickUpBlockNode))}BX.removeClass(this.pickUpBlockNode,"bx-step-completed")}this.maps&&this.maps.pickUpFinalAction()},getStoreInfoHtml:function(e){var t="";if(e.ADDRESS)t+=BX.message("SOA_PICKUP_ADDRESS")+": "+BX.util.htmlspecialchars(e.ADDRESS)+"
";if(e.PHONE)t+=BX.message("SOA_PICKUP_PHONE")+": "+BX.util.htmlspecialchars(e.PHONE)+"
";if(e.SCHEDULE)t+=BX.message("SOA_PICKUP_WORK")+": "+BX.util.htmlspecialchars(e.SCHEDULE)+"
";if(e.DESCRIPTION)t+=BX.message("SOA_PICKUP_DESC")+": "+BX.util.htmlspecialchars(e.DESCRIPTION)+"
";return t},createPickUpItem:function(e,t){t=t||{};var i="bx-soa-pickup-l-item-detail",s="bx-soa-pickup-l-item-btn",a,r,o,l,n;if(this.params.SHOW_STORES_IMAGES==="Y"){r=this.getImageSources(e,"IMAGE_ID");n=r&&r.src_1x||this.defaultStoreLogo;a=BX.create("IMG",{props:{src:n,className:"bx-soa-pickup-l-item-img"},events:{click:BX.delegate(function(e){this.popupShow(e,r&&r.src_orig||n)},this)}})}else{i+=" no-image";s+=" no-image"}o=this.getStoreInfoHtml(e);l=BX.create("DIV",{props:{className:"bx-soa-pickup-list-item",id:"store-"+e.ID},children:[BX.create("DIV",{props:{className:"bx-soa-pickup-l-item-adress"},children:t.distance?[BX.util.htmlspecialchars(e.ADDRESS)," ( ~"+t.distance+" "+BX.message("SOA_DISTANCE_KM")+" ) "]:[BX.util.htmlspecialchars(e.ADDRESS)]}),BX.create("DIV",{props:{className:i},children:[a,BX.create("DIV",{props:{className:"bx-soa-pickup-l-item-name"},text:e.TITLE}),BX.create("DIV",{props:{className:"bx-soa-pickup-l-item-desc"},html:o})]}),BX.create("DIV",{props:{className:s},children:[BX.create("A",{props:{href:"",className:"btn btn-sm btn-primary"},html:this.params.MESS_SELECT_PICKUP,events:{click:BX.delegate(function(e){this.selectStore(e);this.clickNextAction(e)},this)}})]})],events:{click:BX.proxy(this.selectStore,this)}});if(t.selected)BX.addClass(l,"bx-selected");return l},editPickUpRecommendList:function(e){if(!this.maps||!this.maps.canUseRecommendList()||!e){return}BX.remove(BX("pickUpLoader"));var t=BX.create("DIV",{props:{className:"bx-soa-pickup-list recommend"}}),i=BX("BUYER_STORE"),s=this.getSelectedDelivery();var a,r,o,l,n,c;var p=this.maps.getRecommendedStoreIds(e);for(a=0;a.col");if(!c){c=this.pickUpBlockNode.querySelector(".bx_soa_pickup>.col")}c.appendChild(BX.create("DIV",{props:{className:"bx-soa-pickup-subTitle"},html:this.params.MESS_NEAREST_PICKUP_LIST}));c.appendChild(t)},selectStore:function(e){var t,i=BX("BUYER_STORE"),s,a,r,o,l,n,c,p;if(BX.type.isString(e)){t=BX("store-"+e);if(!t){for(r=0;rt.OWN_NAME.toLowerCase()?1:e.OWN_NAME.toLowerCase()"+BX.message("SOA_ORDER_PROPS")+""}else{l=this.fadedPropertyCollection.getGroupIterator();while(r=l()){n=r.getIterator();while(o=n()){for(c=0;c"+BX.util.htmlspecialchars(e.getName())+": "}else{BX.addClass(s,"form-group bx-soa-customer-field");if(e.isRequired())a+='* ';a+=BX.util.htmlspecialchars(e.getName());if(o.length&&r!="STRING"&&r!="NUMBER"&&r!="DATE")a+=" ("+BX.util.htmlspecialchars(o)+")";l=BX.create("LABEL",{attrs:{for:"soa-property-"+e.getId()},props:{className:"bx-soa-custom-label"},html:a});s.setAttribute("data-property-id-row",e.getId());s.appendChild(l)}switch(r){case"LOCATION":this.insertLocationProperty(e,s,i);break;case"DATE":this.insertDateProperty(e,s,i);break;case"FILE":this.insertFileProperty(e,s,i);break;case"STRING":this.insertStringProperty(e,s,i);break;case"ENUM":this.insertEnumProperty(e,s,i);break;case"Y/N":this.insertYNProperty(e,s,i);break;case"NUMBER":this.insertNumberProperty(e,s,i)}t.appendChild(s)},insertLocationProperty:function(e,t,i){var s,a,r,o,l,n,c,p,h=[];if(e.getId()in this.locations){if(i){s=this.propsHiddenBlockNode.querySelector('[data-property-id-row="'+e.getId()+'"]');if(s){a=s.querySelectorAll("div.bx-soa-loc");for(c=0;c")}else{n=BX.create("DIV",{props:{className:"soa-property-container"}});s=this.locations[e.getId()];for(c=0;c'});BX.insertAfter(s,t);BX.remove(i.querySelector("input[type=button]"));BX.bind(s,"click",BX.delegate(function(t){var i=t.target||t.srcElement,s=BX.findParent(i,{tagName:"DIV",className:"input-group"});BX.calendar({node:s.querySelector(".input-group-append"),field:s.querySelector("input[type=text]").name,form:"",bTime:e.TIME==="Y",bHideTime:false})},this))},isValidForm:function(){if(!this.options.propertyValidation)return true;var e=this.isValidRegionBlock(),t=this.isValidPropertiesBlock(),i=false,s,a;if(e.length){i=true;this.animateScrollTo(this.regionBlockNode,800,50)}if(t.length&&!i){if(this.activeSectionId==this.propsBlockNode.id){s=this.propsBlockNode.querySelectorAll("div.tooltip");for(a=0;a")}this.showValidationResult(e.inputs,i);return i},bindValidation:function(e,t){if(!this.validation.properties||!this.validation.properties[e])return;var i=this.validation.properties[e],s=this.getValidationData(i,t),a,r;if(s&&s.inputs&&s.action){for(a=0;a");if(s){a=s.querySelector("div.tooltip-inner")}else{a=BX.create("DIV",{props:{className:"tooltip-inner"}});s=BX.create("DIV",{props:{id:"tooltip-"+e,className:"bx-soa-tooltip bx-soa-tooltip-static bx-soa-tooltip-danger tooltip top"},children:[BX.create("DIV",{props:{className:"tooltip-arrow"}}),a]});r=t.parentNode.querySelector("div.quick-locations");if(r)t=r;BX.insertAfter(s,t)}a.innerHTML=i;if(s.getAttribute("data-state")!="opened"){s.setAttribute("data-state","opened");s.style.opacity=0;s.style.display="block";new BX.easing({duration:150,start:{opacity:0},finish:{opacity:100},transition:BX.easing.transitions.quad,step:function(e){s.style.opacity=e.opacity/100}}).animate()}},closeErrorTooltip:function(e){var t=BX("tooltip-"+e);if(t){t.setAttribute("data-state","closed");new BX.easing({duration:150,start:{opacity:100},finish:{opacity:0},transition:BX.easing.transitions.quad,step:function(e){t.style.opacity=e.opacity/100},complete:function(){t.style.display="none"}}).animate()}},showValidationResult:function(e,t){if(!e||!e.length||!t)return;var i=BX.type.isElementNode(e[0])?e[0]:e[0][0],s=BX.findParent(i,{tagName:"DIV",className:"form-group"}),a=s.querySelector("label"),r,o,l;if(a)r=a.getAttribute("for");for(l=0;l"));else this.closeErrorTooltip(r)},validateString:function(e,t,i){if(!e||!t)return[];var s=e.value,a=[],r=BX.util.htmlspecialchars(t.NAME),o=!!i?BX.message("SOA_FIELD")+' "'+r+'"':BX.message("SOA_FIELD"),l;if(t.MULTIPLE==="Y")return a;if(t.REQUIRED==="Y"&&s.length===0)a.push(o+" "+BX.message("SOA_REQUIRED"));if(s.length){if(t.MINLENGTH&&t.MINLENGTH>s.length)a.push(BX.message("SOA_MIN_LENGTH")+' "'+r+'" '+BX.message("SOA_LESS")+" "+t.MINLENGTH+" "+BX.message("SOA_SYMBOLS"));if(t.MAXLENGTH&&t.MAXLENGTH()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;if(!l.test(s)){a.push(BX.message("SOA_INVALID_EMAIL"))}}}if(s.length>0&&t.PATTERN&&t.PATTERN.length){l=new RegExp(t.PATTERN);if(!l.test(s))a.push(o+" "+BX.message("SOA_INVALID_PATTERN"))}}return a},validateLocation:function(e,t,i){if(!e||!t)return[];var s=BX.findParent(e,{tagName:"DIV",className:"form-group"}),a=this.getLocationString(s),r=[],o=!!i?BX.message("SOA_FIELD")+' "'+BX.util.htmlspecialchars(t.NAME)+'"':BX.message("SOA_FIELD");if(t.MULTIPLE=="Y"&&t.IS_LOCATION!=="Y")return r;if(t.REQUIRED=="Y"&&(a.length==0||a==BX.message("SOA_NOT_SPECIFIED")))r.push(o+" "+BX.message("SOA_REQUIRED"));return r},validateCheckbox:function(e,t,i){if(!e||!t)return[];var s=[],a=!!i?BX.message("SOA_FIELD")+' "'+BX.util.htmlspecialchars(t.NAME)+'"':BX.message("SOA_FIELD");if(t.MULTIPLE=="Y")return s;if(t.REQUIRED=="Y"&&!e.checked)s.push(a+" "+BX.message("SOA_REQUIRED"));return s},validateNumber:function(e,t,i){if(!e||!t)return[];var s=e.value,a=[],r=BX.util.htmlspecialchars(t.NAME),o=!!i?BX.message("SOA_FIELD")+' "'+r+'"':BX.message("SOA_FIELD"),l,n;if(t.MULTIPLE=="Y")return a;if(t.REQUIRED=="Y"&&s.length==0)a.push(o+" "+BX.message("SOA_REQUIRED"));if(s.length){if(!/[0-9]|\./.test(s))a.push(o+" "+BX.message("SOA_NOT_NUMERIC"));if(t.MIN&&parseFloat(t.MIN)>parseFloat(s))a.push(BX.message("SOA_MIN_VALUE")+' "'+r+'" '+parseFloat(t.MIN));if(t.MAX&&parseFloat(t.MAX)0){l=Math.abs(parseFloat(s)-(t.MIN&&parseFloat(t.MIN)>0?parseFloat(t.MIN):0));n=(l/parseFloat(t.STEP)).toPrecision(12);if(n!=parseInt(n))a.push(o+" "+BX.message("SOA_NUM_STEP")+" "+t.STEP)}}return a},validateEnum:function(e,t,i){if(!e||!t)return[];var s=[],a=[],r,o=!!i?BX.message("SOA_FIELD")+' "'+BX.util.htmlspecialchars(t.NAME)+'"':BX.message("SOA_FIELD");if(t.MULTIPLE=="Y")return a;for(r=0;r1?p[p.length-1].toLowerCase():"";if(t.ACCEPT.length>0&&(h.length==0||t.ACCEPT.indexOf(h)=="-1"))s.push(BX.message("SOA_BAD_EXTENSION")+' "'+c+'" ('+BX.util.htmlspecialchars(t.ACCEPT)+")");if(n.size>parseInt(t.MAXSIZE))s.push(BX.message("SOA_MAX_SIZE")+' "'+c+'" ('+this.getSizeString(t.MAXSIZE,1)+")")}}return s},validateDate:function(e,t,i){if(!e||!t)return[];var s=e.value,a=[],r=BX.util.htmlspecialchars(t.NAME),o=!!i?BX.message("SOA_FIELD")+' "'+r+'"':BX.message("SOA_FIELD");if(t.MULTIPLE=="Y")return a;if(t.REQUIRED=="Y"&&s.length==0)a.push(o+" "+BX.message("SOA_REQUIRED"));return a},editPropsMap:function(e){var t=BX.create("DIV",{props:{className:"col-sm-12"},style:{marginBottom:"10px"}}),i=BX.create("DIV",{props:{id:"propsMap"},style:{width:"100%"}});t.appendChild(i);e.appendChild(t)},editPropsComment:function(e){var t,i,s,a;t=BX.create("DIV",{props:{className:"col-sm-12"}});i=BX.create("LABEL",{attrs:{for:"orderDescription"},props:{className:"bx-soa-customer-label"},html:this.params.MESS_ORDER_DESC});s=BX.create("TEXTAREA",{props:{id:"orderDescription",cols:"4",className:"form-control bx-soa-customer-textarea bx-ios-fix",name:"ORDER_DESCRIPTION"},text:this.result.ORDER_DESCRIPTION?this.result.ORDER_DESCRIPTION:""});a=BX.create("DIV",{props:{className:"form-group bx-soa-customer-field"},children:[i,s]});t.appendChild(a);e.appendChild(t)},editTotalBlock:function(){if(!this.totalInfoBlockNode||!this.result.TOTAL)return;var e=this.result.TOTAL,t,i={},s,a,r,o,l,n,c=this.params.SHOW_TOTAL_ORDER_BUTTON==="Y";BX.cleanNode(this.totalInfoBlockNode);if(parseFloat(e.ORDER_PRICE)===0){t=this.params.MESS_PRICE_FREE;i.free=true}else{t=e.ORDER_PRICE_FORMATED}if(this.options.showPriceWithoutDiscount){t+='
'+e.PRICE_WITHOUT_DISCOUNT+""}this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message("SOA_SUM_SUMMARY"),t,i));if(this.options.showOrderWeight){this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message("SOA_SUM_WEIGHT_SUM"),e.ORDER_WEIGHT_FORMATED))}if(this.options.showTaxList){for(r=0;rparseFloat(o.DELIVERY_DISCOUNT_PRICE)){n+='
'+o.PRICE_FORMATED+""}}if(this.result.DELIVERY.length){this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message("SOA_SUM_DELIVERY"),n,i))}if(this.options.showDiscountPrice){s=this.params.MESS_ECONOMY;if(e.DISCOUNT_PERCENT_FORMATED&&parseFloat(e.DISCOUNT_PERCENT_FORMATED)>0)s+=e.DISCOUNT_PERCENT_FORMATED;this.totalInfoBlockNode.appendChild(this.createTotalUnit(s+":",e.DISCOUNT_PRICE_FORMATED,{highlighted:true}))}if(this.options.showPayedFromInnerBudget){this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message("SOA_SUM_IT"),e.ORDER_TOTAL_PRICE_FORMATED));this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message("SOA_SUM_PAYED"),e.PAYED_FROM_ACCOUNT_FORMATED));this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message("SOA_SUM_LEFT_TO_PAY"),e.ORDER_TOTAL_LEFT_TO_PAY_FORMATED,{total:true}))}else{this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message("SOA_SUM_IT"),e.ORDER_TOTAL_PRICE_FORMATED,{total:true}))}if(parseFloat(e.PAY_SYSTEM_PRICE)>=0&&this.result.DELIVERY.length){this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message("SOA_PAYSYSTEM_PRICE"),"~"+e.PAY_SYSTEM_PRICE_FORMATTED))}if(!this.result.SHOW_AUTH){this.totalInfoBlockNode.appendChild(BX.create("DIV",{props:{className:"bx-soa-cart-total-button-container"+(!c?" d-block d-sm-none":"")},children:[BX.create("A",{props:{href:"javascript:void(0)",className:"btn btn-primary btn-lg btn-order-save"},html:this.params.MESS_ORDER,events:{click:BX.proxy(this.clickOrderSaveAction,this)}})]}))}this.editMobileTotalBlock()},editMobileTotalBlock:function(){if(this.result.SHOW_AUTH)BX.removeClass(this.mobileTotalBlockNode,"d-block d-sm-none");else BX.addClass(this.mobileTotalBlockNode,"d-block d-sm-none");BX.cleanNode(this.mobileTotalBlockNode);this.mobileTotalBlockNode.appendChild(this.totalInfoBlockNode.cloneNode(true));BX.bind(this.mobileTotalBlockNode.querySelector("a.bx-soa-price-not-calc"),"click",BX.delegate(function(){this.animateScrollTo(this.deliveryBlockNode)},this));BX.bind(this.mobileTotalBlockNode.querySelector("a.btn-order-save"),"click",BX.proxy(this.clickOrderSaveAction,this))},createTotalUnit:function(e,t,i){var s,a="bx-soa-cart-total-line";e=e||"";t=t||"";i=i||{};if(i.error){s=[BX.create("A",{props:{className:"bx-soa-price-not-calc"},html:t,events:{click:BX.delegate(function(){this.animateScrollTo(this.deliveryBlockNode)},this)}})]}else if(i.free){s=[BX.create("SPAN",{props:{className:"bx-soa-price-free"},html:t})]}else{s=[t]}if(i.total){a+=" bx-soa-cart-total-line-total"}if(i.highlighted){a+=" bx-soa-cart-total-line-highlighted"}return BX.create("DIV",{props:{className:a},children:[BX.create("SPAN",{props:{className:"bx-soa-cart-t"},text:e}),BX.create("SPAN",{props:{className:"bx-soa-cart-d"+(!!i.total&&this.options.totalPriceChanged?" bx-soa-changeCostSign":"")},children:s})]})},basketBlockScrollCheckEvent:function(e){var t=e.target||e.srcElement,i=t.scrollLeft,s=t.scrollWidth-(i+t.clientWidth),a=t.parentNode;if(i==0)BX.removeClass(a,"bx-soa-table-fade-left");else BX.addClass(a,"bx-soa-table-fade-left");if(s==0)BX.removeClass(a,"bx-soa-table-fade-right");else BX.addClass(a,"bx-soa-table-fade-right")},basketBlockScrollCheck:function(){var e=this.orderBlockNode.querySelectorAll("div.bx-soa-table-fade"),t,i,s,a,r,o,l,n,c=false;for(r=0;ri;if(c){o=BX.firstChild(t);l=o.scrollLeft;n=o.scrollWidth-(l+o.clientWidth);if(l==0)BX.removeClass(t,"bx-soa-table-fade-left");else BX.addClass(t,"bx-soa-table-fade-left");if(n==0)BX.removeClass(t,"bx-soa-table-fade-right");else BX.addClass(t,"bx-soa-table-fade-right");if(l==0&&n==0)BX.addClass(t,"bx-soa-table-fade-right")}else BX.removeClass(t,"bx-soa-table-fade-left bx-soa-table-fade-right")}},totalBlockScrollCheck:function(){if(!this.totalInfoBlockNode||!this.totalGhostBlockNode)return;var e=BX.GetWindowScrollPos().scrollTop,t=BX.pos(this.totalGhostBlockNode).top,i=BX.pos(this.orderBlockNode).bottom,s;if(i-this.totalBlockNode.offsetHeightt&&!BX.hasClass(this.totalInfoBlockNode,"bx-soa-cart-total-fixed")){s=this.totalInfoBlockNode.offsetWidth;BX.addClass(this.totalInfoBlockNode,"bx-soa-cart-total-fixed");this.totalGhostBlockNode.style.paddingTop=this.totalInfoBlockNode.offsetHeight+"px";this.totalInfoBlockNode.style.width=s+"px"}else if(efp = $file;
}
else
{
CheckDirPath($file);
$this->fp = fopen($file, "wb");
}
if(is_resource($this->fp))
{
$res = $this->HTTPQuery('GET', $url);
if (!is_resource($file))
{
fclose($this->fp);
unset($this->fp);
}
return $res && ($this->status == 200);
}
return false;
}
/**
* @deprecated Use Bitrix\Main\Web\HttpClient
*/
public function Get($url)
{
if ($this->HTTPQuery('GET', $url))
{
return $this->result;
}
return false;
}
/**
* @deprecated Use Bitrix\Main\Web\HttpClient
*/
public function Post($url, $arPostData)
{
$postdata = CHTTP::PrepareData($arPostData);
if($this->HTTPQuery('POST', $url, $postdata))
{
return $this->result;
}
return false;
}
public static function PrepareData($arPostData, $prefix = '')
{
$str = '';
if(!is_array($arPostData))
{
$str = $arPostData;
}
else
{
foreach ($arPostData as $key => $value)
{
$name = $prefix == "" ? urlencode($key) : $prefix."[".urlencode($key)."]";
if(is_array($value))
{
$str .= CHTTP::PrepareData($value, $name);
}
else
{
$str .= '&'.$name.'='.urlencode($value);
}
}
}
if($prefix == '' && substr($str, 0, 1) == '&')
{
$str = substr($str, 1);
}
return $str;
}
/**
* @deprecated Use Bitrix\Main\Web\HttpClient
*/
public function HTTPQuery($method, $url, $postdata = '')
{
if(is_resource($this->fp))
$file_pos = ftell($this->fp);
$this->redirectsMade = 0;
while (true)
{
$this->url = $url;
$arUrl = $this->ParseURL($url);
if (!$this->Query($method, $arUrl['host'], $arUrl['port'], $arUrl['path_query'], $postdata, $arUrl['proto']))
{
return false;
}
if(
$this->follow_redirect
&& isset($this->headers['Location'])
&& strlen($this->headers['Location']) > 0
)
{
$url = $this->headers['Location'];
if($this->redirectsMade < $this->redirectMax)
{
//When writing to file we have to discard
//redirect body
if(is_resource($this->fp))
{
/** @noinspection PhpUndefinedVariableInspection */
ftruncate($this->fp, $file_pos);
fseek($this->fp, $file_pos, SEEK_SET);
}
$this->redirectsMade++;
continue;
}
else
{
trigger_error("Maximum number of redirects (".$this->redirectMax.") has been reached at URL ".$url, E_USER_WARNING);
return false;
}
}
else
{
break;
}
}
return true;
}
/**
* @deprecated Use Bitrix\Main\Web\HttpClient
*/
public function Query($method, $host, $port, $path, $postdata = false, $proto = '', $post_content_type = 'N', $dont_wait_answer = false)
{
$this->status = 0;
$this->result = '';
$this->headers = array();
$this->cookies = array();
$fp = fsockopen($proto.$host, $port, $this->errno, $this->errstr, $this->http_timeout);
if ($fp)
{
$strRequest = "$method $path HTTP/1.0\r\n";
$strRequest .= "Connection: close\r\n";
$strRequest .= "User-Agent: {$this->user_agent}\r\n";
$strRequest .= "Accept: */*\r\n";
$strRequest .= "Host: $host\r\n";
$strRequest .= "Accept-Language: en\r\n";
foreach ($this->additional_headers as $key => $value)
$strRequest .= $key.": ".$value."\r\n";
if ($method == 'POST' || $method == 'PUT')
{
if ('N' !== $post_content_type)
$strRequest .= $post_content_type == '' ? '' : "Content-type: ".$post_content_type."\r\n";
else
$strRequest.= "Content-type: application/x-www-form-urlencoded\r\n";
if(!array_key_exists("Content-Length", $this->additional_headers))
$strRequest.= "Content-Length: ".CUtil::BinStrlen($postdata) . "\r\n";
}
$strRequest .= "\r\n";
fwrite($fp, $strRequest);
if ($method == 'POST' || $method == 'PUT')
{
if(is_resource($postdata))
{
while(!feof($postdata))
fwrite($fp, fread($postdata, 1024*1024));
}
else
{
fwrite($fp, $postdata);
}
}
if ($dont_wait_answer)
{
fclose($fp);
return true;
}
$headers = "";
while(!feof($fp))
{
$line = fgets($fp, 4096);
if($line == "\r\n" || $line === false)
{
//$line = fgets($fp, 4096);
break;
}
$headers .= $line;
}
$this->ParseHeaders($headers);
if(is_resource($this->fp))
{
while(!feof($fp))
{
$buf = fread($fp, 40960);
if ($buf === false)
break;
fwrite($this->fp, $buf);
fflush($this->fp);
}
}
else
{
$this->result = "";
while(!feof($fp))
{
$buf = fread($fp, 4096);
if ($buf === false)
break;
$this->result .= $buf;
}
}
fclose($fp);
return true;
}
/** @global CMain $APPLICATION */
global $APPLICATION;
$APPLICATION->ThrowException(
GetMessage('HTTP_CLIENT_ERROR_CONNECT',
array(
'%ERRSTR%' => $this->errstr,
'%ERRNO%' => $this->errno,
'%HOST%' => $host,
'%PORT%' => $port,
)
)
);
return false;
}
public function SetAuthBasic($user, $pass)
{
$this->additional_headers['Authorization'] = "Basic ".base64_encode($user.":".$pass);
}
/**
* @deprecated Use Bitrix\Main\Web\Uri
*/
public static function ParseURL($url)
{
$arUrl = parse_url($url);
$arUrl['proto'] = '';
if (array_key_exists('scheme', $arUrl))
{
$arUrl['scheme'] = strtolower($arUrl['scheme']);
}
else
{
$arUrl['scheme'] = 'http';
}
if (!array_key_exists('port', $arUrl))
{
if ($arUrl['scheme'] == 'https')
{
$arUrl['port'] = 443;
}
else
{
$arUrl['port'] = 80;
}
}
if ($arUrl['scheme'] == 'https')
{
$arUrl['proto'] = 'ssl://';
}
$arUrl['path_query'] = array_key_exists('path', $arUrl) ? $arUrl['path'] : '/';
if (array_key_exists('query', $arUrl) && strlen($arUrl['query']) > 0)
{
$arUrl['path_query'] .= '?' . $arUrl['query'];
}
return $arUrl;
}
public function ParseHeaders($strHeaders)
{
$arHeaders = explode("\n", $strHeaders);
foreach ($arHeaders as $k => $header)
{
if ($k == 0)
{
if (preg_match(',HTTP\S+ (\d+),', $header, $arFind))
{
$this->status = intval($arFind[1]);
}
}
elseif(strpos($header, ':') !== false)
{
$arHeader = explode(':', $header, 2);
if ($arHeader[0] == 'Set-Cookie')
{
if (($pos = strpos($arHeader[1], ';')) !== false && $pos > 0)
{
$cookie = trim(substr($arHeader[1], 0, $pos));
}
else
{
$cookie = trim($arHeader[1]);
}
$arCookie = explode('=', $cookie, 2);
$this->cookies[$arCookie[0]] = rawurldecode($arCookie[1]);
}
else
{
$this->headers[$arHeader[0]] = trim($arHeader[1]);
}
}
}
}
public function setFollowRedirect($follow)
{
$this->follow_redirect = $follow;
}
public function setRedirectMax($n)
{
$this->redirectMax = $n;
}
/**
* @deprecated Use Bitrix\Main\Web\HttpClient
*/
public static function sGet($url, $follow_redirect = false) //static get
{
$ob = new CHTTP();
$ob->setFollowRedirect($follow_redirect);
return $ob->Get($url);
}
/**
* @deprecated Use Bitrix\Main\Web\HttpClient
*/
public static function sPost($url, $arPostData, $follow_redirect = false) //static post
{
$ob = new CHTTP();
$ob->setFollowRedirect($follow_redirect);
return $ob->Post($url, $arPostData);
}
public function SetAdditionalHeaders($arHeader=array())
{
foreach($arHeader as $name => $value)
{
$name = str_replace(array("\r","\n"), "", $name);
$value = str_replace(array("\r","\n"), "", $value);
$this->additional_headers[$name] = $value;
}
}
/** Static Get with the ability to add headers and set the http timeout
* @deprecated Use Bitrix\Main\Web\HttpClient
* @static
* @param $url
* @param array $arHeader
* @param int $httpTimeout
* @return bool|string
*/
public static function sGetHeader($url, $arHeader = array(), $httpTimeout = 0)
{
$httpTimeout = intval($httpTimeout);
$ob = new CHTTP();
if(!empty($arHeader))
$ob->SetAdditionalHeaders($arHeader);
if($httpTimeout > 0)
$ob->http_timeout = $httpTimeout;
return $ob->Get($url);
}
/** Static Post with the ability to add headers and set the http timeout
* @deprecated Use Bitrix\Main\Web\HttpClient
* @static
* @param $url
* @param $arPostData
* @param array $arHeader
* @param int $http_timeout
* @return bool|string
*/
public static function sPostHeader($url, $arPostData, $arHeader = array(), $http_timeout = 0)
{
$http_timeout = intval($http_timeout);
$ob = new CHTTP();
if(!empty($arHeader))
$ob->SetAdditionalHeaders($arHeader);
if($http_timeout > 0)
$ob->http_timeout = $http_timeout;
return $ob->Post($url, $arPostData);
}
public static function SetStatus($status)
{
$bCgi = (stristr(php_sapi_name(), "cgi") !== false);
if($bCgi && (!defined("BX_HTTP_STATUS") || BX_HTTP_STATUS == false))
header("Status: ".$status);
else
header($_SERVER["SERVER_PROTOCOL"]." ".$status);
self::$lastSetStatus = $status;
}
public static function GetLastStatus()
{
return self::$lastSetStatus;
}
public static function SetAuthHeader($bDigestEnabled=true)
{
self::SetStatus('401 Unauthorized');
if(defined('BX_HTTP_AUTH_REALM'))
$realm = BX_HTTP_AUTH_REALM;
else
$realm = "Bitrix Site Manager";
header('WWW-Authenticate: Basic realm="'.$realm.'"');
if($bDigestEnabled !== false && COption::GetOptionString("main", "use_digest_auth", "N") == "Y")
{
// On first try we found that we don't know user digest hash. Let ask only Basic auth first.
if($_SESSION["BX_HTTP_DIGEST_ABSENT"] !== true)
header('WWW-Authenticate: Digest realm="'.$realm.'", nonce="'.uniqid().'"');
}
}
public static function ParseAuthRequest()
{
$sDigest = '';
if(isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] <> '')
{
// Basic Authorization PHP module
return array("basic"=>array(
"username"=>CUtil::ConvertToLangCharset($_SERVER['PHP_AUTH_USER']),
"password"=>CUtil::ConvertToLangCharset($_SERVER['PHP_AUTH_PW']),
));
}
elseif(isset($_SERVER['PHP_AUTH_DIGEST']) && $_SERVER['PHP_AUTH_DIGEST'] <> '')
{
// Digest Authorization PHP module
$sDigest = $_SERVER['PHP_AUTH_DIGEST'];
}
else
{
if(isset($_SERVER['REDIRECT_REMOTE_USER']) || isset($_SERVER['REMOTE_USER']))
{
$res = (isset($_SERVER['REDIRECT_REMOTE_USER'])? $_SERVER['REDIRECT_REMOTE_USER'] : $_SERVER['REMOTE_USER']);
if($res <> '')
{
if(preg_match('/^\x20*Basic\x20+([a-zA-Z0-9+\/=]+)\s*$/D', $res, $matches))
{
// Basic Authorization PHP FastCGI (CGI)
$res = trim($matches[1]);
$res = base64_decode($res);
$res = CUtil::ConvertToLangCharset($res);
list($user, $pass) = explode(':', $res, 2);
if(strpos($user, $_SERVER['HTTP_HOST']."\\") === 0)
$user = str_replace($_SERVER['HTTP_HOST']."\\", "", $user);
elseif(strpos($user, $_SERVER['SERVER_NAME']."\\") === 0)
$user = str_replace($_SERVER['SERVER_NAME']."\\", "", $user);
return array("basic"=>array(
"username"=>$user,
"password"=>$pass,
));
}
elseif(preg_match('/^\x20*Digest\x20+(.*)$/sD', $res, $matches))
{
// Digest Authorization PHP FastCGI (CGI)
$sDigest = trim($matches[1]);
}
}
}
}
if($sDigest <> '' && ($data = self::ParseDigest($sDigest)))
return array("digest"=>$data);
return false;
}
public static function ParseDigest($sDigest)
{
$data = array();
$needed_parts = array('nonce'=>1, 'username'=>1, 'uri'=>1, 'response'=>1);
$keys = implode('|', array_keys($needed_parts));
//from php help
preg_match_all('@('.$keys.')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $sDigest, $matches, PREG_SET_ORDER);
foreach ($matches as $m)
{
$data[$m[1]] = ($m[3]? $m[3] : $m[4]);
unset($needed_parts[$m[1]]);
}
return ($needed_parts? false : $data);
}
public static function urlAddParams($url, $add_params, $options = array())
{
if(count($add_params))
{
$params = array();
foreach($add_params as $name => $value)
{
if($options["skip_empty"] && !strlen($value))
continue;
if($options["encode"])
$params[] = urlencode($name).'='.urlencode($value);
else
$params[] = $name.'='.$value;
}
if(count($params))
{
$p1 = strpos($url, "?");
if($p1 === false)
$ch = "?";
else
$ch = "&";
$p2 = strpos($url, "#");
if($p2===false)
{
$url = $url.$ch.implode("&", $params);
}
else
{
$url = substr($url, 0, $p2).$ch.implode("&", $params).substr($url, $p2);
}
}
}
return $url;
}
public static function urlDeleteParams($url, $delete_params, $options = array())
{
$url_parts = explode("?", $url, 2);
if(count($url_parts) == 2 && strlen($url_parts[1]) > 0)
{
if($options["delete_system_params"])
$delete_params = array_merge($delete_params, \Bitrix\Main\HttpRequest::getSystemParameters());
$params_pairs = explode("&", $url_parts[1]);
foreach($params_pairs as $i => $param_pair)
{
$name_value_pair = explode("=", $param_pair, 2);
if(count($name_value_pair) == 2 && in_array($name_value_pair[0], $delete_params))
unset($params_pairs[$i]);
}
if(empty($params_pairs))
return $url_parts[0];
else
return $url_parts[0]."?".implode("&", $params_pairs);
}
return $url;
}
public static function urnEncode($str, $charset = false)
{
/** @global CMain $APPLICATION */
global $APPLICATION;
$result = '';
$arParts = preg_split("#(://|:\\d+/|/|\\?|=|&)#", $str, -1, PREG_SPLIT_DELIM_CAPTURE);
if($charset === false)
{
foreach($arParts as $i => $part)
{
$result .= ($i % 2) ? $part : rawurlencode($part);
}
}
else
{
foreach($arParts as $i => $part)
{
$result .= ($i % 2)
? $part
: rawurlencode($APPLICATION->ConvertCharset($part, LANG_CHARSET, $charset));
}
}
return $result;
}
public static function urnDecode($str, $charset = false)
{
/** @global CMain $APPLICATION */
global $APPLICATION;
$result = '';
$arParts = preg_split("#(://|:\\d+/|/|\\?|=|&)#", $str, -1, PREG_SPLIT_DELIM_CAPTURE);
if($charset === false)
{
foreach($arParts as $i => $part)
{
$result .= ($i % 2) ? $part : rawurldecode($part);
}
}
else
{
foreach($arParts as $i => $part)
{
$result .= ($i % 2)
? $part
: rawurldecode($APPLICATION->ConvertCharset($part, LANG_CHARSET, $charset));
}
}
return $result;
}
// search for /../ and ulrencoded /../
public static function isPathTraversalUri($uri)
{
if (($pos = strpos($uri, "?")) !== false)
$uri = substr($uri, 0, $pos);
$uri = trim($uri);
return preg_match("#(?:/|2f|^|\\\\|5c)(?:(?:%0*(25)*2e)|\\.){2,}(?:/|%0*(25)*2f|\\\\|%0*(25)*5c|$)#i", $uri) ? true : false;
}
}
function GetMenuTypes($site=false, $default_value=false)
{
if($default_value === false)
$default_value = "left=".GetMessage("main_tools_menu_left").",top=".GetMessage("main_tools_menu_top");
$mt = COption::GetOptionString("fileman", "menutypes", $default_value, $site);
if (!$mt)
return Array();
$armt_ = unserialize(stripslashes($mt));
$armt = Array();
if (is_array($armt_))
{
foreach($armt_ as $key => $title)
{
$key = trim($key);
if (strlen($key) == 0)
continue;
$armt[$key] = trim($title);
}
return $armt;
}
$armt_ = explode(",", $mt);
for ($i = 0, $c = count($armt_); $i < $c; $i++)
{
$pos = strpos($armt_[$i], '=');
if ($pos === false)
continue;
$key = trim(substr($armt_[$i], 0, $pos));
if (strlen($key) == 0)
continue;
$armt[$key] = trim(substr($armt_[$i], $pos + 1));
}
return $armt;
}
function SetMenuTypes($armt, $site = '', $description = false)
{
return COption::SetOptionString('fileman', "menutypes", addslashes(serialize($armt)), $description, $site);
}
function ParseFileContent($filesrc, $params = array())
{
/////////////////////////////////////
// Parse prolog, epilog, title
/////////////////////////////////////
$filesrc = trim($filesrc);
$prolog = $epilog = '';
$php_doubleq = false;
$php_singleq = false;
$php_comment = false;
$php_star_comment = false;
$php_line_comment = false;
$php_st = "<"."?";
$php_ed = "?".">";
if($params["use_php_parser"] && substr($filesrc, 0, 2) == $php_st)
{
$phpChunks = PHPParser::getPhpChunks($filesrc);
if (!empty($phpChunks))
{
$prolog = $phpChunks[0];
$filesrc = substr($filesrc, strlen($prolog));
}
}
elseif(substr($filesrc, 0, 2)==$php_st)
{
$fl = strlen($filesrc);
$p = 2;
while($p < $fl)
{
$ch2 = substr($filesrc, $p, 2);
$ch1 = substr($ch2, 0, 1);
if($ch2==$php_ed && !$php_doubleq && !$php_singleq && !$php_star_comment)
{
$p+=2;
break;
}
elseif(!$php_comment && $ch2=="//" && !$php_doubleq && !$php_singleq)
{
$php_comment = $php_line_comment = true;
$p++;
}
elseif($php_line_comment && ($ch1=="\n" || $ch1=="\r" || $ch2=="?>"))
{
$php_comment = $php_line_comment = false;
}
elseif(!$php_comment && $ch2=="/*" && !$php_doubleq && !$php_singleq)
{
$php_comment = $php_star_comment = true;
$p++;
}
elseif($php_star_comment && $ch2=="*/")
{
$php_comment = $php_star_comment = false;
$p++;
}
elseif(!$php_comment)
{
if(($php_doubleq || $php_singleq) && $ch2=="\\\\")
{
$p++;
}
elseif(!$php_doubleq && $ch1=='"')
{
$php_doubleq=true;
}
elseif($php_doubleq && $ch1=='"' && substr($filesrc, $p-1, 1)!='\\')
{
$php_doubleq=false;
}
elseif(!$php_doubleq)
{
if(!$php_singleq && $ch1=="'")
{
$php_singleq=true;
}
elseif($php_singleq && $ch1=="'" && substr($filesrc, $p-1, 1)!='\\')
{
$php_singleq=false;
}
}
}
$p++;
}
$prolog = substr($filesrc, 0, $p);
$filesrc = substr($filesrc, $p);
}
elseif(preg_match("'(.*?.*?)(.*)$'is", $filesrc, $reg))
{
$prolog = $reg[1];
$filesrc= $reg[2];
}
$title = PHPParser::getPageTitle($filesrc, $prolog);
$arPageProps = array();
if(strlen($prolog))
{
if (preg_match_all("'\\\$APPLICATION->SetPageProperty\\(([\"\\'])(.*?)(? $m1)
{
$arPageProps[UnEscapePHPString($m1, $out[1][$i])] = UnEscapePHPString($out[4][$i], $out[3][$i]);
}
}
}
if(substr($filesrc, -2) == "?".">")
{
if (isset($phpChunks) && count($phpChunks) > 1)
{
$epilog = $phpChunks[count($phpChunks)-1];
$filesrc = substr($filesrc, 0, -strlen($epilog));
}
else
{
$p = strlen($filesrc) - 2;
$php_start = "<"."?";
while(($p > 0) && (substr($filesrc, $p, 2) != $php_start))
$p--;
$epilog = substr($filesrc, $p);
$filesrc = substr($filesrc, 0, $p);
}
}
return array(
"PROLOG" => $prolog,
"TITLE" => $title,
"PROPERTIES" => $arPageProps,
"CONTENT" => $filesrc,
"EPILOG" => $epilog,
);
}
function EscapePHPString($str, $encloser = '"')
{
if($encloser == "'")
{
$from = array("\\", "'");
$to = array("\\\\", "\\'");
}
else
{
$from = array("\\", "\$", "\"");
$to = array("\\\\", "\\\$", "\\\"");
}
return str_replace($from, $to, $str);
}
function UnEscapePHPString($str, $encloser = '"')
{
if($encloser == "'")
{
$from = array("\\\\", "\\'");
$to = array("\\", "'");
}
else
{
$from = array("\\\\", "\\\$", "\\\"");
$to = array("\\", "\$", "\"");
}
return str_replace($from, $to, $str);
}
function CheckSerializedData($str, $max_depth = 200)
{
if(preg_match('/(^|;)[OC]\\:\\+{0,1}\\d+:/', $str)) // serialized objects
{
return false;
}
// check max depth in PHP 5.3.0 and earlier
if(!version_compare(phpversion(),"5.3.0",">"))
{
$str1 = preg_replace('/[^{}]+/'.BX_UTF_PCRE_MODIFIER, '', $str);
$cnt = 0;
for ($i=0,$len=strlen($str1);$i<$len;$i++)
{
// we've just cleared all possible utf-symbols, so we can use [] syntax
if ($str1[$i]=='}')
$cnt--;
else
{
$cnt++;
if ($cnt > $max_depth)
break;
}
}
return $cnt <= $max_depth;
}
else
{
return true;
}
}
function NormalizePhone($number, $minLength = 10)
{
$minLength = intval($minLength);
if ($minLength <= 0 || strlen($number) < $minLength)
{
return false;
}
if (strlen($number) >= 10 && substr($number, 0, 2) == '+8')
{
$number = '00'.substr($number, 1);
}
$number = preg_replace("/[^0-9\#\*,;]/i", "", $number);
if (strlen($number) >= 10)
{
if (substr($number, 0, 2) == '80' || substr($number, 0, 2) == '81' || substr($number, 0, 2) == '82')
{
}
else if (substr($number, 0, 2) == '00')
{
$number = substr($number, 2);
}
else if (substr($number, 0, 3) == '011')
{
$number = substr($number, 3);
}
else if (substr($number, 0, 1) == '8')
{
$number = '7'.substr($number, 1);
}
else if (substr($number, 0, 1) == '0')
{
$number = substr($number, 1);
}
}
return $number;
}
function bxmail($to, $subject, $message, $additional_headers="", $additional_parameters="", \Bitrix\Main\Mail\Context $context=null)
{
if (empty($context))
{
$context = new \Bitrix\Main\Mail\Context();
}
$event = new \Bitrix\Main\Event(
'main',
'OnBeforePhpMail',
array(
'arguments' => (object) array(
'to' => &$to,
'subject' => &$subject,
'message' => &$message,
'additional_headers' => &$additional_headers,
'additional_parameters' => &$additional_parameters,
'context' => &$context,
),
)
);
$event->send();
if(function_exists("custom_mail"))
return custom_mail($to, $subject, $message, $additional_headers, $additional_parameters, $context);
if($additional_parameters!="")
return @mail($to, $subject, $message, $additional_headers, $additional_parameters);
return @mail($to, $subject, $message, $additional_headers);
}
function bx_accelerator_reset()
{
if(defined("BX_NO_ACCELERATOR_RESET"))
return;
if(function_exists("accelerator_reset"))
accelerator_reset();
elseif(function_exists("wincache_refresh_if_changed"))
wincache_refresh_if_changed();
}
class UpdateTools
{
public static function CheckUpdates()
{
global $USER;
if(LICENSE_KEY == "DEMO")
return;
$days_check = intval(COption::GetOptionString('main', 'update_autocheck'));
if($days_check > 0)
{
CUtil::SetPopupOptions('update_tooltip', array('display'=>'on'));
$update_res = unserialize(COption::GetOptionString('main', '~update_autocheck_result'));
if(!is_array($update_res))
$update_res = array("check_date"=>0, "result"=>false);
if(time() > $update_res["check_date"]+$days_check*86400)
{
if($USER->CanDoOperation('install_updates'))
{
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/update_client.php");
$result = CUpdateClient::IsUpdateAvailable($arModules, $strError);
$modules = array();
foreach($arModules as $module)
$modules[] = $module["@"]["ID"];
if($strError <> '' && COption::GetOptionString('main', 'update_stop_autocheck', 'N') == 'Y')
COption::SetOptionString('main', 'update_autocheck', '');
COption::SetOptionString('main', '~update_autocheck_result', serialize(array(
"check_date"=>time(),
"result"=>$result,
"error"=>$strError,
"modules"=>$modules,
)));
}
}
}
}
public static function SetUpdateResult()
{
COption::SetOptionString('main', '~update_autocheck_result', serialize(array(
"check_date"=>time(),
"result"=>false,
"error"=>"",
"modules"=>array(),
)));
}
public static function SetUpdateError($strError)
{
$update_res = unserialize(COption::GetOptionString('main', '~update_autocheck_result'));
if(!is_array($update_res))
$update_res = array("check_date"=>0, "result"=>false);
if($strError <> '')
$update_res["result"] = false;
$update_res["error"] = $strError;
COption::SetOptionString('main', '~update_autocheck_result', serialize($update_res));
}
public static function GetUpdateResult()
{
$update_res = false;
if(intval(COption::GetOptionString('main', 'update_autocheck')) > 0)
$update_res = unserialize(COption::GetOptionString('main', '~update_autocheck_result'));
if(!is_array($update_res))
$update_res = array("result"=>false, "error"=>"", "modules"=>array());
$update_res['tooltip'] = '';
if($update_res["result"] == true || $update_res["error"] <> '')
{
$updOptions = CUtil::GetPopupOptions('update_tooltip');
if($updOptions['display'] <> 'off')
{
if($update_res["result"] == true)
$update_res['tooltip'] = GetMessage("top_panel_updates").(($n = count($update_res["modules"])) > 0? GetMessage("top_panel_updates_modules", array("#MODULE_COUNT#"=>$n)) : '');
elseif($update_res["error"] <> '')
$update_res['tooltip'] = GetMessage("top_panel_updates_err").' '.$update_res["error"].'
'.GetMessage("top_panel_updates_settings").'';
}
}
return $update_res;
}
}
class CSpacer
{
var $iMaxChar;
var $symbol;
function __construct($iMaxChar, $symbol)
{
$this->iMaxChar = $iMaxChar;
$this->symbol = $symbol;
}
function InsertSpaces($string)
{
return preg_replace_callback('/(^|>)([^<>]+)(<|$)/', array($this, "__InsertSpacesCallback"), $string);
}
function __InsertSpacesCallback($arMatch)
{
return $arMatch[1].preg_replace("/([^() \\n\\r\\t%!?{}\\][-]{".$this->iMaxChar."})/".BX_UTF_PCRE_MODIFIER,"\\1".$this->symbol, $arMatch[2]).$arMatch[3];
}
}
function ini_get_bool($param)
{
$val = ini_get($param);
return ($val == '1' || strtolower($val) == 'on');
}
/**
* Sorting array by column.
* You can use short mode: Collection::sortByColumn($arr, 'value'); This is equal Collection::sortByColumn($arr, array('value' => SORT_ASC))
*
* Pay attention: if two members compare as equal, their relative order in the sorted array is undefined. The sorting is not stable.
*
* More example:
* Collection::sortByColumn($arr, array('value' => array(SORT_NUMERIC, SORT_ASC), 'attr' => SORT_DESC), array('attr' => 'strlen'), 'www');
*
* @param array $array
* @param string|array $columns
* @param string|array $callbacks
* @param bool $preserveKeys If false numeric keys will be re-indexed. If true - preserve.
* @param null $defaultValueIfNotSetValue If value not set - use $defaultValueIfNotSetValue (any cols)
*/
function sortByColumn(array &$array, $columns, $callbacks = '', $defaultValueIfNotSetValue = null, $preserveKeys = false)
{
\Bitrix\Main\Type\Collection::sortByColumn($array, $columns, $callbacks, $defaultValueIfNotSetValue, $preserveKeys);
}
function getLocalPath($path, $baseFolder = "/bitrix")
{
$root = rtrim($_SERVER["DOCUMENT_ROOT"], "\\/");
static $hasLocalDir = null;
if($hasLocalDir === null)
{
$hasLocalDir = is_dir($root."/local");
}
if($hasLocalDir && file_exists($root."/local/".$path))
{
return "/local/".$path;
}
elseif(file_exists($root.$baseFolder."/".$path))
{
return $baseFolder."/".$path;
}
return false;
}
/**
* Set session expired, e.g. if you want to destroy session after this hit
* @param bool $pIsExpired
*/
function setSessionExpired($pIsExpired = true)
{
$_SESSION["IS_EXPIRED"] = $pIsExpired;
}
/**
* @return bool
*/
function isSessionExpired()
{
return isset($_SESSION["IS_EXPIRED"]) && $_SESSION["IS_EXPIRED"] === true;
}
Fatal error: Uncaught Error: Class 'CHTTP' not found in /home/admin/web/on-lineclimat.ru/public_html/bitrix/modules/main/include/urlrewrite.php:114
Stack trace:
#0 /home/admin/web/on-lineclimat.ru/public_html/bitrix/urlrewrite.php(2): include_once()
#1 {main}
thrown in /home/admin/web/on-lineclimat.ru/public_html/bitrix/modules/main/include/urlrewrite.php on line 114