• プラグイン一覧
    - 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 > クラス > Schema
レファレンス
バージョン
1.0.6
絞り込み:

目次

  • ソース
  • 関数

フック

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

ファンクション

    クラス

    Schema

    DB schema

    ソース #ソース

    ファイル: src/Schema.php

    class Schema
    {
        const ENABLE_ITEM_OPTIONS_DEFAULT = true;
        const ENABLE_MULTIPRICE_DEFAULT = false;
    
        /**
         * Adds tables
         *
         * Note that we need to update some MyISAM tables to InnoDB so we can take
         * advantage of foreign key constraints.
         *
         * Tables use InnoDB by default as of MySQL 5.7 but there are
         * still sites out there that installed WordPress with an older
         * version, resulting in all tables (posts, postmeta, etc.) being
         * MyISAM
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @global \wpdb $wpdb
         * @return void
         */
        public static function addTables() {
            global $wpdb;
    
            // Get Welcart tables first. This call will throw a fatal error if Welcart
            // isn't activated, which is why we do it first
            $skust = usces_get_tablename('usces_skus');
            $ordercartt = usces_get_tablename('usces_ordercart');
    
            require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    
            $charset_collate = $wpdb->get_charset_collate();
            $cst = self::getComboSetsTable();
            $csgt = self::getComboSetGroupsTable();
            $csgit = self::getComboSetGroupItemsTable();
            $csgioct = self::getComboSetGroupItemsOrderCartTable();
            $csgiocmt = self::getComboSetGroupItemsOrderCartMetaTable();
    
            /**
             * Change engine for Welcart tables to InnoDB
             */
            foreach ([$wpdb->posts, $skust, $ordercartt] as $table) {
                $sql = 'SELECT ENGINE
                        FROM INFORMATION_SCHEMA.TABLES
                        WHERE TABLE_SCHEMA = ' . '\'' . DB_NAME . '\'' . " AND TABLE_NAME = '{$table}'";
                $engine = $wpdb->get_var($sql);
                if ($engine === 'MyISAM') {
                    $wpdb->query("ALTER TABLE {$table} ENGINE = InnoDB;");
                }
            }
    
            if ($wpdb->get_var($wpdb->prepare('SHOW TABLES LIKE %s', [$cst])) !== $cst) {
                $enableItemOptions = (int)self::ENABLE_ITEM_OPTIONS_DEFAULT;
                $enableMultiprice = (int)self::ENABLE_MULTIPRICE_DEFAULT;
                $sql = "CREATE TABLE {$cst} (
                    ID BIGINT(20) UNSIGNED PRIMARY KEY AUTO_INCREMENT,
                    post_id BIGINT(20) UNSIGNED NOT NULL,
                    sku_meta_id BIGINT(20) UNSIGNED NOT NULL UNIQUE,
                    enable_item_options TINYINT(1) NOT NULL DEFAULT {$enableItemOptions},
                    enable_multiprice TINYINT(1) NOT NULL DEFAULT {$enableMultiprice},
                    created_at DATETIME NOT NULL,
                    updated_at DATETIME NOT NULL,
                    FOREIGN KEY (post_id)
                        REFERENCES {$wpdb->posts}(ID)
                        ON DELETE CASCADE
                ) ENGINE=InnoDB {$charset_collate};";
                dbDelta($sql);
            }
    
            if ($wpdb->get_var($wpdb->prepare('SHOW TABLES LIKE %s', [$csgt])) !== $csgt) {
                $sql = "CREATE TABLE {$csgt} (
                    ID BIGINT(20) UNSIGNED PRIMARY KEY AUTO_INCREMENT,
                    combo_set_id BIGINT(20) UNSIGNED NOT NULL,
                    group_label VARCHAR(200),
                    optional TINYINT(1) NOT NULL DEFAULT 0,
                    allow_multiple_selections TINYINT(1) NOT NULL DEFAULT 0,
                    position INTEGER UNSIGNED NOT NULL DEFAULT 0,
                    created_at DATETIME NOT NULL,
                    updated_at DATETIME NOT NULL,
                    FOREIGN KEY (combo_set_id)
                        REFERENCES {$cst}(ID)
                        ON DELETE CASCADE
                ) ENGINE=InnoDB {$charset_collate};";
                dbDelta($sql);
            }
    
            if ($wpdb->get_var($wpdb->prepare('SHOW TABLES LIKE %s', [$csgit])) !== $csgit) {
                $sql = "CREATE TABLE {$csgit} (
                    ID BIGINT(20) UNSIGNED PRIMARY KEY AUTO_INCREMENT,
                    group_id BIGINT(20) UNSIGNED NOT NULL,
                    welitem_sku_meta_id BIGINT(20) UNSIGNED NOT NULL,
                    item_label VARCHAR(200),
                    item_quantity SMALLINT NOT NULL DEFAULT 1,
                    price_modifier INTEGER NOT NULL DEFAULT 0,
                    position INTEGER UNSIGNED NOT NULL DEFAULT 0,
                    created_at DATETIME NOT NULL,
                    updated_at DATETIME NOT NULL,
                    FOREIGN KEY (group_id)
                        REFERENCES {$csgt}(ID)
                        ON DELETE CASCADE
                ) ENGINE=InnoDB {$charset_collate};";
                dbDelta($sql);
            }
    
            if ($wpdb->get_var($wpdb->prepare('SHOW TABLES LIKE %s', [$csgioct])) !== $csgioct) {
                $sql = "CREATE TABLE {$csgioct} (
                    cart_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
                    combo_set_cart_id BIGINT(20) UNSIGNED NOT NULL,
                    order_id BIGINT(20) NOT NULL,
                    group_id INT(3) NOT NULL DEFAULT '0',
                    row_index INT(3) NOT NULL,
                    post_id BIGINT(20) NOT NULL,
                    item_code VARCHAR(100) NOT NULL,
                    item_name VARCHAR(250) NOT NULL,
                    cprice DECIMAL(12, 0) DEFAULT NULL,
                    sku_code VARCHAR(100) NOT NULL,
                    sku_name VARCHAR(250) DEFAULT NULL,
                    price DECIMAL(12, 0) NOT NULL,
                    quantity FLOAT NOT NULL,
                    unit VARCHAR(50) DEFAULT NULL,
                    tax DECIMAL(10, 0) DEFAULT NULL,
                    destination_id INT(10) DEFAULT NULL,
                    cart_serial TEXT,
                    PRIMARY KEY (cart_id),
                    KEY order_id (order_id),
                    KEY post_id (post_id),
                    KEY item_code (item_code),
                    KEY item_name (item_name(191)),
                    KEY sku_code (sku_code),
                    KEY sku_name (sku_name(191)),
                    FOREIGN KEY (combo_set_cart_id)
                        REFERENCES {$ordercartt}(cart_id)
                        ON DELETE CASCADE
                ) AUTO_INCREMENT=1000 ENGINE=InnoDB {$charset_collate};";
                dbDelta($sql);
            }
    
            if ($wpdb->get_var($wpdb->prepare('SHOW TABLES LIKE %s', [$csgiocmt])) !== $csgiocmt) {
                $sql = "CREATE TABLE {$csgiocmt} (
                    cartmeta_id BIGINT(20) NOT NULL AUTO_INCREMENT,
                    cart_id BIGINT(20) UNSIGNED NOT NULL,
                    meta_type VARCHAR(100) NOT NULL,
                    meta_key VARCHAR(255) DEFAULT NULL,
                    meta_value LONGTEXT,
                    PRIMARY KEY (cartmeta_id),
                    KEY cart_id (cart_id),
                    KEY meta_key (meta_key(191)),
                    FOREIGN KEY (cart_id)
                        REFERENCES {$csgioct}(cart_id)
                        ON DELETE CASCADE
                ) ENGINE=InnoDB {$charset_collate};";
                dbDelta($sql);
            }
        }
    
        /**
         * Migrations for v1.0.1
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @global \wpdb $wpdb
         * @return void
         */
        public static function v101() {
            global $wpdb;
    
            $csgioct = self::getComboSetGroupItemsOrderCartTable();
            $rowIndexExists = (bool)(int)$wpdb->get_var('SELECT COUNT(*)
                FROM INFORMATION_SCHEMA.STATISTICS
                WHERE TABLE_SCHEMA = ' . '\'' . DB_NAME . '\'' . " AND TABLE_NAME = '{$csgioct}' AND INDEX_NAME = 'row';
            ");
            if ($rowIndexExists === true) {
                $wpdb->query("ALTER TABLE {$csgioct} DROP INDEX row;");
            }
        }
    
        /**
         * Migrations for v1.1.0
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @global \wpdb $wpdb
         * @return void
         */
        public static function v110() {
            global $wpdb;
    
            $db = DB_NAME;
            $cst = self::getComboSetsTable();
    
            // drop wp_usces_item post ID foreign key
            $foreignKeyExists = (bool)(int)$wpdb->get_var("SELECT COUNT(*)
                FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
                WHERE
                    CONSTRAINT_SCHEMA = '{$db}' AND
                    TABLE_NAME        = '{$cst}' AND
                    CONSTRAINT_NAME   = '{$cst}_ibfk_1' AND
                    CONSTRAINT_TYPE   = 'FOREIGN KEY'
            ");
            if ($foreignKeyExists === true) {
                $wpdb->query("ALTER TABLE {$cst} DROP FOREIGN KEY `{$cst}_ibfk_1`");
            }
    
            // drop wp_usces_skus meta ID foreign key
            $foreignKeyExists = (bool)(int)$wpdb->get_var("SELECT COUNT(*)
                FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
                WHERE
                    CONSTRAINT_SCHEMA = '{$db}' AND
                    TABLE_NAME        = '{$cst}' AND
                    CONSTRAINT_NAME   = '{$cst}_ibfk_2' AND
                    CONSTRAINT_TYPE   = 'FOREIGN KEY'
            ");
            if ($foreignKeyExists === true) {
                $wpdb->query("ALTER TABLE {$cst} DROP FOREIGN KEY `{$cst}_ibfk_2`");
            }
        }
    
        /**
         * Returns combo sets table
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @global \wpdb $wpdb
         * @return string
         */
        public static function getComboSetsTable() {
            global $wpdb;
            return $wpdb->prefix . 'wcexics_combo_sets';
        }
    
        /**
         * Returns combo set groups table name
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @global \wpdb $wpdb
         * @return string
         */
        public static function getComboSetGroupsTable() {
            global $wpdb;
            return $wpdb->prefix . 'wcexics_combo_set_groups';
        }
    
        /**
         * Returns combo set group items table name
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @global \wpdb $wpdb
         * @return string
         */
        public static function getComboSetGroupItemsTable() {
            global $wpdb;
            return $wpdb->prefix . 'wcexics_combo_set_group_items';
        }
    
        /**
         * Returns combo set group items ordercart table name
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @global \wpdb $wpdb
         * @return string
         */
        public static function getComboSetGroupItemsOrderCartTable() {
            global $wpdb;
            return $wpdb->prefix . 'wcexics_combo_set_group_items_ordercart';
        }
    
        /**
         * Returns combo set group items ordercart meta table name
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @global \wpdb $wpdb
         * @return string
         */
        public static function getComboSetGroupItemsOrderCartMetaTable() {
            global $wpdb;
            return $wpdb->prefix . 'wcexics_combo_set_group_items_ordercart_meta';
        }
    }
    

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


    関数 #関数

    Top ↑

    • addTables — Adds tables
    • getComboSetGroupItemsOrderCartMetaTable — Returns combo set group items ordercart meta table name
    • getComboSetGroupItemsOrderCartTable — Returns combo set group items ordercart table name
    • getComboSetGroupItemsTable — Returns combo set group items table name
    • getComboSetGroupsTable — Returns combo set groups table name
    • getComboSetsTable — Returns combo sets table
    • v101 — Migrations for v1.0.1
    • v110 — Migrations for v1.1.0

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

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

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

    © 2025 Aivec llc All Rights Reserved.