関数
CartPages::getComboSetCart( array $cart_row )
パラメータ パラメータ
- $cart_row
(配列) (必須)
ファイル: src/Pages/CartPages.php
public static function getComboSetCart($cart_row) {
global $usces, $wpdb;
$cserial = null;
$isordercart = false;
$grouplabelmap = [];
$itemlabelmap = [];
$ordercart = [];
if (!empty($cart_row['serial'])) {
$cserial = $cart_row['serial'];
} elseif (!empty($cart_row['cart_serial'])) {
$cserial = $cart_row['cart_serial'];
$isordercart = true;
}
if ($cserial === null) {
return null;
}
$sels = unserialize($cserial);
if (empty($sels['comboSetId']) || !isset($sels['comboSetItems'])) {
return null;
}
if ($isordercart === true) {
$csgioct = Schema::getComboSetGroupItemsOrderCartTable();
$results = $wpdb->get_results(
$wpdb->prepare(
"SELECT * FROM {$csgioct} WHERE combo_set_cart_id = %d ORDER BY cart_id ASC",
$cart_row['cart_id']
),
ARRAY_A
);
if ($results !== null) {
$index = 0;
foreach ($sels['comboSetItems'] as $gitem) {
if (empty($results[$index]['cart_serial'])) {
continue;
}
$gocserial = $results[$index]['cart_serial'];
$gisels = unserialize($gocserial);
$grouplabelmap[$gisels['groupId']] = !empty($gisels['groupLabel']) ? $gisels['groupLabel'] : '';
$itemlabelmap[$gisels['itemId']] = !empty($gisels['itemLabel']) ? $gisels['itemLabel'] : '';
$ordercart[$gisels['itemId']] = $results[$index];
$index++;
}
}
} else {
$cscart = !empty($_SESSION['usces_cart'][$cserial]) ? $_SESSION['usces_cart'][$cserial] : [];
$grouplabelmap = !empty($cscart['grouplabelmap']) ? $cscart['grouplabelmap'] : [];
$itemlabelmap = !empty($cscart['itemlabelmap']) ? $cscart['itemlabelmap'] : [];
$ordercart = [];
}
$rows = [];
foreach ($sels['comboSetItems'] as $serial => $gitem) {
$gisels = unserialize($serial);
$gicsels = (new \usces_cart())->key_unserialize($serial);
$rows[$gisels['groupId']]['groupLabel'] = '';
$glabel = '';
if (!empty($grouplabelmap[$gisels['groupId']])) {
$glabel = $grouplabelmap[$gisels['groupId']];
}
$itemLabel = '';
if (!empty($itemlabelmap[$gisels['itemId']])) {
$itemLabel = $itemlabelmap[$gisels['itemId']];
} else {
$itemLabel = wcexics_get_group_item_default_label(
$usces->getItemName($gicsels['post_id']),
$usces->getItemSkuDisp($gicsels['post_id'], urldecode($gicsels['sku'])),
$gitem['quant'],
$gitem['price']
);
}
$opts = !empty($gicsels['options']) ? $gicsels['options'] : [];
$giordercart = isset($ordercart[$gisels['itemId']]) ? $ordercart[$gisels['itemId']] : null;
if (is_array($giordercart) && isset($giordercart['cart_id'])) {
$options = wcexics_api_get_group_item_ordercart_meta('option', $giordercart['cart_id']);
$options = is_array($options) ? $options : [];
foreach ($options as $opt) {
$optv = maybe_unserialize($opt['meta_value']);
if (is_array($optv)) {
$optva = [];
foreach ($optv as $optvav) {
$optva[urlencode((string)$optvav)] = urlencode((string)$optvav);
}
$optv = $optva;
} else {
$optv = urlencode((string)$optv);
}
$opts[urlencode($opt['meta_key'])] = $optv;
}
}
$rows[$gisels['groupId']]['groupLabel'] = $glabel;
$rows[$gisels['groupId']]['groupItems'][] = [
'name' => $itemLabel,
'itemId' => $gisels['itemId'],
'ordercart' => $giordercart,
'options' => $opts,
];
}
return [
'cserial' => $cserial,
'grouplabelmap' => $grouplabelmap,
'groupItems' => $sels['comboSetItems'],
'cartRows' => $rows,
];
}