function generateVariationsHtmlLink($item, $profile_data) { $variations_html = ' '; // check for variations if (ProductWrapper::hasVariations($item['post_id'])) { $variations = $this->getProductVariations($item['post_id']); // check variations cache $result = ListingsModel::matchCachedVariations($item); if ($result && $result->success) { $variations = $result->variations; } // show warning if no variations found if (!is_array($variations) || !sizeof($variations)) { $img_url = WPLISTER_URL . '/img/error.gif'; $variations_html .= '(<a href="#" onClick="jQuery(\'#pvars_' . $item['id'] . '\').toggle();return false;">»' . __('Variations', 'wplister') . '</a>)<!br>'; $variations_html .= ' <img src="' . $img_url . '" style="height:12px; padding:0;"/> <br>'; $variations_html .= '<b style="color:darkred">No variations found.</b><br>'; $variations_html .= '<div id="pvars_' . $item['id'] . '" class="variations_list" style="display:none;margin-bottom:10px;">'; if (!defined('WPLISTER_RESELLER_VERSION')) { $variations_html .= 'Please read the <a href="https://www.wplab.com/plugins/wp-lister/faq/#Variations" target="_blank">FAQ</a> or contact support.'; } $variations_html .= '</div>'; return $variations_html; } // get max_quantity from profile $max_quantity = isset($profile_data['details']['max_quantity']) && intval($profile_data['details']['max_quantity']) > 0 ? $profile_data['details']['max_quantity'] : PHP_INT_MAX; // add Variations link and container $variations_html .= '(<a href="#TB_inline?width=600&inlineId=pvars_' . $item['id'] . '" class="thickbox">»</a>'; $variations_html .= '<a href="#" onClick="jQuery(\'#pvars_' . $item['id'] . '\').toggle();return false;"> ' . sizeof($variations) . ' ' . __('Variations', 'wplister') . '</a>)<br>'; $variations_html .= '<div id="pvars_' . $item['id'] . '" class="variations_list" style="display:none;margin-bottom:10px;">'; // show variation mode message if (isset($profile_data['details']['variations_mode']) && $profile_data['details']['variations_mode'] == 'flat') { $variations_html .= '<p><b>' . __('These variations will be listed as a single item.', 'wplister') . '</b></p>'; } $variations_html .= '<table class="variations_table" style="margin-bottom: 8px;">'; // header $variations_html .= '<tr><th>'; $variations_html .= ' '; $variations_html .= '</th><th>'; $first_variation = reset($variations); if (is_array($first_variation['variation_attributes'])) { foreach ($first_variation['variation_attributes'] as $name => $value) { $variations_html .= $name; $variations_html .= '</th><th>'; } } $variations_html .= __('SKU', 'wplister'); $variations_html .= '</th><th align="right">'; $variations_html .= __('Price', 'wplister'); $variations_html .= '</th></tr>'; foreach ($variations as $var) { // first column: quantity $variations_html .= '<tr><td align="right">'; $variations_html .= min($max_quantity, intval($var['stock'])) . ' x'; $variations_html .= '</td>'; foreach ($var['variation_attributes'] as $name => $value) { // $variations_html .= $name.': '.$value ; $variations_html .= '<td>'; $variations_html .= $value; $variations_html .= '</td>'; } // $variations_html .= '('.$var['sku'].') '; // $variations_html .= '('.$var['image'].') '; // column: SKU $variations_html .= '<td>'; $variations_html .= $var['sku'] ? $var['sku'] : '<span style="color:darkred">SKU is missing!</span'; $variations_html .= @$var['is_default'] ? ' <span class="tips" data-tip="' . __('Default variation', 'wplister') . '">*</span>' : ''; $variations_html .= '</td>'; // last column: price $variations_html .= '<td align="right">'; $price = ListingsModel::applyProfilePrice($var['price'], @$profile_data['details']['start_price']); $variations_html .= $this->number_format($price, 2); $variations_html .= '</td></tr>'; } $variations_html .= '</table>'; // show variation mode message if (isset($profile_data['details']['variations_mode']) && $profile_data['details']['variations_mode'] == 'flat') { // $variations_html .= '<p><b>' . __('These variations will be listed as a single item.','wplister') . '</b></p>'; } else { } // list addons $addons = ProductWrapper::getAddons($item['post_id']); if (sizeof($addons) > 0) { $variations_html .= '<table style="margin-bottom: 8px;">'; foreach ($addons as $addonGroup) { // first column: quantity $variations_html .= '<tr><td colspan="2" align="left"><b>'; $variations_html .= $addonGroup->name; $variations_html .= '</b></td></tr>'; foreach ($addonGroup->options as $addon) { $variations_html .= '<tr><td align="left"> '; $variations_html .= $addon->name; $variations_html .= '</td><td align="right">'; $variations_html .= $this->number_format($addon->price, 2); $variations_html .= '</td></tr>'; } } $variations_html .= '</table>'; } $variations_html .= '</div>'; } return $variations_html; }
function getAddonsHTML($item) { // get addons $addons = ProductWrapper::getAddons($item['post_id']); if (sizeof($addons) == 0) { return ''; } // build html table $addons_html .= '<table style="margin-bottom: 8px;">'; foreach ($addons as $addonGroup) { // first column: quantity $addons_html .= '<tr><td colspan="2" align="left"><h5>'; $addons_html .= $addonGroup->name; $addons_html .= '</h5></td></tr>'; foreach ($addonGroup->options as $addon) { $addons_html .= '<tr><td align="left"> '; $addons_html .= $addon->name; $addons_html .= '</td><td align="right">'; $addons_html .= number_format_i18n(floatval($addon->price), 2); $addons_html .= '</td></tr>'; } } $addons_html .= '</table>'; return $addons_html; }