CheckoutProcessProcess überladen?

Thema wurde von javierfrangenheim, 23. Februar 2016 erstellt.

  1. javierfrangenheim
    Registriert seit:
    7. Juli 2015
    Beiträge:
    16
    Danke erhalten:
    0
    Danke vergeben:
    3
    Hallo.

    Ich möchte in der Shopversion 2.7.1.2 die CheckoutProcessProcess.inc.php überladen.

    Dazu habe ich in /user_classes/overloads/CheckoutProcessProcess/

    die Datei MY_CheckoutProcessProcess.php angelegt

    Code:
    class MY_CheckoutProcessProcess extends MY_CheckoutProcessProcess_parent
    {
    
        public function save_order_product_attribute($p_product_array, $p_attribute_array, $p_order_products_id)
        {
            if(DOWNLOAD_ENABLED == 'true')
            {
    ....................................... usw ...............
    
           }
        }
    }
    
    
    Leider werden die Änderungen nicht übernommen.
    In der Shopversion 2.6.x hat das Ganze noch funktioniert.

    Hab ich einen Denkfehler?

    Danke und Gruß
     
  2. Anonymous
    Anonymous Erfahrener Benutzer
    Mitarbeiter
    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.749
    Danke vergeben:
    137
  3. javierfrangenheim
    Registriert seit:
    7. Juli 2015
    Beiträge:
    16
    Danke erhalten:
    0
    Danke vergeben:
    3
    OK.

    Danke für den Hinweis.

    Aber wie kann ich das überladen???

    Gruß
     
  4. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    16. Januar 2016
    Beiträge:
    656
    Danke erhalten:
    116
    Danke vergeben:
    20

    Als My_CheckoutProcessProcess.inc.php abgelegt?
     
  5. Steffen (indiv-style.de)
    Steffen (indiv-style.de) G-WARD 2013/14/15/16
    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Überladen ist eine Technik! Du solltest dir mal die Methode _setDownloadInformation in der Klasse CheckoutProcessProcess ansehen.
     
  6. javierfrangenheim
    Registriert seit:
    7. Juli 2015
    Beiträge:
    16
    Danke erhalten:
    0
    Danke vergeben:
    3
    Ja.
    Hat aber auch als My_CheckoutProcessProcess.php funktioniert...
     
  7. javierfrangenheim
    Registriert seit:
    7. Juli 2015
    Beiträge:
    16
    Danke erhalten:
    0
    Danke vergeben:
    3
    Danke für den Hinweis. Aber da bin ich zu wenig Progger...
    Normale SQL Abfragen wie in der
    Code:
    save_order_product_attribute
    kann ich noch lesen und ändern.

    Muß vermutlich doch noch einen Kurs machen. Gibts da was wo sich ein Autodidakt einlesen kann?
     
  8. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    16. Januar 2016
    Beiträge:
    656
    Danke erhalten:
    116
    Danke vergeben:
    20
    Bei mir wurden die "Overloads" teilweise erst nach mehrmaligen Durchlauf aktiv - denke liegt am Cache.
    Tee trinken und abwarten :)
    und wenn es nach einigen Minuten immer noch nicht angesprochen wird, helfen dir die "Proger" bestimmt weiter :eek:
     
  9. Steffen (indiv-style.de)
    Steffen (indiv-style.de) G-WARD 2013/14/15/16
    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Nein, daran liegt es nicht! Er versucht eine Methode zu überladen, welche es in der Version 2.7 nicht mehr gibt! Stattdessen werden neue Services eingesetzt die ihre eigenen Methoden mitbringen. Steht alles im Post von Marco(siehe oben)!!!

    Man muss nur mal lesen!!! ;)
     
  10. Steffen (indiv-style.de)
    Steffen (indiv-style.de) G-WARD 2013/14/15/16
    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Ähm.... und was befindet sich in der Methode??? Sind doch auch nur "normale" Abfragen... ;) ;) ;)

    PHP:
    protected function _setDownloadInformation(array $productOrderItemInterface $item)
        {
            if(
    DOWNLOAD_ENABLED == 'true' && isset($product['attributes']))
            {
                foreach(
    $product['attributes'] as $attribute)
                {
                    
    $query  'SELECT
                                    pad.`products_attributes_maxdays` AS `max_days_allowed`,
                                    pad.`products_attributes_maxcount` AS `count_available`,
                                    pad.`products_attributes_filename` AS `filename`
                                FROM
                                    ' 
    TABLE_PRODUCTS_ATTRIBUTES ' pa,
                                    ' 
    TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD ' pad 
                                WHERE
                                    pa.`products_id` = ' 
    . (int)$product['id'] . ' AND
                                    pa.`options_id` = ' 
    . (int)$attribute['option_id'] . ' AND
                                    pa.`options_values_id` = ' 
    . (int)$attribute['value_id'] . ' AND
                                    pa.`products_attributes_id` = pad.`products_attributes_id`'
    ;
                    
    $result xtc_db_query($query);
                    
                    if(
    xtc_db_num_rows($result))
                    {
                        
    $row xtc_db_fetch_array($result);
                        
                        
    $orderItemDownloadInformation MainFactory::create('OrderItemDownloadInformation',
                                                                            new 
    FilenameStringType($row['filename']),
                                                                            new 
    IntType($row['max_days_allowed']),
                                                                            new 
    IntType($row['count_available']));
                        
                        
    $item->setDownloadInformation($orderItemDownloadInformation);
                        
                        
    // an OrderItem only can have 1 download
                        
    return;
                    }
                }
            }
        }
     
  11. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    16. Januar 2016
    Beiträge:
    656
    Danke erhalten:
    116
    Danke vergeben:
    20
    Ah jo hier steht es:


    /**
    * @deprecated deprecated since version GX2.7 - method will not be called. It will be deleted in GX2.9.
    *
    * @param array $p_product_array
    * @param array $p_attribute_array
    * @param int $p_order_products_id
    */
    public function save_order_product_attribute($p_product_array, $p_attribute_array, $p_order_products_id) ....
     
  12. javierfrangenheim
    Registriert seit:
    7. Juli 2015
    Beiträge:
    16
    Danke erhalten:
    0
    Danke vergeben:
    3
    OK.

    Denke ich komme der Sache näher...

    PHP:
    _setOrderItemAttributeCollection
    ist die neue Funktion, die muß ich mit

    PHP:
    _setDownloadInformation
    vergleichen und lernen...