Jump to content

mcmannehan

Members
  • Content count

    368
  • Joined

  • Last visited

  • Days Won

    4

mcmannehan last won the day on April 29 2018

mcmannehan had the most liked content!

5 Followers

About mcmannehan

  • Rank
    That's Me
  • Birthday 12/07/1960

Profile Information

  • Real Name
    Manfred Wedel
  • Gender
    Male
  • Location
    Thailand

Recent Profile Visitors

7,383 profile views
  1. mcmannehan

    Gastronomie Bestellsystem

    Bilder sagen mehr als Worte!!! UND die Profis wissen, warum Drag and Drop mit Bildern benutzt wird. Mag der Kunde und ist verkaufs fördernd. Falsch ist: "Ich will nicht, dass die Seite mit Bildchen überschütet wird." Nicht das was Du da willst zählst, sondern: Das was der Kunde mag -> somit gibt es "Verkaufsfördernde bewährte Konzepte." Einen Shop zu programmieren ist das eine, das Marketing und die WAWI zu verstehen ist das Andere. Beides (und noch einiges mehr) zu vereinen ist Kunst an sich!!! Und bei dieser Kunst trennt sich die Spreu (Laie) vom Weizen (Profi)!!!!
  2. mcmannehan

    Gastronomie Bestellsystem

    Rechnungen für den Restaurantebetreiber, ist da Maß der Dinge. Der tiefere Sinn dieser Sache liegt im Verständnis der WAWI. Ebenso kann ich nur empfehlen, dass die DSGVO 100% tig umgesetzt werden sollte. Ist leider nicht der Fall. Online Rechere bei den Ämtern hilft bei der Lösung.
  3. mcmannehan

    Paypal App - customers mail

    What version of osC and what version of PayPal you use? Normally you should check the languages file, it deppends what version of PayPal you use. Check /includes/languages/english/checkout_process.php or /includes/languages/english/modules/payment/paypal_standard.php If you can't fix, than send a PM to me.
  4. mcmannehan

    Gastronomie Bestellsystem

    Hmmmm, es gibt Systeme, da kann man sich die Pizza mit einfachen Bildern per Drag und Drop zusammenstellen. Drop-Downs schön und gut, ist aber leider schon etwas veraltet. Eine Übersicht für Zusatzstoffe ist nicht schlecht, aber man könnte dies super mit einem HTML Tag <abbr> lösen und so bei jedem Gericht die entsprechende Anzeige generieren und vieles mehr. HTML Rechnungen? PDF ist das was angesagt ist. Design schmerzt in den Augen, warme Töne sind angesagt und keine "heißen" wie rot und gelb! Alles mal ein paar ganz kleine Anregungen, mal sehen ob dies nicht wieder falsch verstanden wird.
  5. mcmannehan

    Paypal nimmt andere Versandkosten

    So wie das aussieht, ist die komplette PayPal- und Shopversion fehlerhaft installiert.
  6. mcmannehan

    Where is The Orders

    I use https://github.com/gburton/Responsive-osCommerce/archive/2341-Frozen.zip I did coded a complett new ccbill add-on. This add-on will be verified by ccbill, soon. If this happen, can PM me for to get the add-on.
  7. mcmannehan

    Upload Class File

    Changes in the Regex are wrong. For to allow only a-z A-Z 0-9 - _ . The regex must be: if (preg_match('/^[-A-Za-z0-9._]+$/i', $file['name']) == false) { $message = sprintf(ERROR_FILE_ILLEGAL_CHAR, $file['name']); if ($this->message_location == 'direct') { $messageStack->add($message, 'error'); } else { $messageStack->add_session($message, 'error'); } return false; }
  8. mcmannehan

    Where is The Orders

    This problem is the customer. He don't finish the purchased correct. Than the order is still in the basket and don't appear in the order list. I get this problem of the customers with a lot payment systems like PayPal, CCBill, Moneybroker and so on. I can fix this. Pm me if you still needs help.
  9. mcmannehan

    Upload Class File

    I wondering, why the check for illegal character dosen't exist!!! In the frozen and in the boostrap 4 version. So i recommand change complett the function parse to this: Start about at line 35 catalog/admin/includes/classes/upload.php function parse() { global $messageStack; $file = array(); if (isset($_FILES[$this->file])) { $file = array('name' => $_FILES[$this->file]['name'], 'type' => $_FILES[$this->file]['type'], 'size' => $_FILES[$this->file]['size'], 'tmp_name' => $_FILES[$this->file]['tmp_name']); } elseif (isset($_FILES[$this->file])) { $file = array('name' => $_FILES[$this->file]['name'], 'type' => $_FILES[$this->file]['type'], 'size' => $_FILES[$this->file]['size'], 'tmp_name' => $_FILES[$this->file]['tmp_name']); } if ( tep_not_null($file['tmp_name']) && ($file['tmp_name'] != 'none') && is_uploaded_file($file['tmp_name']) ) { if (sizeof($this->extensions) > 0) { if (!in_array(strtolower(substr($file['name'], strrpos($file['name'], '.')+1)), $this->extensions)) { if ($this->message_location == 'direct') { $messageStack->add(ERROR_FILETYPE_NOT_ALLOWED, 'error'); } else { $messageStack->add_session(ERROR_FILETYPE_NOT_ALLOWED, 'error'); } return false; } } //BOC by mcmannehan if (preg_match('/^([-\.\w]+)$/', $file['name']) !== true) { $message = sprintf(ERROR_FILE_ILLEGAL_CHAR, $file['name']); if ($this->message_location == 'direct') { $messageStack->add($message, 'error'); } else { $messageStack->add_session($message, 'error'); } return false; } //EOC $this->set_file($file); $this->set_filename($file['name']); $this->set_tmp_filename($file['tmp_name']); return $this->check_destination(); } else { if ($this->message_location == 'direct') { $messageStack->add(WARNING_NO_FILE_UPLOADED, 'warning'); } else { $messageStack->add_session(WARNING_NO_FILE_UPLOADED, 'warning'); } return false; } } And add to the catalog/admin/includes/languages/english.php: const ERROR_FILE_ILLEGAL_CHAR = 'Invalid character in the file name! <strong>%s</strong>. Spaces and special characters are not allowed in Internet filenames. Allowed are: a-z A-Z 0-9 - _'; "const" have some restriction but it's much more better and faster than define.
  10. mcmannehan

    value output

    The resolution from @MrPhil is very good. Clear and effective!!! @YePix Your explode isn't right. You don't need an start or an end tag. I recommand you shoul read here https://www.php.net/manual/en/function.explode.php
  11. mcmannehan

    Still some important stuff missing in the admin area

    I recomand one more changes. Only copy if attributes available: $attributes_query = tep_db_query("select products_attributes_id, options_id, options_values_id, options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = " . (int)$products_id); if (tep_db_num_rows($attributes_query) > 0) { while ($attributes = tep_db_fetch_array($attributes_query)) { tep_db_query("insert into " . TABLE_PRODUCTS_ATTRIBUTES . " (products_id, options_id, options_values_id, options_values_price, price_prefix) values ('" . (int)$last_new_products_id . "', '" . (int)$attributes['options_id'] . "', '" . (int)$attributes['options_values_id'] . "', '" . tep_db_input($attributes['options_values_price']) . "', '" . tep_db_input($attributes['price_prefix']) . "')"); } }
  12. mcmannehan

    Still some important stuff missing in the admin area

    Thx typo error all the time happens 😉
  13. To copy a product to a differnt category or the same category, i still miss in every new version some important copy stuff 😞 If a product have attributes, there dosen't get copied. So here is my suggestion for to change that: start about line 340 in catalog/admin/categories.php change this: case 'copy_to_confirm': if (isset($_POST['products_id']) && isset($_POST['categories_id'])) { $products_id = tep_db_prepare_input($_POST['products_id']); $categories_id = tep_db_prepare_input($_POST['categories_id']); if ($_POST['copy_as'] == 'link') { if ($categories_id != $current_category_id) { $check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$products_id . "' and categories_id = '" . (int)$categories_id . "'"); $check = tep_db_fetch_array($check_query); if ($check['total'] < '1') { tep_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . (int)$products_id . "', '" . (int)$categories_id . "')"); } } else { $messageStack->add_session(ERROR_CANNOT_LINK_TO_SAME_CATEGORY, 'error'); } } elseif ($_POST['copy_as'] == 'duplicate') { $product_query = tep_db_query("select products_quantity, products_model, products_image, products_price, products_date_available, products_weight, products_tax_class_id, manufacturers_id, products_gtin from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'"); $product = tep_db_fetch_array($product_query); tep_db_query("insert into " . TABLE_PRODUCTS . " (products_quantity, products_model,products_image, products_price, products_date_added, products_date_available, products_weight, products_status, products_tax_class_id, manufacturers_id, products_gtin) values ('" . tep_db_input($product['products_quantity']) . "', '" . tep_db_input($product['products_model']) . "', '" . tep_db_input($product['products_image']) . "', '" . tep_db_input($product['products_price']) . "', now(), " . (empty($product['products_date_available']) ? "null" : "'" . tep_db_input($product['products_date_available']) . "'") . ", '" . tep_db_input($product['products_weight']) . "', '0', '" . (int)$product['products_tax_class_id'] . "', '" . (int)$product['manufacturers_id'] . "', '" . tep_db_input($product['products_gtin']) . "')"); $dup_products_id = tep_db_insert_id(); $description_query = tep_db_query("select language_id, products_name, products_description, products_url, products_seo_title, products_seo_description, products_seo_keywords from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$products_id . "'"); while ($description = tep_db_fetch_array($description_query)) { tep_db_query("insert into " . TABLE_PRODUCTS_DESCRIPTION . " (products_id, language_id, products_name, products_description, products_url, products_viewed, products_seo_title, products_seo_description, products_seo_keywords) values ('" . (int)$dup_products_id . "', '" . (int)$description['language_id'] . "', '" . tep_db_input($description['products_name']) . "', '" . tep_db_input($description['products_description']) . "', '" . tep_db_input($description['products_url']) . "', '0', '" . tep_db_input($description['products_seo_title']) . "', '" . tep_db_input($description['products_seo_description']) . "', '" . tep_db_input($description['products_seo_keywords']) . "')"); } $product_images_query = tep_db_query("select image, htmlcontent, sort_order from " . TABLE_PRODUCTS_IMAGES . " where products_id = '" . (int)$products_id . "'"); while ($product_images = tep_db_fetch_array($product_images_query)) { tep_db_query("insert into " . TABLE_PRODUCTS_IMAGES . " (products_id, image, htmlcontent, sort_order) values ('" . (int)$dup_products_id . "', '" . tep_db_input($product_images['image']) . "', '" . tep_db_input($product_images['htmlcontent']) . "', '" . tep_db_input($product_images['sort_order']) . "')"); } tep_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . (int)$dup_products_id . "', '" . (int)$categories_id . "')"); $products_id = $dup_products_id; } if (USE_CACHE == 'true') { tep_reset_cache_block('categories'); tep_reset_cache_block('also_purchased'); } } tep_redirect(tep_href_link('categories.php', 'cPath=' . $categories_id . '&pID=' . $products_id)); break; to this: case 'copy_to_confirm': if (isset($_POST['products_id']) && isset($_POST['categories_id'])) { $products_id = tep_db_prepare_input($_POST['products_id']); $categories_id = tep_db_prepare_input($_POST['categories_id']); if ($_POST['copy_as'] == 'link') { if ($categories_id != $current_category_id) { $check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$products_id . "' and categories_id = '" . (int)$categories_id . "'"); $check = tep_db_fetch_array($check_query); if ($check['total'] < '1') { tep_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . (int)$products_id . "', '" . (int)$categories_id . "')"); } } else { $messageStack->add_session(ERROR_CANNOT_LINK_TO_SAME_CATEGORY, 'error'); } } elseif ($_POST['copy_as'] == 'duplicate') { $product_query = tep_db_query("select products_quantity, products_model, products_image, products_price, products_date_available, products_weight, products_tax_class_id, manufacturers_id, products_gtin from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'"); $product = tep_db_fetch_array($product_query); tep_db_query("insert into " . TABLE_PRODUCTS . " (products_quantity, products_model,products_image, products_price, products_date_added, products_date_available, products_weight, products_status, products_tax_class_id, manufacturers_id, products_gtin) values ('" . tep_db_input($product['products_quantity']) . "', '" . tep_db_input($product['products_model']) . "', '" . tep_db_input($product['products_image']) . "', '" . tep_db_input($product['products_price']) . "', now(), " . (empty($product['products_date_available']) ? "null" : "'" . tep_db_input($product['products_date_available']) . "'") . ", '" . tep_db_input($product['products_weight']) . "', '0', '" . (int)$product['products_tax_class_id'] . "', '" . (int)$product['manufacturers_id'] . "', '" . tep_db_input($product['products_gtin']) . "')"); $dup_products_id = tep_db_insert_id(); //BOC by McMannehan $attributes_query = tep_db_query("select products_attributes_id, options_id, options_values_id, options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = " . (int)$product_id); while ($attributes = tep_db_fetch_array($attributes_query)) { tep_db_query("insert into " . TABLE_PRODUCTS_ATTRIBUTES . " (products_id, options_id, options_values_id, options_values_price, price_prefix) values ('" . (int)$dup_products_id . "', '" . (int)$attributes['options_id'] . "', '" . (int)$attributes['options_values_id'] . "', '" . tep_db_input($attributes['options_values_price']) . "', '" . tep_db_input($attributes['price_prefix']) . "')"); } //EOC by McMannehan $description_query = tep_db_query("select language_id, products_name, products_description, products_url, products_seo_title, products_seo_description, products_seo_keywords from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$products_id . "'"); while ($description = tep_db_fetch_array($description_query)) { tep_db_query("insert into " . TABLE_PRODUCTS_DESCRIPTION . " (products_id, language_id, products_name, products_description, products_url, products_viewed, products_seo_title, products_seo_description, products_seo_keywords) values ('" . (int)$dup_products_id . "', '" . (int)$description['language_id'] . "', '" . tep_db_input($description['products_name']) . "', '" . tep_db_input($description['products_description']) . "', '" . tep_db_input($description['products_url']) . "', '0', '" . tep_db_input($description['products_seo_title']) . "', '" . tep_db_input($description['products_seo_description']) . "', '" . tep_db_input($description['products_seo_keywords']) . "')"); } $product_images_query = tep_db_query("select image, htmlcontent, sort_order from " . TABLE_PRODUCTS_IMAGES . " where products_id = '" . (int)$products_id . "'"); while ($product_images = tep_db_fetch_array($product_images_query)) { tep_db_query("insert into " . TABLE_PRODUCTS_IMAGES . " (products_id, image, htmlcontent, sort_order) values ('" . (int)$dup_products_id . "', '" . tep_db_input($product_images['image']) . "', '" . tep_db_input($product_images['htmlcontent']) . "', '" . tep_db_input($product_images['sort_order']) . "')"); } tep_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . (int)$dup_products_id . "', '" . (int)$categories_id . "')"); $products_id = $dup_products_id; } if (USE_CACHE == 'true') { tep_reset_cache_block('categories'); tep_reset_cache_block('also_purchased'); } } tep_redirect(tep_href_link('categories.php', 'cPath=' . $categories_id . '&pID=' . $products_id)); break; now the attributes will be copy. This changes should really be in the core code. The example code above is used from @burt Boostrap 4 version.
  14. The issue is the customer. If he don't finish the payment correct, than this happens. After he paid, than he close the webbrowser or he use the back buttons of his browser. Same problem if customer pay with PayPal. And if the basket not empty, than it's logical, that the stock dosent decrease.
  15. Kostenfreie Hilfe und Info gibts hier: https://support.google.com/webmasters/answer/7451184?hl=de
×