HEX
Server: Apache
System: Linux 4485441ca2e2 6.8.0-1039-aws #41~22.04.1-Ubuntu SMP Thu Sep 11 11:03:07 UTC 2025 aarch64
User: (1000)
PHP: 8.2.24
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/plugins/ganryu_shop/action/Shopping.php
<?php

require_once dirname(__FILE__).'/Abstract.php';

class ganryu_shop_action_Shopping extends ganryu_shop_action_Abstract{


	function globalTitle($page=null){
		if ($page){
			switch($page){
			case "itemlist":
				return "買う | ";
			case "itemdetail":
				return "アイテム詳細 | ";
			case "cartlist":
				return "カートを見る | ";
			case "cartpay":
				return "カート:お客様情報の入力 | ";
			case "cartconfirm":
				return "カート:ご注文内容のご確認 | ";
			case "cartcomplete":
				return "カート:購入完了 | ";
			case "address_list":
			case "address_edit":
			case "address_add":
				return "お届け先の変更・追加 | ";
			case "favlist":
				return "お気に入り一覧 | ";
			case "purchaselog":
				$deliv_status = $this->g('deliv_status');
				if($deliv_status != "after"){
					return "発送前商品 | ";
				}
				return "発送済み商品 | ";
			case "purchasedetail":
				return "購入商品詳細 | ";
			case "pointlog":
				return "ポイント履歴 | ";
			}
		}
		
		return  wp_title( '|', false, 'right' );
	}
	
	function globalSnsUrl(){
		$curuser = $this->currentUser();
		$userid = $curuser->get('ID');
		$snss = array('tw','fb','hb','gp','pk');
		$url = array();
		foreach ($snss as $sns){
			$url[$sns] = get_permalink();
		}
		$articleid = get_the_ID();
		if ($userid && $articleid){
			$share = $this->loadModel('Share');
			$res = $share->getShareCode($userid, 1, $articleid, $snss);
			if ($res === false){
				return null;
			}
			$snsdt = $res;
			$gensns = array();
			foreach ($snss as $sns){
				if (!array_key_exists($sns, $snsdt)){
					$gensns[] = $sns;
				}
			}
			
			if ($gensns){
				$this->begin();
				
				$res = $share->createShareCode($userid, 1, $articleid, $gensns);
				if ($res === false){
					$this->finish();
					return $url;
				}
				
				$this->finish(true);
				
				$snsdt = array_merge($snsdt, $res);
			}
			
			foreach ($snsdt as $sns=>$code){
				$url[$sns] = home_url().'/?grys_action=rd&s='.$code;
			}
		}
		
		$url['title'] = get_the_title();
		return $url;
	}
	
	function eps(){
		$tcode = $this->g('trans_code');
		if ($tcode === null){
			$code = $this->g('order_number');
			if ($code && strlen($code) >= 3 && substr($code, 0, 3) == "GRY"){
				wp_redirect(home_url().'/shopping?page_action=cartconfirm');
				exit;
			}
			else if ($code && strlen($code) >= 3 && substr($code, 0, 3) == "GRF"){
				wp_redirect(home_url().'/member/fan_sign_up');
				exit;
			}
		}
		else {
			$errmsg = "クレジット決済後の処理でエラーが発生しました";
			$code = $this->g('order_number');
			if (!$code || strlen($code) < 3){
				print $errmsg;
				exit;
			}
			if (substr($code, 0, 3) != "GRY" && substr($code, 0, 3) != "GRF"){
				print $errmsg;
				exit;
			}


			$code = $this->g('order_number');
			$result = $this->g('result');
			$status = $this->g('state');
			$paymedia = $this->g('payment_code');
			$eps_userid = $this->g('userid');
			
			if ($result != 1 && $status != 1){
				print $errmsg;
				exit;
			}
			if (!$paymedia) $paymedia = 1;
			
			$cf = $this->loadModel('Config');
			$eps_target = $cf->getConfig('eps_connect');
			$res = grys_eps_getsales($eps_target, $code);
			if (!$res){
				print $errmsg;
				exit;
			}

			if ($code && strlen($code) >= 3 && substr($code, 0, 3) == "GRY"){
				$ss = grys_get_shopping_value("shopping_session");

				if (!$ss){
					print $errmsg;
					exit;
				}
			
				$cachename = grys_get_shopping_value('cachename', $ss);

				$c = $this->loadModel('Session');
				$res = $c->getSession($cachename);
				if (!$res){
					print $errmsg;
					exit;
				}
				$ssdata = $res;
				$ssdata['pay_purchasecode'] = $code;
				$ssdata['pay_media'] = $paymedia;
				$this->begin();
				$res = $c->setSession($cachename, $ssdata, grys_get_shopping_value('cacheexpire'));
				if (!$res){
					print $errmsg;
					exit;
				}
				$this->finish(true);
				grys_set_shopping_cookie($ss);
				
				wp_redirect(home_url().'/shopping?page_action=cartcomplete&eps=1');
			}
			else if ($code && strlen($code) >= 3 && substr($code, 0, 3) == "GRF"){
				$ss = grys_get_fanclub_value("fanclub_session");

				if (!$ss){
					print $errmsg;
					exit;
				}
			
				$cachename = grys_get_fanclub_value('cachename', $ss);

				$c = $this->loadModel('Session');
				$res = $c->getSession($cachename);
				if (!$res){
					print $errmsg;
					exit;
				}
				$ssdata = $res;
				$ssdata['pay_purchasecode'] = $code;
				$ssdata['pay_media'] = $paymedia;
				$this->begin();
				$res = $c->setSession($cachename, $ssdata, grys_get_fanclub_value('cacheexpire'));
				if (!$res){
					print $errmsg;
					exit;
				}
				$this->finish(true);
				grys_set_fanclub_cookie($ss);

				wp_redirect(home_url().'/member/fan_sign_up_complete?eps=1');
			}
			exit;
		}
		
		exit;
	}
	
	function rd(){
		$s = $this->g('s');
		$share = $this->loadModel('Share');
		$res = $share->getShareFromCode($s);
		if (!$res){
			wp_redirect(home_url());
			exit;
		}
		$sdata = $res;
		$adata = get_post($res['articleid']);
		if (strlen($adata->post_type) > 4 && substr($adata->post_type,0,4)=='grjm'){
			$url = home_url().'/?'.$adata->post_type.'='.$adata->post_name;
		}
		else{
			$url = get_permalink($adata);
		}
		grys_set_cookie('share_red_ss', $s, 0);
		grys_set_cookie('share_red_ref', isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:"", 0);
		wp_redirect($url);
		exit;
	}

	function rd_set(){
		global $grys_boot;
		$s = null;
		if (array_key_exists('share_red_ss', $_COOKIE)){
			$s = $_COOKIE['share_red_ss'];
		}
		if (!$s){
			return;
		}

		if (!$grys_boot->uniqSession){
			return;
		}
		if ($grys_boot->uniqSession['generated']){
			return;
		}
		$uss = $grys_boot->uniqSession['session'];

		$share = $this->loadModel('Share');
		$res = $share->getShareFromCode($s);
		if (!$res){
			return;
		}
		$sdata = $res;
		$curuser = $this->currentUser();
		$userid = $curuser->get('ID');
		if ($sdata['userid'] != $userid){
	
			$logdata = array(
				'shareid'=>$sdata['shareid'],
				'userid'=>$userid,
				'uniq_session'=>$uss,
				'referer'=>isset($_COOKIE['share_red_ref'])?$_COOKIE['share_red_ref']:null
			);
			$this->begin();
			$res = $share->addLog($logdata);
			if (!$res){
				return;
			}
			
			$this->finish(true);
		}
		
		grys_set_cookie('share_red_ss', '', 0);
		grys_set_cookie('share_red_ref', '', 0);
	}

	function itemlist(){
		$data = array();
		$data['itp'] = $this->g('itp');
		
		$itm = $this->loadModel('Item');
		$pg = $this->g('pg');
		$pg = ($pg <= 1)?1:$pg;
		$res = $itm->searchItem($pg, 40, $data);
		if (!$res){
			return ;
		}
		$result = $res;
		$cf = $this->loadModel('Config');
		$res = $cf->getCurrentTax();
		if (!$res){
			return;
		}
		$tax = $res;
		$list =& $result['list'];
		for($i = 0; $i < count($list); $i++){
			$list[$i]['price_min_tax'] = (int)($res*$list[$i]['price_min']*0.01);
			$list[$i]['price_max_tax'] = (int)($res*$list[$i]['price_max']*0.01);
		}
		
		$tmpldata = array('result'=>$result, 'data'=>$data);
		$this->frontTemplate("ganryu_shop/itemlist", $tmpldata);
	}


	function itemdetail(){
		$curuser = $this->currentUser();
		$userid = $curuser->get('ID');
		
		$itemid = $this->g('itemid');
	
		$itm = $this->loadModel('Item');
		$res = $itm->getItem($itemid);
		if (!$res){
			echo "ERROR:アイテムが見つかりません";
			return;
		}
		$itemdata = $res;
		if ($itemdata['deleted']){
			echo "ERROR:アイテムが見つかりません";
			return;
		}
		if ($itemdata['is_close'] && $userid != 1){
			echo "ERROR:アイテムが見つかりません";
			return;
		}
		$pointrate = $itemdata['point_rate'];
		if (strlen($pointrate) == 0){
			$cf = $this->loadModel('Config');
			$pointrate = $cf->getConfig('point_rate_base');
		}
		$ptmin = (int)($itemdata['price_min'] * $pointrate /100);
		$ptmax = (int)($itemdata['price_max'] * $pointrate /100);
		$itemdata['point_min'] = $ptmin;
		$itemdata['point_max'] = $ptmax;

		$cf = $this->loadModel('Config');
		$res = $cf->getCurrentTax();
		if (!$res){
			return;
		}
		$tax = $res;
		$itemdata['price_min_tax'] = (int)($res*$itemdata['price_min']*0.01);
		$itemdata['price_max_tax'] = (int)($res*$itemdata['price_max']*0.01);
		
		$res = $itm->getCategorySetup($itemid);
		if ($res === false){
			echo "ERROR:アイテムが見つかりません";
			return;
		}
		$catelist = $res;
		
		$res = $itm->getSubitemList($itemid);
		if ($res === false){
			echo "ERROR:アイテムが見つかりません";
			return;
		}
		$subitemlist = $res;
		for($i = 0; $i < count($subitemlist); $i++){
			$subitemlist[$i]['subprice_tax'] = (int)($subitemlist[$i]['subprice']*$tax*0.01);
		}
		
		$cateconf = $itm->generateCategoryConfig($catelist, $subitemlist);
		
		if ($userid){
			$res = $itm->getItemFav($userid, $itemid);
			if ($res === false){
				echo "ERROR:アイテムが見つかりません";
				return;
			}
			$itemdata['isfav'] = $res;
		}
		$tmpldata = array('item'=>$itemdata, 'cateconf'=>$cateconf, 'catelist'=>$catelist);
		$this->frontTemplate("ganryu_shop/itemdetail", $tmpldata);
	}
	
	
	function cartlist(){
		$confback = $this->g('confback');
		if (!$confback){
			$ss = grys_get_shopping_value('shopping_session');
			if ($ss){
				$sskey = grys_get_shopping_value('cachename', $ss);
				$so = $this->loadModel('Session');
				$res = $so->getSession($sskey);
				if ($res){
					$ssdata = $res;
					if (array_key_exists('isguest', $ssdata)){
						$this->begin();
						
						unset($ssdata['isguest']);
						
						$res = $so->setSession($sskey, $ssdata, grys_get_shopping_value('cacheexpire'));
						if (!$res){
							$this->error();
							return;
						}
					
						$this->finish(true);
					}
				}
			}
		}

		$this->frontTemplate('ganryu_shop/cartlist', array());
	}
	
	function cartpay(){
		$ss = grys_get_shopping_value('shopping_session');
		if (!$ss){
			$this->error('始めからやりなおしてください');
			return;
		}
		$sskey = grys_get_shopping_value('cachename', $ss);
		$so = $this->loadModel('Session');
		$res = $so->getSession($sskey);
		if (!$res){
			$this->error('始めからやりなおしてください');
			return;
		}
		$ssdata = $res;
		
		$curuser = $this->currentUser();
		$userid = $curuser->get('ID');
		if (!$userid){
			$isguest = $this->g('isguest');
			if ($isguest && !isset($ssdata['isguest'])){
				$this->begin();
				$ssdata['isguest'] = 1;
				
				$res = $so->setSession($sskey, $ssdata, grys_get_shopping_value('cacheexpire'));
				if (!$res){
					$this->error();
					return;
				}
				
				$this->finish(true);
			}
			if (!isset($ssdata['isguest']) || !$ssdata['isguest']){
				$this->frontTemplate('ganryu_shop/cartpay_login', array());
				return;
			}
		}

		$cartck = $ssdata['cartitem'];
		$itm = $this->loadModel('Item');
		$itemlist = array();
		$total = 0;
		$count = 0;
		$iids = array();
		if ($cartck){
			$iids = preg_split('/,/', $cartck);
		}
		foreach ($iids as $iid){
			if (strpos($iid, ".")){
				$ar = preg_split('/\./', $iid, 2);
			}
			else{
				$ar = array($iid, 1);
			}
			$res = $itm->getSubitem($iid);
			if (!$res){
				continue;
			}
			if ($res['is_close']){
				continue;
			}
			if ($res['deleted']){
				continue;
			}
			$subitem = $res;
			$res = $itm->getItem($subitem['itemid']);
			if (!$res){
				continue;
			}
			if ($res['is_close']){
				continue;
			}
			if ($res['deleted']){
				continue;
			}
			$itemlist[] = array('item'=>$res, 'subitem'=>$subitem, 'count'=>$ar[1]);
			$total += $subitem['subprice'] * $ar[1];
			$count += $ar[1];
		}
		
		$addresslist = array();
		
		if ($curuser){
			$userid = $curuser->get('ID');
			
			$addr = $this->loadModel('Address');
			$res = $addr->getAddressList($userid);
			if ($res === false){
				return;
			}
			$addresslist = $res;
		}
		
		$tmpldata = array(
			'cartck'=>$cartck,
			'total'=>$total,
			'count'=>$count,
			'itemlist'=>$itemlist,
			'addresslist'=>$addresslist,
			'ssdata'=>$ssdata,
		);
		$this->frontTemplate('ganryu_shop/cartpay', $tmpldata);
	}


	function cartconfirm(){
		$ss = grys_get_shopping_value('shopping_session');
		if (!$ss){
			$this->error('始めからやりなおしてください');
			return;
		}
		$sskey = grys_get_shopping_value('cachename', $ss);
		$so = $this->loadModel('Session');
		$res = $so->getSession($sskey);
		if (!$res){
			$this->error('始めからやりなおしてください');
			return;
		}
		$ssdata = $res;
		
		$cf = $this->loadModel('Config');
		$res = $cf->getCurrentTax();
		if (!$res){
			return;
		}
		$tax = $res;

		$res = $cf->getConfig('point_rate_base');
		if ($res === false){
			$this->error();
			return;
		}
		$prate_base = $res+0;

		$curuser = $this->currentUser();
		$userid = $curuser->get('ID');

		$cartck = $ssdata['cartitem'];
		$itm = $this->loadModel('Item');
		$itemlist = array();
		$total = 0;
		$count = 0;
		$point = 0;
		$iids = array();
		if ($cartck){
			$iids = preg_split('/,/', $cartck);
		}
		$stockerr = false;
		$delivcosttype = -1;
		$taxtotal = 0;
		foreach ($iids as $iid){
			if (strpos($iid, ".")){
				$ar = preg_split('/\./', $iid, 2);
			}
			else{
				$ar = array($iid, 1);
			}
			$res = $itm->getSubitem($ar[0]);
			if (!$res){
				continue;
			}
			if ($res['is_close']){
				continue;
			}
			if ($res['deleted']){
				continue;
			}
			$subitem = $res;
			$subitem['subprice_tax'] = (int)($subitem['subprice']*$tax*0.01);
			if (!$subitem['stock_nolimit'] && $subitem['stock_count'] < $ar[1]){
				$stockerr = true;
				$subitem['stockerr'] = true;
			}
			$res = $itm->getItem($subitem['itemid']);
			if (!$res){
				continue;
			}
			if ($res['is_close']){
				continue;
			}
			if ($res['deleted']){
				continue;
			}
			if ($delivcosttype == -1){
				$delivcosttype = $res['deliv_cost_type'];
			}
			else{
				if (($delivcosttype == 1 && $res['deliv_cost_type'] == 0
				 || $delivcosttype == 0 && $res['deliv_cost_type'] == 1)){
					$delivcosttype = 2;
				}
			}
			
			$item = $res;
			$pt = 0;
			if ($userid){
				$prate = $item['point_rate'];
				if (strlen($prate) == 0){
					$prate = $prate_base;
				}
				$pt = (int)($subitem['subprice'] * $ar[1] * $prate / 100);
			}
			$item['labels'] = $itm->getCategorySetupLabels($item['itemid']);
			$subitem['cates'] = array();
			if ($subitem['category1']){
				$subitem['cates'][] = $itm->getItemCategory($subitem['category1']);
			}
			if ($subitem['category2']){
				$subitem['cates'][] = $itm->getItemCategory($subitem['category2']);
			}
			
			$itemlist[] = array('item'=>$item, 'subitem'=>$subitem, 'count'=>$ar[1], 'pt'=>$pt);
			$total += $subitem['subprice'] * $ar[1];
			$taxtotal += $subitem['subprice_tax'] * $ar[1];
			$count += $ar[1];
			$point += $pt;
		}
		
		if (!isset($ssdata['address'])){
			$this->error();
			return;
		}
		
		$adr = $this->loadModel('Address');
		if (isset($ssdata['address']['addressid']) && $ssdata['address']['addressid']){
			$userid = $curuser->get('ID');
			if (!$userid){
				$this->error();
				return;
			}
			$res = $adr->getAddress($ssdata['address']['addressid']);
			if (!$res){
				$this->error();
				return;
			}
			if ($res['userid'] != $userid){
				$this->error();
				return;
			}
			$address = $res;
		}
		else{
			$address = $ssdata['address'];
		}
		
		$cf = $this->loadModel('Config');
		$cost = 0;
		$pcost = 0;
		$tcost = 0;
		if ($delivcosttype == 0 || $delivcosttype == 2){
			$res = $cf->getDeliveryList();
			if (!$res){
				$this->error();
				return;
			}
			$delivlist = $res;
			if (!array_key_exists('default', $delivlist)){
				$this->error();
				return;
			}
			$delivdata = $delivlist['default'];
			if (array_key_exists($address['prefecture_code'], $delivdata['deliv_partial'])){
				$pcost = $delivdata['deliv_partial'][$address['prefecture_code']];
			}
			else if (array_key_exists("deliv_all", $delivdata)){
				$pcost = $delivdata['deliv_all'];
			}
		}
		if ($delivcosttype == 1|| $delivcosttype == 2){
			$tcost = $cf->getDelivCostTicket();
		}
		if ($delivcosttype == 0){
			$cost = $pcost;
		}
		else if ($delivcosttype == 1){
			$cost = $tcost;
		}
		else if ($delivcosttype == 2){
			if ($data['deliv_separate_ticket']){
				$cost = $pcost + $tcost;
			}
			else{
				$cost = $pcost;
			}
		}
		else {
			$this->error();
			return;
		}
		
		$currentpt = 0;
		if ($userid){
			$pt = $this->loadModel('Point');
			$res = $pt->getUserPoint($userid);
			if ($res === false){
				$this->error();
				return;
			}
			if ($res){
				$currentpt = $res['current_point'];
			}
		}
		$wish = array();
		for($i = 3; $i < 14; $i++){
			$wish[] = date('Ymd', time()+$i*24*60*60);
		}
		
		$useraddress = null;
		if ($userid){
			$useraddress = $adr->getAddressMain($userid);
		}
		
		$tmpldata = array(
			'cartck'=>$cartck,
			'total'=>$total,
			'total_tax'=>$taxtotal,//(int)($total*$tax*0.01),
			'count'=>$count,
			'point'=>$point,
			'itemlist'=>$itemlist,
			'address'=>$address,
			'cost'=>$cost,
			'tcost'=>$tcost,
			'pcost'=>$pcost,
			'deliv_cost_type'=>$delivcosttype,
			'current_point'=>$currentpt,
			'wish'=>$wish,
			'data'=>$ssdata,
			'stockerr'=>$stockerr,
			'useraddress'=>$useraddress,
		);
		$this->frontTemplate('ganryu_shop/cartconfirm', $tmpldata);
	}
	
	function cartcomplete(){
		$tmpldata = array('eps'=>$this->g('eps'));
		$this->frontTemplate('ganryu_shop/cartcomplete', $tmpldata);
	}
	function purchaselog(){
		$res = $this->needsFrontLogin();
		if ($res){
			return;
		}

		$pg = $this->g('pg');
		if ($pg < 1 ) $pg = 1;
		$deliv_status = $this->g('deliv_status');
		if($deliv_status != "after") $deliv_status = "before";
		
		$user = $this->currentUser();
		
		$searchdata = array();
		$searchdata['userid'] = $user->get('ID');
		$searchdata['deliv_status'] = ($deliv_status == "after")?2:1;
		
		$pur = $this->loadModel('Purchase');
		$itm = $this->loadModel('Item');
		$res = $pur->getPurchaseList($pg, 100, $searchdata);
		if (!$res){
			return;
		}
		$result = $res;
		$list=& $result['list'];
		
		$items = array();
		
		for($i = 0; $i < count($list); $i++){
			$res = $pur->getPurchaseDeliv($list[$i]['purchaseid']);
			if ($res === false){
				return;
			}
			$list[$i]['delivlist'] = $res;
			
			$res = $pur->getPurchaseItem($list[$i]['purchaseid']);
			if ($res === false){
				return;
			}
			$purilist = $res;
			for($j = 0; $j < count($purilist); $j++){
				if (!isset($items[$purilist[$j]['subitemid']])){
					$items[$purilist[$j]['subitemid']] = array();
				}
			}
			$list[$i]['itemlist'] = $purilist;
		}
		
		foreach ($items as $subitemid=>$dt){
			$res = $itm->getSubitem($subitemid);
			if (!$res){
				continue;
			}
			$subitem = $res;
			$res = $itm->getItem($subitem['itemid']);
			if (!$res){
				continue;
			}
			$item = $res;
			$item['labels'] = $itm->getCategorySetupLabels($item['itemid']);
			$subitem['cates'] = array();
			if ($subitem['category1']){
				$subitem['cates'][] = $itm->getItemCategory($subitem['category1']);
			}
			if ($subitem['category2']){
				$subitem['cates'][] = $itm->getItemCategory($subitem['category2']);
			}
			
			$items[$subitemid]['subitem'] = $subitem;
			$items[$subitemid]['item'] = $item;
		}
		$tmpldata = array('result'=>$result, 'items'=>$items, 'deliv_status'=>$deliv_status);
		$this->frontTemplate('ganryu_shop/purchaselog', $tmpldata);
	}
	function purchasedetail(){
		$res = $this->needsFrontLogin();
		if ($res){
			return;
		}

		$pid = $this->g('purchaseid');
		
		$user = $this->currentUser();
		
		$pur = $this->loadModel('Purchase');
		$res = $pur->getPurchase($pid);
		if (!$res){
			return;
		}
		if ($res['userid'] != $user->get('ID')){
			return;
		}
		
		$pdata = $res;
		
		$res = $pur->getPurchaseItem($pid);
		if ($res === false){
			return;
		}
		$itemlist = $res;
		$itm = $this->loadModel('Item');
		for($i = 0; $i < count($itemlist); $i++){
			$subitem = $itm->getSubitem($itemlist[$i]['subitemid']);
			$item = $itm->getItem($itemlist[$i]['itemid']);
			
			$item['labels'] = $itm->getCategorySetupLabels($item['itemid']);
			$subitem['cates'] = array();
			if ($subitem['category1']){
				$subitem['cates'][] = $itm->getItemCategory($subitem['category1']);
			}
			if ($subitem['category2']){
				$subitem['cates'][] = $itm->getItemCategory($subitem['category2']);
			}
			
			$itemlist[$i]['subitem'] = $subitem;
			$itemlist[$i]['item'] = $item;
		}
		$res = $pur->getPurchaseDeliv($pid);
		if ($res === false){
			return;
		}
		$pdata['delivlist'] = $res;
	
		$tmpldata = array('purchase'=>$pdata, 'itemlist'=>$itemlist);
		$this->frontTemplate('ganryu_shop/purchasedetail', $tmpldata);
	}
	
	function pointlog(){
		$res = $this->needsFrontLogin();
		if ($res){
			return;
		}

		$pg = (int)$this->g('pg');
		if ($pg < 1) $pg = 1;
		
		$curuser = $this->currentUser();
		
		$pt = $this->loadModel('Point');
		$userid = $curuser->get('ID');
		$sdata = array(
			'userid'=>$userid
		);
		$res = $pt->searchPointLog($pg, 100, $sdata);
		if (!$res){
			return;
		}
		
		$result = $res;
		$list =& $result['list'];
		for($i = 0 ;$i < count($list); $i++){
			$list[$i]['extent_info'] = json_decode($list[$i]['extent_info'], true);
		}
		
		$res = $pt->getUserPoint($userid);
		if ($res === false){
			$this->error();
			return;
		}
		$curpt = $res;
		
		$tmpldata = array('result'=>$result, 'curpt'=>$curpt);
		$this->frontTemplate('ganryu_shop/pointlog', $tmpldata);
		
	}
	
	function globalCart(){
		$cartck = grys_get_cart_cookie();
		$itm = $this->loadModel('Item');
		$itemlist = array();
		$total = 0;
		$count = 0;
		$iids = array();

		if ($cartck){
			$iids = preg_split('/,/', $cartck);
		}
		foreach ($iids as $iid){
			if (strpos($iid, ".")){
				$ar = preg_split('/\./', $iid, 2);
			}
			else{
				$ar = array($iid, 1);
			}
			$res = $itm->getSubitem($ar[0]);
			if (!$res){
				continue;
			}
			if ($res['is_close']){
				continue;
			}
			if ($res['deleted']){
				continue;
			}
			$subitem = $res;

			$res = $itm->getItem($subitem['itemid']);
			if (!$res){
				continue;
			}
			if ($res['is_close']){
				continue;
			}
			if ($res['deleted']){
				continue;
			}
			
			$itemlist[] = array('item'=>$res, 'subitem'=>$subitem, 'count'=>$ar[1]);
			$total += $subitem['subprice'] * $ar[1];
			$count += $ar[1];
		}
		
		$tmpldata = array(
			'count'=>$count,
			'total'=>$total
		);
		
		$this->frontTemplate('ganryu_shop/global_cart', $tmpldata);
	}
	
	
	function address(){
		$res = $this->needsFrontLogin();
		if ($res){
			return;
		}
		$curuser = $this->currentUser();
		$userid = $curuser->get('ID');
		if (!$userid){
			return;
		}
		$addr = $this->loadModel('Address');
		
		$mode = $this->g('mode');
		if ($mode == "update_main"){
			$addrid = $this->g('addressid');
			if ($addrid){
				$this->begin();

				$res = $addr->updateMain($userid, $addrid);
				if (!$res){
					return;
				}
				
				$this->finish(true);
			}
			
			wp_redirect(home_url().'/member?page_action=address_list');
			exit;
			
		}
		
		$res = $addr->getAddressList($userid);
		if ($res === false){
			return;
		}
		$addrlist = $res;
		
		$this->frontTemplate('ganryu_shop/address_list', array('address_list'=>$addrlist));
		
	}
	
	function address_add(){
		$res = $this->needsFrontLogin();
		if ($res){
			return;
		}

		$curuser = $this->currentUser();
		$userid = $curuser->get('ID');
		if (!$userid){
			return;
		}
		$this->frontTemplate('ganryu_shop/address_add', array());
		
	}

	function address_edit(){
		$res = $this->needsFrontLogin();
		if ($res){
			return;
		}

		$curuser = $this->currentUser();
		$userid = $curuser->get('ID');
		if (!$userid){
			return;
		}
		
		$addressid = $this->g('addressid');
		
		$addr = $this->loadModel('Address');
		$res = $addr->getAddress($addressid);
		if (!$res){
			return;
		}
		$addrdata = $res;
		
		if ($addrdata['userid'] != $userid){
			return;
		}
		
		$this->frontTemplate('ganryu_shop/address_edit', array('address_data'=>$addrdata));
		
	}
	
	function favlist(){
		$res = $this->needsFrontLogin();
		if ($res){
			return;
		}
		$curuser = $this->currentUser();
		$userid = $curuser->get('ID');
		if (!$userid){
			return;
		}
		
		$pg = $this->g('pg');
		if ($pg <= 1) $pg = 1;
		
		$itm = $this->loadModel('Item');
		$res = $itm->getFavList($userid, $pg, 100);
		if ($res === false){
			reurn;
		}
		$result = $res;
		
		$tmpldata = array('result'=>$result);
		
		$this->frontTemplate('ganryu_shop/favlist', $tmpldata);
	}

}