• プラグイン一覧
    - WCEX Item Combo Set
    - WCEX Amazon Pay
    - WCEX Wishlist お気に入りリスト
  • リリース情報
  • お役立ちコラム
  • お問い合わせ
  • サポート
    • よくある質問
      • WCEX Amazon Pay
      • WCEX Wishlist お気に入りリスト
      • wcex-item-combo-set
    • リファレンス
      • WCEX Amazon Pay
      • WCEX Wishlist お気に入りリスト
      • wcex-item-combo-set
新規会員登録
ログイン
新規会員登録
ログイン
カート
  • プラグイン一覧
    • - WCEX Item Combo Set
    • - WCEX Amazon Pay
    • - WCEX Wishlist お気に入りリスト
  • リリース情報
  • お役立ちコラム
  • サポート
    • - よくある質問
      • - WCEX Amazon Pay
      • - WCEX Wishlist お気に入りリスト
      • - wcex-item-combo-set
    • - リファレンス
      • - WCEX Amazon Pay
      • - WCEX Wishlist お気に入りリスト
      • - wcex-item-combo-set
  • お問い合わせ
Aivec APPs > wcex-item-combo-set > クラス > ItemListCSV
レファレンス
バージョン
1.0.6
絞り込み:

目次

  • ソース
  • 関数

フック

  • アクション
  • フィルター

ファンクション

    クラス

    ItemListCSV

    Importing and exporting from 商品一覧

    ソース #ソース

    ファイル: src/Admin/ItemListCSV.php

    class ItemListCSV
    {
        /**
         * Upload CSV Combo-sets
         *
         * @var array
         */
        private $combosets = [];
    
        /**
         * Registers hooks
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @return void
         */
        public function init() {
            $opts = SettingsPage::getOptions();
            if ($opts[SettingsPage::ENABLE_ITEMCSV_OPT] === 'no') {
                return;
            }
            add_filter('usces_filter_downloadcsv_add_header', [get_class(), 'addHeaders']);
            add_filter('dlseller_filter_downloadcsv_add_header', [get_class(), 'addHeaders']);
            add_filter('usces_filter_downloadcsv_add_skuvalue', [get_class(), 'addComboSetCells'], 10, 2);
            add_filter('dlseller_filter_downloadcsv_add_skuvalue', [get_class(), 'addComboSetCells'], 10, 2);
            add_filter('usces_filter_uploadcsv_add_min_field_num', [get_class(), 'incrementUploadCSVFieldCount']);
            add_filter('dlseller_filter_uploadcsv_add_min_field_num', [get_class(), 'incrementUploadCSVFieldCount']);
            add_action('dlseller_after_uploadcsv_line_processed', [$this, 'prepareComboSet']);
            add_action('usces_after_uploadcsv_line_processed', [$this, 'prepareComboSet']);
            add_action('dlseller_after_uploadcsv_lines_processed', [$this, 'insertComboSets']);
            add_action('usces_after_uploadcsv_lines_processed', [$this, 'insertComboSets']);
        }
    
        /**
         * Returns list of Combo-set headers for exported CSV
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @return string[]
         */
        public static function getHeaders() {
            return [
                __('COMBO-SET', 'wcexics'),
            ];
        }
    
        /**
         * Increments upload CSV field count by the number of columns required by Combo-set
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @param int $fieldnum
         * @return int
         */
        public static function incrementUploadCSVFieldCount($fieldnum) {
            return $fieldnum + count(self::getHeaders());
        }
    
        /**
         * Adds Combo-set headers to exported CSV
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @param string $line
         * @return string
         */
        public static function addHeaders($line) {
            $th_h = ',"';
            $th_f = '"';
    
            foreach (self::getHeaders() as $header) {
                $line .= $th_h . $header . $th_f;
            }
    
            return $line;
        }
    
        /**
         * Adds Combo-set cells to exported CSV
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @param string $line_sku
         * @param array  $sku
         * @return mixed
         */
        public static function addComboSetCells($line_sku, $sku) {
            $td_h = ',"';
            $td_f = '"';
    
            $skumetaid = $sku['meta_id'];
            $comboset = ComboSet::getComboSetBySkuMetaId($skumetaid);
            if ($comboset instanceof GenericError) {
                for ($i = 0; $i < count(self::getHeaders()); $i++) {
                    $line_sku .= $td_h . $td_f;
                }
    
                return $line_sku;
            }
    
            $jsona = $comboset->getJson();
            $jsona['groups'] = [];
            foreach ($comboset->getGroups() as $group) {
                $groupjson = $group->jsonSerialize();
                $items = [];
                foreach ($group->getItems() as $item) {
                    $sku = wel_get_sku_by_id($item->getSkuMetaId());
                    $ijson = $item->getJson();
                    $ijson['skucode'] = $sku['code'];
                    $ijson['postId'] = $item->getPostId();
                    $items[] = $ijson;
                }
                $groupjson['items'] = $items;
                $jsona['groups'][] = $groupjson;
            }
    
            // output up to 5MB is kept in memory, if it becomes bigger it will automatically be written to a temporary file
            $csv = fopen('php://temp/maxmemory:' . (5 * 1024 * 1024), 'r+');
    
            fputcsv($csv, [json_encode($jsona)]);
    
            rewind($csv);
    
            // put it all in a variable
            $output = stream_get_contents($csv);
    
            $line_sku .= ',' . trim($output);
    
            return $line_sku;
        }
    
        /**
         * Prepare combo-set data and append to combo-sets array for later processing
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @param array $args
         * @return void
         */
        public function prepareComboSet($args) {
            if (empty($args['sku']) || empty($args['post_id'])) {
                return;
            }
            $sku = wel_get_sku($args['post_id'], $args['sku']['code']);
            if (empty($sku)) {
                return;
            }
            $offset = 0;
            if (defined('WCEX_DLSELLER')) {
                $offset = 1;
            }
            $csi = $offset + USCES_COL_SKU_APPLICABLE_TAXRATE + count(self::getHeaders());
            $comboset = !empty($args['datas'][$csi]) ? (string)$args['datas'][$csi] : '[]';
            $comboset = json_decode($comboset, true);
            if (empty($comboset)) {
                return;
            }
    
            $comboset['skuMetaId'] = $sku['meta_id'];
            $this->combosets[] = $comboset;
        }
    
        /**
         * Inserts upload CSV combo-sets
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @return void
         */
        public function insertComboSets() {
            foreach ($this->combosets as $comboset) {
                $this->insertComboSet($comboset);
            }
        }
    
        /**
         * Inserts a single upload CSV row combo-set
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @global \wpdb $wpdb
         * @param array $comboset
         * @return void
         */
        public function insertComboSet($comboset) {
            global $wpdb;
    
            $wpdb->query('START TRANSACTION');
            $cs = (new REST\ComboSet())->create(['skuMetaId' => $comboset['skuMetaId']], $comboset);
            if ($cs instanceof GenericError) {
                return;
            }
            foreach ($comboset['groups'] as $group) {
                $gres = (new REST\ComboGroup())->create(['comboSetId' => $cs->getId()], $group);
                if ($gres instanceof GenericError) {
                    $wpdb->query('ROLLBACK');
                    return;
                }
    
                foreach ($group['items'] as $item) {
                    if (empty($item['skucode']) || empty($item['postId'])) {
                        continue;
                    }
                    $sku = wel_get_sku($item['postId'], $item['skucode']);
                    if (empty($sku)) {
                        continue;
                    }
    
                    $res = (new REST\GroupItem())->create(
                        ['groupId' => $gres->getId()],
                        array_merge($item, ['welitemSkuMetaId' => $sku['meta_id']])
                    );
                    if ($res instanceof GenericError) {
                        $wpdb->query('ROLLBACK');
                        return;
                    }
                }
            }
            $wpdb->query('COMMIT');
        }
    }
    

    ソースを伸ばす ソースを縮める


    関数 #関数

    Top ↑

    • addComboSetCells — Adds Combo-set cells to exported CSV
    • addHeaders — Adds Combo-set headers to exported CSV
    • getHeaders — Returns list of Combo-set headers for exported CSV
    • incrementUploadCSVFieldCount — Increments upload CSV field count by the number of columns required by Combo-set
    • init — Registers hooks
    • insertComboSet — Inserts a single upload CSV row combo-set
    • insertComboSets — Inserts upload CSV combo-sets
    • prepareComboSet — Prepare combo-set data and append to combo-sets array for later processing

    • 新規会員登録
    • ログイン
      • プラグイン一覧
      • 会社概要
      • リリース情報
      • よくある質問
      • お役立ちコラム
      • お問い合わせ
      • 個人情報保護方針
      • 特定商取引法に基づく表記
      • 情報セキュリティ基本方針
      • 利用規約

    アイベック合同会社は「Welcart」「Amazon Pay」の公式パートナーです。

    ※Amazon、Amazon.co.jp、Amazon Payおよびそれらのロゴは、Amazon.com,inc.またはその関連会社の商標です。

    © 2025 Aivec llc All Rights Reserved.