<?php /** * Shipment tracking for Isotope eCommerce * * Copyright (c) 2017 Benjamin Roth * * @license commercial */ namespace eSM_isotope_shipmenttracking\Hooks; use eSM_isotope_shipmenttracking\Model\ShipmentTrackingModel; class IsotopeHooks extends \Controller { public function getOrderNotificationTokens($Order, $arrTokens) { $arrTokens['shipmenttracking_shipping_annotation'] = nl2br($Order->shipping_annotation); $arrTokens['shipmenttracking_shipping_annotation_text'] = $Order->shipping_annotation; if (!$Order->shipping_tracking) { return $arrTokens; } $Tracking = ShipmentTrackingModel::findByPk($Order->shipping_tracking); if ($Tracking === null) { return $arrTokens; } $strTrackingNumber = trim($Order->tracking_number); $strUrl = $this->replacePlaceholders($Tracking->trackingUrl,array('%%TRACKINGNO%%'=>$strTrackingNumber)); $strShippingdate = \Date::parse(\Date::getNumericDateFormat(),$Order->date_shipped); $strShippingInfo = sprintf($GLOBALS['TL_LANG']['iso_shipmenttracking']['shippingdate_info_today'],$Order->date_shipped,$Tracking->name); if (date('Ymd',$Order->date_shipped) < date('Ymd')) { $strShippingInfo = sprintf($GLOBALS['TL_LANG']['iso_shipmenttracking']['shippingdate_info_past'],$Order->date_shipped,$Tracking->name); } else if (date('Ymd',$Order->date_shipped) > date('Ymd')) { $strShippingInfo = sprintf($GLOBALS['TL_LANG']['iso_shipmenttracking']['shippingdate_info_future'],$Order->date_shipped,$Tracking->name); } $arrTokens['shipmenttracking_number'] = $strTrackingNumber; $arrTokens['shipmenttracking_url'] = $strUrl; $arrTokens['shipmenttracking_shippingdate'] = $strShippingdate; $arrTokens['shipmenttracking_shipping_info'] = $strShippingInfo; $arrTokens['shipmenttracking_note'] = $this->replacePlaceholders($Tracking->note,array('%%TRACKINGNO%%'=>$strTrackingNumber,'%%TRACKINGURL%%'=>$strUrl, '%%SHIPPINGDATE%%'=>$strShippingdate, '%%SHIPPINGINFO%%'=>$strShippingInfo)); $arrTokens['shipmenttracking_note_text'] = strip_tags(str_ireplace(array('</p>','</ p>',),"\n\n",str_ireplace(array('<br>','<br />','</ br>','</br>'),"\n",str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"),"",$arrTokens['shipmenttracking_note'])))); return $arrTokens; } /** * Replace placeholders * * @param $strString * @return string */ protected function replacePlaceholders($strString, $arrReplace) { // Split placeholders $arrPlaceholders = preg_split('/(%%[^%]+%%)/', $strString, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY); // Replace placeholders foreach ($arrPlaceholders as $placeholder) { if (isset($arrReplace[$placeholder])) { $strString = str_ireplace($placeholder,$arrReplace[$placeholder],$strString); } } return $strString; } }