getPathway();
$document = JFactory::getDocument();
$document->setMetaData('robots','NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET');
// add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere
//vmJsApi::jPrice();
$layoutName = $this->getLayout();
if (!$layoutName) $layoutName = JRequest::getWord('layout', 'default');
$this->assignRef('layoutName', $layoutName);
$format = vRequest::getCmd('format');
if (!class_exists('VirtueMartCart'))
require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php');
$cart = VirtueMartCart::getCart();
//$cart->getCartPrices();
$this->assignRef('cart', $cart);
// this has been moved because of payment cart layout: the cart content is always displayed
if (!class_exists ('CurrencyDisplay')) {
require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php');
}
$currencyDisplay = CurrencyDisplay::getInstance($this->cart->pricesCurrency);
$this->assignRef('currencyDisplay',$currencyDisplay);
//Why is this here, when we have view.raw.php
if ($format == 'raw') {
$cart->prepareCartViewData();
JRequest::setVar('layout', 'mini_cart');
$this->setLayout('mini_cart');
$this->prepareContinueLink();
}
/*
if($layoutName=='edit_coupon'){
$cart->prepareCartViewData();
$this->lSelectCoupon();
$pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'),JRoute::_('index.php?option=com_virtuemart&view=cart'));
$pathway->addItem(JText::_('COM_VIRTUEMART_CART_SELECTCOUPON'));
$document->setTitle(JText::_('COM_VIRTUEMART_CART_SELECTCOUPON'));
} else */
if ($layoutName == 'select_shipment') {
$cart->prepareCartViewData();
if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php');
JPluginHelper::importPlugin('vmshipment');
$this->lSelectShipment();
$pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE));
$pathway->addItem(JText::_('COM_VIRTUEMART_CART_SELECTSHIPMENT'));
$document->setTitle(JText::_('COM_VIRTUEMART_CART_SELECTSHIPMENT'));
} else if ($layoutName == 'select_payment') {
/* Load the cart helper */
// $cartModel = VmModel::getModel('cart');
$cart->prepareCartViewData();
$this->lSelectPayment();
$pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE));
$pathway->addItem(JText::_('COM_VIRTUEMART_CART_SELECTPAYMENT'));
$document->setTitle(JText::_('COM_VIRTUEMART_CART_SELECTPAYMENT'));
} else if ($layoutName == 'order_done') {
VmConfig::loadJLang('com_virtuemart_shoppers', TRUE);
$this->lOrderDone();
$pathway->addItem(JText::_('COM_VIRTUEMART_CART_THANKYOU'));
$document->setTitle(JText::_('COM_VIRTUEMART_CART_THANKYOU'));
} else {
VmConfig::loadJLang('com_virtuemart_shoppers', TRUE);
$cart->prepareCartViewData();
if (VmConfig::get('enable_content_plugin', 0)) {
shopFunctionsF::triggerContentPlugin($cart->vendor, 'vendor','vendor_terms_of_service');
}
$cart->prepareAddressRadioSelection();
$this->prepareContinueLink();
$this->lSelectCoupon();
$totalInPaymentCurrency = $this->getTotalInPaymentCurrency();
$checkoutAdvertise =$this->getCheckoutAdvertise();
if (!$cart->_inCheckOut and !VmConfig::get('use_as_catalog', 0)) {
$cart->checkout(false);
}
if ($cart->getDataValidated()) {
if($this->cart->_inConfirm){
$pathway->addItem(vmText::_('COM_VIRTUEMART_CANCEL_CONFIRM_MNU'));
$document->setTitle(vmText::_('COM_VIRTUEMART_CANCEL_CONFIRM_MNU'));
$text = vmText::_('COM_VIRTUEMART_CANCEL_CONFIRM');
$this->checkout_task = 'cancel';
} else {
$pathway->addItem(vmText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU'));
$document->setTitle(vmText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU'));
$text = vmText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU');
$this->checkout_task = 'confirm';
}
} else {
$pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'));
$document->setTitle(JText::_('COM_VIRTUEMART_CART_OVERVIEW'));
$text = JText::_('COM_VIRTUEMART_CHECKOUT_TITLE');
$this->checkout_task = 'checkout';
}
$forceMethods=vRequest::getInt('forceMethods',false);
if (VmConfig::get('oncheckout_opc', 1) or $forceMethods) {
if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php');
JPluginHelper::importPlugin('vmshipment');
JPluginHelper::importPlugin('vmpayment');
$this->lSelectShipment();
$this->lSelectPayment();
} else {
$this->checkPaymentMethodsConfigured();
$this->checkShipmentMethodsConfigured();
}
if ($cart->virtuemart_shipmentmethod_id) {
$shippingText = JText::_('COM_VIRTUEMART_CART_CHANGE_SHIPPING');
} else {
$shippingText = JText::_('COM_VIRTUEMART_CART_EDIT_SHIPPING');
}
$this->assignRef('select_shipment_text', $shippingText);
if ($cart->virtuemart_paymentmethod_id) {
$paymentText = JText::_('COM_VIRTUEMART_CART_CHANGE_PAYMENT');
} else {
$paymentText = JText::_('COM_VIRTUEMART_CART_EDIT_PAYMENT');
}
$this->assignRef('select_payment_text', $paymentText);
if (!VmConfig::get('use_as_catalog')) {
//$checkout_link_html = '' . $text . '';
$checkout_link_html = '';
} else {
$checkout_link_html = '';
}
$this->assignRef('checkout_link_html', $checkout_link_html);
$layoutName = $this->cart->layout;
//set order language
$lang = JFactory::getLanguage();
$order_language = $lang->getTag();
$this->assignRef('order_language',$order_language);
}
//dump ($cart,'cart');
$useSSL = VmConfig::get('useSSL', 0);
$useXHTML = false;
$this->assignRef('useSSL', $useSSL);
$this->assignRef('useXHTML', $useXHTML);
$this->assignRef('totalInPaymentCurrency', $totalInPaymentCurrency);
$this->assignRef('checkoutAdvertise', $checkoutAdvertise);
// @max: quicknirty
$cart->setCartIntoSession();
//$this->setLayout($this->cart->layout);
shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName);
//We never want that the cart is indexed
$document->setMetaData('robots','NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET');
if($this->cart->_inConfirm) vmInfo('COM_VIRTUEMART_IN_CONFIRM');
if ($this->cart->layoutPath) {
$this->addTemplatePath($this->cart->layoutPath);
}
parent::display($tpl);
}
private function lSelectCoupon() {
$this->couponCode = (isset($this->cart->couponCode) ? $this->cart->couponCode : '');
$coupon_text = $this->cart->couponCode ? JText::_('COM_VIRTUEMART_COUPON_CODE_CHANGE') : JText::_('COM_VIRTUEMART_COUPON_CODE_ENTER');
$this->assignRef('coupon_text', $coupon_text);
}
/*
* lSelectShipment
* find al shipment rates available for this cart
*
* @author Valerie Isaksen
*/
private function lSelectShipment() {
$found_shipment_method=false;
$shipment_not_found_text = JText::_('COM_VIRTUEMART_CART_NO_SHIPPING_METHOD_PUBLIC');
$this->assignRef('shipment_not_found_text', $shipment_not_found_text);
$this->assignRef('found_shipment_method', $found_shipment_method);
$shipments_shipment_rates=array();
if (!$this->checkShipmentMethodsConfigured()) {
$this->assignRef('shipments_shipment_rates',$shipments_shipment_rates);
return;
}
$selectedShipment = (empty($this->cart->virtuemart_shipmentmethod_id) ? 0 : $this->cart->virtuemart_shipmentmethod_id);
$shipments_shipment_rates = array();
if (!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmpsplugin.php');
JPluginHelper::importPlugin('vmshipment');
$dispatcher = JDispatcher::getInstance();
$returnValues = $dispatcher->trigger('plgVmDisplayListFEShipment', array( $this->cart, $selectedShipment, &$shipments_shipment_rates));
// if no shipment rate defined
$found_shipment_method =count($shipments_shipment_rates);
if ($found_shipment_method== 0 AND empty($this->cart->BT)) {
$redirectMsg = JText::_('COM_VIRTUEMART_CART_ENTER_ADDRESS_FIRST');
$this->cart->setShipment(0);
if (VmConfig::get('oncheckout_opc', 1)) {
vmInfo($redirectMsg);
} else {
$mainframe = JFactory::getApplication();
$mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=user&task=editaddresscheckout&addrtype=BT'), $redirectMsg);
}
}
if(empty($selectedShipment)){
if($s_id = VmConfig::get('set_automatic_shipment',false)){
$j = 'radiobtn = document.getElementById("shipment_id_'.$s_id.'");
if(radiobtn!==null){ radiobtn.checked = true;}';
vmJsApi::addJScript('autoShipment',$j);
}
}
$shipment_not_found_text = JText::_('COM_VIRTUEMART_CART_NO_SHIPPING_METHOD_PUBLIC');
$this->assignRef('shipment_not_found_text', $shipment_not_found_text);
$this->assignRef('shipments_shipment_rates', $shipments_shipment_rates);
$this->assignRef('found_shipment_method', $found_shipment_method);
return;
}
/*
* lSelectPayment
* find al payment available for this cart
*
* @author Valerie Isaksen
*/
private function lSelectPayment() {
$payment_not_found_text='';
$this->assignRef('payment_not_found_text', $payment_not_found_text);
$paymentplugins_payments = array();
$this->assignRef('paymentplugins_payments', $paymentplugins_payments);
if (!$found_payment_method = $this->checkPaymentMethodsConfigured()) {
//return false;
} else {
$selectedPayment = empty($this->cart->virtuemart_paymentmethod_id) ? 0 : $this->cart->virtuemart_paymentmethod_id;
if(!class_exists('vmPSPlugin')) require(JPATH_VM_PLUGINS.DS.'vmpsplugin.php');
JPluginHelper::importPlugin('vmpayment');
$dispatcher = JDispatcher::getInstance();
$returnValues = $dispatcher->trigger('plgVmDisplayListFEPayment', array($this->cart, $selectedPayment, &$paymentplugins_payments));
// if no payment defined
$found_payment_method =count($paymentplugins_payments);
}
$this->assignRef('found_payment_method', $found_payment_method);
if (!$found_payment_method) {
$link=''; // todo
$payment_not_found_text = JText::sprintf('COM_VIRTUEMART_CART_NO_PAYMENT_METHOD_PUBLIC', ''.$link.'');
$this->assignRef('payment_not_found_text', $payment_not_found_text);
$this->cart->setPaymentMethod(0);
}
else if ($found_payment_method== 0 AND empty($this->cart->BT)) {
$redirectMsg = JText::_('COM_VIRTUEMART_CART_ENTER_ADDRESS_FIRST');
if (VmConfig::get('oncheckout_opc', 1)) {
vmInfo($redirectMsg);
} else {
$mainframe = JFactory::getApplication();
$mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=user&task=editaddresscheckout&addrtype=BT'), $redirectMsg);
}
}
if(empty($selectedPayment)){
if($p_id = VmConfig::get('set_automatic_payment',false)){
$j = 'radiobtn = document.getElementById("payment_id_'.$p_id.'");
if(radiobtn!==null){ radiobtn.checked = true;}';
vmJsApi::addJScript('autoPayment',$j);
}
}
}
private function getTotalInPaymentCurrency() {
if (empty($this->cart->virtuemart_paymentmethod_id)) {
return null;
}
if (!$this->cart->paymentCurrency or ($this->cart->paymentCurrency==$this->cart->pricesCurrency)) {
return null;
}
$paymentCurrency = CurrencyDisplay::getInstance($this->cart->paymentCurrency);
$totalInPaymentCurrency = $paymentCurrency->priceDisplay( $this->cart->pricesUnformatted['billTotal'],$this->cart->paymentCurrency) ;
$currencyDisplay = CurrencyDisplay::getInstance($this->cart->pricesCurrency);
// $this->assignRef('currencyDisplay',$currencyDisplay);
return $totalInPaymentCurrency;
}
/*
* Trigger to place Coupon, payment, shipment advertisement on the cart
*/
private function getCheckoutAdvertise() {
$checkoutAdvertise=array();
JPluginHelper::importPlugin('vmcoupon');
JPluginHelper::importPlugin('vmpayment');
JPluginHelper::importPlugin('vmshipment');
$dispatcher = JDispatcher::getInstance();
$returnValues = $dispatcher->trigger('plgVmOnCheckoutAdvertise', array( $this->cart, &$checkoutAdvertise));
return $checkoutAdvertise;
}
private function lOrderDone() {
$display_title = vRequest::getBool('display_title',true);
$this->assignRef('display_title', $display_title);
// Do not change this. It contains the payment form
$this->html = vRequest::get('html', JText::_('COM_VIRTUEMART_ORDER_PROCESSED') );
//Show Thank you page or error due payment plugins like paypal express
}
private function checkPaymentMethodsConfigured() {
//For the selection of the payment method we need the total amount to pay.
$paymentModel = VmModel::getModel('Paymentmethod');
$this->payments = $paymentModel->getPayments(true, false);
if (empty($this->payments)) {
$text = '';
if (!class_exists('Permissions'))
require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php');
if (Permissions::getInstance()->check("admin,storeadmin")) {
$uri = JFactory::getURI();
$link = $uri->root() . 'administrator/index.php?option=com_virtuemart&view=paymentmethod';
$text = JText::sprintf('COM_VIRTUEMART_NO_PAYMENT_METHODS_CONFIGURED_LINK', '' . $link . '');
}
vmInfo('COM_VIRTUEMART_NO_PAYMENT_METHODS_CONFIGURED', $text);
$tmp = 0;
$this->assignRef('found_payment_method', $tmp);
$this->cart->virtuemart_paymentmethod_id = 0;
return false;
}
return true;
}
private function checkShipmentMethodsConfigured() {
//For the selection of the shipment method we need the total amount to pay.
$shipmentModel = VmModel::getModel('Shipmentmethod');
$shipments = $shipmentModel->getShipments();
if (empty($shipments)) {
$text = '';
if (!class_exists('Permissions'))
require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php');
if (Permissions::getInstance()->check("admin,storeadmin")) {
$uri = JFactory::getURI();
$link = $uri->root() . 'administrator/index.php?option=com_virtuemart&view=shipmentmethod';
$text = JText::sprintf('COM_VIRTUEMART_NO_SHIPPING_METHODS_CONFIGURED_LINK', '' . $link . '');
}
vmInfo('COM_VIRTUEMART_NO_SHIPPING_METHODS_CONFIGURED', $text);
$tmp = 0;
$this->assignRef('found_shipment_method', $tmp);
$this->cart->virtuemart_shipmentmethod_id = 0;
return false;
}
return true;
}
function getUserList() {
$db = JFactory::getDbo();
$q = 'SELECT * FROM #__users ORDER BY name';
$db->setQuery($q);
$result = $db->loadObjectList();
foreach($result as $user) {
$user->displayedName = $user->name .' ( '. $user->username .' )';
}
return $result;
}
}
//no closing tag