<?php
/**
 * @copyright ONE/DEPO Project
 * @license   PHP License 3.01 <http://www.php.net/license/3_01.txt>
 */


/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */

/**
 * 商品 出品依頼完了
 *
 * @package     Seller.Itemexhibit.Request.Item.Done
 * @author      H.Watanabe <hiroshi.watanabe@netnee.jp>
 * @access      public
 */
class Seller_Itemexhibit_Request_Item_Done
{
    var $itembasic;
    var $auth;
    var $c_mypage;
    var $db_preitem;
    var $db_image;
    
    var $upduser;
    var $actionnm;
    var $title;
    var $pagename;

    //基本情報
    var $itemnm;
    var $itemnmkana;
    var $makercd;
    var $labelcd;
    var $seriescd;
    var $iteminfo;
    var $comment;
    var $genre;
    var $itemdivcd;
    var $eirinrating;
    var $examgroupcd;
    var $examno;
    var $rankingrate;
    var $releasedate;


    //構成情報
    var $jancd;
    var $isbncd;
    var $makeritemcd;
    var $salestartdate;
    var $makerprice;
    var $orderclosedate;
    var $saleformcd;
    var $rectime;
    var $mediacd;
    var $struct_comment;
    var $variationnm;

    var $itemexp;
    
    // ダウンロード販売フラグ
    var $download;

    var $basic_option01;
    var $basic_option02;
    var $basic_option03;
    var $basic_option04;
    var $basic_option05;
    var $basic_option06;
    var $basic_option07;
    var $basic_option08;
    var $basic_option09;
    var $basic_option10;

    var $struct_option01;
    var $struct_option02;
    var $struct_option03;
    var $struct_option04;
    var $struct_option05;
    var $struct_option06;
    var $struct_option07;
    var $struct_option08;
    var $struct_option09;
    var $struct_option10;

    var $basic_option;
    var $struct_option;

    var $use_tags;
    var $actionChain;
    
    /**
     * execute
     *
     * @access  public
     */
    function execute()
    {
        $log =& LogFactory::getLog();
        $log->debug("Seller_Itemexhibit_Request_Item_Doneが実行されました", "Seller_Itemexhibit_Request_Item_Done#execute");
        
        // ユーザチェック
        $membercd = $this->auth->getAuthData("membercd");
        if (!empty($membercd)) {
            $status = $this->c_mypage->checkStatus($membercd);
        }

        $errorList =& $this->actionChain->getCurErrorList();
        if (!$status['scd'])
        {
            $errorList -> add(1, "出品者情報が登録されていません。");
            return 'input';
        }
        // 更新者を出品者IDに設定
        $this->upduser = $status['scd'];
        $sellercd = $status['scd'];
        
        
        if (preg_match_all("@(?:</?([^>]*?)>)@im",$this->itemexp, $match)) {
            //$log->debug(print_r($match[0],true), "");
            $errorList =& $this->actionChain->getCurErrorList();

            $use_tags = str_replace(",", "|", $this->use_tags);
            foreach ($match[0] as $val) {
                if (!preg_match("@(?:</?[".$use_tags."]++(([\s]+[^>]*?)*)>)@im",$val)) {
                    $log->debug("@(?:</?[".$use_tags."]++(([\s]+[^>]*?)*)>)@im  : ". $val, "");
                    $errorList->add("error", "使用できないHTMLタグが入力されています。");
                    $errorList->add("error", "「".$this->use_tags."」が使用できます。");
                    return 'input';
                }
            }
        }
        $errflg = false;
        // 商品画像のチェック
        if (empty($_FILES['image_s']['name'])) {
            $errorList -> add(1, "商品画像 サイズ小（一覧表示用）が入力されていません。");
            $errflg = true;
        }
        if (empty($_FILES['image_m']['name'])) {
            $errorList -> add(1, "商品画像 サイズ中（詳細表示用）が入力されていません。");
            $errflg = true;
        }
        if (empty($_FILES['image_l']['name'])) {
            $errorList -> add(1, "商品画像 サイズ大（拡大表示用）が入力されていません。");
            $errflg = true;
        }
        if ($errflg) return 'input';
        
        //基本情報
        if (!empty($this->releasedate)) {
            $this->releasedate = str_replace("/", "-", $this->releasedate);
        }
        if (!empty($this->salestartdate)) {
            $this->salestartdate = str_replace("/", "-", $this->salestartdate);
        }
        if (!empty($this->orderclosedate)) {
            $this->orderclosedate = str_replace("/", "-", $this->orderclosedate);
        }
        
        // DBに仮商品登録
        $result = $this->db_preitem->insert(
                    $this->itemnm,
                    $this->itemnmkana,
                    //$this->makercd,
                    $this->itemexp,
                    $this->basic_option01,
                    $this->basic_option02,
                    $this->basic_option03,
                    $this->basic_option04,
                    $this->basic_option05,
                    $this->basic_option06,
                    $this->basic_option07,
                    $this->basic_option08,
                    $this->basic_option09,
                    $this->basic_option10,
                    $this->upduser,
                    $this->releasedate,
                    //$this->rankingrate,
                    $this->comment,
                    $this->genre,
                    
                    $this->variationnm,
                    $this->makeritemcd,
                    $this->jancd,
                    $this->salestartdate,
                    $this->orderclosedate,
                    //$this->makerprice,
                    $this->struct_comment,
                    $this->struct_option01,
                    $this->struct_option02,
                    $this->struct_option03,
                    $this->struct_option04,
                    $this->struct_option05,
                    $this->struct_option06,
                    $this->struct_option07,
                    $this->struct_option08,
                    $this->struct_option09,
                    $this->struct_option10,
                    $this->download,
                    $status['scd']
        );
            
        // 失敗
        if (!$result) {
            return "error";
            
        // ダウンロード商品 ファイルの移動
        } else if ($this->download == 1) {
            // 仮商品cd 取得
            $preitemcd = $this->db_preitem->getPreitemcd();
            
            $filename = glob(IMAGE_WORKDIR ."/". 'preitem_' . $sellercd  .".*", GLOB_NOSORT);
            $pathinfo = pathInfo($filename[0]);
            
            // コピー元ファイル名 preitem_[出品者コード].*
            $from_name = 'preitem_' . $sellercd .'.'. $pathinfo['extension'];
            // コピー先ファイル名 preitem_[登録された仮商品コード].*
            $to_name = 'preitem_' . $preitemcd .'.'. $pathinfo['extension'];
            
            $from = IMAGE_WORKDIR ."/". $from_name;
            $to = IMAGE_DIR ."/7/". $to_name;

            // コピー成功後、元ファイル削除
            if( is_file($from) ) {
                if( copy($from, $to) ) {
                    unlink($from);
                } else {
                    return 'error';
                }
            } else {
                return 'error';
            }
        }
        
        $this->copyImages($sellercd, 'S');
        $this->copyImages($sellercd, 'M');
        $this->copyImages($sellercd, 'L');
        return 'success';
    }
    
    
    
    function copyImages($sellercd, $size) {
        // 仮商品cd 取得
        $preitemcd = $this->db_preitem->getPreitemcd();
        
        $filename = glob(IMAGE_WORKDIR ."/". 'preitem_' . $sellercd . $size .".jpg", GLOB_NOSORT);
        $pathinfo = pathInfo($filename[0]);
        
        // コピー元ファイル名 preitem_[出品者コード].*
        $from_name = 'preitem_' . $sellercd . $size .'.jpg';
        // コピー先ファイル名 preitem_[登録された仮商品コード].*
        $to_name = $preitemcd . $size .'.jpg';
        
        $from = IMAGE_WORKDIR ."/". $from_name;
        $to = IMAGE_DIR ."/9/". $to_name;
        $from_dir = IMAGE_WORKDIR;
        $to_dir = IMAGE_DIR ."/9/";

        if (!dir($from_dir)) mkdir($from_dir,0777);
        if (!dir($to_dir)) mkdir($to_dir,0777);
        
        // コピー成功後、元ファイル削除
        if( is_file($from) ) {
            if( copy($from, $to) ) {
                @unlink($from);
                // 画像テーブルに追加
                $this->db_image->insert(9, $preitemcd, $size, 0, $sellercd, 0);
            } else {
                return 'can not copy';
            }
        } else {
            return 'file not found';
        }
    }
}
?>
