Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Alle Downloads im Kundenkontobereich anzeigen lassen

    Donco

    • Schreiberling
    • Beiträge: 258
    Ich versuche alle Downloads im Kundenkontobereich anzeigen zu lassen. Bei Shop Version 1.6 musste
    folgender Code in der account.php eingefügt werden:
    Code: PHP  [Auswählen]
    // Download-Products
    if (DOWNLOAD_ENABLED == 'true') include (DIR_WS_MODULES.'downloads.php');

    Weiss jemand wie der Code in der Shop Version 2.0.5.0 account..php aussehen muss damit alle Downloads im Kundenkontobereich angezeigt werden?

    Der Code in der account.html sieht so aus:
    Code: PHP  [Auswählen]
    {if $downloads_content neq ''}
            {$downloads_content}
            {/if}

    Ich bedanke mich im Voraus für die Hilfe.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=41991.0
    Shop Hosting

    Donco

    • Schreiberling
    • Beiträge: 258
    Re: Alle Downloads im Kundenkontobereich anzeigen lassen
    Antwort #1 am: 11. August 2021, 22:38:46
    Ich habe es geschafft das im Kundenkontobereich unter "Meine Downloads" der Downlaod Link für den zuletzt gekauften Artikel angezeigt wird.

    Weiss jemand was ich ändern muss das dort die Download Links für alle gekauften Artikel angezeigt werden?

    In Shop Version 1.6 hat es mit diesem Code in der admin/includes/module/downloads.php funktioniert:

    Code: PHP  [Auswählen]
    $qext = (strstr($PHP_SELF, FILENAME_CHECKOUT_SUCCESS) ? " AND o.orders_id = $last_order" : '');
    if ((isset($_GET['customer_list'])) && ($_GET['customer_list'] == "1")) {
      $downloads_query = xtc_db_query("select o.orders_id, op.products_name, opd.orders_products_download_id, opd.orders_products_filename, opd.download_count, if(opd.download_maxdays = 0, current_date, date(o.date_purchased)) + interval opd.download_maxdays + 1 day - interval 1 second download_expiry
                                        from "
    .TABLE_ORDERS." o
                                        join "
    .TABLE_ORDERS_PRODUCTS." op on op.orders_id = o.orders_id
                                        join "
    .TABLE_ORDERS_PRODUCTS_DOWNLOAD." opd on opd.orders_products_id = op.orders_products_id
                                       where o.customers_id = '"
    .$_SESSION['customer_id']."'
                                         and opd.orders_products_filename != '' $qext"
    );
    } else {
      $downloads_query = xtc_db_query("select o.orders_id, op.products_name, opd.orders_products_download_id, opd.orders_products_filename, opd.download_count, if(opd.download_maxdays = 0, current_date, date(o.date_purchased)) + interval opd.download_maxdays + 1 day - interval 1 second download_expiry
                                        from "
    .TABLE_ORDERS." o
                                        join "
    .TABLE_ORDERS_PRODUCTS." op on op.orders_id = o.orders_id
                                        join "
    .TABLE_ORDERS_PRODUCTS_DOWNLOAD." opd on opd.orders_products_id = op.orders_products_id
                                       where o.customers_id = '"
    .$_SESSION['customer_id']."'
                                         and opd.orders_products_filename != '' $qext"
    );
    }

    Bei der Bestellabschluss Seite sollte weiterhin nur der aktuell gekaufte Download Artikel angezeigt werden.

    Donco

    • Schreiberling
    • Beiträge: 258
    Re: Alle Downloads im Kundenkontobereich anzeigen lassen
    Antwort #2 am: 12. August 2021, 18:13:21
    Ich habe den code in der includes/modules/ downloads.php so abgeändert:

    Code: PHP  [Auswählen]
    // Get all downloadable products in that order
    $downloads_query = xtc_db_query("SELECT o.customers_id,
                                            o.customers_email_address,
                                            op.products_name,
                                            opd.orders_products_download_id,
                                            opd.orders_products_filename,
                                            opd.download_count,
                                            opd.orders_products_id,
                                            if(opd.download_maxdays = 0, current_date, date(o.date_purchased)) + interval opd.download_maxdays + 1 day - interval 1 second download_expiry
                                       FROM "
    .TABLE_ORDERS." o
                                       JOIN "
    .TABLE_ORDERS_PRODUCTS." op
                                            ON op.orders_id = o.orders_id
                                       JOIN "
    .TABLE_ORDERS_PRODUCTS_DOWNLOAD." opd
                                            ON opd.orders_products_id = op.orders_products_id
                                      WHERE o.customers_id = '"
    .(int)$customer_id."'
                                        AND o.orders_id = '"
    .$last_order."'
                                        AND opd.orders_products_filename != ''"
    );
                                        $qext = (strstr($PHP_SELF, FILENAME_CHECKOUT_SUCCESS) ? " AND o.orders_id = $last_order" : '');
    if ((isset($_GET['customer_list'])) && ($_GET['customer_list'] == "1")) {
      $downloads_query = xtc_db_query("select o.orders_id, op.products_name, opd.orders_products_download_id, opd.orders_products_filename, opd.download_count, if(opd.download_maxdays = 0, current_date, date(o.date_purchased)) + interval opd.download_maxdays + 1 day - interval 1 second download_expiry
                                        from "
    .TABLE_ORDERS." o
                                        join "
    .TABLE_ORDERS_PRODUCTS." op on op.orders_id = o.orders_id
                                        join "
    .TABLE_ORDERS_PRODUCTS_DOWNLOAD." opd on opd.orders_products_id = op.orders_products_id
                                       where o.customers_id = '"
    .$_SESSION['customer_id']."'
                                         and opd.orders_products_filename != '' $qext"
    );
    } else {
      $downloads_query = xtc_db_query("select o.orders_id, op.products_name, opd.orders_products_download_id, opd.orders_products_filename, opd.download_count, if(opd.download_maxdays = 0, current_date, date(o.date_purchased)) + interval opd.download_maxdays + 1 day - interval 1 second download_expiry
                                        from "
    .TABLE_ORDERS." o
                                        join "
    .TABLE_ORDERS_PRODUCTS." op on op.orders_id = o.orders_id
                                        join "
    .TABLE_ORDERS_PRODUCTS_DOWNLOAD." opd on opd.orders_products_id = op.orders_products_id
                                       where o.customers_id = '"
    .$_SESSION['customer_id']."'
                                         and opd.orders_products_filename != '' $qext"
    );
    }

    if (xtc_db_num_rows($downloads_query) > 0) {
      $jj = 0;
      while ($downloads = xtc_db_fetch_array($downloads_query)) {
        // The link will appear only if:
        // - Download remaining count is > 0, AND
        // - The file is present in the DOWNLOAD directory, AND EITHER
        // - No expiry date is enforced (maxdays == 0), OR
        // - The expiry date is not reached
        if ($downloads['download_count'] > 0 &&
            strtotime($downloads['download_expiry']) > time() &&
            file_exists(DIR_FS_DOWNLOAD.$downloads['orders_products_filename']) &&
            in_array($order_status, $allowed_status))
        {
          $dl[$jj]['allowed'] = true;
        }
        if (isset($send_by_admin)) {
          require_once(DIR_FS_INC.'xtc_href_link_from_admin.inc.php');
          $dl[$jj]['pic_link'] = xtc_href_link_from_admin(FILENAME_DOWNLOAD, 'order='.$last_order.'&id='.$downloads['orders_products_download_id'].'&key='.md5($last_order.$downloads['orders_products_id'].$downloads['customers_id'].$downloads['customers_email_address'].$downloads['orders_products_filename']), 'NONSSL', false);    
        } else {
          $dl[$jj]['pic_link'] = xtc_href_link(FILENAME_DOWNLOAD, 'order='.$last_order.'&id='.$downloads['orders_products_download_id'].'&key='.md5($last_order.$downloads['orders_products_id'].$downloads['customers_id'].$downloads['customers_email_address'].$downloads['orders_products_filename']));
        }
        $dl[$jj]['download_link'] = '<a href="'.$dl[$jj]['pic_link'].'">'.$downloads['products_name'].'</a>';
        $dl[$jj]['download_link_plain'] = $downloads['products_name'].': '.$dl[$jj]['pic_link'];
        $dl[$jj]['date'] = xtc_date_long($downloads['download_expiry']);
        $dl[$jj]['count'] = $downloads['download_count'];
        $jj ++;
      }
      $module_smarty->assign('dl', (isset($dl) ? $dl : array()));
    }

    Die Download Links werden jetzt alle angezeigt.

    Wenn ich auf einen Download Link klicke kommt folgende Fehlermeldung:

    Forbidden
    This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser does not understand how to supply the credentials required.

    Hat jemand eine Idee wie der Code an der Stelle aussehen müsste damit die Dateien heruntergeladen werden können.

    Donco

    • Schreiberling
    • Beiträge: 258
    Re: Alle Downloads im Kundenkontobereich anzeigen lassen
    Antwort #3 am: 17. August 2021, 22:01:49
    Ich habe es nochmal so probiert:
    Code: PHP  [Auswählen]
    <?php

    /* -----------------------------------------------------------------------------------------
       $Id: downloads.php 11153 2018-05-30 09:51:59Z GTB $  

       XT-Commerce - community made shopping
       http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! ))

       Copyright (c) 2003 XT-Commerce
       -----------------------------------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(downloads.php,v 1.2 2003/02/12); www.oscommerce.com
       (c) 2003      nextcommerce (downloads.php,v 1.6 2003/08/13); www.nextcommerce.org

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/


    // ibclude the needed functions
    if (!function_exists('xtc_date_long')) {
      require_once (DIR_FS_INC.'xtc_date_long.inc.php');
    }

    $module_smarty = new Smarty;

    $customer_id = (int)$_SESSION['customer_id'];
    $language = $_SESSION['language'];

    if (isset($send_by_admin)) {
      $last_order = $insert_id;
      $orders_query = xtc_db_query("SELECT orders_status,
                                           customers_id,
                                           language
                                      FROM "
    .TABLE_ORDERS."
                                     WHERE orders_id = '"
    .$last_order."'");
      $orders = xtc_db_fetch_array($orders_query);
      $customer_id = $orders['customers_id'];
      $language = $orders['language'];
      $order_status = $orders['orders_status'];
    } elseif (!strstr($PHP_SELF, FILENAME_ACCOUNT_HISTORY_INFO)) {
      // Get last order id for checkout_success
      $orders_query = xtc_db_query("SELECT orders_id,
                                           orders_status
                                      FROM "
    .TABLE_ORDERS."
                                     WHERE customers_id = '"
    .(int)$customer_id."'
                                  ORDER BY orders_id desc limit 1"
    );
      $orders = xtc_db_fetch_array($orders_query);
      $last_order = $orders['orders_id'];
      $order_status = $orders['orders_status'];
    } else {
      $last_order = (int)$_GET['order_id'];
      $orders_query = xtc_db_query("SELECT orders_status
                                      FROM "
    .TABLE_ORDERS."
                                     WHERE orders_id = '"
    .$last_order."'");
      $orders = xtc_db_fetch_array($orders_query);
      $order_status = $orders['orders_status'];
    }

    // check if allowed to download
    $allowed_status = explode(',', DOWNLOAD_MIN_ORDERS_STATUS);
    if (!in_array($order_status, $allowed_status)) {
      $module_smarty->assign('dl_prevented', 'true');
    }

    // Get all downloadable products in that order

    $qext = (strstr($PHP_SELF, FILENAME_CHECKOUT_SUCCESS) ? " AND o.orders_id = $last_order" : '');
    if ((isset($_GET['customer_list'])) && ($_GET['customer_list'] == "1")) {
      $downloads_query = xtc_db_query("select o.orders_id, op.products_name, opd.orders_products_download_id, opd.orders_products_filename, opd.download_count, if(opd.download_maxdays = 0, current_date, date(o.date_purchased)) + interval opd.download_maxdays + 1 day - interval 1 second download_expiry
                                        from "
    .TABLE_ORDERS." o
                                        join "
    .TABLE_ORDERS_PRODUCTS." op on op.orders_id = o.orders_id
                                        join "
    .TABLE_ORDERS_PRODUCTS_DOWNLOAD." opd on opd.orders_products_id = op.orders_products_id
                                       where o.customers_id = '"
    .$_SESSION['customer_id']."'
                                         and opd.orders_products_filename != '' $qext"
    );
    } else {
      $downloads_query = xtc_db_query("select o.orders_id, op.products_name, opd.orders_products_download_id, opd.orders_products_filename, opd.download_count, if(opd.download_maxdays = 0, current_date, date(o.date_purchased)) + interval opd.download_maxdays + 1 day - interval 1 second download_expiry
                                        from "
    .TABLE_ORDERS." o
                                        join "
    .TABLE_ORDERS_PRODUCTS." op on op.orders_id = o.orders_id
                                        join "
    .TABLE_ORDERS_PRODUCTS_DOWNLOAD." opd on opd.orders_products_id = op.orders_products_id
                                       where o.customers_id = '"
    .$_SESSION['customer_id']."'
                                         and opd.orders_products_filename != '' $qext"
    );
    }

    if (xtc_db_num_rows($downloads_query) > 0) {
      $jj = 0;
      while ($downloads = xtc_db_fetch_array($downloads_query)) {
        // The link will appear only if:
        // - Download remaining count is > 0, AND
        // - The file is present in the DOWNLOAD directory, AND EITHER
        // - No expiry date is enforced (maxdays == 0), OR
        // - The expiry date is not reached
        if ($downloads['download_count'] > 0 &&
            strtotime($downloads['download_expiry']) > time() &&
            file_exists(DIR_FS_DOWNLOAD.$downloads['orders_products_filename']) &&
            in_array($order_status, $allowed_status))
        {
          $dl[$jj]['allowed'] = true;
        }
        if (isset($send_by_admin)) {
          require_once(DIR_FS_INC.'xtc_href_link_from_admin.inc.php');
          $dl[$jj]['pic_link'] = xtc_href_link_from_admin(FILENAME_DOWNLOAD, 'order='.$last_order.'&id='.$downloads['orders_products_download_id'].'&key='.md5($last_order.$downloads['orders_products_id'].$downloads['customers_id'].$downloads['customers_email_address'].$downloads['orders_products_filename']), 'NONSSL', false);    
        } else {
          $dl[$jj]['pic_link'] = xtc_href_link(FILENAME_DOWNLOAD, 'order='.$last_order.'&id='.$downloads['orders_products_download_id'].'&key='.md5($last_order.$downloads['orders_products_id'].$downloads['customers_id'].$downloads['customers_email_address'].$downloads['orders_products_filename']));
        }
        $dl[$jj]['download_link'] = '<a href="'.$dl[$jj]['pic_link'].'">'.$downloads['products_name'].'</a>';
        $dl[$jj]['download_link_plain'] = $downloads['products_name'].': '.$dl[$jj]['pic_link'];
        $dl[$jj]['date'] = xtc_date_long($downloads['download_expiry']);
        $dl[$jj]['count'] = $downloads['download_count'];
        $jj ++;
      }
      $module_smarty->assign('dl', (isset($dl) ? $dl : array()));
    }

    $module_smarty->assign('language', $language);
    $module_smarty->caching = 0;

    if (isset($send_order)) {
      if (isset($send_by_admin)) {
        $module_smarty->template_dir = DIR_FS_CATALOG.'templates';
        $module_smarty->compile_dir = DIR_FS_CATALOG.'templates_c';
        $module_smarty->config_dir = DIR_FS_CATALOG.'lang';
      }
      $module_smarty->assign('tpl_path', HTTP_SERVER.DIR_WS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/');
      $module_txt = $module_smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$language.'/downloads.txt');
      $module_html = $module_smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$language.'/downloads.html');
      $smarty->assign('downloads_content_html', $module_html);
      $smarty->assign('downloads_content_txt', $module_txt);
    } else {
      $module_smarty->assign('tpl_path', DIR_WS_BASE.'templates/'.CURRENT_TEMPLATE.'/');
      $module = $module_smarty->fetch(CURRENT_TEMPLATE.'/module/downloads.html');
      $smarty->assign('downloads_content', $module);
    }
    ?>

    Ich bekomme immer noch eine Access forbidden Fehlermeldung wenn ich ein Link anklicke.
    Ich vermute das in diesem Teil etwas abgeändert werden muss:
    Code: PHP  [Auswählen]
    $qext = (strstr($PHP_SELF, FILENAME_CHECKOUT_SUCCESS) ? " AND o.orders_id = $last_order" : '');
    if ((isset($_GET['customer_list'])) && ($_GET['customer_list'] == "1")) {
      $downloads_query = xtc_db_query("select o.orders_id, op.products_name, opd.orders_products_download_id, opd.orders_products_filename, opd.download_count, if(opd.download_maxdays = 0, current_date, date(o.date_purchased)) + interval opd.download_maxdays + 1 day - interval 1 second download_expiry
                                        from "
    .TABLE_ORDERS." o
                                        join "
    .TABLE_ORDERS_PRODUCTS." op on op.orders_id = o.orders_id
                                        join "
    .TABLE_ORDERS_PRODUCTS_DOWNLOAD." opd on opd.orders_products_id = op.orders_products_id
                                       where o.customers_id = '"
    .$_SESSION['customer_id']."'
                                         and opd.orders_products_filename != '' $qext"
    );
    } else {
      $downloads_query = xtc_db_query("select o.orders_id, op.products_name, opd.orders_products_download_id, opd.orders_products_filename, opd.download_count, if(opd.download_maxdays = 0, current_date, date(o.date_purchased)) + interval opd.download_maxdays + 1 day - interval 1 second download_expiry
                                        from "
    .TABLE_ORDERS." o
                                        join "
    .TABLE_ORDERS_PRODUCTS." op on op.orders_id = o.orders_id
                                        join "
    .TABLE_ORDERS_PRODUCTS_DOWNLOAD." opd on opd.orders_products_id = op.orders_products_id
                                       where o.customers_id = '"
    .$_SESSION['customer_id']."'
                                         and opd.orders_products_filename != '' $qext"
    );
    }

    Donco

    • Schreiberling
    • Beiträge: 258
    Re: Alle Downloads im Kundenkontobereich anzeigen lassen
    Antwort #4 am: 25. August 2021, 19:20:20
    Hat jemand eine Idee?

    Kann man diesen Teil noch mit einer "OR" Abfrage erweitern damit auf einer Bestelldetails Seite (account_history_info.html) nur die Download Links für die jeweilige Bestellung angezeigt werden so wie es beim Bestellabschluss ist und nicht alle Download Links?

    Code: PHP  [Auswählen]
    $qext = (strstr($PHP_SELF, FILENAME_CHECKOUT_SUCCESS) ? " AND o.orders_id = $last_order" : '');

    Im Moment werden auf einer Bestelldetails Seite alle Download Links angezeigt und es kommt wie überall sonst leider immer noch zu einer Access Denied Fehlermeldung wenn man einen Link anklickt.

    Donco

    • Schreiberling
    • Beiträge: 258
    Re: Alle Downloads im Kundenkontobereich anzeigen lassen
    Antwort #5 am: 17. September 2021, 00:18:54
    Hat niemand eine Idee?
    Trade Republic - Provisionsfrei Aktien handeln
    5 Antworten
    2080 Aufrufe
    19. Dezember 2017, 11:22:51 von NeKo
    5 Antworten
    13912 Aufrufe
    09. September 2011, 23:00:37 von SohnDesMogh
    1 Antworten
    2470 Aufrufe
    28. Februar 2014, 13:35:30 von Ace
    3 Antworten
    3186 Aufrufe
    11. Februar 2011, 10:22:55 von zvenson