Trusted-Shop Versandzeitpunkt der Bewertungsmails

Wer die Symmetrics Trustedrating Extension nutzt, dem ist bestimmt schon aufgefallen, dass die Bewertungsmails zeitlich versetzt verschickt werden. Die Anzahl der Versatztage ist dabei im Backend konfigurierbar.

Wir finden es hierbei sinnvoll nur Werktage zu berücksichtigen. Denn wenn mal ein langes Wochenende dazwischen kommt, so kann es passieren, dass der Kunde die Bewertungsmail erhält, ohne das er die Lieferung bereits erhalten hat.

Um das zu realisieren, sind nur ein paar Anpassung der Datei Trustedrating.php nötig.

  • 1. Anlegen eine Feiertagsdatei.
    Z.B im local skin unter files/publicHolidays.txt o.ä

    01.01.
    06.04.
    09.04.
    01.05.
    03.10.
    24.12.
    25.12.
    26.12.
    31.12.
    
  • 2. Anpassen der Funktion getDayInterval()
    public function getDayInterval()
        {
            $fromString = Mage::helper('trustedrating')->getActiveSince();
            $dayInterval = (float) Mage::getStoreConfig(self::CONFIG_DAYS_INTERVAL);
            if (is_null($dayInterval) || $dayInterval < 0) {
                return false;
            }
            
            $publicHolidays = array();
            // load the free days
            $timefile = file($_SERVER['DOCUMENT_ROOT']."/skin/frontend/default/default/files/publicHolidays.txt");
            foreach($timefile as $ent) {
                    $publicHolidays[] = trim(preg_replace("/([^\.]+)\.([^\.]+)\./","\\2\\1",$ent));
            }
            
            $toString = date(self::MYSQL_DATE_FORMAT, $this->getUpperLimit($dayInterval, $publicHolidays));
            
            return array(
                'from' => $fromString,
                'to' => $toString
            );
        }
    
  • 3. Hinzufügen der Funktion getUpperLimit($workDays = 1 ,$publicHolidays = array())
    /**
         * Substract workdays from current date and consider public holidays ( given as an array ) 
         * 
         * @param int, array
         * @return timestamp
         */
        private function getUpperLimit($workDays = 1 ,$publicHolidays = array())     {
            
            $today = time();
            $i = 0;
            
            while($i < $workDays) {
                
                if (!in_array(date("md",  $today), $publicHolidays) && date("D", $today) != "Sat" && date("D", $today) != "Sun") {
                    // current Date is a workday
                    $i++;
                } 
                $today =  $today - ( 24 * 60 * 60); 
            }
           
            return $today;
     	}
    

Diese Seite Drucken