assets/s2di.php /// Art: Shop Steuerung /// Inhalt: Anweisungen /// Beschreibung: Anweisungen und Vorbereiten VOR dem Rendern einer Shop Seite /// Benötigt: fast alles /// CCML-Parsing: notwendig /// ////////////////////////////////////////////////////////////////////////////////////////// /// /// Letzte Änderungen: /// 13.02.2009 Konstante für offene Auträge geändert /// 19.03.2009 Shopmore erweitert /// 25.05.2009 Bei digitalen Gütern Option Kaufen ohne Kundenkonto ausgeblendet /// shop to date 7 /// 07.12.2009 Warenkorbsperre bei Minderbestand hinzugefügt /// 09.12.2009 Cookiecheck hinzugefügt /// 14.12.2009 Warenkorbsperre bei Minderbestand hinzugefügt /// 22.01.2010 Email Adresse wiederholen /// 25.02.2010 Namensspeicherung für Plugin Login /// 26.02.2010 Funktionalität für Plugin Login /// 06.03.2010 Sortierung digitale Güter nach Datum /// 10.03.2010 Bestelloptionen /// 27.03.2010 PDF Dokumente /// 14.07.2010 Gutscheincodes Kleinbuchstaben /// 21.07.2010 Automatische Weiterleitung zum Versand optimiert, wegen neuer custom Seite /// 23.11.2010 Gutscheincodes Kleinbuchstaben löschen /// ////////////////////////////////////////////////////////////////////////////////////////// ///<23.11.2010/7.0.2.7/> require('s2diconf.php'); require(CC_INCLUDE_INIT); $shipping = new shipping(); $payment = new payment(); // Falls auf einer Seite, auf der man eingeloggt sein muss if (in_array(FILENAME, $login_sites)) { // Zum Login, falls nicht eingeloggt sonst Kunde laden if ($session->client_id && !$session->is_shopadmin()) $order = new order($session->session_id, new client($session->client_id), true); else redirect(CC_URL_LOGIN, FILENAME.'?'.$_SERVER['QUERY_STRING']); // Zum Warenkorb falls leer if (in_array(FILENAME, $checkout_sites) && !$order->get_quantity() && get(PARAMETER_MODE, CHECK_ALPHA_) != 'show') redirect(CC_URL_BASKET); // Zur Versandseite falls kein Versand gewählt if (in_array(FILENAME, array_diff($checkout_sites, array(CC_FILENAME_ADDRESSES, CC_FILENAME_CUSTOM, CC_FILENAME_SHIPPING))) && !($order->client->shipping_uid || is_post('shipping_uid'))) redirect(CC_URL_SHIPPING); // Zur Bezahlseite falls keine Bezahlung gewählt if (in_array(FILENAME, array_diff($checkout_sites, array(CC_FILENAME_ADDRESSES, CC_FILENAME_CUSTOM, CC_FILENAME_SHIPPING, CC_FILENAME_PAYMENT))) && !($order->client->payment_uid || is_post('payment_uid'))) redirect(CC_URL_PAYMENT); } else $order = new order($session->session_id, null, true); $error = false; // Je nach Seite verschiedenen tun switch (FILENAME) { // Affiliate Einstiegspunkt DIREKT case 'affiliate': $affiliate_subid = is_get('id') ? get('id', CHECK_TEXT32) : ''; $session->set_affiliate($affiliate_id, $affiliate_subid); break; // Warenkorb oder Merkzettel case CC_FILENAME_BASKET: $messages = array(); // Fall eingeloggt, Kunde laden if ($session->client_id && !$session->is_shopadmin()) $order = new order($session->session_id, new client($session->client_id), true); // Artikel löschen if (get(PARAMETER_MODE) == 'drop') $order->drop_item( get(PARAMETER_PAGE, CHECK_NUM), get(PARAMETER_VIEW, CHECK_NUM) ); // Verschieben Merkzettel <-> Warenkorb if (get(PARAMETER_MODE) == 'toggle') { $toggle_item = new item( get(PARAMETER_ID, CHECK_ALPHANUM), $order->order_id, get(PARAMETER_PAGE, CHECK_NUM), MODE_SWITCH, get(PARAMETER_VIEW, CHECK_NUM) ); $order->drop_item( get(PARAMETER_PAGE, CHECK_NUM), get(PARAMETER_VIEW, CHECK_NUM) ); $messages = $order->add_item($toggle_item); } // Merkzettel löschen if (is_get(PARAMETER_ERROR)) $messages = $order->update_quantity(); // Merkzettel löschen if (get(PARAMETER_MODE) == 'clrm') foreach($order->items as $item) if ($item->memo) $order->drop_item($item->position, 1); // Warenkorb leeren if (get(PARAMETER_MODE) == 'clrb') foreach($order->items as $item) if (!$item->memo) $order->drop_item($item->position, 0); // Hinzufügen if (is_post('quantity')) { if (is_post('memo_x') || is_post('memo')) $memo = 1; else $memo = 0; $uids[post('uid', CHECK_ALPHANUM)] = post('quantity', CHECK_NUMVALUE); if (is_post('related')) foreach(post('related') as $uid) $uids[$uid] = 1; foreach($uids as $uid => $quantity) { $result = $order->add_item(new item($uid, $order->order_id, null, MODE_POSTFILL, $memo, $quantity)); // Artikel merken für Plugin "Das könnte Sie interessieren" if (file_exists(DBPATH.$uid.'.'.CC_SITE_SCRIPTEXTENSION)) $session->basket_item($uid); // Ungültige Menge, wurde nicht reingelegt if ($result === ITEMSTATUS_INVALIDNUMBER) $messages[] = CC_RESSOURCE_BASKETPUTNOK; // Meldung nicht lieferbar else if ($result === ITEMSTATUS_NOTAVAILABLE) $messages[] = CC_RESSOURCE_BASKETNA; // ansonsten erfolgreich drin, ggf Meldung wegen Menge else { if ($result) $messages = array_merge($result, $messages); // Eco-Tax Anpassung Frankreich, falls Ecotax vorhanden neuen Artikel einpflegen if (CC_SITE_LOCALE_FR && post('ecotaxprovider')) $order->add_item(new item(null, null, null, MODE_ECOTAXPOSTFILL, $memo)); } } ///MO43+ ///MO43-< if (!file_exists($product_file = DBPATH.$uid.'.'.CC_SITE_SCRIPTEXTENSION)) die('No such item '.$product_file); include($product_file); $shopmore = $product_data->shopmore; ///MO43> } else $messages = array_merge($order->calc_quantity(), $messages); $order->calc_prices(); $order->calc_vat(FILENAME); break; // AXAJ Warenkorb case 'putbasket': $messages = array(); $memo = intval(post('memo')); // Cookiecheck if ($session->just_created) { $resultmode = 0; $messages[] = CC_RESSOURCE_BASKET_COOKIESREQUIRED; } else { $uids[post('uid', CHECK_ALPHANUM)] = post('quantity', CHECK_NUMVALUE); if (is_post('related')) foreach(post('related') as $uid) $uids[$uid] = 1; $ok_message = 0; foreach($uids as $uid => $quantity) { // Artikel merken für Plugin "Das könnte Sie interessieren" if (file_exists(DBPATH.$uid.'.'.CC_SITE_SCRIPTEXTENSION)) $session->basket_item($uid); $result = $order->add_item(new item($uid, $order->order_id, null, MODE_POSTFILL, $memo, $quantity)); // Ungültige Menge, wurde nicht reingelegt if ($result === ITEMSTATUS_INVALIDNUMBER) { $resultmode = 0; $messages[] = $memo ? CC_RESSOURCE_MEMOPUTNOK : CC_RESSOURCE_BASKETPUTNOK; // Meldung nicht lieferbar } else if ($result === ITEMSTATUS_NOTAVAILABLE) { $resultmode = 0; $messages[] = CC_RESSOURCE_BASKETNA; // Meldung nicht im Bestand } else if ($result === ITEMSTATUS_OUTOFSTOCK) { $resultmode = 0; $messages[] = CC_RESSOURCE_BASKET_OUTOFSTOCK; // ansonsten erfolgreich drin, ggf Meldung wegen Menge } else if ($result) { $resultmode = 1; $messages = $result; } else { $resultmode = 1; $ok_message++; } } if (!count($messages) && $ok_message == 1) $messages[] = $memo ? CC_RESSOURCE_MEMOPUTOK : CC_RESSOURCE_BASKETPUTOK; else if (!count($messages) && $ok_message) $messages[] = $memo ? CC_RESSOURCE_MEMOPUTSOMEOK : CC_RESSOURCE_BASKETPUTSOMEOK; } $message = implode("\n\n", $messages); // Eco-Tax Anpassung Frankreich, falls Ecotax vorhanden neuen Artikel einpflegen if ($resultmode == 1) if (CC_SITE_LOCALE_FR && post('ecotaxprovider')) $order->add_item(new item(null, null, null, null, null, MODE_ECOTAXPOSTFILL, $memo)); $order->calc_prices(); echo "$resultmode;".rawurlencode($message).";".format::quantityall($order->get_quantity()).";".format::cleanprice($order->get_price(), $order->currency); break; // Loginfile case CC_FILENAME_LOGIN: if (strstr(xcrypt::hex2str($redirect), CC_FILENAME_ADDRESSES) && !$order->get_quantity()) redirect(CC_URL_BASKET); $client = new client(); $client->db('clients'); $email_in_use = false; $error_email_repeat = false; $error = false; if ($session->client_id && $session->client_id > 0) redirect(xcrypt::hex2str($redirect)); switch($mode = post('mode', CHECK_ALPHA_)) { // Login mit Benutzername / Kundennummer und Passwort case MODE_LOGIN: $check = $client->check_login(post('login_email'), post('login_password')); if ($check === true) { $session->set_client($client->client_id, $client->firstname . ' ' . $client->lastname, false); // Plugin direkter Login if (is_post('plugin_login_redirect')) { if (!post('plugin_login_redirect')) redirect($_SERVER['HTTP_REFERER']); else redirect(CC_FILENAME_ACCOUNT); } redirect(xcrypt::hex2str($redirect)); } else if ($check === null) { $session->set_shopadmin(); redirect($redirect && !strstr(xcrypt::hex2str($redirect), CC_FILENAME_ACCOUNT) ? xcrypt::hex2str($redirect) : CC_URL_OSINDEX); } if (is_post('login_email')) $error = true; break; // Passwort zusenden weil vergessen case MODE_SENDPASSWORD: $client->email = post('sendpassword_email'); if (!$error = $client->is_error('email')) { $sendpassword_done = true; if ($the_client = $client->get(array('client_id'), array('email' => $client->email))) { $client = new client($the_client->client_id); $password = $client->new_password(); $client->store(); $client->send_password($password); } $mode = 'login'; } break; // Neu anmelden oder fortfahren ohne Anmeldung case MODE_NEW: case MODE_CONTINUEWITHOUTLOGIN: $prefix = $mode == MODE_CONTINUEWITHOUTLOGIN ? '_' : ''; $email_in_use = $client->check_email(post($prefix.'email'), $mode); $error_email_repeat = $client->check_email_repeat(post($prefix.'email'), post($prefix.'emailrepeat')); $error = $client->set_client($mode); if (!$error && !$email_in_use && !$error_email_repeat) { // client einloggen if ($mode == MODE_CONTINUEWITHOUTLOGIN && post('saveonmachine', CHECK_BOOL)) $client->password = $session->session_id; else if ($mode == MODE_CONTINUEWITHOUTLOGIN && !post('saveonmachine', CHECK_BOOL)) $client->password = null; $client->store($mode, $mode == MODE_NEW ? 0 : $session->client_id); $session->set_client($client->client_id, $client->firstname . ' ' . $client->lastname, post('saveonmachine', CHECK_BOOL) ? true : false); if ($redirect) redirect(xcrypt::hex2str($redirect)); } break; // Start Login ohne Vorauswahl default: if ($session->is_shopadmin()) redirect(CC_URL_OSINDEX); $start = true; if (CC_SITE_LOGINMODE == LOGIN_OFF) $mode = MODE_CONTINUEWITHOUTLOGIN; else $mode = MODE_LOGIN; if ($session->client_id < 0) { $client->db_selectobject(array('client_id' => $session->client_id, 'order_id' => 0)); $mode = MODE_CONTINUEWITHOUTLOGIN; $client->emailrepeat = $client->email; } } $order->calc_prices(); // Auf ESD prüfen um ggf. Anmeldung ohne Kundenkonto zu unterbinden $is_esd = false; foreach($order->items as $item) if ($item->download_uid) $is_esd = true; break; //////////////////////////////////////////////////////////////////////////// Kaufabwicklung Start // Lieferadresse case CC_FILENAME_ADDRESSES: // Adresse gewählt? if (is_post(PARAMETER_REDIRECT)) { if (post('deviating_shipping_address', CHECK_BOOL)) $error = $order->client->set_shipping_address(); else $order->client->deviating_shipping_address = 0; if (!$error) { $order->client->store(); redirect($redirect ? xcrypt::hex2str($redirect) : CC_URL_CUSTOM); } else redirect(CC_URL_ADDRESSES.'?'.PARAMETER_ERROR.($redirect ? '&'.PARAMETER_REDIRECT.'='.$redirect : '')); } else $error = is_get(PARAMETER_ERROR); $order->calc_prices(); break; // Kundenspezifische Bestelloptionen case CC_FILENAME_CUSTOM: // Abgesendet? if (is_post(PARAMETER_REDIRECT)) { $custom_options = array(); foreach ($customoptions as $custom) if (is_post('specialvalue' . $custom->number) && ($value = post('specialvalue' . $custom->number))) { $custom_caption = $custom->caption; if ($custom->is_combo) $custom_value = $custom->combo_options[$value]->caption; else $custom_value = $value; $custom_options[$custom_caption] = $custom_value; } $order->client->custom_options = serialize($custom_options); $order->client->store(); redirect($redirect ? xcrypt::hex2str($redirect) : CC_URL_SHIPPING); } else { // Falls keine Bestelloptionen vorhanden Schritt überspringen if (!CC_SITE_HASORDERSPECIALS) { $order->client->custom_options = null; $order->client->store(); redirect($redirect ? xcrypt::hex2str($redirect) : CC_URL_SHIPPING); } } $order->calc_prices(); break; // Versand case CC_FILENAME_SHIPPING: // Forumlar Versand abgeschickt? if (is_post(PARAMETER_REDIRECT)) { $order->client->shipping_uid = post('shipping_uid', CHECK_ALPHANUM); $order->client->store(); redirect($redirect ? xcrypt::hex2str($redirect) : CC_URL_PAYMENT); } else { // Nur ESD, dann Versandauswahl überspringen (nur für Artikel im Warenkorb, nicht Merkzettel) $jumb = true; foreach ($order->items as $item) { if (!$item->download_uid && !$item->memo) { $jumb = false; break; } } if ($jumb) { $order->client->shipping_uid = -1; $order->client->store(); redirect($redirect ? xcrypt::hex2str($redirect) : CC_URL_PAYMENT); } } $order->calc_prices(); $shipping->calc_prices($order); break; // Bezahlung case CC_FILENAME_PAYMENT: // Formular Bezahlung abgeschickt? if (is_post(PARAMETER_REDIRECT)) { $order->client->payment_uid = post('payment_uid', CHECK_ALPHANUM); $order->client->store(); $order->pm = $payment->get($order->client->payment_uid); $error = false; if ($order->pm->parameter[0] == 'ccard' || $order->pm->parameter[0] == 'ccardcvc') $error = $order->client->set_credit_card($order->pm->parameter[0]); if ($order->pm->parameter[0] == 'debit') $error = $order->client->set_bank_account(); $order->client->store(); if (!$error) { $order->client->store(); redirect($redirect ? xcrypt::hex2str($redirect) : CC_URL_OTHER); } else redirect(CC_URL_PAYMENT.'?'.PARAMETER_ERROR.($redirect ? '&'.PARAMETER_REDIRECT.'='.$redirect : '')); } else $error = is_get(PARAMETER_ERROR); $order->calc_prices(); $payment->calc_prices($order); break; // Sonstiges (Gutscheine und Nachricht) case CC_FILENAME_OTHER: $error_coupon = false; // Gutschein entfernen if (is_get(PARAMETER_DELETE)) $order->remove_coupon(get(PARAMETER_DELETE, CHECK_ALPHANUMCOUPON)); // Gutschein überprüfen if (is_get(PARAMETER_ERROR)) { if ($order->coupon_id) $error_coupon = $order->add_coupon($coupon_id = $order->coupon_id); if ($error_coupon) $order->remove_coupon(); } // Formular Sonstiges abgeschickt? if (is_post(PARAMETER_REDIRECT)) { // Sonstiges $order->client->message = post('message'); $order->client->store(); if ($order->coupon_id) $error_coupon = $order->add_coupon($order->coupon_id); if ($error_coupon) $order->remove_coupon(); if (post('coupon_id') && CC_SITE_COUPONS) $error_coupon = $order->add_coupon($coupon_id = strtolower(post('coupon_id'))); if (!$error_coupon) redirect(CC_URL_SUMMARY); } $order->calc_prices(); break; // Zusammenfassung der Bestellung case CC_FILENAME_SUMMARY: $error_coupon = false; // Formular Zusammenfassung abgeschickt? if (is_post(PARAMETER_REDIRECT)) { if (post('checkagb', CHECK_BOOL)) { define('CC_RESSOURCE_PAGECAPTION', ''); if (!$order->check_quantity()) redirect(CC_FILENAME_BASKET.'?'.PARAMETER_ERROR); if ($order->coupon_id) $error_coupon = $order->add_coupon($order->coupon_id); if ($error_coupon) redirect(CC_URL_OTHER.'?'.PARAMETER_ERROR); $order->calc_prices(); $order->calc_vat(FILENAME); $order->create($session); $message = $order->client->message; $order->client->message = null; $order->client->change_id = null; $order->client->custom_options = null; $order->client->store(); $order->client->message = $message; if ($order->client->not_saved_on_machine()) { $order->client->delete(); $session->unset_client(); } $order->client->order_id = $order->order_id; $order->client->store(false); $order->store(true); // Auftragsbestätigung und Rechnung PDF generieren // Direkt Rechnung if ($order->pdf_creation == PDF_CREATION_ONORDER && !CC_SITE_BILLHASLEFTTHEBUILDING) { include_once(CC_BLOGIC_PDFDOC); $pdf = new pdfdoc(CC_SITE_FILEKEY, DOCS, $order); $pdf->generate($pdf->MODE_BILL); // Erstmal Auftragsbestätigung } else if ($order->pdf_creation == PDF_CREATION_ONSHIPP && !CC_SITE_BILLHASLEFTTHEBUILDING) { include_once(CC_BLOGIC_PDFDOC); $pdf = new pdfdoc(CC_SITE_FILEKEY, DOCS, $order); $pdf->generate($pdf->MODE_CONFIRMATION); } // ESD Artikel zentral speichern, ausser die auf Merkzettel foreach ($order->items as $item) if ($item->download_uid && !$item->memo) $item->store_download(); $order->send_confirmation_emails(); redirect(CC_SITE_HTTPURL.clean_url(CC_URL_COMPLETE).'?'.PARAMETER_ORDER.'='.$order->order_id.'&'.PARAMETER_KEY.'='.$order->generate_key().'&'.PARAMETER_ID.'='.$order->pm->uid); } else redirect(CC_URL_SUMMARY.'?'.PARAMETER_ERROR); } $error = is_get(PARAMETER_ERROR) ? true : false; $order->calc_prices(); $order->calc_vat(FILENAME); break; // Bestellung komplett case CC_FILENAME_COMPLETE: $postpayment = get(PARAMETER_MODE, CHECK_ALPHA); $order_id = get(PARAMETER_ORDER, CHECK_NUM); $key = get(PARAMETER_KEY, CHECK_ALPHANUM); $payment_id = get(PARAMETER_ID, CHECK_ALPHANUM); if ($payment_id) { if (!$pm = $payment->get($payment_id)) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); } else $pm = null; $myorder = new order($order_id); if (!$order_id || !$myorder->order_date) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); if ($key != $myorder->generate_key()) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); // Bestellung drucken if (is_get(PARAMETER_PRINT)) { require(CC_SHOPSCRIPT_OUTPUTFUNCTIONS); print_order($myorder); exit; } $esd = false; foreach($myorder->items as $item) if ($item->download_uid) $esd = true; break; //////////////////////////////////////////////////////////////////////////// Kaufabwicklung Ende // Mein Konto case CC_FILENAME_ACCOUNT: $order->calc_prices(); $client = $order->client; if (!$client->has_account()) redirect(CC_URL_LOGIN, CC_URL_ACCOUNT); $mode = is_get(PARAMETER_MODE) ? get(PARAMETER_MODE, CHECK_ALPHA_) : post('mode', CHECK_ALPHA_); $edit_error = false; $edit_emailinuse = false; switch($mode) { // Kundendaten bearbeiten case 'edit': define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_TITLE); break; // Kundendaten eingegeben case 'edit_submit': $edit_emailinuse = $client->check_email(post('email'), MODE_EDIT); $edit_error = $client->set_client(MODE_EDIT); if (!$edit_error && !$edit_emailinuse) { $client->store(); if ($redirect) redirect(xcrypt::hex2str($redirect)); else redirect(CC_URL_ACCOUNT.'?'.PARAMETER_MODE.'=edit_done'); } else { $mode = MODE_EDIT; define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_TITLE); } break; // Nachricht eingegeben, falls erlaubt case 'message': if (!CC_SITE_MAILMESSAGE) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_SENDMAIL); break; // Nachricht senden case 'message_submit': if (!CC_SITE_MAILMESSAGE) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); $client->send_message(post('message'), post('order_id', CHECK_NUM), post('item')); redirect(CC_URL_ACCOUNT.'?'.PARAMETER_MODE.'=message_done'); break; // Meine Bestellungen case 'myorders': if (!CC_SITE_MYORDERS) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_MYORDERS); $s = is_post('showmode') ? post('showmode', CHECK_ALPHANUM) : 'pending'; $myorder = new order(); switch ($s) { case '1month': $client->db_selectjoin(array('t1.order_id as order_id'), 'orders','order_id', array('order_date > '.SQL_DATEBACK_1MONTH, 'client_id' => $client->client_id), array('order_date desc, order_time desc')); break; case '3months': $client->db_selectjoin(array('t1.order_id as order_id'), 'orders', 'order_id', array('order_date > '.SQL_DATEBACK_3MONTH, 'client_id' => $client->client_id), array('order_date desc, order_time desc')); break; case '12months': $client->db_selectjoin(array('t1.order_id as order_id'), 'orders', 'order_id', array('order_date > '.SQL_DATEBACK_1YEAR, 'client_id' => $client->client_id), array('order_date desc, order_time desc')); break; case 'all': $client->db_selectjoin(array('t1.order_id as order_id'), 'orders', 'order_id', array('client_id' => $client->client_id), array('order_date desc, order_time desc')); break; case 'pending': default: $client->db_selectjoin(array('t1.order_id as order_id'), 'orders', 'order_id', array('status !=\''.CC_RESSOURCE_ORDERSTATUSSHORT_SHIPPED.'\'', 'client_id' => $client->client_id), array('order_date desc, order_time desc')); } $order_ids = array(); while($row = $client->db_fetch()) if ($row->order_id) $order_ids[] = $row->order_id; $client->db_free(); break; // Bestellung anzeigen case 'order': if (!CC_SITE_MYORDERS) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_MYORDERS); $myorder = new order(get(PARAMETER_ORDER, CHECK_NUM)); if ($myorder->client->client_id != $session->client_id) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); break; // Bestellung drucken case 'printorder': $order_id = get(PARAMETER_ORDER, CHECK_NUM); $myorder = new order($order_id); if ($myorder->client->client_id != $session->client_id) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); require(CC_SHOPSCRIPT_OUTPUTFUNCTIONS); print_order($myorder, true); exit; break; // Fragen Reklamationen case 'claim': if (!CC_SITE_CLAIMS) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_SENDMAIL); $myorder = new order(get(PARAMETER_ORDER, CHECK_NUM)); if ($myorder->client->client_id != $session->client_id) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); break; // Meine Rechnungen case 'mybills': if (!CC_SITE_MYBILLS) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_MYBILLS); $order_ids = array(); foreach ($mybills_paymentmethods as $p) { $client->db_selectjoin(array('t1.order_id as order_id'), 'orders', 'order_id', array("payment_param" => $p, 'client_id' => $client->client_id)); while($row = $client->db_fetch()) if ($row->order_id) $order_ids[] = $row->order_id; } $client->db_free(); break; // Warenrückgabe online case 'return': if (!CC_SITE_RETURN) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_RETURN); $myorder = new order(get(PARAMETER_ORDER, CHECK_ALPHANUM)); if ($myorder->client->client_id != $session->client_id) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); break; // Warenrückgabe online Artikel auswählen case 'linkreturnform': case 'printreturnform': if (!CC_SITE_RETURN) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_RETURN); $myorder = new order(get(PARAMETER_ORDER, CHECK_ALPHANUM)); if (strtotime("$myorder->order_date $myorder->order_time") + CC_SITE_RETURNDAYS * 86400 < time()) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); if ($myorder->client->client_id != $session->client_id) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); // Warenrückgabe online Formular drucken if ($mode == 'printreturnform') { require(CC_SHOPSCRIPT_OUTPUTFUNCTIONS); print_returnform($myorder); exit; } break; // Digitale Güter case 'myesd': define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_MYESD); $order_ids = array(); while($row = $client->getorderssorted(array('t1.order_id'), array('client_id' => $client->client_id), array('order_date asc', 'order_time asc'))) $order_ids[] = $row->order_id; break; // Digitaler Artikel Lizenzen case 'mylicenses': case 'newlicense': $error_exists = is_get(PARAMETER_ERROR); $now_pending = is_get(PARAMETER_DIRECTION); if (!$order_id = get(PARAMETER_ORDER, CHECK_NUM)) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); if (!$download_id = get(PARAMETER_ID, CHECK_ALPHANUM)) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); $myorder = new order($order_id); if ($myorder->client->client_id != $session->client_id) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); $ua = get(PARAMETER_VIEW, CHECK_ALPHA); foreach ($myorder->items as $it) if ($it->download_uid == $download_id) $item = $it; // Überprüfung ob bereits bezahlt ist if (!isset($item) || $item->order_status <= CC_RESSOURCE_ORDERSTATUSSHORT_WAITINGPAYMENT) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); $licenses = new abstractdb(TABLE_ESDLICENSES); $count_all = 0; $count_pending = 0; $count_ok = 0; while($lic = $licenses->get(array('license_pending'), array('order_id' => $order_id, 'id' => $item->download_uid))) { if ($lic->license_pending == LICENSE_OK) $count_ok++; if ($lic->license_pending == LICENSE_PENDING) $count_pending++; $count_all++; } // Neue Lizenz $error_license = false; if ($mode == 'newlicense') { define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_NEWLICENSEHEADER); // Falls neue Lizenz angefordert $error_hk = false; $error_comment = false; if (is_post('new')) { $hk = post('hk'); if (!preg_match('/^[A-Z]{4}-[A-Z]{4}-[A-Z]{4}-[A-Z]{4}-[A-Z]{4}-[A-Z]{4}-[A-Z]{4}$/', $hk)) $error_hk = true; $comment = post('comment'); if ($count_all && strlen($comment) < ESD_COMMENT_MINLENGTH) $error_comment = true; // Schauen, ob bereits beantragt if ($licenses->db_numrows(array( 'order_id' => $order_id, 'id' => $item->download_uid, 'hardware_id' => $hk ))) redirect(CC_URL_ACCOUNT.'?'.PARAMETER_MODE.'=mylicenses&'.PARAMETER_ORDER.'='.$myorder->order_id.'&'.PARAMETER_ID.'='.$item->download_uid.'&'.PARAMETER_VIEW.'='.$ua.'&'.PARAMETER_ERROR); // Falls kein Fehler muss Lizenz beantragt werden if (!$error_hk && !$error_comment) { if ($count_ok + $count_pending < CC_SITE_ESDAUTOLICENSES) $error_license = $item->license_new($myorder, $hk, true, $comment ? $comment : null); else $error_license = $item->license_pending($myorder, $hk, $comment); if (!$error_license) redirect(CC_URL_ACCOUNT.'?'.PARAMETER_MODE.'=mylicenses&'.PARAMETER_ORDER.'='.$myorder->order_id.'&'.PARAMETER_ID.'='.$item->download_uid.'&'.PARAMETER_VIEW.'='.$ua.($count_ok >= CC_SITE_ESDAUTOLICENSES ? '&'.PARAMETER_DIRECTION : '')); } } } else define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_LICENSES); break; // Rechnung anzeigen oder speichern case 'showbill': // Auftragsbestätigung anzeigen oder speichern case 'showconfirmation': if (!CC_SITE_PDF_ACCOUNT || CC_SITE_BILLHASLEFTTHEBUILDING) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); $myorder = new order(get(PARAMETER_ORDER, CHECK_NUM)); if ($myorder->client->client_id != $session->client_id) script_die(CC_RESSOURCE_FORBIDDEN, __FILE__, __LINE__); require(CC_BLOGIC_PDFDOC); $pdf = new pdfdoc(CC_SITE_FILEKEY, DOCS, $myorder); if ($mode == 'showbill') $pdf->show($pdf->MODE_BILL); else if ($mode == 'showconfirmation') $pdf->show($pdf->MODE_CONFIRMATION); break; default: define('CC_RESSOURCE_PAGECAPTION', CC_RESSOURCE_SHOPACCOUNT); } // ESD Artikel gekauft, dann Punkt Digitale Güter einblenden $esd_order_ids = array(); while($row = $client->getorders(array('order_id'), array('client_id' => $client->client_id))) $esd_order_ids[] = $row->order_id; $esd = false; foreach ($esd_order_ids as $order_id) { $thisorder = new order($order_id); foreach ($thisorder->items as $it) if ($it->download_uid) $esd = true; } break; default: // Zuletzt angesehen speichern $order->calc_prices(); if (file_exists(DBPATH.UID.'.'.CC_SITE_SCRIPTEXTENSION)) $session->remember_item(UID); } ?>