function wc1c_offers_end_element_handler($is_full, $names, $depth, $name) { global $wpdb, $wc1c_price_types, $wc1c_price_type, $wc1c_price_type, $wc1c_offer, $wc1c_suboffers, $wc1c_price; if (@$names[$depth - 1] == 'ПакетПредложений' && $name == 'ТипыЦен') { if (!WC1C_PRICE_TYPE) { $wc1c_price_type = $wc1c_price_types[0]; } else { foreach ($wc1c_price_types as $price_type) { if (@$price_type['Ид'] != WC1C_PRICE_TYPE && @$price_type['Наименование'] != WC1C_PRICE_TYPE) { continue; } $wc1c_price_type = $price_type; break; } if (!isset($wc1c_price_type)) { wc1c_error("Failed to match price type"); } } if (!empty($wc1c_price_type['Валюта'])) { wc1c_update_currency($wc1c_price_type['Валюта']); update_option('wc1c_currency', $wc1c_price_type['Валюта']); } } elseif (@$names[$depth - 1] == 'Цены' && $name == 'Цена') { if (!isset($wc1c_offer['Цена']) && (!isset($wc1c_price['ИдТипаЦены']) || $wc1c_price['ИдТипаЦены'] == $wc1c_price_type['Ид'])) { $wc1c_offer['Цена'] = $wc1c_price; } } elseif (@$names[$depth - 1] == 'ХарактеристикаТовара' && $name == 'Наименование') { $i = count($wc1c_offer['ХарактеристикиТовара']) - 1; $wc1c_offer['ХарактеристикиТовара'][$i]['Наименование'] = preg_replace("/\\s+\\(.*\\)\$/", '', $wc1c_offer['ХарактеристикиТовара'][$i]['Наименование']); } elseif (@$names[$depth - 1] == 'Предложения' && $name == 'Предложение') { if (strpos($wc1c_offer['Ид'], '#') === false || WC1C_DISABLE_VARIATIONS) { $guid = $wc1c_offer['Ид']; wc1c_replace_offer($is_full, $guid, $wc1c_offer); } else { $guid = $wc1c_offer['Ид']; list($product_guid, ) = explode('#', $guid, 2); if (empty($wc1c_suboffers) || $wc1c_suboffers[0]['product_guid'] != $product_guid) { if ($wc1c_suboffers) { wc1c_replace_suboffers($is_full, $wc1c_suboffers); } $wc1c_suboffers = array(); } $wc1c_suboffers[] = array('guid' => $wc1c_offer['Ид'], 'product_guid' => $product_guid, 'offer' => $wc1c_offer); } } elseif (@$names[$depth - 1] == 'ПакетПредложений' && $name == 'Предложения') { if ($wc1c_suboffers) { wc1c_replace_suboffers($is_full, $wc1c_suboffers); } } elseif (!$depth && $name == 'КоммерческаяИнформация') { $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_%'"); wc1c_check_wpdb_error(); do_action('wc1c_post_offers', $is_full); } }
function wc1c_replace_subproducts($is_full, $subproducts) { require_once sprintf(WC1C_PLUGIN_DIR . "exchange/offers.php"); wc1c_replace_suboffers($is_full, $subproducts, true); }