public function plgVmDisplayListFEShipmentOPC(&$cart, $selected = 0, &$htmlIn) { if (!isset($cart->vendorId)) { $cart->vendorId = 1; } if ($this->_type != 'vmshipment') { return; } $pluginmethod_id = $this->_idName; //virtuemart_shipmentmethod_id $pluginName = $this->_psType . '_name'; // shipment_name $pluginName = $this->_name; $data = array($selected, $pluginmethod_id, $pluginName); $hash = OPCcache::getGeneralCacheHash('plgVmDisplayListFEShipment', $cart, $data); $val = OPCcache::getValue($hash); VmPlugin::$iCount++; if (!empty($val)) { if (empty($val[0])) { break; //return $val[0]; } else { foreach ($val[1] as $vala) { $htmlIn[] = $vala; } return true; } } $htmlIn2 = array(); $val = $this->plgVmDisplayListFEShipmentOPCNocache($cart, $selected, $htmlIn2); $html = ''; if (is_array($htmlIn2)) { foreach ($htmlIn2 as $h) { if (is_array($h)) { foreach ($h as $h2) { $html .= $h2; } } else { $html .= $h; } } } else { $html = $htmlIn2; } if (!empty($html) || stripos($html, 'virtuemart_shipmentmethod_id') !== false) { if (stripos($html, 'error') === false) { $val2 = OPCcache::setValue($hash, array($val, $htmlIn2)); } } if (!empty($htmlIn2)) { $htmlIn = array_merge($htmlIn, $htmlIn2); } return $val; }
/** * Calculates the effecting Shipment prices for the calculation * @copyright (c) 2009 VirtueMart Team. All rights reserved. * @author Max Milbers * @author Valerie Isaksen * @param $code The Id of the coupon * @return $rules ids of the coupons */ function calculateShipmentPrice($cart, $ship_id, $checkAutomaticSelected = true) { $val = OPCcache::getValue(calculationHelperOPC::$_forhash); if (!empty($val)) { $this->_cartData['shipmentName'] = $val['shipmentName']; OPCcache::arrayMerge($this->_cartPrices, $val); return $this->_cartPrices; } $this->_cartData['shipmentName'] = JText::_('COM_VIRTUEMART_CART_NO_SHIPMENT_SELECTED'); $this->_cartPrices['shipmentValue'] = 0; //could be automatically set to a default set in the globalconfig $this->_cartPrices['shipmentTax'] = 0; $this->_cartPrices['salesPriceShipment'] = 0; $this->_cartPrices['shipment_calc_id'] = 0; // check if there is only one possible shipment method $automaticSelectedShipment = $cart->CheckAutomaticSelectedShipment($this->_cartPrices, $checkAutomaticSelected); if ($automaticSelectedShipment) { $ship_id = $cart->virtuemart_shipmentmethod_id; } if (empty($ship_id)) { $arr = OPCcache::getSearch('shipment', $this->_cartPrices); $arr['shipmentName'] = $this->_cartData['shipmentName']; $val = OPCcache::setValue(calculationHelperOPC::$_forhash, $arr); return $this->_cartPrices; } // Handling shipment plugins if (!class_exists('vmPSPlugin')) { require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'; } JPluginHelper::importPlugin('vmshipment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmonSelectedCalculatePriceShipment', array($cart, &$this->_cartPrices, &$this->_cartData['shipmentName'])); /* * Plugin return true if shipment rate is still valid * false if not any more */ $shipmentValid = 0; foreach ($returnValues as $returnValue) { $shipmentValid += $returnValue; } if (!$shipmentValid) { $cart->virtuemart_shipmentmethod_id = 0; $cart->setCartIntoSession(); } // store the cached response $arr = OPCcache::getSearch('shipment', $this->_cartPrices); $arr['shipmentName'] = $this->_cartData['shipmentName']; $val = OPCcache::setValue(calculationHelperOPC::$_forhash, $arr); return $this->_cartPrices; }