Versandmodule dpd.php und dp.php updatesicher ändern?

Thema wurde von markus_wick, 10. Oktober 2019 erstellt.

  1. markus_wick

    markus_wick Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2018
    Beiträge:
    966
    Danke erhalten:
    214
    Danke vergeben:
    153
    Ich habe nun eine knappe Stunde gesucht und gelesen und bin trotzdem nicht wirklich schlauer, da ich mit den Erläuterungen zum "overload" und den "klassen" etc. nicht so recht was anfangen kann...

    Ich habe die beiden Versandmodule includes/modules/shipping/dpd.php und
    includes/modules/shipping/dp.php modifiziert, derzeit noch im Original-Verzeichnis. Die Modifikation klappt wie gewünscht. Aber: Wohin muss ich diese Module nun hinpacken, damit das Updatesicher wird? Für den Halblaien erklärt wäre schön...
    Die Links auf den Developerbereich haben mich nicht wirklich weiter gebracht....

    Beide PHP Dateien habe ich im Originalverzeichnis vorher mit neuem Namen gesichert.
    Ich würde also die alten Originaldateien wieder zurückbenennen und meine modifizierten Dateien kommen wo genau hin?

    GXUserComponents/overloads evtl.? mit welcher Verzeichnisstruktur?
    GXUserComponents/modules evtl.? mit welcher Verzeichnisstruktur?
     
  2. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Die kann man nciht Updatesicher ändern. da kannst Du nur kopieren und mit anderem Namen neu anlegen.

    Nachtrag: An den Dateien hat sich in der Vergangenheit nicht so viel geändert - da könnte man auch die originale ändern - muss dann aber aufpassen, ob die Dateien beim Update bei sind
     
  3. markus_wick

    markus_wick Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2018
    Beiträge:
    966
    Danke erhalten:
    214
    Danke vergeben:
    153
    Oh, schade... Echt? Ich dachte man kann die .php Dateien auch in irgendeiner Form überladen, so wie die .html Dateien etc.... :eek:
    Das heisst, nach jedem Update prüfen ob sich die Dateien geändert haben...:confused:
     
  4. markus_wick

    markus_wick Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2018
    Beiträge:
    966
    Danke erhalten:
    214
    Danke vergeben:
    153
    #4 markus_wick, 10. Oktober 2019
    Zuletzt bearbeitet: 10. Oktober 2019
  5. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.667
    Danke erhalten:
    1.262
    Danke vergeben:
    300
    @markus_wick Die meisten Klasse lassen sich überladen, so auch die Versand- und Zahlungsmodule.
    Das Konzept ist immer das gleiche.

    Erstelle einen Ordner mit dem Namen der Klasse die überladen werden soll im Ordner /overloads/
    Beispiel für dpd ist /GXModules/meineFirma/meinModul/Shop/overloads/dpd/meineDpdAnpassung.inc.php

    mit folgendem Inhalt:

    PHP:
    class meineDpdAnpassung extends meineDpdAnpassung_parent {
    public function 
    __construct() {
    parent::__construct();
    }
    }
    Du kannst darin denn jede der Methoden überladen und ändern.
     
  6. markus_wick

    markus_wick Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2018
    Beiträge:
    966
    Danke erhalten:
    214
    Danke vergeben:
    153
    Öh... Danke Till... Aber das ist mir erst mal auf den ersten Blick fast ein wenig zu kompliziert.... Siehe oben "da ich mit den Erläuterungen zum "overload" und den "klassen" etc. nicht so recht was anfangen kann..."...

    Mal sehen ob ich mich da durchackern kann...
    Falls es jemand einfacher erklären kann: Her damit :)
     
  7. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Danke Till,

    ich dachte immer, es gehen nur die Dateien in "classes".
    Wieder etwas gelernt.

    @markus_wick
    Poste doch mal nur Deine Änderung, dann kann man vielleicht eine Musterdatei erstellen
     
  8. markus_wick

    markus_wick Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2018
    Beiträge:
    966
    Danke erhalten:
    214
    Danke vergeben:
    153
    Die Änderungen sind "ein Klassiker" hier im Forum: Entfernen der Gewichtsangabe im Checkout (und ein Doppelpunkt war an falscher Stelle....):
    Hier erst mal der Originalcode der dp.php:
    Code:
    <?php
    /* --------------------------------------------------------------
       dp.php 2018-05-28
       Gambio GmbH
       http://www.gambio.de
       Copyright (c) 2018 Gambio GmbH
       Released under the GNU General Public License (Version 2)
       [http://www.gnu.org/licenses/gpl-2.0.html]
       --------------------------------------------------------------
    
    
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(dp.php,v 1.36 2003/03/09 02:14:35); www.oscommerce.com
       (c) 2003     nextcommerce (dp.php,v 1.12 2003/08/24); www.nextcommerce.org
       (c) 2003 XT-Commerce - community made shopping http://www.xt-commerce.com ($Id: dp.php 899 2005-04-29 02:40:57Z hhgag $)
    
       Released under the GNU General Public License
       -----------------------------------------------------------------------------------------
       Third Party contributions:
       German Post (Deutsche Post WorldNet)             Autor:    Copyright (C) 2002 - 2003 TheMedia, Dipl.-Ing Thomas Plänkers | http://www.themedia.at & http://www.oscommerce.at
    
       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/
    
      class dp_ORIGIN {
        var $code, $title, $description, $icon, $enabled, $num_dp;
    
    
        public function __construct() {
          global $order;
    
          $this->code = 'dp';
          $this->title = defined('MODULE_SHIPPING_DP_TEXT_TITLE') ? MODULE_SHIPPING_DP_TEXT_TITLE : '';
          $this->description = defined('MODULE_SHIPPING_DP_TEXT_DESCRIPTION') ? MODULE_SHIPPING_DP_TEXT_DESCRIPTION : '';
          $this->sort_order = defined('MODULE_SHIPPING_DP_SORT_ORDER') ? MODULE_SHIPPING_DP_SORT_ORDER : '0';
          $this->icon = '';
          $this->tax_class = defined('MODULE_SHIPPING_DP_TAX_CLASS') ? MODULE_SHIPPING_DP_TAX_CLASS : '0';
          $this->enabled = defined('MODULE_SHIPPING_DP_STATUS') && MODULE_SHIPPING_DP_STATUS === 'True';
    
          if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_DP_ZONE > 0) ) {
            $check_flag = false;
            $check_query = xtc_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_DP_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
            while ($check = xtc_db_fetch_array($check_query)) {
              if ($check['zone_id'] < 1) {
                $check_flag = true;
                break;
              } elseif ($check['zone_id'] == $order->delivery['zone_id']) {
                $check_flag = true;
                break;
              }
            }
    
            if ($check_flag == false) {
              $this->enabled = false;
            }
          }
    
    /**
    * CUSTOMIZE THIS SETTING FOR THE NUMBER OF ZONES NEEDED
    */
          $this->num_dp = 6;
        }
    
    /**
    * class methods
    */
        function quote($method = '') {
          global $order, $shipping_weight, $shipping_num_boxes;
    
          $dest_country = $order->delivery['country']['iso_code_2'];
          $dest_zone = 0;
          $error = false;
    
          for ($i=1; $i<=$this->num_dp; $i++) {
            $countries_table = constant('MODULE_SHIPPING_DP_COUNTRIES_' . $i);
            $country_zones = explode(',', $countries_table);
            if (in_array($dest_country, $country_zones)) {
              $dest_zone = $i;
              break;
            }
          }
    
          if ($dest_zone == 0) {
            $error = true;
          } else {
            $shipping = -1;
            $dp_cost = constant('MODULE_SHIPPING_DP_COST_' . $i);
    
            $dp_table = preg_split("/[:,]/" , $dp_cost);
            for ($i=0; $i<sizeof($dp_table); $i+=2) {
              if ($shipping_weight <= $dp_table[$i]) {
                $shipping = $dp_table[$i+1];
                $shipping_method = MODULE_SHIPPING_DP_TEXT_WAY . ' ' . $dest_country . ': ';
                break;
              }
            }
    
            if ($shipping == -1) {
              $error = true;
              $shipping_cost = 0;
              $shipping_method = MODULE_SHIPPING_DP_UNDEFINED_RATE;
            } else {
              $shipping_cost = ($shipping + (double)MODULE_SHIPPING_DP_HANDLING);
            }
          }
    
          $this->quotes = array('id' => $this->code,
                                'module' => MODULE_SHIPPING_DP_TEXT_TITLE,
                                'methods' => array(array('id' => $this->code,
                                                         'title' => $shipping_method . ' (' . $shipping_num_boxes . ' x ' . $shipping_weight . ' ' . MODULE_SHIPPING_DP_TEXT_UNITS .')',
                                                         'cost' => $shipping_cost * $shipping_num_boxes)));
    
          if ($this->tax_class > 0) {
            $this->quotes['tax'] = xtc_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
          }
    
          if (xtc_not_null($this->icon)) $this->quotes['icon'] = xtc_image($this->icon, $this->title);
    
          if ($error == true) $this->quotes['error'] = MODULE_SHIPPING_DP_UNDEFINED_RATE;
    
          return $this->quotes;
        }
    
        function check() {
          if (!isset($this->_check)) {
            $check_query = xtc_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_DP_STATUS'");
            $this->_check = xtc_db_num_rows($check_query);
          }
          return $this->_check;
        }
    
            function install() {
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, set_function, date_added) VALUES ('MODULE_SHIPPING_DP_STATUS', 'True', '6', '0', 'gm_cfg_select_option(array(\'True\', \'False\'), ', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_HANDLING', '0', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_SHIPPING_DP_TAX_CLASS', '0', '6', '0', 'xtc_get_tax_class_title', 'xtc_cfg_pull_down_tax_classes(', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_SHIPPING_DP_ZONE', '0', '6', '0', 'xtc_get_zone_class_title', 'xtc_cfg_pull_down_zone_classes(', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_SORT_ORDER', '0', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_ALLOWED', '', '6', '0', now())");
    
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_COUNTRIES_1', 'AD,AT,BE,CZ,DK,FO,FI,FR,GR,GL,IE,IT,LI,LU,MC,NL,PL,PT,SM,SK,SE,CH,VA,GB,SP', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_COST_1', '5:16.50,10:20.50,20:28.50', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_COUNTRIES_2', 'AL,AM,AZ,BY,BA,BG,HR,CY,GE,GI,HU,IS,KZ,LT,MK,MT,MD,NO,SI,UA,TR,YU,RU,RO,LV,EE', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_COST_2', '5:25.00,10:35.00,20:45.00', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_COUNTRIES_3', 'DZ,BH,CA,EG,IR,IQ,IL,JO,KW,LB,LY,OM,SA,SY,US,AE,YE,MA,QA,TN,PM', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_COST_3', '5:29.00,10:39.00,20:59.00', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_COUNTRIES_4', 'AF,AS,AO,AI,AG,AR,AW,AU,BS,BD,BB,BZ,BJ,BM,BT,BO,BW,BR,IO,BN,BF,BI,KH,CM,CV,KY,CF,TD,CL,CN,CC,CO,KM,CG,CR,CI,CU,DM,DO,EC,SV,ER,ET,FK,FJ,GF,PF,GA,GM,GH,GD,GP,GT,GN,GW,GY,HT,HN,HK,IN,ID,JM,JP,KE,KI,KG,KP,KR,LA,LS', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_COST_4', '5:35.00,10:50.00,20:80.00', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_COUNTRIES_5', 'MO,MG,MW,MY,MV,ML,MQ,MR,MU,MX,MN,MS,MZ,MM,NA,NR,NP,AN,NC,NZ,NI,NE,NG,PK,PA,PG,PY,PE,PH,PN,RE,KN,LC,VC,SN,SC,SL,SO,LK,SR,SZ,ZA,SG,TG,TH,TZ,TT,TO,TM,TV,VN,WF,VE,UG,UZ,UY,ST,SH,SD,TW,GQ,LR,DJ,CG,RW,ZM,ZW', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_COST_5', '5:35.00,10:50.00,20:80.00', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_COUNTRIES_6', 'DE', '6', '0', now())");
          xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_DP_COST_6', '5:6.70,10:9.70,20:13.00', '6', '0', now())");
        }
    
        function remove() {
          xtc_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
        }
    
        function keys() {
          $keys = array('MODULE_SHIPPING_DP_STATUS', 'MODULE_SHIPPING_DP_HANDLING','MODULE_SHIPPING_DP_ALLOWED', 'MODULE_SHIPPING_DP_TAX_CLASS', 'MODULE_SHIPPING_DP_ZONE', 'MODULE_SHIPPING_DP_SORT_ORDER');
    
          for ($i = 1; $i <= $this->num_dp; $i ++) {
            $keys[count($keys)] = 'MODULE_SHIPPING_DP_COUNTRIES_' . $i;
            $keys[count($keys)] = 'MODULE_SHIPPING_DP_COST_' . $i;
          }
    
          return $keys;
        }
      }
     
    MainFactory::load_origin_class('dp');
    Geändert hab ich in Zeile 94 nur die Position eines Doppelpunktes (Bei Post stand Versand nach DE:, bei DHL Versand nach: DE; Kleinkrams, ich weiss, bin halt pingelich...) von:
    Code:
    $shipping_method = MODULE_SHIPPING_DP_TEXT_WAY . ' ' . $dest_country . ': ';
    
    auf
    Code:
    $shipping_method = MODULE_SHIPPING_DP_TEXT_WAY . ': ' . $dest_country . '';
    
    (Doppelpunkt vor $dest_country).

    Die wichtige Änderung ist in Zeile 111:
    Code:
    'title' => $shipping_method . ' (' . $shipping_num_boxes . ' x ' . $shipping_weight . ' ' . MODULE_SHIPPING_DP_TEXT_UNITS .')',
    
    auf
    Code:
    'title' => $shipping_method . '',
    
    so dass die Anzahl der Versandkartons und das Gewicht nicht angezeigt werden.

    In der dpd.php (die ich für DHL nutze) ist es eine ähnliche Änderung.