Plugin Directory

Changeset 2809158


Ignore:
Timestamp:
11/01/2022 09:17:54 PM (3 years ago)
Author:
louiscollarsmith
Message:

v1.0.11 More flexibility with delivery date meta fields

Location:
quiver-delivery
Files:
7 added
4 edited

Legend:

Unmodified
Added
Removed
  • quiver-delivery/trunk/includes/class-quiver-delivery-shipping-method.php

    r2803632 r2809158  
    173173
    174174        $code = $shippingMethod->get_meta('code');
    175 
    176175        $delivery_type = $this->CODE_DELIVERY_TYPE_MAP[$code];
    177176        $quiver_order = $this->order_to_quiver_order($order);
     
    208207    }
    209208
     209    private $DELIVERY_DATE_META_FIELDS = [
     210        '_delivery_date_',
     211        '_delivery_date',
     212        'delivery_date',
     213        'delivery-date',
     214        'delivery date',
     215        'Delivery Date',
     216    ];
     217
     218    /**
     219     * @param WC_Order $order
     220     * @return array
     221     */
     222    private function order_to_delivery_date($order)
     223    {
     224        // 1. Check Order Meta
     225        // 1.1 Direct access
     226        foreach ($this->DELIVERY_DATE_META_FIELDS as $metaKey) {
     227            $value = $order->get_meta($metaKey);
     228            if ($value !== "") {
     229                return $this->toDateStr($value);
     230            }
     231        }
     232        // 1.2 Loop access
     233        foreach ($order->get_meta_data() as $meta) {
     234            $key = strtolower($meta->key);
     235            if (str_contains($key, 'delivery') && str_contains($key, 'date')) {
     236                $value = $meta->value;
     237                if ($value !== "") {
     238                    return $this->toDateStr($value);
     239                }
     240            }
     241        }
     242        // 2. Check Order Line Items
     243        // 2.1 Direct access
     244        $deliveryDates = [];
     245        foreach ($order->get_items() as $lineItem) {
     246            foreach ($this->DELIVERY_DATE_META_FIELDS as $metaKey) {
     247                $value = $lineItem->get_meta($metaKey);
     248                if ($value !== "") {
     249                    array_push($deliveryDates, $this->toDateStr($value));
     250                }
     251            }
     252        }
     253        if (count($deliveryDates) !== 0) {
     254            return min($deliveryDates);
     255        }
     256        // 2.2 Loop access
     257        foreach ($order->get_items() as $lineItem) {
     258            foreach ($lineItem->get_meta_data() as $meta) {
     259                $key = strtolower($meta->key);
     260                if (str_contains($key, 'delivery') && str_contains($key, 'date')) {
     261                    $value = $meta->value;
     262                    if ($value !== "") {
     263                        array_push($deliveryDates, $this->toDateStr($value));
     264                    }
     265                }
     266            }
     267        }
     268        if (count($deliveryDates) !== 0) {
     269            return min($deliveryDates);
     270        }
     271    }
     272   
     273    /**
     274     * @param string $value
     275     * @return string
     276     */
     277    private function toDateStr($value) {
     278        $unixTimestamp = strtotime($value);
     279        return date('Y-m-d', $unixTimestamp);
     280    }
     281
    210282    /**
    211283     * @param WC_Order $order
     
    234306        $lineItems = [];
    235307        $fulfilmentLocationId = null;
    236         foreach ($order->get_items()  as $item_id => $item) {
     308        foreach ($order->get_items() as $item_id => $item) {
    237309            $productId = $item['product_id'];
    238310            $product = wc_get_product( $productId );
     
    269341            'postcode' => $order->get_shipping_postcode(),
    270342        ];
    271     }
    272 
    273 
    274     private $DELIVERY_DATE_META_FIELDS = [
    275         '_delivery_date_',
    276         'delivery_date',
    277         'Delivery Date',
    278         'delivery date',
    279     ];
    280 
    281     /**
    282      * @param WC_Order $order
    283      * @return string
    284      */
    285     private function order_to_delivery_date($order)
    286     {
    287         foreach ($this->DELIVERY_DATE_META_FIELDS as $metaField) {
    288             $value = $order->get_meta($metaField);
    289             if ($value !== "") {
    290                 $unixTimestamp = strtotime($value);
    291                 return date('Y-m-d', $unixTimestamp);
    292             }
    293         }
    294         return null;
    295343    }
    296344
  • quiver-delivery/trunk/quiver-delivery.php

    r2803632 r2809158  
    55 * Plugin URI: https://wordpress.org/plugins/quiver-delivery/
    66 * Description: Quiver provides fast and emissionless urban delivery. Magic.
    7  * Version: 1.0.10
     7 * Version: 1.0.11
    88 * Author: Quiver
    99 * Author URI: https://quiver.co.uk/
     
    2424    {
    2525
    26         private $version = "1.0.10";
     26        private $version = "1.0.11";
    2727
    2828        /**
  • quiver-delivery/trunk/readme.md

    r2803632 r2809158  
    66Tested up to: 6.0
    77Requires PHP: 7.0
    8 Stable tag: 1.0.10
     8Stable tag: 1.0.11
    99WC requires at least: 3.0.0
    1010WC tested up to: 6.6.1
     
    116116
    117117- More delivery date meta field options added.
     118
     119= 1.0.11 =
     120
     121- More flexibility with Delivery Date meta fields. Specify a delivery date by adding a new field to your order or order line items' meta data. The key must contain 'delivery' and 'date' to be recognised.
  • quiver-delivery/trunk/readme.txt

    r2803632 r2809158  
    116116
    117117- More delivery date meta field options added.
     118
     119= 1.0.11 =
     120
     121- More flexibility with Delivery Date meta fields. Specify a delivery date by adding a new field to your order or order line items' meta data. The key must contain 'delivery' and 'date' to be recognised.
Note: See TracChangeset for help on using the changeset viewer.