Exemplo n.º 1
0
 public static function getTosRequired(&$ref, &$OPCloader)
 {
     include JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'config' . DS . 'onepage.cfg.php';
     require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
     $userFieldsModel = OPCmini::getModel('Userfields');
     // new VirtueMartModelUserfields();
     if ($userFieldsModel->getIfRequired('agreed')) {
         if (!class_exists('VmHtml')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'html.php';
         }
         $tos_required = true;
     } else {
         $tos_required = false;
     }
     $l = OPCloader::logged($ref->cart);
     if (!empty($l)) {
         // logged
         if (!empty($tos_logged)) {
             return true;
         }
         if (!isset($tos_logged)) {
             return $tos_required;
         } else {
             return !empty($tos_logged);
         }
     } else {
         if (!empty($tos_unlogged)) {
             return true;
         }
         if (!isset($tos_unlogged)) {
             return $tos_required;
         }
         return !empty($tos_unlogged);
     }
     return $tos_required;
 }
Exemplo n.º 2
0
 public static function removeShopperGroups($arr)
 {
     return;
     if (!class_exists('VirtueMartModelShopperGroup')) {
         if (file_exists(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'shoppergroup.php')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'shoppergroup.php';
         } else {
             return 1;
         }
     }
     if (!method_exists('VirtueMartModelShopperGroup', 'appendShopperGroups')) {
         return 1;
     }
     require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
     $shoppergroupmodel = OPCmini::getModel('ShopperGroup');
     //new VirtueMartModelShopperGroup();
     $session = JFactory::getSession();
     $shoppergroup_ids = $session->get('vm_shoppergroups_add', array(), 'vm');
     /*
     foreach ($arr as $id)
      {
         if (in_array($id, $shoppergroup_ids))
     		  {
     		     
     		  }
      }
     */
 }
Exemplo n.º 3
0
    public static function getCustomFields($virtuemart_product_id, $cart_key = '', $quantity = 1)
    {
        $html = '';
        require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
        $product_model = OPCmini::getModel('product');
        $product = $product_model->getProduct($virtuemart_product_id, TRUE, TRUE, TRUE, $quantity, true);
        $customfieldModel = OPCmini::getModel('Customfields');
        if (!method_exists($customfieldModel, 'getproductCustomslist')) {
            return $html;
        }
        $product->customfields = $customfieldModel->getproductCustomslist($virtuemart_product_id);
        if (empty($product->customfields) and !empty($product->product_parent_id)) {
            //$product->customfields = $this->productCustomsfieldsClone($product->product_parent_id,true) ;
            $product->customfields = $customfieldModel->getproductCustomslist($product->product_parent_id, $virtuemart_product_id);
            $product->customfields_fromParent = TRUE;
        }
        $customfieldModel->getProductCustomsField($product);
        $product->customfields = $customfieldModel->getProductCustomsFieldCart($product);
        foreach ($product->customfields as $k => $custom) {
            if (!empty($custom->layout_pos)) {
                $product->customfieldsSorted[$custom->layout_pos][] = $custom;
                unset($product->customfields[$k]);
            }
        }
        $product->customfieldsSorted['normal'] = $product->customfields;
        unset($product->customfields);
        JHTMLOPC::script('opcattributes.js', 'components/com_onepage/assets/js/');
        $html .= '
		<form method="post" class="opccartproduct opc-recalculate" action="' . JRoute::_('index.php') . '">
		<input name="quantity[0]" class=".quantity-input" type="hidden" value="' . $quantity . '">
		
		<input name="virtuemart_product_id[0]" class="opc_product" type="hidden" value="' . $virtuemart_product_id . '">
		<input name="cart_key" value="' . $cart_key . '" type="hidden" />
		<input name="cart_virtuemart_product_id" value="' . $cart_key . '" type="hidden" />
		<div class="product-fields">';
        $custom_title = null;
        foreach ($product->customfieldsSorted as $positions => $val) {
            foreach ($val as $field) {
                if ($field->is_hidden) {
                    //OSP http://forum.virtuemart.net/index.php?topic=99320.0
                    continue;
                }
                if ($field->display) {
                    $html .= '<div class="product-field product-field-type-' . $field->field_type . '">';
                    if ($field->custom_title != $custom_title && $field->show_title) {
                        $html .= '<span class="product-fields-title" >' . JText::_($field->custom_title) . '</span>';
                        if ($field->custom_tip) {
                            $html .= JHTML::tooltip($field->custom_tip, JText::_($field->custom_title), 'tooltip.png');
                        }
                    }
                    $display = $field->display;
                    $selected = self::getSelected($cart_key, $field->virtuemart_custom_id);
                    $display = str_replace(JText::_('COM_VIRTUEMART_CART_PRICE_FREE'), '', $display);
                    $display = str_replace('value="' . $selected . '"', ' checked="checked" selected="selected" value="' . $selected . '" ', $display);
                    $html .= '<div class="product-field-display" style="clear:both;">' . $display . '</div>
	    	    <span class="product-field-desc">' . jText::_($field->custom_field_desc) . '</span>
	    	</div>';
                    $custom_title = $field->custom_title;
                }
            }
        }
        $html .= '</div></form>';
        return $html;
    }
Exemplo n.º 4
0
 public static function getSTHtml(&$cart)
 {
     $html = '';
     $stId = JRequest::getVar('ship_to_info_id', 0);
     $stId = (int) $stId;
     if (!empty($stId)) {
         $user_id = JFactory::getUser()->get('id');
         if (!empty($user_id)) {
             $db = JFactory::getDBO();
             $q = 'select * from #__virtuemart_userinfos where virtuemart_userinfo_id = ' . $db->escape($stId) . ' limit 0,1';
             $db->setQuery($q);
             $adr1 = $db->loadObject();
             if (!empty($adr1)) {
                 if ($adr1->virtuemart_user_id == $user_id) {
                     /*
                     			   $new_adr1 = new stdClass(); 
                     			   foreach ($adr1 as $key=>$val)
                     			    {
                       $new_adr1->$key = $val; 
                     }
                     */
                     require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
                     $umodel = OPCmini::getModel('user');
                     //new VirtuemartModelUser();
                     $virtuemart_userinfo_id = 0;
                     $currentUser = JFactory::getUser();
                     $uid = $currentUser->get('id');
                     $userDetails = $umodel->getUser();
                     $virtuemart_userinfo_id = $umodel->getBTuserinfo_id();
                     $userFields = $umodel->getUserInfoInUserFields('default', 'BT', $virtuemart_userinfo_id);
                     $userFields = $umodel->getUserInfoInUserFields('default', 'ST', $stId);
                     /*
                      */
                     if (method_exists($cart, 'prepareAddressDataInCart')) {
                         $cart->prepareAddressDataInCart('ST', 1);
                     }
                     if (method_exists($cart, 'prepareAddressFieldsInCart')) {
                         $cart->prepareAddressFieldsInCart();
                     }
                     if (isset($cart->STaddress['fields'])) {
                         $BTaddress = $cart->STaddress['fields'];
                     } else {
                         $BTaddress = $cart->BTaddress['fields'];
                     }
                     $new_address_link = '#" onclick="return Onepage.op_showEditST();';
                     require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'loader.php';
                     $OPCloader = new OPCloader();
                     $BTaddressNamed = $OPCloader->setCountryAndState($BTaddress);
                     $html = self::renderNamed($BTaddressNamed, $adr1, $cart, $OPCloader, $virtuemart_userinfo_id, true);
                 }
             }
         }
     }
     return $html;
 }
Exemplo n.º 5
0
 function getPaymentMethods(&$order)
 {
     if (!class_exists('VmConfig')) {
         require JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart' . DS . 'helpers' . DS . 'config.php';
         VmConfig::loadConfig();
     }
     require_once JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
     $sm = OPCmini::getModel('paymentmethod');
     $shipments = $sm->getPayments();
     return $shipments;
 }
Exemplo n.º 6
0
 function getCurrencies()
 {
     $db = JFactory::getDBO();
     $q = 'select vendor_currency, vendor_accepted_currencies from #__virtuemart_vendors where 1';
     $db->setQuery($q);
     $res = $db->loadAssocList();
     echo $db->getErrorMsg();
     $arr = array();
     require_once JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
     $cm = OPCmini::getModel('currency');
     if (!empty($res)) {
         foreach ($res as $row) {
             $a = explode(',', $row['vendor_accepted_currencies']);
             $vc = $row['vendor_currency'];
             if (!isset($arr[$vc])) {
                 $arr[$vc] = $cm->getCurrency($vc);
             }
             foreach ($a as $c) {
                 $arr[$c] = $cm->getCurrency($c);
             }
         }
     }
     return $arr;
 }
Exemplo n.º 7
0
 /**
  * This function just gets the post data and put the data if there is any to the cart
  *
  * @author Max Milbers
  *
  * this is from user model 
  */
 function saveToCart($data, $cart = null)
 {
     require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
     $userFieldsModel = OPCmini::getModel('userfields');
     $prepareUserFields = $userFieldsModel->getUserFieldsFor('cart', $data['address_type']);
     if (!empty($prepareUserFields)) {
         foreach ($prepareUserFields as $fld) {
             $name = $fld->name;
             if ($data['address_type'] == 'BT') {
                 if (isset($cart) && !empty($cart->BT[$name])) {
                     $data[$name] = $cart->BT[$name];
                 }
             }
             if ($data['address_type'] == 'ST') {
                 if (isset($cart) && !empty($cart->ST[$name])) {
                     $data[$name] = $cart->ST[$name];
                 }
             }
             // we need to add empty values for checkboxes and radios
             if ($data['address_type'] == 'ST') {
                 if (!isset($data['shipto_' . $name])) {
                     $data['shipto_' . $name] = '';
                 }
             }
             if (isset($cart) && empty($cart->BT[$name])) {
                 if ($data['address_type'] == 'BT') {
                     if (!isset($data[$name])) {
                         $data[$name] = '';
                     }
                 }
             }
         }
     }
     if (!class_exists('VirtueMartCart')) {
         require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php';
     }
     if (!isset($cart)) {
         $cart = VirtueMartCart::getCart();
     }
     if (method_exists($cart, 'prepareCartData')) {
         $cart->prepareCartData(false);
     }
     $type = $data['address_type'];
     $oldcart = clone $cart;
     if ($type === 'BT') {
         $prefix = '';
     } else {
         $prefix = 'shipto_';
     }
     if (defined('VM_VERSION') && VM_VERSION >= 3) {
         $cart->saveAddressInCart($data, $type, true, $prefix);
     } else {
         $cart->saveAddressInCart($data, $type);
     }
     //$cart->saveAddressInCart($data, $type );
     if (isset($oldcart->{$type})) {
         foreach ($oldcart->{$type} as $key => $val) {
             if (empty($cart->{$type}[$key])) {
                 $cart->{$type}[$key] = $val;
             }
         }
     }
     $sa = JRequest::getVar('sa', '');
     if ($sa == 'adresaina') {
         /*
         		
         		stAn -> this works as well - will update ST for VM3
         		
         		$ndata = $data; 
         		
         		
         		foreach ($data as $key=>$val)
         		 {
         		    
         		    if (substr($key, 0, 7)==='shipto_')
         			 {
         			     $nk = substr($key, 7); 
         			     //echo 'subst: '.$nk." ".$val."<br />\n"; 
         			   
         				$ndata[$nk] = $val; 
         				
         				
         			 }
         		 }
         */
         if (defined('VM_VERSION') && VM_VERSION >= 3) {
             $cart->saveAddressInCart($data, 'ST', true, 'shipto_');
         } else {
             $cart->saveAddressInCart($data, 'ST');
         }
         if (isset($oldcart->ST)) {
             foreach ($oldcart->ST as $key => $val) {
                 if (empty($cart->ST[$key])) {
                     $cart->ST[$key] = $val;
                 }
             }
         }
     } else {
         $cart->STsameAsBT = 1;
     }
     $cart->setCartIntoSession();
 }
Exemplo n.º 8
0
 public static function addtocartaslink(&$ref)
 {
     $c = get_class($ref->cart);
     if ($c != 'VirtuemartCart') {
         $ref->cart = VirtuemartCart::getCart();
     }
     include JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'config' . DS . 'onepage.cfg.php';
     $rememberhtml = '';
     $rp = JRequest::getVar('randomproduct', 0);
     if (!empty($rp)) {
         if (OPCloader::checkOPCSecret()) {
             $opc_link_type = 1;
             $q = 'select virtuemart_product_id from #__virtuemart_products where published=1 limit 1';
             $db = JFactory::getDBO();
             $db->setQuery($q);
             $temp_id = $db->loadResult();
             JRequest::setVar('add_id', $temp_id);
         }
     }
     if (empty($opc_link_type)) {
         return;
     }
     $p_id = JRequest::getVar('add_id', '');
     if (empty($p_id)) {
         return;
     }
     if (!isset($ref->cart->order_number)) {
         $ref->cart->order_number = '';
     }
     if (!empty($p_id)) {
         $qq = array();
         if (is_array($p_id)) {
             foreach ($p_id as $i => $item) {
                 if (!is_numeric($p_id[$i])) {
                     break;
                 }
                 $q = JRequest::getVar('qadd_' . $p_id[$i], 1);
                 if (!is_numeric($q)) {
                     break;
                 }
                 $rememberhtml .= '<input type="hidden" name="qadd_' . $p_id[$i] . '" value="' . $q . '" />';
                 $rememberhtml .= '<input type="hidden" name="add_id[' . $i . ']" value="' . $p_id[$i] . '" />';
                 $q = (double) $q;
                 $qq[$p_id[$i]] = $q;
             }
         } else {
             // you can use /index.php?option=com_virtuemart&page=shop.cart&add_id=10&quadd=1;
             // to add two products (ids: 10 and 11) of two quantity each (quadd_11=2 for product id 11 set quantity 2)
             // OR /index.php?option=com_virtuemart&page=shop.cart&add_id[]=10&quadd_10=2&add_id[]=11&qadd_11=2
             $q = JRequest::getVar('qadd_' . $p_id, 1);
             $rememberhtml .= '<input type="hidden" name="qadd_' . $p_id . '" value="' . $q . '" />';
             $rememberhtml .= '<input type="hidden" name="add_id" value="' . $p_id . '" />';
             $q = (double) $q;
             $q2 = JRequest::getVar('qadd', 1);
             //$rememberhtml .= '<input type="hidden" name="qadd" value="'.$q2.'" />';
             if (!is_numeric($p_id)) {
                 return;
             }
             $qq[$p_id] = $q;
             $a = array();
             $a[$p_id] = $p_id;
             $p_id = $a;
         }
     } else {
         return;
     }
     $post = JRequest::get('default');
     /*
     	if (!class_exists('VirtueMartModelProduct'))
     require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'product.php');
     */
     require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
     $productClass = OPCmini::getModel('product');
     //new VirtueMartModelProduct();
     //$virtuemart_product_ids = JRequest::getVar('virtuemart_product_id', array(), 'default', 'array'); //is sanitized then
     $newp = array();
     $rr2 = array();
     foreach ($p_id as $pid) {
         $newp[$pid] = $pid;
         $product = $productClass->getProductSingle($pid, true, true, true);
         $rr = OPCAddToCartAsLink::getProductCustomsFieldCart($product);
         $rr2[] = $rr;
     }
     if ($opc_link_type == 2 || $opc_link_type == 1) {
         if (!empty($ref->cart->products)) {
             $p = $ref->cart->products;
             foreach ($p as $key => $pr) {
                 $id = $pr->virtuemart_product_id;
                 // delete cart content
                 if ($opc_link_type == 1) {
                     if (isset($ref->cart->products[$key])) {
                         $ref->cart->removeProductCart($key);
                     } else {
                         if (isset($ref->cart->product[$id])) {
                             $ref->cart->removeProductCart($id);
                         }
                     }
                     continue;
                 }
                 // do not increment quantity:
                 if ($opc_link_type == 2) {
                     if (in_array($id, $newp)) {
                         return;
                     }
                 }
             }
         }
     }
     $virtuemart_product_ids = JRequest::setVar('virtuemart_product_id', $newp);
     //is sanitized then
     $virtuemart_product_ids = JRequest::setVar('quantity', $qq);
     //is sanitized then
     if (!empty($rr2)) {
         foreach ($rr2 as $rr1) {
             foreach ($rr1 as $post) {
                 $x = JRequest::getVar($post['name']);
                 if (empty($x)) {
                     $test = array();
                     if (strpos($post['name'], ']') !== false) {
                         $post['name'] = parse_str($post['name'] . '=' . $post['value'], $test);
                         $firstkey = 0;
                         if (!empty($test)) {
                             foreach ($test as $key => $val) {
                                 $firstkey = $key;
                                 break;
                             }
                         }
                         $name = $firstkey;
                         $value = $test[$name];
                         JRequest::setVar($name, $value);
                     } else {
                         JRequest::setVar($post['name'], $post['value']);
                     }
                 }
             }
         }
     }
     if (!empty($opc_auto_coupon)) {
         $ref->cart->couponCode = $opc_auto_coupon;
     }
     $ref->cart->add();
     JRequest::setVar('virtuemart_product_id', '');
     JRequest::setVar('add_id', '');
     JRequest::setVar('opc_adc', 1);
     //$quantityPost = (int) $post['quantity'][$p_key];
     return $rememberhtml;
 }
Exemplo n.º 9
0
 public static function updateHtml($html, &$order, $afterrender = false)
 {
     require_once JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'config.php';
     $ty_page = OPCconfig::getValue('ty_page', 'ty_page', 0, array());
     if (empty($ty_page)) {
         return;
     }
     if (empty($order)) {
         return;
     }
     if (is_array($order)) {
         if (isset($order['details'])) {
             $order = $order['details']['BT'];
         }
     }
     //we must reload order here in case any plugin had changed it in meantime:
     $id = $order->virtuemart_order_id;
     if (!empty($id)) {
         require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
         $orderModel = OPCmini::getModel('orders');
         $order_full = $orderModel->getOrder($id);
         if (empty($order_full)) {
             return;
         }
         $order = $order_full['details']['BT'];
     }
     $status = $order->order_status;
     if (!is_object($order)) {
         return;
     }
     $payment_id = $order->virtuemart_paymentmethod_id;
     if (empty($order->order_language)) {
         $jlang = JFactory::getLanguage();
         $cl = $jlang->getTag();
         $cl = strtolower(str_replace('-', '_', $cl));
     } else {
         $cl = $order->order_language;
     }
     // check conditions:
     $orightml = $html;
     $todo = array();
     foreach ($ty_page as $k => $ty) {
         if (!is_object($ty)) {
             continue;
         }
         if ($ty->payment_id != $payment_id) {
             continue;
         }
         if (!empty($ty->language)) {
             if ($ty->language != $cl) {
                 continue;
             }
         }
         if ($ty->order_status != $status) {
             continue;
         }
         $todo[] = $ty;
     }
     if (empty($todo)) {
         return;
     }
     /*
     	  COM_ONEPAGE_TY_MODE_0="Prepend to payment generated html"
     COM_ONEPAGE_TY_MODE_1="Append to payment generated html"
     COM_ONEPAGE_TY_MODE_2="Replace payment generated html"
     */
     require_once JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'loader.php';
     require_once JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'opctracking.php';
     $repvals = array();
     $order_object = new stdClass();
     OPCtrackingHelper::getOrderVars($id, $repvals, $order_object, false);
     foreach ($todo as $ty2) {
         $htmla = OPCloader::getArticle($ty2->article_id, $repvals);
         if (empty($ty2->mode)) {
             $html = $htmla . '<br />' . $html;
         } else {
             if ($ty2->mode == 1) {
                 $html = $html . '<br />' . $htmla;
             } else {
                 if ($ty->mode == 2) {
                     $html = $htmla;
                 }
             }
         }
     }
     if (defined('TYMODDONE')) {
         return $html;
     } else {
         define('TYMODDONE', true);
     }
     if ($orightml != $html) {
         if (!$afterrender) {
             JRequest::setVar('html', $html);
         } else {
             $buffer = JResponse::getBody();
             $buffer = str_replace($orightml, $html, $buffer);
             JResponse::setBody($buffer);
         }
     }
     return $html;
 }
Exemplo n.º 10
0
 private static function getItems($langs, $shoppergroups)
 {
     require_once JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
     require_once JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'image.php';
     require_once JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'com_virtuemart_helper.php';
     $from = JRequest::getInt('from', 0);
     $to = JRequest::getInt('to', (int) OPCXmlExport::$config->product_count);
     $db = JFactory::getDBO();
     $lang = 'en_gb';
     //$q = 'select * from #__virtuemart_products as p inner join #__virtuemart_products_'.$lang.' as l on p.virtuemart_product_id = l.virtuemart_product_id and p.published = 1';
     $iter = 400;
     $rounds = 0;
     $rounds++;
     $q = 'select virtuemart_product_id from #__virtuemart_products as p';
     // order by virtuemart_product_id asc ';
     if (!((empty($from) || $from == 1) && $to == OPCXmlExport::$config->product_count)) {
         $q .= ' limit ' . $from . ', ' . $to;
     }
     //$ito =$is+$iter;
     //$q .= ' limit '.$is.', '.$ito;
     //echo $q.'<br />';
     /*
     	SELECT * 
     FROM `rg6ma_virtuemart_product_prices` 
     WHERE `virtuemart_product_id` = "68" 
     AND ( `virtuemart_shoppergroup_id` ="1" OR `virtuemart_shoppergroup_id` IS NULL OR `virtuemart_shoppergroup_id`="0") 
     AND ( (`product_price_publish_up` IS NULL OR `product_price_publish_up` = "0000-00-00 00:00:00" OR `product_price_publish_up` <= "2014-03-24 15:09:57" ) 
     AND (`product_price_publish_down` IS NULL OR `product_price_publish_down` = "0000-00-00 00:00:00" OR product_price_publish_down >= "2014-03-24 15:09:57" ) ) 
     AND( (`price_quantity_start` IS NULL OR `price_quantity_start`="0" OR `price_quantity_start` <= 1) 
     AND (`price_quantity_end` IS NULL OR `price_quantity_end`="0" OR `price_quantity_end` >= 1) )
     */
     $db->setQuery($q);
     //echo '3:'.round(memory_get_usage(FALSE)/1024/1024).'Mb<br />';
     //$products = $db->loadObjectList();
     //$products = $db->loadResultArray();
     $products = $db->loadAssocList();
     //echo '4:'.round(memory_get_usage(FALSE)/1024/1024).'Mb<br />';
     if (empty($products)) {
         return true;
     }
     foreach ($products as $n => $row) {
         $product_id = $row['virtuemart_product_id'];
         //$product_id = $row->virtuemart_product_id;
         //echo '3:'.round(memory_get_usage(FALSE)/1024/1024).'Mb<br />';
         $productModel = OPCmini::getModel('product');
         $product = self::getProduct($productModel, $shoppergroups, $langs, $product_id, true, true, false);
         //echo '4:'.round(memory_get_usage(FALSE)/1024).'Kb<br />';
         if (empty($product)) {
             echo 'x ';
             continue;
         }
         $vm1 = array();
         OPCXmlExport::addItem($product, $vm1);
     }
     if ($to >= OPCXmlExport::$config->product_count) {
         return true;
     }
     return false;
 }
Exemplo n.º 11
0
 public static function hasMissingFields(&$BTaddress)
 {
     $ignore = array('delimiter', 'captcha', 'hidden');
     $types = array();
     foreach ($BTaddress as $key => $val) {
         //if (in_array($val['name'], $corefields)) continue;
         if (in_array($val['type'], $ignore)) {
             continue;
         }
         if (empty($val['value'])) {
             if (!empty($val['required'])) {
                 if ($key == 'virtuemart_state_id') {
                     $c = $BTaddress['virtuemart_country_id']['value'];
                     $stateModel = OPCmini::getModel('state');
                     //new VirtueMartModelState();
                     $states = $stateModel->getStates($c, true, true);
                     if (!empty($states)) {
                         return true;
                     }
                     continue;
                 }
                 return true;
             }
         }
         //$types[] = $val['type'];
     }
     return false;
 }
Exemplo n.º 12
0
    public static function getStateList(&$ref)
    {
        /*
            if (!class_exists('VirtueMartModelState'))
            require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'state.php'); 
            if (!class_exists('VirtueMartModelCountry'))
        	require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'country.php'); 
        */
        $db = JFactory::getDBO();
        $q = 'select count(*) as count from #__virtuemart_states where 1';
        $db->setQuery($q);
        $count = $db->loadResult();
        $js_filename = 'opc_states_' . VMLANG . '_' . $count . '.js';
        $js_file = JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'config' . DS . 'dynamic_scripts' . DS . $js_filename;
        $js_path = 'components/com_onepage/config/dynamic_scripts/';
        $js = ' var OPCStates = { ' . "\n";
        require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
        $countryModel = OPCmini::getModel('country');
        //new VirtueMartModelCountry();
        $list = $countryModel->getCountries(true, true, false);
        $countries = array();
        $states = array();
        $stateModel = OPCmini::getModel('state');
        //new VirtueMartModelState();
        // if state is set in BT, let's make it default
        if (!empty($ref->cart->BT) && !empty($ref->cart->BT['virtuemart_state_id'])) {
            $cs = $ref->cart->BT['virtuemart_state_id'];
        } else {
            $cs = '';
        }
        //$html = '<div style="display: none;">';
        $counts = count($list);
        $ci = 0;
        foreach ($list as $c) {
            if (empty($c->published)) {
                continue;
            }
            $ci++;
            $states[$c->virtuemart_country_id] = $stateModel->getStates($c->virtuemart_country_id, true, true);
            unset($state);
            //$html .= '<input type="hidden" name="opc_state_list" id="state_for_'.$c->virtuemart_country_id.'" value="" />';
            if (!empty($states[$c->virtuemart_country_id])) {
                $js .= ' state_for_' . $c->virtuemart_country_id . ': { ' . "\n";
                //$html .= '<select id="state_for_'.$c->virtuemart_country_id.'">';
                //$html .= '<option value="">'.OPCLang::_('COM_VIRTUEMART_LIST_EMPTY_OPTION').'</option>';
                $counts2 = count($states[$c->virtuemart_country_id]);
                $ci2 = 0;
                foreach ($states[$c->virtuemart_country_id] as $state) {
                    if (empty($state->published)) {
                        continue;
                    }
                    $ci2++;
                    //$js .= ' state_for_'.$c->virtuemart_country_id.'['.$state->virtuemart_state_id.']: "'.str_replace('"', '\"', $state->state_name).'",'."\n";
                    $js .= $state->virtuemart_state_id . ': "' . str_replace('"', '\\"', $state->state_name) . '"';
                    if ($ci2 != $counts2) {
                        $js .= ', ';
                    }
                    $js .= "\n";
                    //$html .= '<option ';
                    //if ($state->virtuemart_state_id == $cs) $html .= ' selected="selected" ';
                    //$html .= ' value="'.$state->virtuemart_state_id.'">'.$state->state_name.'</option>';
                }
                $js .= ' }';
                if ($ci != $counts) {
                    $js .= ', ';
                }
                $js .= "\n";
                //$html .= '</select>';
            }
            // debug
        }
        $js .= ' }; 
	
	
	';
        $html = '<div style="display: none;">';
        $html .= '<select id="no_states" name="no_states">';
        $html .= '<option value="">' . OPCLang::_('COM_VIRTUEMART_LIST_EMPTY_OPTION') . '</option>';
        $html .= '</select>';
        $html .= '</div>';
        //$html .= '</div>';
        //alert(OPCStates.state_for_10[373]);
        if (!empty($ref->cart->BT) && !empty($ref->cart->BT['virtuemart_state_id'])) {
            $cs = $ref->cart->BT['virtuemart_state_id'];
        } else {
            $cs = '';
        }
        if (!empty($ref->cart->ST) && !empty($ref->cart->ST['virtuemart_state_id'])) {
            $css = $ref->cart->ST['virtuemart_state_id'];
        } else {
            $css = '';
        }
        $html .= '<script type="text/javascript">
	var selected_bt_state = \'' . $cs . '\';
	var selected_st_state = \'' . $css . '\';
	
	</script>';
        //$html = '<script>'.$js.'</script>';
        jimport('joomla.filesystem.folder');
        jimport('joomla.filesystem.file');
        if (JFile::write($js_file, $js) !== false) {
            JHTMLOPC::script($js_filename, $js_path);
        } else {
            $html .= '
<script type="text/javascript">
//<![CDATA[		   
			   ' . $js . '
//]]>		   
</script>
';
        }
        return $html;
        return '';
    }
Exemplo n.º 13
0
 function getPaymentArrayHtml($cart2, $payment_array, &$shipping_array)
 {
     include JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'config' . DS . 'onepage.cfg.php';
     if (is_null(OPCloader::$inform_html)) {
         OPCloader::$inform_html = array();
     }
     $preselected = JRequest::getVar('virtuemart_shipmentmethod_id', JRequest::getVar('shipping_rate_id', ''));
     $default = array();
     $session = JFactory::getSession();
     $session->set('fedex_rates', null, 'vm');
     // if ($op_show_others) $vendor_freeshipping = 0;
     // $extHelper = new opExtension();
     // $extHelper->runExt('setFreeShipping', '', '', $vars['country'], $vendor_freeshipping);
     // coupon will get counted again
     $cart = VirtueMartCart::getCart();
     $add = array();
     if (!empty($payment_array)) {
         foreach ($payment_array as &$pay) {
             if (isset($pay->payment_element)) {
                 if (!empty($pay->split_plugin_path)) {
                     include $pay->split_plugin_path;
                 }
             }
             //if (!empty($params)) break;
         }
     }
     if (!empty($add)) {
         //array_merge($payment_array, $add);
         foreach ($add as $v) {
             $payment_array[] = $v;
         }
     }
     $payment_array['zero_payment'] = '<input type="hidden" value="0" name="virtuemart_paymentmethod_id" />';
     // again and again we have to do overrides because VM team decides about private functions and properties
     $dispatcher = JDispatcher::getInstance();
     $prices = array();
     // renew parameters
     //For the selection of the shipment method we need the total amount to pay.
     require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
     $shipmentModel = OPCmini::getModel('Shipmentmethod');
     //new VirtueMartModelShipmentmethod();
     // the configuration is reloaded only when this function is called interanally
     // getPluginMethods which is called by FEdisplay method
     $html = '';
     self::$totals_html = '';
     if (!empty($cart->couponCode)) {
         self::$totals_html = '<input type="hidden" id="opc_coupon_code_returned" name="opc_coupon_code_returned" value="' . OPCloader::slash($cart->couponCode) . '" />';
     } else {
         self::$totals_html = '<input type="hidden" id="opc_coupon_code_returned" name="opc_coupon_code_returned" value="" />';
     }
     //$opc_calc_cache = true;
     if (file_exists(JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'overrides' . DS . 'calculationh.php')) {
         if (!empty($opc_calc_cache)) {
             require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'overrides' . DS . 'calculationh.php';
             if (!class_exists('calculationHelperOPC')) {
                 require JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'overrides' . DS . 'calculationh_override.php';
             }
         }
     }
     // from vm 2.0.22
     $calc = calculationHelper::getInstance();
     if (!empty($opc_calc_cache)) {
         if (class_exists('calculationHelperOPC')) {
             $calc = calculationHelperOPC::getInstanceOPC();
         }
     }
     /*
     			$class = new ReflectionClass('calculationHelper');
     			$method = $class->getMethod('setShopperGroupIds');
     			$method->setAccessible(true);
     			$method->invokeArgs($calc, array('6'));
     */
     if (method_exists($calc, 'setCartPrices')) {
         $vm2015 = true;
     } else {
         $vm2015 = false;
     }
     /*
     foreach ($cart->products as &$p)
     $calc->
     */
     $mainframe = Jfactory::getApplication();
     $virtuemart_currency_id = $mainframe->getUserStateFromRequest("virtuemart_currency_id", 'virtuemart_currency_id', JRequest::getInt('virtuemart_currency_id'));
     //$calc->setVendorCurrency($virtuemart_currency_id);
     if (!empty($virtuemart_currency_id)) {
         $currencyDisplay = CurrencyDisplay::getInstance($virtuemart_currency_id);
     } else {
         $currencyDisplay = CurrencyDisplay::getInstance($cart->paymentCurrency);
         $virtuemart_currency_id = $cart->paymentCurrency;
     }
     $unset_zero = true;
     if (empty($shipping_array)) {
         $shipping_array = array();
         $cart->virtuemart_shipmentmethod_id = 0;
         $unset_zero = false;
     }
     $shipping_array['zero_shipment'] = '<input type="hidden" name="virtuemart_shipmentmethod_id" checked="checked" id="shipment_id_0" value="0" />';
     $shipping_array['choose_shipping'] = '<input type="radio" value="0" id="shipment_id_0" />';
     $payment_a = new stdClass();
     $payment_a->virtuemart_paymentmethod_id = 0;
     $payment_array[] = $payment_a;
     if (!class_exists('CurrencyDisplay')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php';
     }
     $currencyDisplay = CurrencyDisplay::getInstance($cart->pricesCurrency);
     //do_dump($shipping_array); die();
     //virtuemart_currency_id
     foreach ($shipping_array as &$shipping_method) {
         foreach ($payment_array as &$payment) {
             if (strpos($shipping_method, 'invalid_country') !== false) {
                 $cart->virtuemart_shipmentmethod_id = 0;
             }
             if (strpos($shipping_method, 'virtuemart_shipmentmethod_id') === false) {
                 $cart->virtuemart_shipmentmethod_id = 0;
             }
             $multishipmentid = array();
             if (!empty($shipping_method)) {
                 //check opc multi methods:
                 //multielementgetphp
                 $multishipmentid = OPCTransform::getFT($shipping_method, 'input', 'virtuemart_shipmentmethod_id', 'type', 'radio', '>', 'id');
                 //example of a multi method with select drop down:
                 /*
                 foreach ($pobocky_options as $ppp)
                 		 {
                 		    $pobocky .= '<option '; 
                 			if ($sind == $ppp->id) $pobocky .= ' selected="selected" '; 
                 			$pobocky .= ' ismulti="true" multi_id="shipment_id_'.$method->virtuemart_shipmentmethod_id.'_'.$ppp->id.'" value="'.$ppp->id.'">'.$ppp->nazev.'</option>'; 
                 		 }
                 */
                 $real_id = false;
                 $multishipmentid_test = OPCTransform::getFT($shipping_method, 'option', 'ismulti', 'ismulti', 'true', '>', 'multi_id');
                 if (!empty($multishipmentid_test)) {
                     if (!empty($multishipmentid)) {
                         $real_id = $multishipmentid[0];
                     }
                     $multishipmentid = $multishipmentid_test;
                 }
                 if (empty($multishipmentid)) {
                     $multishipmentid = OPCTransform::getFT($shipping_method, 'input', 'cpsol_radio', 'type', 'radio', '>', 'id');
                 }
                 //$idth = 'shipment_id_'.$shipmentid;
                 // $idth = $shipmentid;
             } else {
                 $idth = 'shipment_id_0';
             }
             if (empty($multishipmentid)) {
                 $idth = 'shipment_id_0';
                 $multishipmentid[0] = $idth;
             }
             foreach ($multishipmentid as $shipmentid) {
                 $idth = $shipmentid;
                 $ida = OPCTransform::getFT($shipping_method, 'input', 'virtuemart_shipmentmethod_id', 'type', 'hidden', '>', 'value');
                 if (empty($ida)) {
                     $ida = OPCTransform::getFT($shipping_method, 'input', $shipmentid, 'type', 'radio', '>', 'value');
                 }
                 if (!empty($ida[0])) {
                     $id = $ida[0];
                 } else {
                     $id = 0;
                 }
                 if (!isset($payment->virtuemart_paymentmethod_id)) {
                     $payment_id = 0;
                 } else {
                     $payment_id = (int) $payment->virtuemart_paymentmethod_id;
                 }
                 $_REQUEST['virtuemart_shipmentmethod_id'] = $id;
                 $cart->automaticSelectedShipment = true;
                 $cart->automaticSelectedPayment = true;
                 $cart->automaticSelectedShipment = true;
                 $cart->automaticSelectedPayment = true;
                 $cart->setPaymentMethod($payment_id);
                 if (method_exists($cart, 'setShipment')) {
                     $cart->setShipment($id);
                 }
                 $cart->virtuemart_shipmentmethod_id = $id;
                 $cart->virtuemart_paymentmethod_id = $payment_id;
                 $payment_id_override = 0;
                 //
                 if (isset($payment->payment_element)) {
                     if (!empty($payment->preparecalculation_path)) {
                         include $payment->preparecalculation_path;
                     }
                 }
                 $htmlsaved = $html;
                 $html = '';
                 require JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'third_party' . DS . 'third_party_shipping.php';
                 $md5 = md5($html);
                 OPCloader::$inform_html[$md5] = $html;
                 //self::$totals_html .= $html;
                 $html = $htmlsaved;
                 //$cart = VirtueMartCart::getCart();
                 //$returnValues = $dispatcher->trigger('calculateSalesPrice',array(  &$cart, &$id, &$cart->priceUnformatted  ));
                 $cart->setCartIntoSession();
                 /*
                 if (!class_exists('VirtueMartControllerCartOpc'))
                 require_once(JPATH_SITE.DS.'components'.DS.'com_onepage'.DS.'overrides'.DS.'cartcontroller.php'); 
                 $cartcontroller = new VirtueMartControllerCartOpc(); 
                 */
                 // will trigger plugin code for the selected shipment
                 JRequest::setVar('virtuemart_shipmentmethod_id', $id);
                 //OLD: $cartcontroller->setshipment($cart, $id, false, false);
                 $savedp = $cart->virtuemart_paymentmethod_id;
                 $seveds = $cart->virtuemart_shipmentmethod_id;
                 if (!empty($id)) {
                     ob_start();
                     $_dispatcher = JDispatcher::getInstance();
                     $_retValues = $_dispatcher->trigger('plgVmOnSelectCheckShipment', array(&$cart));
                     $x = ob_get_clean();
                 }
                 $cart->virtuemart_paymentmethod_id = $savedp;
                 $cart->virtuemart_shipmentmethod_id = $seveds;
                 $op_disable_shipping = OPCloader::getShippingEnabled($cart);
                 if (empty($op_disable_shipping)) {
                     if (!$vm2015) {
                         $prices = $calc->calculateShipmentPrice($cart, $id, true);
                     }
                 } else {
                     $cart->virtuemart_shipmentmethod_id = 0;
                     //if (!$vm2015)
                     //$calc->calculateShipmentPrice($cart, $id, false);
                     //$calc->_cartPrices
                 }
                 if (!$vm2015) {
                     $calc->calculatePaymentPrice($cart, $payment_id, true);
                 } else {
                     //$calc->_cartData = null;
                     //$ref->cart->cartData = null;
                     $calc->setCartPrices(array());
                 }
                 $prices = array();
                 $this->getCachedShipping($cart, $prices, $idth, $calc);
                 $cart->pricesUnformatted = $prices;
                 if (empty($subtotal_price_display)) {
                     $subtotal_price_display = 'salesPrice';
                 }
                 if ($subtotal_price_display != 'diffTotals') {
                     $order_subtotal = $prices[$subtotal_price_display];
                     /*
                     	if (empty($order_subtotal))
                     {
                       $order_subtotal = $prices['salesPrice']; 
                     }
                     */
                 }
                 if (empty($order_subtotal)) {
                     $order_subtotal = $prices['salesPrice'];
                     $subtotal_price_display = 'salesPrice';
                 }
                 if ($subtotal_price_display == 'diffTotals') {
                     // difference of billTotal and billTaxAmount
                     $order_subtotal = $prices['billTotal'] - $prices['billTaxAmount'];
                 }
                 $order_subtotal = $currencyDisplay->convertCurrencyTo($virtuemart_currency_id, $order_subtotal, false);
                 $order_total = $prices['billTotal'];
                 $order_total = $currencyDisplay->convertCurrencyTo($virtuemart_currency_id, $order_total, false);
                 $order_tax = 0;
                 if ($coupon_price_display == 'salesWithoutTax') {
                     if (isset($prices['couponTax'])) {
                         $cT = $prices['couponTax'];
                     } else {
                         $cT = 0;
                     }
                     if (isset($prices['salesPriceCoupon'])) {
                         $cS = $prices['salesPriceCoupon'];
                     } else {
                         $cS = 0;
                     }
                     $prices['salesWithoutTax'] = $cS - $cT;
                 }
                 if (empty($coupon_price_display)) {
                     $coupon_price_display = 'discountAmount';
                 }
                 if (!empty($prices[$coupon_price_display])) {
                     $coupon_discount = $prices[$coupon_price_display];
                 } else {
                     $coupon_discount = 0;
                 }
                 $coupon_discount = $currencyDisplay->convertCurrencyTo($virtuemart_currency_id, $coupon_discount, false);
                 if (!empty($payment_discount_before)) {
                     $coupon_discount2 = 0;
                     if (empty($other_discount_display)) {
                         $other_discount_display = 'billDiscountAmount';
                     }
                     switch ($other_discount_display) {
                         case 'billDiscountAmount':
                             $coupon_discount2 = $coupon_discount2 = $prices['billDiscountAmount'];
                             break;
                         case 'discountAmount':
                             $coupon_discount2 = $prices['billDiscountAmount'];
                             break;
                         case 'minus':
                             $billD = abs($prices['billDiscountAmount']);
                             foreach ($prices as $key => $val) {
                                 if (!empty($cart->products[$key])) {
                                     if (is_array($val)) {
                                         $billD -= abs($val['subtotal_discount']);
                                     }
                                 }
                             }
                             $billD = abs($billD) * -1;
                             $prices_new['billTotal'] = $billD;
                             $coupon_discount2 = $billD;
                             break;
                         case 'sum':
                             $billD = 0;
                             foreach ($prices as $key => $val) {
                                 if (!empty($cart->products[$key])) {
                                     if (is_array($val)) {
                                         $billD += $val['subtotal_discount'];
                                     }
                                 }
                             }
                             $billD = abs($billD) * -1;
                             $prices_new['billTotal'] = $billD;
                             $coupon_discount2 = $billD;
                             break;
                     }
                     if (!empty($coupon_discount2)) {
                         $coupon_discount2 = $currencyDisplay->convertCurrencyTo($virtuemart_currency_id, $coupon_discount2, false);
                     }
                     /*	
                     if (!empty($prices['billDiscountAmount']))
                     {
                     $coupon_discount2 = $prices['billDiscountAmount']; 
                     $coupon_discount2 = $currencyDisplay->convertCurrencyTo( $virtuemart_currency_id, $coupon_discount2,false);
                     
                     }
                     else
                     if (!empty($prices['discountAmount']))
                     {
                     $coupon_discount2 = $prices['discountAmount']; 
                     $coupon_discount2 = $currencyDisplay->convertCurrencyTo( $virtuemart_currency_id, $coupon_discount2,false);
                     }
                     else $coupon_discount2 = 0; 
                     */
                 } else {
                     $coupon_discount2 = 0;
                 }
                 if (!empty($payment_discount_before)) {
                     if (empty($coupon_discount2)) {
                         if (!empty($prices['couponValue'])) {
                             // $coupon_discount2 = $prices['couponValue'];
                         }
                     }
                 }
                 if ($product_price_display == 'basePriceWithTax' || $product_price_display == 'salesPrice') {
                     $shippingpayment_price_display = 'salesPrice';
                 } else {
                     $shippingpayment_price_display = 'basePrice';
                 }
                 if (empty($prices['basePriceWithTax'])) {
                     $shippingpayment_price_display = 'basePrice';
                 }
                 $subtotal_price_display = $product_price_display;
                 if (!isset($prices[$shippingpayment_price_display . 'Shipment'])) {
                     if ($shippingpayment_price_display != 'salesPrice') {
                         $order_shipping = $prices['shipmentValue'];
                     } else {
                         $order_shipping = $prices['salesPriceShipment'];
                     }
                 } else {
                     $order_shipping = $prices[$shippingpayment_price_display . 'Shipment'];
                 }
                 $order_shipping = $currencyDisplay->convertCurrencyTo($virtuemart_currency_id, $order_shipping, false);
                 if ($shippingpayment_price_display != 'salesPrice') {
                     $ps = $prices['salesPriceShipment'];
                     $ps = $currencyDisplay->convertCurrencyTo($virtuemart_currency_id, $ps, false);
                     $ps = $currencyDisplay->priceDisplay($ps);
                     $os = $currencyDisplay->priceDisplay($order_shipping);
                     $shipping_method = str_replace($ps, $os, $shipping_method);
                 }
                 $order_shipping = (double) $order_shipping;
                 if (empty($order_shipping)) {
                 }
                 // lets select a default shipping method:
                 // first shipping found:
                 // none to be selected by default if nothing is already selected:
                 if (empty($preselected) && (!empty($opc_default_shipping) && $opc_default_shipping == 3)) {
                     $default['id'] = 0;
                     $default['shipmentid'] = 'choose_shipping';
                     $default['price'] = 0;
                 } else {
                     if (!empty($id)) {
                         if (empty($default)) {
                             $default['id'] = $id;
                             $default['shipmentid'] = $shipmentid;
                             $default['price'] = $order_shipping;
                         } else {
                             // preselected found (from $_REQUEST)
                             if ($preselected == $id) {
                                 // if we found the preselected, let's leave it there
                                 $default['p'] = true;
                                 $default['id'] = $id;
                                 if (!empty($real_id)) {
                                     $default['shipmentid'] = $real_id;
                                 } else {
                                     $default['shipmentid'] = $shipmentid;
                                 }
                                 $default['price'] = $order_shipping;
                             }
                             // check if we already selected:
                             if (empty($default['p'])) {
                                 if (!empty($op_default_shipping_search)) {
                                     foreach ($op_default_shipping_search as $s) {
                                         if ($shipmentid == $s) {
                                             $default['id'] = $id;
                                             $default['shipmentid'] = $shipmentid;
                                             $default['price'] = $order_shipping;
                                             $default['p'] = true;
                                             break;
                                         }
                                     }
                                 }
                                 if (empty($default['p'])) {
                                     if (empty($opc_default_shipping) || $opc_default_shipping === 1) {
                                         if ($default['price'] > $order_shipping || empty($default['price']) && !empty($order_shipping)) {
                                             if ($op_default_shipping_zero && empty($order_shipping)) {
                                                 $default['id'] = $id;
                                                 $default['shipmentid'] = $shipmentid;
                                                 $default['price'] = $order_shipping;
                                             } else {
                                                 if (!$op_default_shipping_zero && !empty($order_shipping)) {
                                                     $default['id'] = $id;
                                                     $default['shipmentid'] = $shipmentid;
                                                     $default['price'] = $order_shipping;
                                                 }
                                             }
                                         }
                                     } else {
                                         if (!empty($opc_default_shipping) && $opc_default_shipping === 2) {
                                             // select the most expensive here:
                                             if ($default['price'] < $order_shipping || empty($default['price']) && !empty($order_shipping)) {
                                                 if (!$op_default_shipping_zero && !empty($order_shipping)) {
                                                     $default['id'] = $id;
                                                     $default['shipmentid'] = $shipmentid;
                                                     $default['price'] = $order_shipping;
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
                 if ($shippingpayment_price_display == 'basePrice') {
                     $paymentPriceType = 'paymentValue';
                 } else {
                     $paymentPriceType = 'salesPricePayment';
                 }
                 if (isset($prices[$shippingpayment_price_display . 'Payment'])) {
                     $payment_discount = -1 * $prices[$shippingpayment_price_display . 'Payment'];
                 } else {
                     if (!empty($prices[$paymentPriceType])) {
                         $payment_discount = -1 * $prices[$paymentPriceType];
                     } else {
                         $payment_discount = -1 * $prices['salesPricePayment'];
                     }
                 }
                 $payment_discount = $currencyDisplay->convertCurrencyTo($virtuemart_currency_id, $payment_discount, false);
                 $tax_id = 0;
                 $taxname = array();
                 $taxrate = array();
                 $taxamount = array();
                 if (!empty($cart->cartData['DBTaxRulesBill'])) {
                     foreach ($cart->cartData['DBTaxRulesBill'] as $rule) {
                         $tax_id = $rule['virtuemart_calc_id'];
                         $taxname[$tax_id] = $rule['calc_name'];
                         $taxrate[$tax_id] = $rule['calc_value'];
                         $tax = $prices[$tax_id . 'Diff'];
                         if (empty($tax)) {
                             $tax = $cart->pricesUnformatted[$tax_id . 'Diff'];
                         }
                         if (!empty($tax)) {
                             $taxamount[$tax_id] = $tax;
                         }
                     }
                 }
                 if (!empty($cart->cartData['taxRulesBill'])) {
                     foreach ($cart->cartData['taxRulesBill'] as $x) {
                         $tax_id = $x['virtuemart_calc_id'];
                         $taxname[$tax_id] = $x['calc_name'];
                         $taxrate[$tax_id] = $x['calc_value'];
                         if (isset($prices[$tax_id . 'Diff'])) {
                             $tax = $prices[$tax_id . 'Diff'];
                         } else {
                             $tax = 0;
                         }
                         if (empty($tax) && isset($cart->pricesUnformatted[$tax_id . 'Diff'])) {
                             $tax = $cart->pricesUnformatted[$tax_id . 'Diff'];
                         }
                         // convert the tax
                         if (!empty($tax)) {
                             $tax = $currencyDisplay->convertCurrencyTo($virtuemart_currency_id, $tax, false);
                             $taxamount[$tax_id] = $tax;
                         }
                     }
                 }
                 // this tax is already included in the subtotal
                 if (!empty($prices)) {
                     foreach ($prices as $k => $x2) {
                         if (isset($x2['Tax']) && is_array($x2['Tax'])) {
                             foreach ($x2['Tax'] as $ind => $r) {
                                 $tax_id = $ind;
                                 $taxname[$tax_id] = $r[0];
                                 $taxrate[$tax_id] = $r[1];
                                 if (isset($prices[$tax_id . 'Diff'])) {
                                     $tax = $prices[$tax_id . 'Diff'];
                                 }
                                 if (empty($tax)) {
                                     if (isset($cart->pricesUnformatted[$tax_id . 'Diff'])) {
                                         $tax = $cart->pricesUnformatted[$tax_id . 'Diff'];
                                     }
                                 }
                                 if (!empty($tax)) {
                                     $taxamount[$tax_id] = $tax;
                                 }
                             }
                         }
                     }
                 }
                 //stAn, 2.0.226:
                 //dynamic lines start
                 if (!empty($opc_dynamic_lines)) {
                     $types = array('DATax', 'VatTax', 'Tax', 'DBTax');
                     $results = array();
                     $resultsNames = array();
                     foreach ($prices as $key => $val) {
                         if (is_array($prices[$key])) {
                             if (!empty($prices[$key]['subtotal_tax_amount'])) {
                                 foreach ($types as $ttype) {
                                     if (!empty($prices[$key][$ttype])) {
                                         foreach ($prices[$key][$ttype] as $id => $calcOp) {
                                             if (empty($calcOp)) {
                                                 continue;
                                             }
                                             $tax = array();
                                             $tax['calc_name'] = $calcOp[0];
                                             $tax['calc_value'] = $calcOp[1];
                                             $tax['calc_value_mathop'] = $calcOp[2];
                                             $tax['calc_shopper_published'] = $calcOp[3];
                                             $tax['calc_currency'] = $calcOp[4];
                                             $tax['calc_params'] = $calcOp[5];
                                             $tax['virtuemart_vendor_id'] = $calcOp[6];
                                             $tax['virtuemart_calc_id'] = $calcOp[7];
                                             $res = $calc->interpreteMathOp($tax, $prices[$key]['subtotal']);
                                             if (!isset($results[$id])) {
                                                 $results[$id] = 0;
                                             }
                                             $results[$id] += $res - $prices[$key]['subtotal'];
                                             $resultsNames[$id] = JText::_($tax['calc_name']);
                                         }
                                     }
                                 }
                             }
                         }
                     }
                     $billRuls = array();
                     if (!empty($cart->OPCCartData['DBTaxRulesBill'])) {
                         foreach ($cart->OPCCartData['DBTaxRulesBill'] as $rule) {
                             if (empty($rule)) {
                                 continue;
                             }
                             $results[$rule['virtuemart_calc_id']] = $prices[$rule['virtuemart_calc_id'] . 'Diff'];
                             $restulsNamed[$rule['virtuemart_calc_id']] = $rule['calc_name'];
                             $billRuls[$rule['virtuemart_calc_id']] = $rule['virtuemart_calc_id'];
                         }
                     }
                     if (!empty($cart->OPCCartData['taxRulesBill'])) {
                         foreach ($cart->OPCCartData['taxRulesBill'] as $rule) {
                             if (empty($rule)) {
                                 continue;
                             }
                             $results[$rule['virtuemart_calc_id']] = $prices[$rule['virtuemart_calc_id'] . 'Diff'];
                             $restulsNamed[$rule['virtuemart_calc_id']] = $rule['calc_name'];
                             $billRuls[$rule['virtuemart_calc_id']] = $rule['virtuemart_calc_id'];
                         }
                     }
                     if (!empty($cart->OPCCartData['DATaxRulesBill'])) {
                         foreach ($cart->OPCCartData['DATaxRulesBill'] as $rule) {
                             if (empty($rule)) {
                                 continue;
                             }
                             $results[$rule['virtuemart_calc_id']] = $prices[$rule['virtuemart_calc_id'] . 'Diff'];
                             $restulsNamed[$rule['virtuemart_calc_id']] = $rule['calc_name'];
                             $billRuls[$rule['virtuemart_calc_id']] = $rule['virtuemart_calc_id'];
                         }
                     }
                     //DATaxRulesBill end
                     //shipping fee
                     if (!empty($results)) {
                         reset($results);
                         $first_key = key($results);
                         if (empty($prices['shipment_calc_id'])) {
                             if (!empty($prices['shipmentTax'])) {
                                 $results[$first_key] += $prices['shipmentTax'];
                             }
                         } else {
                             if (!is_array($prices['shipment_calc_id'])) {
                                 if (!empty($prices['shipmentTax'])) {
                                     if (!isset($results[$prices['shipment_calc_id']])) {
                                         $results[$prices['shipment_calc_id']] = 0;
                                     }
                                     $results[(int) $prices['shipment_calc_id']] += $prices['shipmentTax'];
                                 }
                             } else {
                                 foreach ($prices['shipment_calc_id'] as $calc_id) {
                                     if (!isset($results[$calc_id])) {
                                         $results[$calc_id] = 0;
                                     }
                                     $results[$calc_id] += $prices['shipmentTax'];
                                     // maybe we should add it just once !!!
                                 }
                             }
                         }
                         if (empty($prices['payment_calc_id'])) {
                             if (!empty($prices['paymentTax'])) {
                                 $results[$first_key] += $prices['paymentTax'];
                             }
                         } else {
                             if (!is_array($prices['payment_calc_id'])) {
                                 if (!empty($prices['paymentTax'])) {
                                     if (!isset($results[$prices['payment_calc_id']])) {
                                         $results[$prices['payment_calc_id']] = 0;
                                     }
                                     $results[$prices['payment_calc_id']] += $prices['paymentTax'];
                                 }
                             } else {
                                 foreach ($prices['payment_calc_id'] as $calc_id) {
                                     if (!isset($results[$calc_id])) {
                                         $results[$calc_id] = 0;
                                     }
                                     $results[$calc_id] += $prices['paymentTax'];
                                     // maybe we should add it just once !!!
                                 }
                             }
                         }
                     }
                     $dynamic = array();
                     foreach ($results as $key => $val) {
                         //this is for the bill taxes:
                         if (isset($prices[$key . 'Diff'])) {
                             if ($prices[$key . 'Diff'] > $val) {
                                 $val = $key . 'Diff';
                             }
                         }
                         $dynamic[$key]['value'] = $currencyDisplay->convertCurrencyTo($virtuemart_currency_id, $val, false);
                         if (!isset($resultsNames[$key])) {
                             $db = JFactory::getDBO();
                             $q = 'select calc_name from #__virtuemart_calcs where virtuemart_calc_id = ' . (int) $key . ' limit 0,1';
                             $db->setQuery($q);
                             $resultsNames[$key] = $name = $db->loadResult();
                         }
                         $dynamic[$key]['name'] = $resultsNames[$key];
                     }
                     //stAn, 2.0.226 end
                     if (!empty($prices)) {
                         foreach ($prices as $k => $x2) {
                             if (strpos($k, 'Diff') !== false) {
                                 $k2 = str_replace('Diff', '', $k);
                                 if (!empty($results) && !array_key_exists($k2, $results)) {
                                     if (is_numeric($k2)) {
                                         $k2 = (int) $k2;
                                         $db = JFactory::getDBO();
                                         $q = 'select calc_name from #__virtuemart_calcs where virtuemart_calc_id = ' . $k2 . ' limit 0,1';
                                         $db->setQuery($q);
                                         $name = $db->loadResult();
                                         // to support multilang
                                         $name = JText::_($name);
                                         $dynamic[$k2]['name'] = $name;
                                         $val = 0;
                                         if (isset($cart->OPCCartData['VatTax'])) {
                                             if (isset($cart->OPCCartData['VatTax'][$k2])) {
                                                 if (isset($cart->OPCCartData['VatTax'][$k2]['taxAmount'])) {
                                                     $val = $cart->OPCCartData['VatTax'][$k2]['taxAmount'];
                                                     if (isset($prices['shipmentTax'])) {
                                                         $val += $prices['shipmentTax'];
                                                     }
                                                     if (isset($prices['paymentTax'])) {
                                                         $val += $prices['paymentTax'];
                                                     }
                                                 }
                                             }
                                         }
                                         if ($val == 0) {
                                             $val = $x2;
                                         }
                                         $dynamic[$k2]['value'] = $currencyDisplay->convertCurrencyTo($virtuemart_currency_id, $val, false);
                                     }
                                 }
                             }
                         }
                     }
                 }
                 //dynamic lines end
                 // add shipment tax to it's plugins subtotal
                 if (!empty($prices['shipmentTax'])) {
                     if (isset($prices['shipment_calc_id'])) {
                         if (!is_array($prices['shipment_calc_id'])) {
                             if (!isset($taxamount[$prices['shipment_calc_id']])) {
                                 $taxamount[$prices['shipment_calc_id']] = 0;
                             }
                             $taxamount[$prices['shipment_calc_id']] += $prices['shipmentTax'];
                         } else {
                             foreach ($prices['shipment_calc_id'] as $calc_id) {
                                 if (!isset($taxamount[$calc_id])) {
                                     $taxamount[$calc_id] = 0;
                                 }
                                 $taxamount[$calc_id] += $prices['shipmentTax'];
                                 // maybe we should add it just once !!!
                                 // break;
                             }
                         }
                     }
                 }
                 if (!isset($tax)) {
                     $tax = 0;
                 }
                 if (!empty($prices['paymentTax'])) {
                     if (isset($prices['payment_calc_id'])) {
                         if (!is_array($prices['payment_calc_id'])) {
                             if (!isset($taxamount[$prices['payment_calc_id']])) {
                                 $taxamount[$prices['payment_calc_id']] = 0;
                             }
                             $taxamount[$prices['payment_calc_id']] += $prices['paymentTax'];
                         } else {
                             foreach ($prices['payment_calc_id'] as $calc_id) {
                                 if (!isset($taxamount[$calc_id])) {
                                     $taxamount[$calc_id] = 0;
                                 }
                                 $taxamount[$calc_id] += $prices['paymentTax'];
                             }
                         }
                     } else {
                         if (isset($prices['payment_tax_id'])) {
                             if (!isset($taxamount[$prices['payment_tax_id']])) {
                                 $taxamount[$prices['payment_tax_id']] = 0;
                             }
                             $taxamount[$prices['payment_tax_id']] += $prices['paymentTax'];
                         }
                     }
                 }
                 $order_tax = $prices['billTaxAmount'];
                 $order_tax = $currencyDisplay->convertCurrencyTo($virtuemart_currency_id, $order_tax, false);
                 // ok, here we should reprocess the coupon
                 if (!empty($payment_id_override)) {
                     $o = '<input type="hidden" id="payment_id_override_' . $payment_id . '" value="1"/>';
                     if (!defined('payment_id_override_' . $payment_id)) {
                         self::$totals_html .= $o;
                         define('payment_id_override_' . $payment_id, 1);
                     }
                     $payment_id = $payment_id_override;
                 }
                 self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_subtotal" value="' . $order_subtotal . '"/>';
                 $sum = (double) 0;
                 // this shows
                 if (count($taxname) >= 1 && empty($show_single_tax)) {
                     //if (!defined('.$idth.'_'.$payment_id.'_tax
                     $taxhtml = '';
                     foreach ($taxname as $id => $name) {
                         $rate = (double) $taxrate[$id] / 100;
                         if (empty($taxamount[$id])) {
                             continue;
                         }
                         $tax = $taxamount[$id];
                         if (!is_numeric($tax)) {
                             // we have a possible cross compatiblity error here
                             $tax = 0;
                         }
                         $sum += $tax;
                         self::$totals_html .= '<input type="hidden" name="' . $idth . '_' . $payment_id . '_tax" value="' . $rate . '|' . $tax . '"/>';
                         self::$totals_html .= '<input type="hidden" name="' . $idth . '_' . $payment_id . '_taxname" value="' . OPCloader::slash($name) . '"/>';
                     }
                 }
                 self::$totals_html .= '<input type="hidden" name="' . $idth . '_' . $payment_id . '_tax_all" id="' . $idth . '_' . $payment_id . '_tax_all" value="|' . $order_tax . '"/>';
                 if (!empty($dynamic)) {
                     foreach ($dynamic as $key => $val) {
                         if (!empty($dynamic[$key]['value'])) {
                             self::$totals_html .= '<input type="hidden" name="' . $idth . '_' . $payment_id . '_dynamic" rel="' . $key . '" id="' . $idth . '_' . $payment_id . '_dynamicvalue_' . $key . '" stringname="' . OPCloader::slash($dynamic[$key]['name']) . '" value="' . $dynamic[$key]['value'] . '"/>';
                         }
                     }
                 }
                 if (!empty($payment_discount)) {
                     self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_payment_discount" value="' . $payment_discount . '"/>';
                 } else {
                     self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_payment_discount" value="0.00"/>';
                 }
                 if (!empty($coupon_discount)) {
                     self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_coupon_discount" value="' . $coupon_discount . '"/>';
                 } else {
                     self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_coupon_discount" value="0.00"/>';
                 }
                 if (!empty($coupon_discount2)) {
                     self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_coupon_discount2" value="' . $coupon_discount2 . '"/>';
                 } else {
                     self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_coupon_discount2" value="0.00"/>';
                 }
                 if (!empty($order_shipping)) {
                     self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_order_shipping" value="' . $order_shipping . '"/>';
                 } else {
                     self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_order_shipping" value="0.00"/>';
                 }
                 if (!empty($order_shipping_tax)) {
                     self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_order_shipping_tax" value="' . $order_shipping_tax . '"/>';
                 } else {
                     self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_order_shipping_tax" value="0.00"/>';
                 }
                 if (!empty($order_total)) {
                     self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_order_total" value="' . $order_total . '"/>';
                 } else {
                     self::$totals_html .= '<input type="hidden" id="' . $idth . '_' . $payment_id . '_order_total" value="0.00"/>';
                 }
             }
         }
     }
     unset($ke);
     unset($html2);
     if (!empty($unset_zero)) {
         unset($shipping_array['zero_shipment']);
     }
     unset($payment_array['zero_payment']);
     if (!empty($shipping_array)) {
         unset($shipping_array['choose_shipping']);
     }
     $wrapper = '<!--shipping_goes_here-->';
     $num = 1;
     if (!empty($shipping_array)) {
         if (!empty($shipping_inside)) {
             $num = 0;
             $ret = OPCTransform::shippingToSelect($shipping_array, $num, $cart);
             if (!empty($num)) {
                 $html .= $ret;
             }
         }
     }
     if (!empty($shipping_array)) {
         if (empty($shipping_inside) || empty($num)) {
             $htmla = array();
             foreach ($shipping_array as $ke => &$html2) {
                 if (strpos($html2, 'virtuemart_shipmentmethod_id') !== false) {
                     $tmp = $tmp2 = $shipping_array[$ke];
                     //substr($shipping_array[$ke], $x1, $x2);
                     if (!empty($default)) {
                         $shipmentid = (string) $default['shipmentid'];
                     } else {
                         $shipmentid = '';
                     }
                     if (strpos($tmp, '"' . $shipmentid . '"') !== false) {
                         $tmp = str_replace('checked="checked"', '', $tmp);
                         $tmp = str_replace('checked', '', $tmp);
                         //virtuemart_shipmentmethod_id
                         $tmp = str_replace('name="virtuemart_shipmentmethod_id"', ' autocomplete="off" name="virtuemart_shipmentmethod_id"', $tmp);
                         if (!empty($default)) {
                             $tmp = $this->str_replace_once('"' . $shipmentid . '"', '"' . $shipmentid . '" checked="checked" ', $tmp);
                         }
                     }
                     $tmp = str_replace('name="virtuemart_shipmentmethod_id"', 'name="virtuemart_shipmentmethod_id" onclick="javascript:Onepage.changeTextOnePage3(op_textinclship, op_currency, op_ordertotal);" ', $tmp);
                     //if (strpos($tmp, 'shipment_id_'.$id.'"')!== false) $tmp.' ok sel ';
                     $shipping_array[$ke] = $tmp;
                     //str_replace($shipping_array[$ke], $tmp, $shipping_array[$ke]);
                     $x1 = strpos($shipping_array[$ke], '<input');
                     $x1a = basketHelper::strposall($shipping_array[$ke], '<input');
                     if (!empty($x1a)) {
                         foreach ($x1a as $x1) {
                             $x2 = strpos($shipping_array[$ke], '>', $x1 + 1);
                             if ($x2 !== false) {
                                 if (substr($shipping_array[$ke], $x2 - 1, 1) != '/') {
                                     // fixed a bug in 2.0.87 !! otherwise the shipping method might be rendered incorrectly
                                     $a1 = substr($shipping_array[$ke], 0, $x2);
                                     $a2 = substr($shipping_array[$ke], $x2);
                                     $shipping_array[$ke] = $a1 . '/' . $a2;
                                 }
                             }
                         }
                     }
                 }
                 //$html .= $shipping_array[$ke].'<br />';
                 //echo 'sa:'.$shipping_array[$ke].'endsa';
                 if (strpos($shipping_array[$ke], '<!--shipping_goes_here-->') === false) {
                     $htmla[] = $shipping_array[$ke] . '<br />';
                 } else {
                     $wrapper = $shipping_array[$ke] . '<br />';
                 }
             }
             $vars = array('shipping' => $htmla, 'cart' => $cart);
             if (!class_exists('OPCrenderer')) {
                 require JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'renderer.php';
             }
             $renderer = OPCrenderer::getInstance();
             $htmlr = $renderer->fetch($renderer, 'list_shipping_methods.tpl', $vars);
             if (empty($htmlr)) {
                 $html .= implode('', $htmla);
             } else {
                 $html .= $htmlr;
             }
             // create html:
         }
     }
     $html = str_replace('<!--shipping_goes_here-->', $html, $wrapper);
     if (strpos($html, 'checked') === false) {
         $html = $this->str_replace_once('"virtuemart_shipmentmethod_id"', '"virtuemart_shipmentmethod_id" checked="checked"', $html);
     }
     include JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'third_party' . DS . 'third_party_clear_shipping.php';
     // clear the settings:
     $cart->virtuemart_shipmentmethod_id = 0;
     $cart->virtuemart_paymentmethod_id = 0;
     $cart->automaticSelectedShipment = false;
     $cart->automaticSelectedPayment = false;
     $cart->setCartIntoSession();
     if (method_exists($calc, 'setCartPrices')) {
         $calc->setCartPrices(array());
     }
     return $html;
 }
Exemplo n.º 14
0
 public function __construct($orderID, $params2, $status, $params, $file = '')
 {
     $this->errorMsg = '';
     if (empty(OPCtrackingHelper::$config[$status])) {
         $this->errorMsg .= 'Config not found for status: ' . $status . "<br />\n";
         $this->error = true;
         return;
     }
     $this->params = new stdClass();
     if (!empty($params)) {
         $this->params = $params;
     }
     //$this->pingUrl = JRoute::_('index.php?option=com_onepage&task=ping&nosef=1&format=raw&tmpl=component', false);
     $this->pingUrl = OPCtrackingHelper::getUrl() . 'index.php?option=com_onepage&task=ping&nosef=1&format=raw&tmpl=component';
     if (method_exists('JApplication', 'getHash')) {
         $hashn = JApplication::getHash('opctracking');
     } else {
         $hashn = JUtility::getHash('opctracking');
     }
     $opchash = JRequest::getVar($hashn, false, 'COOKIE');
     $this->cookieHash = $opchash;
     $this->pingData = 'hash=' . $this->escapeSingle(str_replace('&', '&amp;', $opchash));
     require_once JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
     $orderModel = OPCmini::getModel('orders');
     $this->order = $orderModel->getOrder($orderID);
     if (empty($this->order)) {
         $this->errorMsg .= 'Order not found: ' . var_export($config, true) . "<br />\n";
         $this->error = true;
         return;
     }
     if (empty($this->order['items']) || !is_array($this->order['items'])) {
         $this->errorMsg .= 'Order items not found: ' . var_export($config, true) . "<br />\n";
         $this->error = true;
         return;
     }
     require_once JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'config.php';
     $negative_statuses = OPCconfig::getValue('tracking_negative', 'negative_statuses', 0, array());
     if (!empty($negative_statuses)) {
         $copy_negative_statuses = array();
         foreach ($negative_statuses as $key => $ng) {
             $copy_negative_statuses[$key] = $ng;
         }
         $negative_statuses = $copy_negative_statuses;
         if (is_array($negative_statuses)) {
             if (isset($this->order['details']['BT'])) {
                 if (in_array($this->order['details']['BT']->order_status, $negative_statuses)) {
                     OPCtrackingHelper::getNegativeOrder($this->order);
                 }
             }
         }
     }
     if (empty($this->order['details'])) {
         $this->errorMsg .= 'Order details not found: ' . var_export($config, true) . "<br />\n";
         $this->error = true;
         return;
     }
     // check if the tracking was enabled before or after the order was created
     if (is_array($this->order)) {
         if (!empty($this->order['details']['BT'])) {
             $c = $this->order['details']['BT']->created_on;
             $sql = $c;
             $date = new JDate($sql);
             $time = $date->toUnix();
             if (!empty(OPCtrackingHelper::$config)) {
                 if (!empty(OPCtrackingHelper::$config[$status])) {
                     // opc update, old codee:
                     $key = 'since' . $file;
                     if (!empty(OPCtrackingHelper::$config[$status]->{$key})) {
                         $since = OPCtrackingHelper::$config[$status]->{$key};
                         if ($since > $time) {
                             $this->errorMsg .= 'OPC tracking was created AFTER the order was created: ' . var_export(OPCtrackingHelper::$config, true) . 'order created on ' . $c . date(DATE_RFC2822, $time) . ' tracking created on ' . $since . date(DATE_RFC2822, $since) . " <br />\n";
                             $this->error = true;
                             return;
                         }
                     }
                     $key = $file . '_since';
                     if (!empty(OPCtrackingHelper::$config[$status]->{$key})) {
                         $since = OPCtrackingHelper::$config[$status]->{$key};
                         if ($since > $time) {
                             $this->errorMsg .= 'OPC tracking system plugin was set up AFTER the order was created: ' . var_export(OPCtrackingHelper::$config, true) . 'order created on ' . $c . ' ' . date(DATE_RFC2822, $time) . ' tracking created on ' . $since . date(DATE_RFC2822, $since) . " <br />\n";
                             $this->error = true;
                             return;
                         }
                     }
                 }
             }
         }
     }
     $this->error = false;
     $this->pingData .= '&order_status=' . $status;
     $this->pingData .= '&order_id=' . $orderID;
     OPCtrackingHelper::getTextFields($this->order);
     $this->vendor = OPCtrackingHelper::getVendorInfo($this->order['details']['BT']->virtuemart_vendor_id);
 }
Exemplo n.º 15
0
    public static function getBasket(&$ref, $OPCloader, $withwrapper = true, &$op_coupon = '', $shipping = '', $payment = '', $isexpress = false)
    {
        include JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'config' . DS . 'onepage.cfg.php';
        $has_k2 = OPCloader::tableExists('k2mart');
        if (!class_exists('ShopFunctions')) {
            require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php';
        }
        if (!method_exists('ShopFunctions', 'convertWeightUnit')) {
            $opc_show_weight = false;
        }
        /*
           if (!class_exists('VirtueMartModelProduct'))
         require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'product.php');
        */
        require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
        $productClass = OPCmini::getModel('product');
        //new VirtueMartModelProduct();
        if (!class_exists('CurrencyDisplay')) {
            require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php';
        }
        $currencyDisplay = CurrencyDisplay::getInstance($ref->cart->pricesCurrency);
        $google_html = '';
        $VM_LANG = new op_languageHelper();
        $product_rows = array();
        $p2 = $ref->cart->products;
        if (empty($ref->cart)) {
            $ref->cart = VirtueMartCart::getCart();
        }
        $vm2015 = false;
        $ref->cart->prices = $ref->cart->pricesUnformatted = OPCloader::getCheckoutPrices($ref->cart, false, $vm2015, 'opc');
        $useSSL = VmConfig::get('useSSL', 0);
        $action_url = $OPCloader->getActionUrl($OPCloader, true);
        $xi = 0;
        if (isset($currencyDisplay->_priceConfig)) {
            $savedConfig = $currencyDisplay->_priceConfig;
        }
        if (empty($product_price_display)) {
            $product_price_display = 'salesPrice';
        }
        //$test_product_price_display = array($product_price_display, 'salesPrice', 'basePrice', 'priceWithoutTax', 'basePriceWithTax', 'priceBeforeTax', 'costPrice');
        $test_product_price_display = array($product_price_display, 'salesPrice', 'basePrice', 'priceWithoutTax', 'basePriceWithTax', 'priceBeforeTax');
        // check price config
        $testf = false;
        foreach ($test_product_price_display as $product_price_display_test) {
            $test = $currencyDisplay->createPriceDiv($product_price_display, '', '10', false, false, 1);
            if (empty($test)) {
                if (isset($currencyDisplay->_priceConfig)) {
                    if (isset($currencyDisplay->_priceConfig[$product_price_display_test])) {
                        if (empty($currencyDisplay->_priceConfig[$product_price_display_test][0])) {
                            $currencyDisplay->_priceConfig[$product_price_display_test] = array(1, -1, 1);
                        }
                    }
                }
                $testf = true;
            } else {
                if (!isset($product_price_display_test2)) {
                    $product_price_display_test2 = $product_price_display_test;
                }
            }
        }
        if (empty($testf)) {
            $product_price_display = $product_price_display_test2;
        }
        $totalw = 0;
        $to_weight_unit = VmConfig::get('weight_unit_default', 'KG');
        foreach ($ref->cart->products as $pkey => $prow) {
            if ($opc_show_weight) {
                $totalw += ShopFunctions::convertWeightUnit((double) $prow->product_weight, $prow->product_weight_uom, $to_weight_unit) * (double) $prow->quantity;
            }
            $product = array();
            $id = $prow->virtuemart_media_id;
            if (empty($id)) {
                $imgf = '';
            } else {
                if (is_array($id)) {
                    $id = reset($id);
                }
                $imgf = $OPCloader->getImageFile($id);
            }
            $product['product_full_image'] = $imgf;
            if (!empty($opc_only_parent_links)) {
                if (!empty($prow->product_parent_id)) {
                    $parent = $prow->product_parent_id;
                    $prow->url = JRoute::_('index.php?option=com_virtuemart&virtuemart_product_id=' . $parent . '&view=productdetails', true);
                }
            }
            // check if k2 exists:
            if (!isset($prow->url)) {
                if (isset($prow->link)) {
                    $prow->url = $prow->link;
                    if (strpos($prow->url, '&amp;') === false) {
                        $prow->url = str_replace('&', '&amp;', $prow->url);
                    }
                } else {
                    $prow->url = JRoute::_('index.php?option=com_virtuemart&virtuemart_product_id=' . $prow->virtuemart_product_id . '&view=productdetails', true);
                }
            }
            if ($has_k2) {
                $db = JFactory::getDBO();
                $q = 'select baseID from #__k2mart where referenceID = ' . (int) $prow->virtuemart_product_id . ' limit 0,1';
                $db->setQuery($q);
                $k2_id = $db->loadResult();
                if (!empty($k2_id)) {
                    $prow->url = JRoute::_('index.php?option=com_k2&id=' . $k2_id . '&view=item', true);
                }
            }
            $product['product_name'] = JHTML::link($prow->url, $prow->product_name, ' class="opc_product_name" ');
            if ((!defined('VM_VERSION') || VM_VERSION < 3) && (isset($prow->customfields) && !is_array($prow->customfields))) {
                if (!empty($opc_editable_attributes)) {
                    $product['product_attributes'] = '<div style="clear:both;">' . OPCrenderer::getCustomFields($prow->virtuemart_product_id, $prow->cart_item_id, $prow->quantity) . '</div>';
                } else {
                    $product['product_attributes'] = $prow->customfields;
                }
            } else {
                $product['product_attributes'] = '';
            }
            /*
            var_dump($prow->customfields); 
            $cart = VirtuemartCart::getCart();
            
            $p = array(); 
            foreach ($cart->products as $k=>$v)
            {
              $p[$k] = $v; 
            } 
            unset($cart->products); 
            
            unset($cart->ST); 
            unset($cart->BT); 
            unset($cart->BTaddress); 
            unset($cart->STaddress); 
            $cart->products = $p; 
            $cart->setCartIntoSession(); 
            var_dump($cart->products); die(); 
            var_dump($cart); 
            JFactory::getApplication()->close(); 
            */
            if (defined('VM_VERSION') && VM_VERSION >= 3) {
            }
            if (isset($prow->customfields) && is_array($prow->customfields)) {
                $customfieldsModel = OPCmini::getModel('Customfields');
                $product['product_attributes'] = $customfieldsModel->CustomsFieldCartDisplay($prow);
            }
            $product['product_sku'] = $prow->product_sku;
            // end price test
            if (isset($prow->quantity)) {
                $product['product_quantity'] = $prow->quantity;
            }
            if (isset($prow->min_order_level)) {
                $product['min_order_level'] = $prow->min_order_level;
            }
            if (isset($prow->max_order_level)) {
                $product['max_order_level'] = $prow->max_order_level;
            }
            //$product_model = $OPCloader->getModel('product');
            $xi++;
            if (empty($no_extra_product_info)) {
                $prowcopy = $productClass->getProduct($prow->virtuemart_product_id, true);
            } else {
                $prowcopy = $prow;
            }
            $product['info'] = $prowcopy;
            $product['product'] = $prow;
            if (isset($ref->cart->prices[$pkey])) {
                $currentPrice = $ref->cart->prices[$pkey];
            } else {
                if (isset($prow->prices)) {
                    $currentPrice = $prow->prices;
                }
            }
            if ($product_price_display == 'salesPrice') {
                if (isset($prow->prices)) {
                    $product['product_price'] = $currentPrice['salesPrice'];
                } else {
                    if (isset($prow->salesPrice)) {
                        $product['product_price'] = $prow->salesPrice;
                    } else {
                        if (isset($prow->basePriceWithTax)) {
                            $product['product_price'] = $prow->basePriceWithTax;
                        } else {
                            if (isset($prow->basePrice)) {
                                $product['product_price'] = $prow->basePrice;
                            }
                        }
                    }
                }
            } else {
                if (isset($prow->prices)) {
                    $product['product_price'] = $currentPrice[$product_price_display];
                } else {
                    if (isset($prow->{$product_price_display})) {
                        $product['product_price'] = $prow->{$product_price_display};
                    } else {
                        if (isset($prow->salesPrice)) {
                            $product['product_price'] = $prow->salesPrice;
                        }
                    }
                }
            }
            if (!isset($product['product_price'])) {
                $price = $ref->cart->pricesUnformatted[$pkey];
                $product['product_price'] = $price[$product_price_display];
            }
            if (empty($product['product_price'])) {
                $product_price_display = 'salesPrice';
                $price = $ref->cart->pricesUnformatted[$pkey];
                $product['product_price'] = $price['salesPrice'];
            }
            $price_raw = $product['product_price'];
            // the quantity is not working up to 2.0.4
            $product['product_id'] = $prow->virtuemart_product_id;
            $google_html .= '<input type="hidden" name="prod_id" value="' . $prow->virtuemart_product_id . '" />
			   <input type="hidden" name="prodsku_' . $prow->virtuemart_product_id . '" id="prodsku_' . $prow->virtuemart_product_id . '" value="' . OPCloader::slash($prow->product_sku, false) . '" />
			   <input type="hidden" name="prodname_' . $prow->virtuemart_product_id . '" id="prodname_' . $prow->virtuemart_product_id . '" value="' . OPCloader::slash($prow->product_name, false) . '" />
			   <input type="hidden" name="prodq_' . $prow->virtuemart_product_id . '" id="prodq_' . $prow->virtuemart_product_id . '" value="' . $prow->quantity . '" />
			   <input type="hidden" name="produprice_' . $prow->virtuemart_product_id . '" id="produprice_' . $prow->virtuemart_product_id . '" value="' . $price_raw . '" />
			    <input type="hidden" name="prodcat_' . $prow->virtuemart_product_id . '" id="prodcat_' . $prow->virtuemart_product_id . '" value="' . $prow->category_name . '" />
			   
			   
			  ';
            if (isset($ref->cart->pricesUnformatted[$pkey])) {
                $price = $ref->cart->pricesUnformatted[$pkey];
            } else {
                $price = $prow->prices;
            }
            $product['prices'] = $price;
            $product['prices_formatted'] = array();
            if ($vm2015) {
                foreach ($price as $key => $pricev) {
                    //if (!isset($price[$key]))
                    if (!empty($pricev)) {
                        $product['prices_formatted'][$key] = $currencyDisplay->createPriceDiv($key, '', $price, false, true, 1);
                    }
                }
            }
            $product['product_price'] = $currencyDisplay->createPriceDiv($product_price_display, '', $price, false, true, 1);
            /*
            if (false)
            if (empty($product['product_price']))
            {
              // ok, we have a wrong type selected here
            				if ($product_price_display == 'salesPrice') 
            				$product['product_price'] = $currencyDisplay->createPriceDiv('basePrice','', $price,false,false, 1);
            				if (empty($product['product_price']))
            				$product['product_price'] = $currencyDisplay->createPriceDiv('priceWithoutTax','', $price,false,false, 1);
            				if (empty($product['product_price']))
            				$product['product_price'] = $currencyDisplay->createPriceDiv('basePriceWithTax','', $price,false,false, 1);
            				if (empty($product['product_price']))
            				$product['product_price'] = $currencyDisplay->createPriceDiv('priceBeforeTax','', $price,false,false, 1);
            				if (empty($product['product_price']))
            				$product['product_price'] = $currencyDisplay->createPriceDiv('costPrice','', $price,false,false, 1);
            				
            
            				 
            }
            */
            $product['product_price'] = str_replace('class="', 'class="opc_price_general opc_', $product['product_price']);
            if (!isset($prow->cart_item_id)) {
                $prow->cart_item_id = $pkey;
            }
            $v = array('product' => $prow, 'action_url' => $action_url, 'use_ssl' => $useSSL, 'useSSL' => $useSSL);
            if (!empty($ajaxify_cart)) {
                $update_form = $OPCloader->fetch($OPCloader, 'update_form_ajax.tpl', $v);
                $delete_form = $OPCloader->fetch($OPCloader, 'delete_form_ajax.tpl', $v);
            } else {
                $update_form = $OPCloader->fetch($OPCloader, 'update_form.tpl', $v);
                $delete_form = $OPCloader->fetch($OPCloader, 'delete_form.tpl', $v);
                $op_coupon_ajax = '';
            }
            if (empty($update_form)) {
                if (!empty($ajaxify_cart)) {
                    $product['update_form'] = '<input type="text" title="' . OPCLang::_('COM_VIRTUEMART_CART_UPDATE') . '" class="inputbox" size="3" name="quantity" id="quantity_for_' . md5($prow->cart_item_id) . '" value="' . $prow->quantity . '" /><a class="updatebtn" title="' . OPCLang::_('COM_VIRTUEMART_CART_DELETE') . '" href="#" rel="' . $prow->cart_item_id . '|' . md5($prow->cart_item_id) . '"> </a>';
                    $product['delete_form'] = '<a class="deletebtn" title="' . OPCLang::_('COM_VIRTUEMART_CART_DELETE') . '" href="#" rel="' . $prow->cart_item_id . '"> </a>';
                } else {
                    $product['update_form'] = '<form action="' . $action_url . '" method="post" style="display: inline;">
				<input type="hidden" name="option" value="com_virtuemart" />
				<input type="text" title="' . OPCLang::_('COM_VIRTUEMART_CART_UPDATE') . '" class="inputbox" size="3" name="quantity" value="' . $prow->quantity . '" />
				<input type="hidden" name="view" value="cart" />
				<input type="hidden" name="task" value="update" />
				<input type="hidden" name="cart_virtuemart_product_id" value="' . $prow->cart_item_id . '" />
				<input type="submit" class="updatebtn" name="update" title="' . OPCLang::_('COM_VIRTUEMART_CART_UPDATE') . '" value=" "/>
			  </form>';
                    if (defined('VM_VERSION') && VM_VERSION >= 3) {
                        $product['delete_form'] = '<a class="deletebtn" title="' . OPCLang::_('COM_VIRTUEMART_CART_DELETE') . '" href="' . JRoute::_('index.php?option=com_virtuemart&view=cart&task=delete.' . $prow->cart_item_id . '&cart_virtuemart_product_id=' . $prow->cart_item_id, true, $useSSL) . '"> </a>';
                    } else {
                        $product['delete_form'] = '<a class="deletebtn" title="' . OPCLang::_('COM_VIRTUEMART_CART_DELETE') . '" href="' . JRoute::_('index.php?option=com_virtuemart&view=cart&task=delete&cart_virtuemart_product_id=' . $prow->cart_item_id, true, $useSSL) . '"> </a>';
                    }
                }
            } else {
                $product['update_form'] = $update_form;
                $product['delete_form'] = $delete_form;
            }
            if (!empty($ajaxify_cart)) {
                $product['update_form'] = str_replace('href=', 'onclick="return Onepage.updateProduct(this);" href=', $product['update_form']);
                $product['delete_form'] = str_replace('href=', 'onclick="return Onepage.deleteProduct(this);" href=', $product['delete_form']);
            }
            //vm3 update:
            if (defined('VM_VERSION') && VM_VERSION >= 3) {
                $product['update_form'] = str_replace('name="quantity"', 'name="quantity[' . $prow->cart_item_id . ']"', $product['update_form']);
                $product['update_form'] = str_replace('value="update"', 'value="updatecart"', $product['update_form']);
            }
            $product['subtotal'] = $prow->quantity * $price_raw;
            //else
            //$product['subtotal'] = $prow->subtotal_with_tax;
            // this is fixed from 2.0.4 and would not be needed
            if (isset($ref->cart->pricesUnformatted[$pkey])) {
                $copy = $ref->cart->pricesUnformatted[$pkey];
            } else {
                $copy = $prow->prices;
            }
            //$copy['salesPrice'] = $copy['subtotal_with_tax'];
            $copy[$product_price_display] = $product['subtotal'];
            $product['subtotal'] = $currencyDisplay->createPriceDiv($product_price_display, '', $copy, false, true, 1);
            $product['subtotal'] = str_replace('class="', 'class="opc_', $product['subtotal']);
            // opc vars
            $product_rows[] = $product;
            //break;
        }
        //$shipping_inside_basket = false;
        $shipping_select = $shipping;
        $payment_select = $payment;
        if (!empty($ref->cart->prices['salesPriceCoupon'])) {
            if (empty($coupon_price_display)) {
                $coupon_price_display = 'salesPriceCoupon';
            }
            $coupon_display = $currencyDisplay->createPriceDiv($coupon_price_display, '', $ref->cart->prices, false, true, 1);
            //$ref->cart->prices['salesPriceCoupon'];
            $coupon_display = str_replace('class="', 'class="opc_', $coupon_display);
        } else {
            $coupon_display = '';
        }
        if (!empty($coupon_display)) {
            $discount_after = true;
        } else {
            $discount_after = false;
        }
        if (empty($other_discount_display)) {
            $other_discount_display = 'billDiscountAmount';
        }
        switch ($other_discount_display) {
            case 'billDiscountAmount':
                $coupon_display_before = $currencyDisplay->createPriceDiv('billDiscountAmount', '', $ref->cart->prices, false, false, 1);
                if (empty($ref->cart->prices['billDiscountAmount'])) {
                    $coupon_display_before = '';
                }
                break;
            case 'discountAmount':
                $coupon_display_before = $currencyDisplay->createPriceDiv('discountAmount', '', $ref->cart->prices, false, false, 1);
                if (empty($ref->cart->prices['discountAmount'])) {
                    $coupon_display_before = '';
                }
            case 'minus':
                $billD = abs($ref->cart->prices['billDiscountAmount']);
                foreach ($ref->cart->prices as $key => $val) {
                    if (!empty($ref->cart->products[$key])) {
                        if (is_array($val)) {
                            $billD -= abs($val['subtotal_discount']);
                        }
                    }
                }
                $billD = abs($billD) * -1;
                $prices_new['billTotal'] = $billD;
                if (!empty($billD)) {
                    $coupon_display_before = $currencyDisplay->createPriceDiv('billTotal', '', $prices_new, false, false, 1);
                } else {
                    $coupon_display_before = '';
                }
                break;
            case 'sum':
                $billD = 0;
                foreach ($ref->cart->prices as $key => $val) {
                    if (!empty($ref->cart->products[$key])) {
                        if (is_array($val)) {
                            $billD += $val['subtotal_discount'];
                        }
                    }
                }
                $billD = abs($billD) * -1;
                $prices_new['billTotal'] = $billD;
                if (!empty($billD)) {
                    $coupon_display_before = $currencyDisplay->createPriceDiv('billTotal', '', $prices_new, false, false, 1);
                } else {
                    $coupon_display_before = '';
                }
                break;
        }
        $coupon_display_before = str_replace('class="', 'class="opc_', $coupon_display_before);
        //else $coupon_display_before = '';
        $opc_show_weight_display = '';
        if (!empty($opc_show_weight) && !empty($totalw)) {
            $dec = $currencyDisplay->getDecimalSymbol();
            $th = $currencyDisplay->getThousandsSeperator();
            $w = VmConfig::get('weight_unit_default', 'KG');
            $w = strtoupper($w);
            if ($w == 'OZ') {
                $w = 'OUNCE';
            }
            $unit = JText::_('COM_VIRTUEMART_UNIT_SYMBOL_' . $w);
            if ($unit == 'COM_VIRTUEMART_UNIT_SYMBOL_' . $w) {
                $unit = $w = VmConfig('weight_unit_default', 'kg');
            }
            $opc_show_weight_display = number_format($totalw, 2, $dec, $th) . ' ' . $unit;
        }
        if (!empty($ajaxify_cart)) {
            $coupon_text = $ref->cart->couponCode ? OPCLang::_('COM_VIRTUEMART_COUPON_CODE_CHANGE') : OPCLang::_('COM_VIRTUEMART_COUPON_CODE_ENTER');
            $vars = array('coupon_text' => $coupon_text, 'coupon_display' => $coupon_display);
            $op_coupon_ajax = $OPCloader->fetch($OPCloader, 'couponField_ajax', $vars);
            if (stripos($op_coupon_ajax, 'Onepage.setCouponAjax') === false) {
                $op_coupon_ajax = str_replace('type="button', 'onclick="return Onepage.setCouponAjax(this);" type="button', $op_coupon_ajax);
            }
        }
        if (empty($subtotal_price_display)) {
            $subtotal_price_display = 'salesPrice';
        }
        if ($subtotal_price_display != 'diffTotals') {
            $subtotal_display = $currencyDisplay->createPriceDiv($subtotal_price_display, '', $ref->cart->prices, false, false, 1);
            if ($subtotal_price_display == 'basePriceWithTax') {
                if (stripos($subtotal_display, ' ></span') !== false) {
                    $subtotal_price_display = 'salesPrice';
                    $subtotal_display = $currencyDisplay->createPriceDiv($subtotal_price_display, '', $ref->cart->prices, false, false, 1);
                }
            }
        } else {
            $subtotal = $ref->cart->prices['billTotal'] - $ref->cart->prices['billTaxAmount'];
            $arr = array('diffTotals' => $subtotal);
            $subtotal_display = $currencyDisplay->createPriceDiv($subtotal_price_display, '', $arr, false, false, 1);
        }
        //$ref->cart->prices['salesPrice'];
        $subtotal_display = str_replace('class="', 'class="opc_', $subtotal_display);
        $prices = $ref->cart->prices;
        if (!isset($prices[$subtotal_price_display . 'Shipment'])) {
            if ($subtotal_price_display != 'salesPrice') {
                $order_shipping = $prices['shipmentValue'];
            } else {
                $order_shipping = $prices['salesPriceShipment'];
            }
        } else {
            $order_shipping = $prices[$subtotal_price_display . 'Shipment'];
        }
        if (!empty($order_shipping)) {
            $virtuemart_currency_id = OPCloader::getCurrency($ref->cart);
            $order_shipping = $currencyDisplay->convertCurrencyTo($virtuemart_currency_id, $order_shipping, false);
            $test = $currencyDisplay->createPriceDiv($product_price_display, '', $order_shipping, false, true, 1);
            if (!empty($test)) {
                $order_shipping = $test;
            }
            $order_shipping = str_replace('class="', 'class="opc_', $order_shipping);
        } else {
            $order_shipping = '';
        }
        $continue_link = $OPCloader->getContinueLink($ref);
        $order_total_display = $currencyDisplay->createPriceDiv('billTotal', '', $ref->cart->prices, false, false, 1);
        //$ref->cart->prices['billTotal'];
        $order_total_display = str_replace('class="', 'class="opc_', $order_total_display);
        // this will need a little tuning
        foreach ($ref->cart->cartData['taxRulesBill'] as $rule) {
            $rulename = $rule['calc_name'];
            if (!empty($ref->cart->prices[$rule['virtuemart_calc_id'] . 'Diff'])) {
                $tax_display = $currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'] . 'Diff', '', $ref->cart->prices, false, false, 1);
                //$ref->cart->prices[$rule['virtuemart_calc_id'].'Diff'];
                $tax_display = str_replace('class="', 'class="opc_', $tax_display);
            } else {
                $tax_display = '';
            }
        }
        $op_disable_shipping = OPCloader::getShippingEnabled($ref->cart);
        if (!empty($payment_discount_before) && !empty($coupon_display_before)) {
            $discount_before = true;
        } else {
            $discount_before = false;
        }
        $disable_couponns = VmConfig::get('coupons_enable', true);
        if (empty($disable_couponns)) {
            $op_coupon = $op_coupon_ajax = '';
        }
        if (!empty($op_coupon_ajax)) {
            $op_coupon = $op_coupon_ajax;
        }
        if ($isexpress) {
            $payment_inside_basket = false;
        }
        if (empty($payment_inside_basket)) {
            $payment_select = '';
        }
        if (empty($shipping_inside_basket)) {
            $shipping_select = '';
        }
        if (empty($tax_display)) {
            $tax_display = '';
        }
        if (empty($op_disable_shipping)) {
            $op_disable_shipping = false;
        }
        $no_shipping = $op_disable_shipping;
        $vars = array('product_rows' => $product_rows, 'payment_inside_basket' => $payment_inside_basket, 'shipping_select' => $shipping_select, 'payment_select' => $payment_select, 'shipping_inside_basket' => $shipping_inside_basket, 'coupon_display' => $coupon_display, 'subtotal_display' => $subtotal_display, 'no_shipping' => $no_shipping, 'order_total_display' => $order_total_display, 'tax_display' => $tax_display, 'VM_LANG' => $VM_LANG, 'op_coupon_ajax' => $op_coupon_ajax, 'continue_link' => $continue_link, 'coupon_display_before' => $coupon_display_before, 'discount_before' => $discount_before, 'discount_after' => $discount_after, 'order_shipping' => $order_shipping, 'cart' => $ref->cart, 'op_coupon' => $op_coupon, 'opc_show_weight_display' => $opc_show_weight_display);
        //original cart support:
        $ref->cart->cartData['shipmentName'] = '';
        $ref->cart->cartData['paymentName'] = '';
        $totalInPaymentCurrency = $ref->getTotalInPaymentCurrency();
        $cd = CurrencyDisplay::getInstance($ref->cart->pricesCurrency);
        $layoutName = 'default';
        $confirm = 'confirm';
        $shippingText = '';
        $paymentText = '';
        $checkout_link_html = '';
        $useSSL = VmConfig::get('useSSL', 0);
        $useXHTML = true;
        $checkoutAdvertise = '';
        if (!class_exists('OPCrenderer')) {
            require JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'renderer.php';
        }
        $renderer = OPCrenderer::getInstance();
        if (method_exists($renderer, 'assignRef')) {
            $renderer->assignRef('cart', $renderer->cart);
            $renderer->assignRef('totalInPaymentCurrency', $totalInPaymentCurrency);
            $renderer->assignRef('layoutName', $layoutName);
            $renderer->assignRef('select_shipment_text', $shippingText);
            $renderer->assignRef('checkout_task', $confirm);
            $renderer->assignRef('currencyDisplay', $cd);
            $renderer->assignRef('select_payment_text', $paymentText);
            $renderer->assignRef('checkout_link_html', $checkout_link_html);
            $renderer->assignRef('useSSL', $useSSL);
            $renderer->assignRef('useXHTML', $useXHTML);
            $renderer->assignRef('totalInPaymentCurrency', $totalInPaymentCurrency);
            $renderer->assignRef('checkoutAdvertise', $checkoutAdvertise);
        }
        if (empty($use_original_basket)) {
            $html = $renderer->fetch($OPCloader, 'basket.html', $vars);
        } else {
            $html = $renderer->fetchBasket($OPCloader, 'basket.html', $vars);
        }
        if ($withwrapper) {
            $html = '<div id="opc_basket">' . $html . '</div>';
        }
        if (!empty($op_no_basket)) {
            $html = '<div style="display: none;">' . $html . '</div>';
        }
        if (isset($currencyDisplay->_priceConfig)) {
            $currencyDisplay->_priceConfig = $savedConfig;
        }
        $ret = $html . $google_html;
        return $ret;
    }
Exemplo n.º 16
0
 /**
  * Test userdata if valid
  *
  * @author Max Milbers
  * @param String if BT or ST
  * @param Object If given, an object with data address data that must be formatted to an array
  * @return redirectMsg, if there is a redirectMsg, the redirect should be executed after
  */
 function validateUserData($type = 'BT', $obj = null, $cart = null)
 {
     include JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'config' . DS . 'onepage.cfg.php';
     // we disable validation for ST address, because it is still missing at the front-end and shall be added as an optional feature
     if ($type == 'ST') {
         return false;
     }
     require_once JPATH_OPC . DS . 'helpers' . DS . 'loader.php';
     require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
     $userFieldsModel = OPCmini::getModel('userfields');
     if ($type == 'BT') {
         $fieldtype = 'account';
     } else {
         $fieldtype = 'shipment';
     }
     if ($type == 'BT') {
         if (empty($bt_fields_from)) {
             $fieldtype = 'registration';
         } else {
             if ($bt_fields_from === 1) {
                 $fieldtype = 'account';
             } else {
                 $fieldtype = 'cart';
             }
         }
     }
     $neededFields = $userFieldsModel->getUserFields($fieldtype, array('required' => true, 'delimiters' => true, 'captcha' => true, 'system' => false), array('delimiter_userinfo', 'name', 'username', 'password', 'password2', 'address_type_name', 'address_type', 'user_is_vendor', 'agreed'));
     $redirectMsg = false;
     $i = 0;
     $missing = '';
     foreach ($neededFields as $field) {
         $is_business = JRequest::getVar('opc_is_business', 0);
         // we need to alter shopper group for business when set to:
         $is_business = JRequest::getVar('opc_is_business', 0);
         if (!empty($business_fields)) {
             if (!$is_business) {
                 // do not check if filled
                 if (in_array($field->name, $business_fields)) {
                     continue;
                 }
             }
         }
         if ($type == 'ST') {
             if (!empty($shipping_obligatory_fields)) {
                 if (!in_array($field->name, $shipping_obligatory_fields)) {
                     continue;
                 }
             }
         }
         // manage required business fields when not business selected:
         //foreach ($business_fields as $fn)
         if ($field->required && empty($cart->{$type}[$field->name]) && $field->name != 'virtuemart_state_id') {
             $redirectMsg = JText::sprintf('COM_VIRTUEMART_MISSING_VALUE_FOR_FIELD', JText::_($field->title));
             $i++;
             //more than four fields missing, this is not a normal error (should be catche by js anyway, so show the address again.
             if ($i > 2 && $type == 'BT') {
                 $missing .= JText::_($field->title);
                 $redirectMsg = JText::_('COM_VIRTUEMART_CHECKOUT_PLEASE_ENTER_ADDRESS');
             }
         }
         if ($obj !== null && is_array($cart->{$type})) {
             $cart->{$type}[$field->name] = $obj->{$field->name};
         }
         //This is a special test for the virtuemart_state_id. There is the speciality that the virtuemart_state_id could be 0 but is valid.
         if ($field->name == 'virtuemart_state_id') {
             if (!class_exists('VirtueMartModelState')) {
                 require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'state.php';
             }
             if (!empty($cart->{$type}['virtuemart_country_id']) && !empty($cart->{$type}['virtuemart_state_id'])) {
                 if (!($msg = VirtueMartModelState::testStateCountry($cart->{$type}['virtuemart_country_id'], $cart->{$type}['virtuemart_state_id']))) {
                     $redirectMsg = $msg;
                 }
             }
         }
     }
     if (empty($redirectMsg)) {
         return false;
     }
     $redirectMsg .= ' ' . $missing;
     return $redirectMsg;
 }
Exemplo n.º 17
0
 /**
  * Check if a minimum purchase value for this order has been set, and if so, if the current
  * value is equal or hight than that value.
  * @author Oscar van Eijk
  * @return An error message when a minimum value was set that was not eached, null otherwise
  */
 public static function checkPurchaseValue($cart)
 {
     $s = $cart->virtuemart_shipmentmethod_id;
     $p = $cart->virtuemart_paymentmethod_id;
     $cart->virtuemart_shipmentmethod_id = 0;
     $cart->virtuemart_paymentmethod_id = 0;
     $ret = '';
     require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
     $vendor = OPCmini::getModel('vendor');
     if (empty($vendor)) {
         return;
     }
     $vendor->setId($cart->vendorId);
     $store = $vendor->getVendor();
     if ($store->vendor_min_pov > 0) {
         $vm2015 = true;
         $prices = OPCloader::getCheckoutPrices($cart, false, $vm2015, null);
         if (!empty($prices['couponValue']) || !empty($prices['salesPriceCoupon'])) {
             $ret = '';
         } else {
             if ($prices['salesPrice'] < $store->vendor_min_pov) {
                 if (!class_exists('CurrencyDisplay')) {
                     require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php';
                 }
                 $currency = CurrencyDisplay::getInstance();
                 $ret = JText::sprintf('COM_VIRTUEMART_CART_MIN_PURCHASE', $currency->priceDisplay($store->vendor_min_pov));
             }
         }
     }
     $cart->virtuemart_shipmentmethod_id = $s;
     $cart->virtuemart_paymentmethod_id = $p;
     return $ret;
 }
 /**
  * Displays the view, collects needed data for the different layouts
  *
  * Okey I try now a completly new idea.
  * We make a function for every tab and the display is getting the right tabs by an own function
  * putting that in an array and after that we call the preparedataforlayoutBlub
  *
  * @author Oscar van Eijk
  * @author Max Milbers
  *
  *  Original code from: \components\com_virtuemart\views\user\view.html.php
  *
  */
 function display($tpl = null)
 {
     $useSSL = VmConfig::get('useSSL', 0);
     $useXHTML = true;
     $this->assignRef('useSSL', $useSSL);
     $this->assignRef('useXHTML', $useXHTML);
     $mainframe = JFactory::getApplication();
     $pathway = $mainframe->getPathway();
     $layoutName = $this->getLayout();
     if (!defined('OPC_IN_REGISTRATION_MODE')) {
         define('OPC_IN_REGISTRATION_MODE', 1);
     }
     require_once JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_onepage' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'language.php';
     OPCLang::loadLang();
     $this->loadOPC();
     // 	vmdebug('layout by view '.$layoutName);
     if (empty($layoutName) or $layoutName == 'default') {
         $layoutName = JRequest::getWord('layout', 'edit');
         if ($layoutName == 'default') {
             $layoutName = 'edit';
         }
         $this->setLayout($layoutName);
     }
     if (empty($this->fTask)) {
         $ftask = 'saveUser';
         $this->assignRef('fTask', $ftask);
     }
     if (!class_exists('ShopFunctions')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php';
     }
     // 	vmdebug('my layoutname',$layoutName);
     if ($layoutName == 'login') {
         parent::display($tpl);
         return;
     }
     if (!class_exists('VirtuemartModelUser')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'user.php';
     }
     $this->_model = new VirtuemartModelUser();
     //		$this->_model->setCurrent(); //without this, the administrator can edit users in the FE, permission is handled in the usermodel, but maybe unsecure?
     $editor = JFactory::getEditor();
     //the cuid is the id of the current user
     $this->_currentUser = JFactory::getUser();
     $this->_cuid = $this->_lists['current_id'] = $this->_currentUser->get('id');
     $this->assignRef('userId', $this->_cuid);
     $this->_userDetails = $this->_model->getUser();
     $this->assignRef('userDetails', $this->_userDetails);
     $address_type = JRequest::getWord('addrtype', 'BT');
     $this->assignRef('address_type', $address_type);
     //New Address is filled here with the data of the cart (we are in the cart)
     if (!class_exists('VirtueMartCart')) {
         require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php';
     }
     $cart = VirtueMartCart::getCart();
     $new = false;
     if (JRequest::getInt('new', '0') == 1) {
         $new = true;
     }
     if ($new) {
         $virtuemart_userinfo_id = 0;
     } else {
         $virtuemart_userinfo_id = JRequest::getString('virtuemart_userinfo_id', '0', '');
         if (empty($virtuemart_userinfo_id)) {
             require_once JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_onepage' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'mini.php';
             $umodel = OPCmini::getModel('user');
             //new VirtuemartModelUser();
             $uid = JFactory::getUser()->id;
             $userDetails = $umodel->getUser();
             $virtuemart_userinfo_id = $umodel->getBTuserinfo_id();
         }
     }
     $this->assignRef('virtuemart_userinfo_id', $virtuemart_userinfo_id);
     $userFields = null;
     if ((strpos($this->fTask, 'cart') || strpos($this->fTask, 'checkout')) && empty($virtuemart_userinfo_id)) {
         $fieldtype = $address_type . 'address';
         if (method_exists($cart, 'prepareAddressDataInCart')) {
             $cart->prepareAddressDataInCart($address_type, $new);
         }
         if (method_exists($cart, 'prepareAddressFieldsInCart')) {
             $cart->prepareAddressFieldsInCart();
         }
         $userFields = $cart->{$fieldtype};
         $task = JRequest::getWord('task', '');
     } else {
         $userFields = $this->_model->getUserInfoInUserFields($layoutName, $address_type, $virtuemart_userinfo_id);
         if (!$new && empty($userFields[$virtuemart_userinfo_id])) {
             $virtuemart_userinfo_id = $this->_model->getBTuserinfo_id();
             // 			vmdebug('Try to get $virtuemart_userinfo_id by type BT', $virtuemart_userinfo_id);
         }
         $userFields = $userFields[$virtuemart_userinfo_id];
         $task = 'editaddressST';
     }
     require_once JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_onepage' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'loader.php';
     /*
     if (!class_exists('VirtueMartCart'))
     	require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php');
     $this->cart = VirtueMartCart::getCart(); 
     */
     $OPCloader = new OPCloader();
     OPCloader::setRegType();
     $action_url = JURI::root(true) . '/index.php?option=com_onepage&amp;view=opc&amp;controller=opc&amp;task=opcregister&amp;nosef=1';
     require_once JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'javascript.php';
     OPCJavascript::getJavascript($this, $OPCloader, false, $action_url, 'com_onepage', 'opcregister');
     $OPCloader->customizeFieldsPerOPCConfig($userFields);
     OPCloader::loadJavascriptFiles($this);
     $op_formvars = OPCloader::getFormVars($this);
     /*
     	foreach ($userFields['fields'] as $key=>$val)
     {
        if (isset($val['formcode']))
     		{
     		
     		  $val['formcode'] .= $html; 
     		  break; 
     		  
     		}
     }
     */
     $this->assignRef('userFields', $userFields);
     if ($layoutName == 'edit') {
         if ($this->_model->getId() == 0 && $this->_cuid == 0) {
             $button_lbl = JText::_('COM_VIRTUEMART_REGISTER');
         } else {
             $button_lbl = JText::_('COM_VIRTUEMART_SAVE');
         }
         $this->assignRef('button_lbl', $button_lbl);
         $this->lUser();
         if (JVM_VERSION <= 2) {
             $this->shopper($userFields);
         } else {
             $this->shopper3($userFields);
         }
         $this->payment();
         $this->lOrderlist();
         $this->lVendor();
     }
     $this->_lists['shipTo'] = $this->generateStAddressList($this, $this->_model, $task, $cart);
     if ($this->_openTab < 0) {
         $_paneOffset = array();
     } else {
         if (defined('__VM_USER_USE_SLIDERS')) {
             $_paneOffset = array('startOffset' => $this->_openTab, 'startTransition' => 1, 'allowAllClose' => true);
         } else {
             $_paneOffset = array('startOffset' => $this->_openTab);
         }
     }
     // Implement the Joomla panels. If we need a ShipTo tab, make it the active one.
     // In tmpl/edit.php, this is the 4th tab (0-based, so set to 3 above)
     jimport('joomla.html.pane');
     $pane = OPCPane::getInstance(defined('__VM_USER_USE_SLIDERS') ? 'Sliders' : 'Tabs', $_paneOffset);
     $this->assignRef('lists', $this->_lists);
     $this->assignRef('editor', $editor);
     $this->assignRef('pane', $pane);
     if ($layoutName == 'mailregisteruser') {
         $vendorModel = VmModel::getModel('vendor');
         //			$vendorModel->setId($this->_userDetails->virtuemart_vendor_id);
         $vendor = $vendorModel->getVendor();
         $this->assignRef('vendor', $vendor);
     }
     if ($layoutName == 'editaddress') {
         $layoutName = 'edit_address';
         $this->setLayout($layoutName);
     }
     if (!$this->userDetails->JUser->get('id')) {
         $corefield_title = JText::_('COM_VIRTUEMART_USER_CART_INFO_CREATE_ACCOUNT');
     } else {
         $corefield_title = JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS');
     }
     if (strpos($this->fTask, 'cart') || strpos($this->fTask, 'checkout')) {
         $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE));
     } else {
         //$pathway->addItem(JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'), JRoute::_('index.php?option=com_virtuemart&view=user&&layout=edit'));
     }
     $pathway_text = JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS');
     if (!$this->userDetails->JUser->get('id')) {
         if (strpos($this->fTask, 'cart') || strpos($this->fTask, 'checkout')) {
             if ($address_type == 'BT') {
                 $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL');
             } else {
                 $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL');
             }
         } else {
             if ($address_type == 'BT') {
                 $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL');
                 $title = JText::_('COM_VIRTUEMART_REGISTER');
             } else {
                 $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL');
             }
         }
     } else {
         if ($address_type == 'BT') {
             $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_LBL');
         } else {
             $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL');
         }
     }
     $add_product_link = "";
     require_once JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_onepage' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'mini.php';
     if (OPCmini::isSuperVendor()) {
         $add_product_link = JRoute::_('/index.php?option=com_virtuemart&tmpl=component&view=product&view=product&task=edit&virtuemart_product_id=0');
         $add_product_link = $this->linkIcon($add_product_link, 'COM_VIRTUEMART_PRODUCT_ADD_PRODUCT', 'new', false, false, true, true);
     }
     $this->assignRef('add_product_link', $add_product_link);
     $document = JFactory::getDocument();
     $document->setTitle($pathway_text);
     $pathway->additem($pathway_text);
     $document->setMetaData('robots', 'NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET');
     $this->assignRef('page_title', $pathway_text);
     $this->assignRef('corefield_title', $corefield_title);
     $this->assignRef('vmfield_title', $vmfield_title);
     //   if ($onlyindex) return JURI::root(true).'/index.php';
     shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName);
     require_once JPATH_SITE . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_onepage' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'removemsgs.php';
     OPCremoveMsgs::removeMsgs($cart);
     $jsvalidator = $OPCloader->getJSValidatorScript($this);
     $op_userfields = $OPCloader->getBTfields($this);
     $registration_html = $OPCloader->getRegistrationHhtml($this);
     require_once JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_onepage' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'commonhtml.php';
     $reg_html = OPCCommonHtml::getFormVarsRegistration($OPCloader);
     $op_formvars = $reg_html . $jsvalidator;
     $op_userfields .= $op_formvars;
     $onsubmit = $op_onclick = $OPCloader->getJSValidator($this);
     $op_onclick = ' onclick="' . $op_onclick . '" ';
     ob_start();
     //parent::display($tpl);
     include_once JPATH_OPC . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'registration_templates.php';
     $html = ob_get_clean();
     //$html = str_replace('"com_virtuemart"', '"com_onepage"', $html);
     //$html = str_replace('=com_virtuemart', '=com_onepage', $html);
     $this->getActions($html);
     $html = $OPCloader->addListeners($html);
     echo $html;
     $extras = $OPCloader->getExtras($this);
     echo $extras;
 }