Plugin Directory

Changeset 3072514


Ignore:
Timestamp:
04/17/2024 03:30:05 PM (2 years ago)
Author:
lukasmessageok
Message:

HPOS

Location:
messageok
Files:
31 added
4 edited

Legend:

Unmodified
Added
Removed
  • messageok/trunk/includes/class.api.php

    r2978543 r3072514  
    22
    33namespace MsgOk;
     4
     5use Automattic\WooCommerce\Utilities\OrderUtil;
    46
    57class Api {
     
    150152        if ( !empty( $meta_keys ) )
    151153        {
    152             foreach ( $meta_keys as $meta_key )
    153             {
    154                 $found_value = get_post_meta( $order_id, $meta_key, TRUE );
    155                 $return[$meta_key] = $found_value;
     154            // HPOS
     155            if ( OrderUtil::custom_orders_table_usage_is_enabled() )
     156            {
     157                $order_object = wc_get_order( $order_id );
     158
     159                if ( !$order_object ) return $return;
     160
     161                foreach ( $meta_keys as $meta_key )
     162                {
     163                    $found_value = $order_object->get_meta( $meta_key );
     164                    $return[$meta_key] = $found_value;
     165                }
     166            }
     167            else
     168            {
     169                foreach ( $meta_keys as $meta_key )
     170                {
     171                    $found_value = get_post_meta( $order_id, $meta_key, TRUE );
     172                    $return[$meta_key] = $found_value;
     173                }
    156174            }
    157175        }
     
    172190        if ( !empty( $meta_keys ) )
    173191        {
    174             foreach ( $meta_keys as $meta_key )
    175             {
    176                 $found_value = get_post_meta( $order_id, $meta_key, TRUE );
    177                 $return[$meta_key] = $found_value;
     192            // HPOS
     193            if ( OrderUtil::custom_orders_table_usage_is_enabled() )
     194            {
     195                $order_object = wc_get_order( $order_id );
     196
     197                if ( !$order_object ) return $return;
     198
     199                foreach ( $meta_keys as $meta_key )
     200                {
     201                    $found_value = $order_object->get_meta( $meta_key );
     202                    $return[$meta_key] = $found_value;
     203                }
     204            }
     205            else
     206            {
     207                foreach ( $meta_keys as $meta_key )
     208                {
     209                    $found_value = get_post_meta( $order_id, $meta_key, TRUE );
     210                    $return[$meta_key] = $found_value;
     211                }
    178212            }
    179213        }
     
    196230            $order_id = esc_sql( sanitize_text_field( $order_id ) );
    197231
    198             global $wpdb;
    199             $loaded_order_id = $wpdb->get_var( $wpdb->prepare( "
    200                 SELECT post_id
    201                 FROM {$wpdb->postmeta}
    202                 WHERE meta_key = %s
    203                 AND meta_value = %s
    204             ", $meta_key, $order_id ) );
     232            // HPOS
     233            if ( OrderUtil::custom_orders_table_usage_is_enabled() )
     234            {
     235                global $wpdb;
     236                $loaded_order_id = $wpdb->get_var( $wpdb->prepare( "
     237                    SELECT order_id
     238                    FROM {$wpdb->prefix}wc_orders_meta
     239                    WHERE meta_key = %s
     240                    AND meta_value = %s
     241                ", $meta_key, $order_id ) );
     242            }
     243            else
     244            {
     245                // Legacy (post type) storage
     246                global $wpdb;
     247                $loaded_order_id = $wpdb->get_var( $wpdb->prepare( "
     248                    SELECT post_id
     249                    FROM {$wpdb->postmeta}
     250                    WHERE meta_key = %s
     251                    AND meta_value = %s
     252                ", $meta_key, $order_id ) );
     253            }
    205254
    206255            if ( !empty( $loaded_order_id ) )
     
    227276    {
    228277        $meta = array();
    229         $loaded_metafields = get_post_meta( $order_id );
    230 
    231         if ( !empty( $loaded_metafields ) )
    232         {
    233             foreach ( $loaded_metafields as $key => $val )
    234             {
    235                 $val = $val[0];
    236 
    237                 if ( is_serialized( $val ) )
    238                 {
    239                     $val = unserialize( $val );
    240                 }
    241 
    242                 $meta[$key] = $val;
     278
     279        // HPOS
     280        if ( OrderUtil::custom_orders_table_usage_is_enabled() )
     281        {
     282            $order = wc_get_order( $order_id );
     283            $metadata = $order->get_meta_data();
     284
     285            if ( !empty( $metadata ) )
     286            {
     287                foreach ( $metadata as $meta_item )
     288                {
     289                    $val = $meta_item->value;
     290
     291                    if ( is_serialized( $val ) )
     292                    {
     293                        $val = unserialize( $val );
     294                    }
     295
     296                    $meta[$meta_item->key] = $val;
     297                }
     298            }
     299        }
     300        else
     301        {
     302            // Legacy (post type) storage
     303            $loaded_metafields = get_post_meta( $order_id );
     304
     305            if ( !empty( $loaded_metafields ) )
     306            {
     307                foreach ( $loaded_metafields as $key => $val )
     308                {
     309                    $val = $val[0];
     310   
     311                    if ( is_serialized( $val ) )
     312                    {
     313                        $val = unserialize( $val );
     314                    }
     315   
     316                    $meta[$key] = $val;
     317                }
    243318            }
    244319        }
     
    253328    public function process_rest_api()
    254329    {
    255         global $woocommerce, $post, $wpdb;
     330        global $woocommerce;
    256331
    257332        if ( isset( $_GET['ordernumber'] ) )
  • messageok/trunk/includes/class.integrations.php

    r2978543 r3072514  
    22
    33namespace MsgOk;
     4
     5use Automattic\WooCommerce\Utilities\OrderUtil;
    46
    57class Integrations {
     
    3436        if ( function_exists( 'wc_get_order_statuses' ) )
    3537        {
    36             $last_orders = new \WP_Query( array(
    37                 'post_type' => 'shop_order',
    38                 'posts_per_page' => 50,
    39                 'post_status' => array_keys( wc_get_order_statuses() ),
    40                 'order' => 'DESC',
    41                 'orderby' => 'post_date',
    42                 'fields' => 'ids'
    43             ) );
    44 
    45             if ( $last_orders->have_posts() )
     38            if ( OrderUtil::custom_orders_table_usage_is_enabled() )
    4639            {
    47                 foreach ( $last_orders->posts as $post_id )
     40                $last_orders = wc_get_orders( array(
     41                    'posts_per_page' => 50,
     42                    'status' => array_keys( wc_get_order_statuses() ),
     43                    'order' => 'DESC',
     44                    'orderby' => 'date'
     45                ) );   
     46               
     47                if ( !empty( $last_orders ) )
    4848                {
    49                     $post_meta_all = get_post_meta( $post_id );
    50 
    51                     if ( !empty( $post_meta_all ) )
     49                    foreach ( $last_orders as $order )
    5250                    {
    53                         foreach ( $post_meta_all as $post_meta_key => $post_meta )
     51                        $post_meta_all_raw = $order->get_meta_data();
     52                       
     53                        if ( !empty( $post_meta_all_raw ) )
    5454                        {
    55                             $search_index = array_search( $post_meta_key, $meta_found );
    56 
    57                             if ( !$search_index )
     55                            $post_meta_all = [];
     56                            foreach ( $post_meta_all_raw as $post_meta_all_raw_item )
    5857                            {
    59                                 $meta_found[$post_meta_key] = $post_meta[0];
    60 
    61                             } else if ( empty( $meta_found[$search_index] ) && !empty( $post_meta[0] ) ) {
    62                                 $meta_found[$post_meta_key] = $post_meta[0];
     58                                $post_meta_all[$post_meta_all_raw_item->key] = $post_meta_all_raw_item->value;
     59                            }
     60
     61                            foreach ( $post_meta_all as $post_meta_key => $post_meta )
     62                            {
     63                                $search_index = array_search( $post_meta_key, $meta_found );
     64
     65                                if ( !$search_index )
     66                                {
     67                                    $meta_found[$post_meta_key] = $post_meta;
     68
     69                                } else if ( empty( $meta_found[$search_index] ) && !empty( $post_meta[0] ) ) {
     70                                    $meta_found[$post_meta_key] = $post_meta;
     71                                }
     72                            }
     73                        }
     74                    }
     75                }
     76            }
     77            else
     78            {
     79                $last_orders = new \WP_Query( array(
     80                    'post_type' => 'shop_order',
     81                    'posts_per_page' => 50,
     82                    'post_status' => array_keys( wc_get_order_statuses() ),
     83                    'order' => 'DESC',
     84                    'orderby' => 'post_date',
     85                    'fields' => 'ids'
     86                ) );
     87
     88                if ( $last_orders->have_posts() )
     89                {
     90                    foreach ( $last_orders->posts as $post_id )
     91                    {
     92                        $post_meta_all = get_post_meta( $post_id );
     93
     94                        if ( !empty( $post_meta_all ) )
     95                        {
     96                            foreach ( $post_meta_all as $post_meta_key => $post_meta )
     97                            {
     98                                $search_index = array_search( $post_meta_key, $meta_found );
     99
     100                                if ( !$search_index )
     101                                {
     102                                    $meta_found[$post_meta_key] = $post_meta[0];
     103
     104                                } else if ( empty( $meta_found[$search_index] ) && !empty( $post_meta[0] ) ) {
     105                                    $meta_found[$post_meta_key] = $post_meta[0];
     106                                }
    63107                            }
    64108                        }
  • messageok/trunk/messageok.php

    r3004824 r3072514  
    55 * Plugin URI: https://www.messageok.com/woocommerce
    66 * Description: MessageOk plugin for WooCommerce
    7  * Version: 2.0.5
     7 * Version: 2.0.6
    88 * Author: MessageOk
    99 * Author URI: https://www.messageok.com
     
    1111 * License: GPL2
    1212 * WC requires at least: 5
    13  * WC tested up to: 8
     13 * WC tested up to: 8.7
    1414 */
    1515
     
    6464
    6565        add_action( 'init', array( $this, 'load_translations' ) );
     66
     67        // High-Performance-Order-Storage
     68        add_action( 'before_woocommerce_init', function() {
     69            if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
     70                \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
     71            }
     72        } );
    6673    }
    6774
  • messageok/trunk/readme.txt

    r3004824 r3072514  
    33Tags: self-service, faq, customer center, customer portal
    44Requires at least: 5.6
    5 Tested up to: 6.4
    6 Stable tag: 2.0.5
     5Tested up to: 6.5
     6Stable tag: 2.0.6
    77Requires PHP: 7
    88License: GPL2
Note: See TracChangeset for help on using the changeset viewer.