File: /var/www/html/wp-content/plugins/ganryu_shop/action/Shopping.php.bak20160824
<?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 {
$errmsg = "クレジット決済後の処理でエラーが発生しました";
$code = $this->g('order_number');
if (!$code || strlen($code) < 3){
print $errmsg;
exit;
}
if (substr($code, 0, 3) != "GRY"){
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;
}
$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');
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 = 1;
$res = $itm->searchItem($pg, 20, $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(){
$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']){
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);
$curuser = $this->currentUser();
$userid = $curuser->get('ID');
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(){
$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;
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;
}
$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];
$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');
$res = $cf->getDeliveryList();
if (!$res){
$this->error();
return;
}
$delivlist = $res;
if (!array_key_exists('default', $delivlist)){
$this->error();
return;
}
$delivdata = $delivlist['default'];
$cost = 0;
if (array_key_exists($address['prefecture_code'], $delivdata['deliv_partial'])){
$cost = $delivdata['deliv_partial'][$address['prefecure_code']];
}
else if (array_key_exists("deliv_all", $delivdata)){
$cost = $delivdata['deliv_all'];
}
$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'=>(int)($total*$tax*0.01),
'count'=>$count,
'point'=>$point,
'itemlist'=>$itemlist,
'address'=>$address,
'cost'=>$cost,
'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);
}
}