Пример #1
0
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;
}
Пример #2
0
 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;
 }