開発メモ

開発用のメモです。

ECCUBE ダウンロード商品を外部サイトに設定する。

LC_Page_Admin_Products_Product_Ex

<?php
require_once CLASS_REALDIR . 'pages/admin/products/LC_Page_Admin_Products_Product.php';

/**
 * 商品登録 のページクラス(拡張).
 *
 * LC_Page_Admin_Products_Product をカスタマイズする場合はこのクラスを編集する.
 *
 * @package Page
 * @author LOCKON CO.,LTD.
 * @version $Id: LC_Page_Admin_Products_Product_Ex.php 23546 2014-06-12 14:47:59Z shutta $
 */
class LC_Page_Admin_Products_Product_Ex extends LC_Page_Admin_Products_Product {

    /**
    * パラメーター情報の初期化
    *
    * @param  SC_FormParam_Ex $objFormParam SC_FormParamインスタンス
    * @param  array  $arrPost      $_POSTデータ
    * @return void
    */
    public function lfInitFormParam( SC_FormParam_Ex &$objFormParam, $arrPost ) {
        parent::lfInitFormParam( $objFormParam, $arrPost );

        // ダウンロード商品にURL を設定する
        $keys = $objFormParam->getKeyList( );
        $key = array_search( "down_filename", $keys );
        $objFormParam->length[ $key ] = URL_LEN;

    }

    /**
    * フォーム入力パラメーターのエラーチェック
    *
    * @param  object $objFormParam SC_FormParamインスタンス
    * @param  SC_UploadFile_Ex $objUpFile    SC_UploadFileインスタンス
    * @param  SC_UploadFile_Ex $objDownFile  SC_UploadFileインスタンス
    * @param  array  $arrForm      フォーム入力パラメーター配列
    * @return array  エラー情報を格納した連想配列
    */
    public function lfCheckError_Edit( &$objFormParam, &$objUpFile, &$objDownFile, $arrForm ) {
        $objErr = new SC_CheckError_Ex( $arrForm );
        $arrErr = array( );

        // 入力パラメーターチェック
        $arrErr = $objFormParam->checkError( );

        // アップロードファイル必須チェック
        $arrErr = array_merge( (array)$arrErr, (array)$objUpFile->checkExists( ) );

        // HTMLタグ許可チェック
        $objErr->doFunc( array( '詳細-メインコメント', 'main_comment', $this->arrAllowedTag ), array( 'HTML_TAG_CHECK' ) );
        for( $cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt ++ ) {
            $objErr->doFunc( array( '詳細-サブコメント' . $cnt, 'sub_comment' . $cnt, $this->arrAllowedTag ), array( 'HTML_TAG_CHECK' ) );
        }

        // 規格情報がない商品の場合のチェック
        if( $arrForm[ 'has_product_class' ] != true ) {
            // 在庫必須チェック(在庫無制限ではない場合)
            if( $arrForm[ 'stock_unlimited' ] != UNLIMITED_FLG_UNLIMITED ) {
                $objErr->doFunc( array( '在庫数', 'stock' ), array( 'EXIST_CHECK' ) );
            }

            $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode( "ToonBoom" );

            // ダウンロード商品ファイル必須チェック(ダウンロード商品の場合)
            if( $arrForm[ 'product_type_id' ] == PRODUCT_TYPE_DOWNLOAD ) {
                if( is_array( $plugin ) and $plugin[ "enable" ] == "1" ) {
                    // ToonBoon 用プラグインが有効の場合はファイルはチェックしない
                } else {
                    $arrErr = array_merge( (array)$arrErr, (array)$objDownFile->checkExists( ) );
                }
                $objErr->doFunc( array( 'ダウンロード商品ファイル名', 'down_filename' ), array( 'EXIST_CHECK' ) );
            }
        }

        $arrErr = array_merge( (array)$arrErr, (array)$objErr->arrErr );

        return $arrErr;
    }

}

LC_Page_Admin_Products_ProductClass_Ex

<?php
require_once CLASS_REALDIR . 'pages/admin/products/LC_Page_Admin_Products_ProductClass.php';

/**
 * 商品登録(規格) のページクラス(拡張).
 *
 * LC_Page_Admin_Products_ProductClass をカスタマイズする場合はこのクラスを編集する.
 *
 * @package Page
 * @author LOCKON CO.,LTD.
 * @version $Id:LC_Page_Admin_Products_Product_Ex.php 15532 2007-08-31 14:39:46Z nanasess $
 */
class LC_Page_Admin_Products_ProductClass_Ex extends LC_Page_Admin_Products_ProductClass {

    /**
    * パラメーター情報の初期化
    *
    * @param  SC_FormParam_Ex $objFormParam SC_FormParamインスタンス
    * @param  array  $arrPost      $_POSTデータ
    * @return void
    */
    public function lfInitFormParam( SC_FormParam_Ex &$objFormParam, $arrPost ) {
        parent::lfInitFormParam( $objFormParam, $arrPost );

        // ダウンロード商品にURL を設定する
        $keys = $objFormParam->getKeyList( );
        $key = array_search( "down_filename", $keys );
        $objFormParam->length[ $key ] = URL_LEN;

    }

    /**
    * 商品規格エラーチェック.
    *
    * @param  SC_FormParam $objFormParam SC_FormParam インスタンス
    * @return array        エラー結果の配列
    */
    public function lfCheckProductsClass( &$objFormParam ) {
        $arrValues = $objFormParam->getHashArray( );
        $arrErr = $objFormParam->checkError( );
        $total = $objFormParam->getValue( 'total' );

        if( SC_Utils_Ex::isBlank( $arrValues[ 'check' ] ) ) {
            $arrErr[ 'check_empty' ] = '※ 規格が選択されていません。<br />';
        }

        for( $i = 0; $i < $total; $i ++ ) {
            /*
            * チェックボックスの入っている項目のみ, 必須チェックを行う.
            * エラーを配列で返す必要があるため, SC_CheckError を使用しない.
            */
            if( ! SC_Utils_Ex::isBlank( $arrValues[ 'check' ][ $i ] ) ) {
                /*
                * 販売価格の必須チェック
                */
                if( SC_Utils_Ex::isBlank( $arrValues[ 'price02' ][ $i ] ) ) {
                    $arrErr[ 'price02' ][ $i ] = '' . SALE_PRICE_TITLE . 'が入力されていません。<br />';
                }
                /*
                * 在庫数の必須チェック
                */
                if( (SC_Utils_Ex::isBlank( $arrValues[ 'stock_unlimited' ][ $i ] ) || $arrValues[ 'stock_unlimited' ][ $i ] != 1) && SC_Utils_Ex::isBlank( $arrValues[ 'stock' ][ $i ] ) ) {
                    $arrErr[ 'stock' ][ $i ] = '※ 在庫数が入力されていません。<br />';
                }
                /*
                * 消費税率の必須チェック
                */
                if( OPTION_PRODUCT_TAX_RULE && SC_Utils_Ex::isBlank( $arrValues[ 'tax_rate' ][ $i ] ) ) {
                    $arrErr[ 'tax_rate' ][ $i ] = '※ 消費税率が入力されていません。<br />';
                }
                /*
                * 商品種別の必須チェック
                */
                if( SC_Utils_Ex::isBlank( $arrValues[ 'product_type_id' ][ $i ] ) ) {
                    $arrErr[ 'product_type_id' ][ $i ] = '※ 商品種別は、いずれかを選択してください。<br />';
                }
                /*
                * ダウンロード商品の必須チェック
                */
                if( $arrValues[ 'product_type_id' ][ $i ] == PRODUCT_TYPE_DOWNLOAD ) {

                    $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode( "ToonBoom" );

                    if( SC_Utils_Ex::isBlank( $arrValues[ 'down_filename' ][ $i ] ) ) {
                        $arrErr[ 'down_filename' ][ $i ] = '※ ダウンロード商品の場合はダウンロードファイル名を入力してください。<br />';
                    }
                    if( is_array( $plugin ) and $plugin[ "enable" ] == "1" ) {
                        // ToonBoon 用プラグインが有効の場合はファイルはチェックしない
                    } else {
                        if( SC_Utils_Ex::isBlank( $arrValues[ 'down_realfilename' ][ $i ] ) ) {
                            $arrErr[ 'down_realfilename' ][ $i ] = '※ ダウンロード商品の場合はダウンロード商品用ファイルをアップロードしてください。<br />';
                        }
                    }

                    /*
                    * 通常商品チェック
                    */
                } elseif( $arrValues[ 'product_type_id' ][ $i ] != PRODUCT_TYPE_DOWNLOAD ) {
                    if( ! SC_Utils_Ex::isBlank( $arrValues[ 'down_filename' ][ $i ] ) ) {
                        $arrErr[ 'down_filename' ][ $i ] = '※ ダウンロード商品ではない場合、ダウンロードファイル名を設定できません。<br />';
                    }
                    if( ! SC_Utils_Ex::isBlank( $arrValues[ 'down_realfilename' ][ $i ] ) ) {
                        $arrErr[ 'down_realfilename' ][ $i ] = '※ ダウンロード商品ではない場合、ダウンロード商品用ファイルをアップロードできません。<br />ファイルを取り消してください。<br />';
                    }
                }
            }
        }

        return $arrErr;
    }

}
Twitter: @asahina_alice