if (strlen($shortDescription) > 255) { $decr = 251; while ($decr >= 0 && $shortDescription[$decr] != ' ') { --$decr; } $shortDescription = substr($shortDescription, 0, $decr) . ' ...'; } // Produktname $name = sk_strip_tags_and_entities($product_info['products_name']); // Hersteller $brand = $product_info['manufacturers_name']; // ProduktID $prod_id = $product_info['products_id']; // Kategorie $type = sk_generate_category_path($prod_id); $type = KategorieAnpassen($type); $type = sk_strip_tags_and_entities($type); // Lieferbarkeit "ab Lager" oder "auf Anfrage" entsprechend types.xsd if ($product_info[LIEFERBARKEIT_FELDNAME] > 0) { $lieferbarkeit = 'from stock'; $lieferzeit = LIEFERZEIT_AB_LAGER; } else { $lieferbarkeit = ''; // Lieferbarkeit unbekannt $lieferzeit = ''; // Lieferzeit unbekannt } $id_array = array("shopId" => PROD_ID_IST_ARTIKELNUMMER ? $prod_id : $model); if (defined('ELMAR_PRODUCTS_EAN_FIELD')) { $ean = $product_info[ELMAR_PRODUCTS_EAN_FIELD]; $ean_len = strlen($ean);
function sk_generate_line($category_text = '', $category_id = '') { global $bytes, $currency, $delimiter, $description, $expires_date, $fh, $ignored_products, $kategorie, $language_code, $lieferzeit, $lineend, $manufacturer, $model, $name, $price, $old_price, $artikelnummer, $prodimg, $prodimg_width, $prodimg_height, $productinfopage, $product_info, $productfiletype, $quote, $isSpecial, $total, $versandkosten; ++$total; if ($category_id != '') { $pi = $artikelnummer . '-' . $category_id; } else { $pi = $artikelnummer; } if ($category_text != '') { $pn = $category_text . ' ' . $name; } else { $pn = $name; } switch ($productfiletype) { case 'froogle': if (defined('FROOGLE_LANGUAGE_PARAM')) { $productinfopage .= FROOGLE_LANGUAGE_PARAM; } $zeile = $productinfopage . $delimiter . field_to_csv($pn, 80) . $delimiter . field_to_csv($description, 65535) . $delimiter . number_format($price, 2, '.', '') . $delimiter . $prodimg . $delimiter . field_to_csv(str_replace('|', ' > ', $kategorie)) . $delimiter . $pi . $delimiter . ($product_info[LIEFERBARKEIT_FELDNAME] > 0 ? 'Y' : 'N') . $delimiter . ($versandkosten == VERSANDKOSTENFREI ? '0' : number_format($versandkosten, 2, '.', '')) . $delimiter . $currency; if (MANUFACTURERS_NAME) { $zeile .= $delimiter . field_to_csv($manufacturer); } $zeile .= $lineend; break; case 'kelkoo': if (!empty($manufacturer) && strpos($pn, $manufacturer) === FALSE) { $kelkoo_prodname = $manufacturer . ': ' . $pn; } else { $kelkoo_prodname = $pn; } if (!defined('ELMAR_KELKOO_FORMAT') || ELMAR_KELKOO_FORMAT == 0) { // kostenlose Partnerschaft if (defined('ELMAR_KELKOO_MAX_DESCRIPTION_LENGTH') && strlen($description) > ELMAR_KELKOO_MAX_DESCRIPTION_LENGTH) { ++$ignored_products; return; // Produkt wegen zu langer Produktbeschreibung ignorieren! } /* Verfuegbarkeit des Produktes. Moegliche Angaben: 001: "Auf Lager" 002: "Bestellbestand" 003: "Im Shop ueberpruefen" 004: "Vorbestellung" 005: "Auf Bestellung verfuegbar" */ $kelkoo_lieferzeit = $product_info[LIEFERBARKEIT_FELDNAME] > 0 ? '001' : '003'; // max. 20 Zeichen, EUR 10.00 oder 'Frei' (im Kelkoo-Beispiel 'included') if ($versandkosten == VERSANDKOSTENFREI) { $kelkoo_versandkosten = 'Frei'; } else { if (is_numeric($versandkosten)) { $kelkoo_versandkosten = number_format($versandkosten, 2, '.', ''); // oder #$kelkoo_versandkosten = 'EUR '.number_format($versandkosten, 2, ',', ''); } else { $kelkoo_versandkosten = ''; } } $zeile = $productinfopage . $delimiter . field_to_csv($kelkoo_prodname, 79) . $delimiter . field_to_csv($description, 159) . $delimiter . number_format($price, 2, '.', '') . $delimiter . $pi . $delimiter . $prodimg . $delimiter . $kelkoo_lieferzeit . $delimiter . $kelkoo_versandkosten . $lineend; } else { // kostenpflichtige Partnerschaft $zeile = (defined('ELMAR_PRODUCTS_EAN_FIELD') ? $product_info[ELMAR_PRODUCTS_EAN_FIELD] : '') . $delimiter . (defined('ELMAR_PRODUCTS_ISBN_FIELD') ? $product_info[ELMAR_PRODUCTS_ISBN_FIELD] : '') . $delimiter . $manufacturer . $delimiter . field_to_csv($kelkoo_prodname, 79) . $delimiter . '' . $delimiter . field_to_csv($kategorie) . $delimiter . field_to_csv($description, 159) . $delimiter . number_format($price, 2, '.', '') . $delimiter . ($product_info[LIEFERBARKEIT_FELDNAME] > 0 ? 'ab Lager' : 'ausverkauft') . $delimiter . ($product_info[LIEFERBARKEIT_FELDNAME] > 0 ? '2' : '10') . $delimiter . number_format((double) $versandkosten, 2, '.', '') . $delimiter . $prodimg . $delimiter . $productinfopage . $delimiter . 'neu' . $lineend; } break; case 'hardwareschotte': $zeile = field_to_csv($pn) . $delimiter . field_to_csv($description) . $delimiter . number_format($price, 2, '.', '') . $delimiter . $productinfopage . $delimiter . $pi . $delimiter . $prodimg . $delimiter . ($product_info[LIEFERBARKEIT_FELDNAME] > 0 ? '1' : '0') . $delimiter . field_to_csv($kategorie) . $delimiter . ($versandkosten == VERSANDKOSTENFREI ? '0' : number_format($versandkosten, 2, '.', '')); if (MANUFACTURERS_NAME) { $zeile .= $delimiter . field_to_csv($manufacturer); } $zeile .= $lineend; break; case 'pangora': $zeile = $language_code . $delimiter . field_to_csv(str_replace('|', '/', $kategorie)) . $delimiter . $pi . $delimiter . field_to_csv($pn) . $delimiter . (MANUFACTURERS_NAME ? field_to_csv($manufacturer) : '') . $delimiter . field_to_csv($description) . $delimiter . $productinfopage . $delimiter . $prodimg . $delimiter . '' . $delimiter . '' . $delimiter . $currency . number_format($price, 2, ',', '') . $delimiter . $currency . number_format($versandkosten == VERSANDKOSTENFREI ? '0' : $versandkosten, 2, ',', '') . $lineend; break; case 'shopping': $zeile = $delimiter . (MANUFACTURERS_NAME ? quoted_field_to_csv($manufacturer) : $quote . '' . $quote) . $delimiter . (defined('ELMAR_PRODUCTS_EAN_FIELD') ? $product_info[ELMAR_PRODUCTS_EAN_FIELD] : '') . $delimiter . quoted_field_to_csv($pn) . $delimiter . quoted_field_to_csv($description, 1024) . $delimiter . number_format($price, 2, '.', '') . $delimiter . $productinfopage . $delimiter . $prodimg . $delimiter . quoted_field_to_csv(str_replace('|', ' -> ', $kategorie)) . $delimiter . $quote . ($product_info[LIEFERBARKEIT_FELDNAME] > 0 ? 'J' : 'N') . $quote . $delimiter . $delimiter . number_format($versandkosten == VERSANDKOSTENFREI ? '0' : $versandkosten, 2, '.', '') . $delimiter . $delimiter . number_format($product_info['products_weight'], 2, '.', '') . ' kg' . $lineend; break; case 'webde': // Lieferbarkeit: -2=auf Anfrage, -1=nicht lieferbar, 0=sofort, 1=in einem Tag, ..., 14=in 2 Wochen $webde_lieferzeit = $product_info[LIEFERBARKEIT_FELDNAME] > 0 ? '0' : '-2'; $zeile = '0' . $delimiter . $pi . $delimiter . '0' . $delimiter . field_to_csv($pn) . $delimiter . field_to_csv($description, 200) . $delimiter . $productinfopage . $delimiter . number_format($price, 2, ',', '') . ' ' . $currency . $delimiter . field_to_csv($kategorie) . $delimiter . field_to_csv($description, 1999) . $delimiter . $prodimg . $delimiter . (MANUFACTURERS_NAME ? field_to_csv($manufacturer) : '') . $delimiter . (defined('ELMAR_PRODUCTS_EAN_FIELD') ? $product_info[ELMAR_PRODUCTS_EAN_FIELD] : '') . $delimiter . $webde_lieferzeit . $lineend; break; case 'amazon': $ean = $product_info[ELMAR_PRODUCTS_EAN_FIELD]; if (strlen($ean) != 13) { return; } // Produkt wegen fehlerhafter EAN ignorieren $quantity = (int) $product_info['products_quantity']; if ($quantity <= 0) { return; } // Produkt ignorieren if ($quantity > 1000) { $quantity = 1000; } $price *= AMAZON_PRICE_FACTOR; $zeile = 'Y' . $delimiter . $ean . $delimiter . '4' . $delimiter . '11' . $delimiter . field_to_csv($pn, 200) . $delimiter . number_format($price, 2, ',', '') . $delimiter . $pi . $delimiter . $quantity . $delimiter . AMAZON_SHIP_INTERNATIONALLY . $delimiter . '' . $delimiter . '' . $delimiter . '' . $delimiter . '' . $delimiter . '' . $delimiter . '' . $delimiter . $lineend; break; default: $zeile = $quote . $pi . $quote . $delimiter . quoted_field_to_csv($pn) . $delimiter . quoted_field_to_csv($manufacturer) . $delimiter . quoted_field_to_csv($model) . $delimiter . quoted_field_to_csv(KategorieAnpassen($kategorie)) . $delimiter . quoted_field_to_csv($description) . $delimiter . $quote . number_format($price, 2, '.', '') . $quote . $delimiter . $quote . $prodimg . $quote . $delimiter . $quote . $productinfopage . $quote . $delimiter . $quote . $lieferzeit . $quote . $delimiter . $quote . number_format($versandkosten == VERSANDKOSTENFREI ? '0' : $versandkosten, 2, '.', '') . $quote . $delimiter . $quote . $isSpecial . $quote . $delimiter . $quote . $expires_date . $quote . $delimiter . $quote . (is_null($old_price) ? '' : number_format($old_price, 2, '.', '')) . $quote; if (ELMAR_PROD_IMAGE_CALCULATE_SIZE) { $zeile .= $delimiter . $quote . $prodimg_width . $quote . $delimiter . $quote . $prodimg_height . $quote; } if (defined('ELMAR_PRODUCTS_EAN_FIELD')) { $zeile .= $delimiter . $quote . $product_info[ELMAR_PRODUCTS_EAN_FIELD] . $quote; } if (defined('ELMAR_PRODUCTS_ISBN_FIELD')) { $zeile .= $delimiter . $quote . $product_info[ELMAR_PRODUCTS_ISBN_FIELD] . $quote; } $zeile .= $lineend; } // switch $bytes += strlen($zeile); if ($fh) { fputs($fh, $zeile); } echo $zeile; }
function generate_shopinfo() { global $languages_id, $language_code, $currency, $currency_rate; // Alle Includes hier, wegen der Pfadangabe. Reihenfolge ist relevant! require ELMAR_PATH . 'tools/pear.php'; require ELMAR_PATH . 'tools/node.php'; require ELMAR_PATH . 'tools/parser.php'; require ELMAR_PATH . 'tools/tree.php'; $attributes = '1.0" encoding="ISO-8859-1'; $tree = new XML_Tree(NULL, $attributes); if (ELMAR_NEW_SHOPINFO_XML) { $XMLarray = array('xmlns' => 'http://elektronischer-markt.de/schema/shopinfo-2.0', 'xmlns:c' => 'http://elektronischer-markt.de/schema/categories-2.0', 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:schemaLocation' => 'http://elektronischer-markt.de/schema/shopinfo-2.0 ' . ELMAR_SCHEMA_BASE_URL . 'shopinfo-2.0.xsd', 'version' => '2.0'); $root =& $tree->addRoot('Shop', NULL, $XMLarray); } else { $XMLarray = array('xmlns:osp' => 'http://elektronischer-markt.de/schema', 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:schemaLocation' => 'http://elektronischer-markt.de/schema ' . ELMAR_SCHEMA_BASE_URL . 'shop.xsd'); $root =& $tree->addRoot('osp:Shop', NULL, $XMLarray); } $common =& $root->addChild("Common"); $xml_version =& $common->addChild("Version", ELMAR_NEW_SHOPINFO_XML ? '2.0' : '1.1'); $xml_language =& $common->addChild("Language", $language_code); $xml_currency =& $common->addChild("Currency", $currency); if (ELMAR_NEW_SHOPINFO_XML) { $xml_generator =& $common->addChild('Generator', 'Elm@r-Modul osCommerce/' . MODUL_VERSION . '.' . MODUL_SUBVERSION . ' (http://projekt.wifo.uni-mannheim.de/elmar/nav/osCommerce)'); } $name =& $root->addChild("Name", shopNameOrHost()); $shopUrl = ELMAR_SHOP_ROOT_DIR; //tep_href_link('index.php', '', 'NONSSL', false); $url =& $root->addChild("Url", $shopUrl); $requests =& $root->addChild("Requests"); // Die Parameter fuer die Echtzeitanfrage, siehe elmar_request.php $requestUrl = ELMAR_SHOP_ROOT_DIR . 'elmar_request.php'; // Url zur Echtzeitabfrage $onlineRequest =& $requests->addChild("OnlineRequest", Null, array("method" => "GET POST TRACE")); $processor =& $onlineRequest->addChild("Processor", $requestUrl); $paramBrand =& $onlineRequest->addChild("ParamBrand", 'p_brand'); $paramProduct =& $onlineRequest->addChild("ParamProduct", 'p_product'); $paramDescription =& $onlineRequest->addChild("ParamDescription", 'p_desc'); if (defined('ELMAR_PRODUCTS_EAN_FIELD')) { $paramEan =& $onlineRequest->addChild("ParamID", 'p_ean', array("type" => "EAN")); } if (defined('ELMAR_PRODUCTS_ISBN_FIELD')) { $paramIsbn =& $onlineRequest->addChild("ParamID", 'p_isbn', array("type" => "ISBN")); } if (ELMAR_NEW_SHOPINFO_XML) { $paramId =& $onlineRequest->addChild("ParamID", 'p_id', array("type" => "ID")); } $paramQuickSearch =& $onlineRequest->addChild("ParamQuickSearch", 'p_qs'); $paramPriceBounds =& $onlineRequest->addChild("ParamPriceBounds"); $lowerPrice =& $paramPriceBounds->addChild("LowerPrice", 'p_low'); $upperPrice =& $paramPriceBounds->addChild("UpperPrice", 'p_high'); $paramSize =& $onlineRequest->addChild("ParamSize", 'p_size'); $paramIP =& $onlineRequest->addChild("ParamIP", 'p_ip'); $offlineRequest =& offlineRequest($requests); if (ELMAR_NEW_SHOPINFO_XML) { $affiliateRequest =& $requests->addChild('AffiliateRequest', NULL, array('method' => 'GET POST TRACE')); $processor =& $affiliateRequest->addChild('Processor', ELMAR_SHOP_ROOT_DIR . 'elmar_affiliate.php'); $paramName =& $affiliateRequest->addChild('ParamName', 'name'); } /* $interface = & $root->addChild("Interface"); $positionLimit = & $interface->addChild("PositionLimit"); */ if (defined('STORE_LOGO') && file_exists(DIR_FS_CATALOG . DIR_WS_IMAGES . STORE_LOGO)) { $logo =& $root->addChild("Logo", IMAGE_PATH . STORE_LOGO); } /* $address = & $root->addChild("Adress"); $company= & $address->addChild("Company"); $street = & $address->addChild("Street"); $city = & $address->addChild("City"); */ if (emailOk()) { $contact =& $root->addChild("Contact"); $publicMailAddress =& $contact->addChild("PublicMailAddress", STORE_OWNER_EMAIL_ADDRESS); $privateMailAddress =& $contact->addChild("PrivateMailAddress", STORE_OWNER_EMAIL_ADDRESS); } /* $orderPhone = & $contact->addChild("OrderPhone"); $number= & $orderPhone->addChild("Number"); $costPerMinute= & $orderPhone->addChild("CostPerMinute"); $orderFax= & $contact->addChild("OrderFax"); $number = & $orderFax->addChild("Number"); $costPerMinute= & $orderFax->addChild("CostPerMinute"); $hotline = & $contact->addChild("Hotline"); */ $prodSum = productAnz(); $categories =& $root->addChild("Categories"); if ($prodSum > 0) { $totalProductCount =& $categories->addChild("TotalProductCount", $prodSum); } $ns = ELMAR_NEW_SHOPINFO_XML ? 'c:' : ''; $attrib = ELMAR_NEW_SHOPINFO_XML ? array('lang' => $language_code) : NULL; $mapOther = $language_code == 'de' ? 'Sonstiges' : 'Other'; // Die Produktkategorien der ersten Ebene schreiben. Durch "group by" Doppelte herauswerfen. $categories_query = tep_db_query('select c.categories_id, cd.categories_name from ' . TABLE_CATEGORIES . ' c left join ' . TABLE_CATEGORIES_DESCRIPTION . ' cd using(categories_id) where c.parent_id=0 and cd.language_id=' . (int) $languages_id . ' group by cd.categories_name'); if (tep_db_num_rows($categories_query)) { while ($category = tep_db_fetch_array($categories_query)) { $categories_name = trim($category['categories_name']); if ($categories_name != '') { $item =& $categories->addChild("Item", NULL, $attrib); $name =& $item->addChild($ns . "Name", $categories_name); if (function_exists('tep_count_products_in_category') && ($cpic = tep_count_products_in_category($category['categories_id']))) { $productCount =& $item->addChild($ns . "ProductCount", $cpic); } $mapping =& $item->addChild($ns . "Mapping", KategorieAnpassen($category['categories_name'], $mapOther)); } } } else { $item =& $categories->addChild("Item", NULL, $attrib); $name =& $item->addChild($ns . "Name", $mapOther); if ($prodSum > 0) { $productCount =& $item->addChild($ns . "ProductCount", $prodSum); } $mapping =& $item->addChild($ns . "Mapping", $mapOther); } $lastschriftverfahren = defined('MODULE_PAYMENT_BANKTRANSFER_STATUS') && MODULE_PAYMENT_BANKTRANSFER_STATUS == 'True' ? true : false; $nachnahme = defined('MODULE_PAYMENT_COD_STATUS') && MODULE_PAYMENT_COD_STATUS == 'True' ? true : false; $paypal = defined('MODULE_PAYMENT_PAYPAL_STATUS') && MODULE_PAYMENT_PAYPAL_STATUS == 'True' ? true : false; $rechnung = defined('MODULE_PAYMENT_INVOICE_STATUS') && MODULE_PAYMENT_INVOICE_STATUS == 'True' ? true : false; $vorkasse = defined('MODULE_PAYMENT_MONEYORDER_STATUS') && MODULE_PAYMENT_MONEYORDER_STATUS == 'True' ? true : false; #$barzahlung = (defined('MODULE_PAYMENT_CASH_STATUS') && (MODULE_PAYMENT_CASH_STATUS == 'True')) ? true : false; #e-cash (elektronisches Zahlungsmittel); money transfer (Ueberweisung); cheque (Scheck) if ($nachnahme || $paypal || $lastschriftverfahren || $rechnung || $vorkasse) { $payment =& $root->addChild("Payment"); if ($nachnahme) { $item =& $payment->addChild("Item"); $name =& $item->addChild("Name", 'on delivery'); // Nachnahme //$surcharge = & $item->addChild("Surcharge"); //$maxSurcharge = & $item->addChild("MaxSurcharge"); //$relativeSurcharge = & $item->addChild("RelativeSurcharge"); } if ($paypal) { $item =& $payment->addChild("Item"); $name =& $item->addChild("Name", 'paypal'); // PayPal } if ($lastschriftverfahren) { $item =& $payment->addChild("Item"); $name =& $item->addChild("Name", 'debit'); // Bankeinzug/Lastschrift } if ($rechnung) { $item =& $payment->addChild("Item"); $name =& $item->addChild("Name", 'invoice'); // Rechnung } if ($vorkasse) { $item =& $payment->addChild("Item"); $name =& $item->addChild("Name", 'pre-payment'); // Vorauszahlung } } $free_shipping = defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING') && MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true' ? true : false; $shipping_flat_status = defined('MODULE_SHIPPING_FLAT_STATUS') && MODULE_SHIPPING_FLAT_STATUS == 'True' ? true : false; if ($free_shipping || $shipping_flat_status) { $forwardExpenses =& $root->addChild("ForwardExpenses"); if ($shipping_flat_status) { if (DISPLAY_PRICE_WITH_TAX == 'true') { $shipping_flat_cost = tep_add_tax(MODULE_SHIPPING_FLAT_COST, tep_get_tax_rate(MODULE_SHIPPING_FLAT_TAX_CLASS, STORE_COUNTRY, MODULE_SHIPPING_FLAT_ZONE)); } else { $shipping_flat_cost = MODULE_SHIPPING_FLAT_COST; } $flatRate =& $forwardExpenses->addChild("FlatRate", number_format($shipping_flat_cost * $currency_rate, 2)); } if ($free_shipping) { $upperBound =& $forwardExpenses->addChild("UpperBound", number_format(MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER * $currency_rate, 2)); } } /* $features = & $root->addChild("Features"); $installment = & $features->addChild("Installment"); $orderTracking = & $features->addChild("OrderTracking"); $deliverTracking = & $features->addChild("DeliverTRacking"); $installationAssistance = & $features->addChild("InstallationAssistance"); $repairService = & $features->addChild("RepairService"); $careAfterPurchase = & $features->addChild("CareAfterPurchase"); $giftService = & $features->addChild("GiftService"); */ $technology =& $root->addChild("Technology"); if (ENABLE_SSL) { $ssl =& $technology->addChild("SSL"); } $search =& $technology->addChild("Search"); // $set = & $technology->addChild("SET"); if (defined('FILENAME_CONDITIONS')) { $termAndConditions =& $root->addChild("TermsAndConditions"); $url =& $termAndConditions->addChild("Url", tep_href_link(FILENAME_CONDITIONS, '', 'NONSSL', false)); // $return = & $termAndConditions->addChild("Return"); } /* $specialDiscount = & $root->addChild("SpecialDiscount"); $description = & $specialDiscount->addChild("Description"); $url = & $specialDiscount->addChild("Url"); $certifications= & $root->addChild("Certifications"); $item = & $certifications->addChild("Item"); $self_Discription = & $root->addChild("Self-Discription"); */ $content = $tree->get(); $content = str_replace(''', '\'', $content); // ersetzen von ' $content = str_replace('|', '|', $content); // ersetzen von | return $content; }