function osePointedRedirection($sefroutemethod, $menu, $isSSL = false) { $mainframe =& JFactory::getApplication(); if ($mainframe->isAdmin()) { return; } $version = oseHtml::getJoomlaVersion(); if ($menu->type == 'url') { $return = $menu->link; } elseif ($menu->type == 'alias') { $menuParams = oseJson::decode($menu->params); $aMenuId = $menuParams->aliasoptions; $aMenu = JSite::getMenu(true)->getItem($aMenuId); return osePointedRedirection($sefroutemethod, $aMenu); } else { switch ($sefroutemethod) { default: case 0: $redURL = $menu->link . "&Itemid=" . $menu->id; break; case 1: $return = $redURL = JRoute::_($menu->link . "&Itemid=" . $menu->id, false); break; case 2: $jConfig = JFactory::getConfig(); if ($version >= '1.6') { if ($jConfig->get('sef_rewrite')) { $redURL = JRoute::_(oseGetValue($menu, 'path')); } else { $redURL = "index.php/" . JRoute::_(oseGetValue($menu, 'path')); } } else { static $menuPath; $parent_id = oseGetValue($menu, 'parent'); if (empty($menuPath)) { $menuPath = array(); array_unshift($menuPath, $menu->alias); } if ($parent_id != 0) { //$aMenu = JSite::getMenu(true)->getItem($parent_id); $db = oseDB::instance(); $query = " SELECT * FROM `#__menu`" . " WHERE id = '{$parent_id}'"; $db->setQuery($query); $aMenu = oseDB::loadItem('obj'); array_unshift($menuPath, $aMenu->alias); $redURL = osePointedRedirection($sefroutemethod, $aMenu); return $redURL; } else { if (!is_array($menuPath)) { $menuPath = array($menuPath); } $menuPath = implode('/', $menuPath); if ($jConfig->getValue('sef_rewrite')) { $redURL = JRoute::_($menuPath); } else { $redURL = "index.php/" . JRoute::_($menuPath); } } } break; } } if (strpos($redURL, 'http') === false && $sefroutemethod != 1) { $return = JURI::root() . $redURL; } return $return; }
function refreshCartItems($items = array(), $currency = null) { $user = JFactory::getUser(); $member = oseRegistry::call('member'); $items = $this->get('items'); $currency = $this->get('currency'); if (!$user->guest) { $member->instance($user->id); $checkRenew = true; } else { $checkRenew = false; } if (count($items) > 0) { $msc = oseRegistry::call('msc'); foreach ($items as $key => $item) { $title = oseObject::getValue($item, 'title'); $entry_type = oseObject::getValue($item, 'entry_type'); $item = oseObject::setValue($item, 'isRenew', false); switch ($entry_type) { case 'msc': $msc_id = oseObject::getValue($item, 'entry_id'); $msc_option = oseObject::getValue($item, 'msc_option'); $mscInfo = $msc->getPaymentMscInfo($msc_id, $currency, $msc_option); if (empty($mscInfo)) { unset($items[$key]); break; } $item = array_merge($item, $mscInfo); if (oseObject::getValue($item, 'eternal')) { $this->updateParams('payment_mode', 'm'); } if ($checkRenew) { $hasHistory = $member->hasHistory(array('join', 'activate', 'renew'), oseObject::getValue($item, 'id'), null); //echo oseDB::instance()->_sql; if ($this->getParams('payment_mode') == 'm') { if ($hasHistory) { $item = oseObject::setValue($item, 'isRenew', true); if (oseObject::getValue($item, 'has_trial')) { $total = oseObject::getValue($item, 'standard_raw_price', '0'); $item = oseObject::setValue($item, 'has_trial', 0); $item = oseObject::setValue($item, 'first_raw_price', $total); $item = oseObject::setValue($item, 'first_price', $currency . ' ' . $total); } } else { $item = oseObject::setValue($item, 'standard_renewal_raw_price', oseObject::getValue($item, 'standard_raw_price')); $item = oseObject::setValue($item, 'standard_renewal_price', $currency . ' ' . oseObject::getValue($item, 'standard_raw_price')); } } else { if ($hasHistory) { $item = oseObject::setValue($item, 'isRenew', true); if (oseObject::getValue($item, 'has_trial')) { $total = oseObject::getValue($item, 'standard_raw_price', '0'); $item = oseObject::setValue($item, 'has_trial', 0); $item = oseObject::setValue($item, 'first_raw_price', $total); $item = oseObject::setValue($item, 'first_price', $currency . ' ' . $total); } } $item = oseObject::setValue($item, 'standard_renewal_raw_price', oseObject::getValue($item, 'standard_raw_price')); $item = oseObject::setValue($item, 'standard_renewal_price', $currency . ' ' . oseObject::getValue($item, 'standard_raw_price')); } } else { if ($this->getParams('payment_mode') == 'm') { $item = oseObject::setValue($item, 'isRenew', false); if (oseObject::getValue($item, 'has_trial')) { $total = oseObject::getValue($item, 'standard_raw_price', '0'); $item = oseObject::setValue($item, 'has_trial', 0); $item = oseObject::setValue($item, 'first_raw_price', $total); $item = oseObject::setValue($item, 'first_price', $currency . ' ' . $total); } } $item = oseObject::setValue($item, 'standard_renewal_raw_price', oseObject::getValue($item, 'standard_raw_price')); $item = oseObject::setValue($item, 'standard_renewal_price', $currency . ' ' . oseObject::getValue($item, 'standard_raw_price')); } break; case 'license': $license_key = oseObject::getValue($item, 'entry_id'); $license = oseRegistry::call('lic')->getInstance(0); $licenseInfo = $license->getKeyInfo($license_key, 'obj'); $licenseInfoParams = oseJson::decode(oseObject::getValue($licenseInfo, 'params')); $mscInfo = oseRegistry::call('msc')->getPaymentMscInfo($licenseInfo->msc_id, $currency, $licenseInfoParams->msc_option); if (empty($mscInfo)) { unset($items[$key]); break; } $item = array_merge($item, $mscInfo); if (oseObject::getValue($item, 'eternal')) { $this->updateParams('payment_mode', 'm'); } //$extLicInfo = $msc->getExtInfo(oseObject::getValue($licenseInfoParams,'msc_id'),'lic','obj'); $discount_num = oseObject::getValue($licenseInfoParams, 'discount', 0); $discount_type = oseObject::getValue($licenseInfoParams, 'discount_type', 'rate'); $priceSystem = oseRegistry::call('payment')->getInstance('Price'); $priceSystem->setSelectedCurrency($currency); $total = $priceSystem->discount(oseObject::getValue($mscInfo, 'standard_raw_price'), $discount_num, $discount_type); $total = number_format($total, 2, '.', ''); $item = oseObject::setValue($item, 'msc_option', $licenseInfoParams->msc_option); if (oseObject::getValue($item, 'has_trial')) { $firstPrice = oseObject::getValue($item, 'standard_raw_price', '0'); //$item = oseObject::setValue($item,'has_trial',0); $item = oseObject::setValue($item, 'first_raw_price', $firstPrice); $item = oseObject::setValue($item, 'first_price', $currency . ' ' . $firstPrice); } $item = oseObject::setValue($item, 'standard_renewal_raw_price', $total); $item = oseObject::setValue($item, 'standard_renewal_price', $currency . ' ' . $total); break; default: return array(); break; } $mscInfoParams = oseJson::decode(oseObject::getValue($mscInfo, 'params', '{}')); $db = oseDB::instance(); if (!oseObject::getValue($mscInfoParams, 'after_payment_menuid', false)) { $query = " SELECT * FROM `#__menu`" . " WHERE `link` LIKE 'index.php?option=com_osemsc&view=member'"; $db->setQuery($query); $mItem = oseDB::loadItem('obj'); if (empty($mItem)) { $link = JURI::root() . "index.php?option=com_osemsc&view=member"; } else { $jConfig = JFactory::getConfig(); if (JOOMLA16) { $sef = $jConfig->get('sef') ? 2 : 0; } else { $sef = $jConfig->getValue('sef') ? 2 : 0; } $link = osePointedRedirection($sef, $mItem); //$link = "index.php?option=com_osemsc&view=member&Itemid={$mItem->id}"; } } else { $query = " SELECT * FROM `#__menu`" . " WHERE id = '{$mscInfoParams->after_payment_menuid}'"; $db->setQuery($query); $mItem = oseDB::loadItem('obj'); //@ todo $jConfig = JFactory::getConfig(); if (JOOMLA16) { $sef = $jConfig->get('sef') ? 2 : 0; } else { $sef = $jConfig->getValue('sef') ? 2 : 0; } $link = osePointedRedirection($sef, $mItem); //$link = $mItem->link."&Itemid={$mItem->id}"; } //*/ $this->updateParams('returnUrl', urlencode($link)); //oseExit($item); $items[$key] = $item; } $this->set('items', $items); $this->refreshSubTotal(); } return $items; }