File "class-wc-order-item-meta.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/class-wc-order-item-meta.php
File size: 4.77 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

defined('ABSPATH') || exit;
class WC_Order_Item_Meta
{
    private $legacy = false;
    private $item = null;
    public $meta = null;
    public $product = null;
    public function __construct($item = array(), $product = null)
    {
        wc_deprecated_function('WC_Order_Item_Meta::__construct', '3.1', 'WC_Order_Item_Product');
        if (!isset($item['item_meta'])) {
            $this->legacy = true;
            $this->meta = array_filter((array) $item);
            return;
        }
        $this->item = $item;
        $this->meta = array_filter((array) $item['item_meta']);
        $this->product = $product;
    }
    public function display($flat = false, $return = false, $hideprefix = '_', $delimiter = ", \n")
    {
        $output = '';
        $formatted_meta = $this->get_formatted($hideprefix);
        if (!empty($formatted_meta)) {
            $meta_list = array();
            foreach ($formatted_meta as $meta) {
                if ($flat) {
                    $meta_list[] = wp_kses_post($meta['label'] . ': ' . $meta['value']);
                } else {
                    $meta_list[] = '
						<dt class="variation-' . sanitize_html_class(sanitize_text_field($meta['key'])) . '">' . wp_kses_post($meta['label']) . ':</dt>
						<dd class="variation-' . sanitize_html_class(sanitize_text_field($meta['key'])) . '">' . wp_kses_post(wpautop(make_clickable($meta['value']))) . '</dd>
					';
                }
            }
            if (!empty($meta_list)) {
                if ($flat) {
                    $output .= implode($delimiter, $meta_list);
                } else {
                    $output .= '<dl class="variation">' . implode('', $meta_list) . '</dl>';
                }
            }
        }
        $output = apply_filters('woocommerce_order_items_meta_display', $output, $this, $flat);
        if ($return) {
            return $output;
        } else {
            echo $output;
        }
    }
    public function get_formatted($hideprefix = '_')
    {
        if ($this->legacy) {
            return $this->get_formatted_legacy($hideprefix);
        }
        $formatted_meta = array();
        if (!empty($this->item['item_meta_array'])) {
            foreach ($this->item['item_meta_array'] as $meta_id => $meta) {
                if ('' === $meta->value || is_serialized($meta->value) || !empty($hideprefix) && substr($meta->key, 0, 1) === $hideprefix) {
                    continue;
                }
                $attribute_key = urldecode(str_replace('attribute_', '', $meta->key));
                $meta_value = $meta->value;
                if (taxonomy_exists($attribute_key)) {
                    $term = get_term_by('slug', $meta_value, $attribute_key);
                    if (!is_wp_error($term) && is_object($term) && $term->name) {
                        $meta_value = $term->name;
                    }
                }
                $formatted_meta[$meta_id] = array('key' => $meta->key, 'label' => wc_attribute_label($attribute_key, $this->product), 'value' => apply_filters('woocommerce_order_item_display_meta_value', $meta_value, $meta, $this->item));
            }
        }
        return apply_filters('woocommerce_order_items_meta_get_formatted', $formatted_meta, $this);
    }
    public function get_formatted_legacy($hideprefix = '_')
    {
        if (!is_ajax()) {
            wc_deprecated_argument('WC_Order_Item_Meta::get_formatted', '2.4', 'Item Meta Data is being called with legacy arguments');
        }
        $formatted_meta = array();
        foreach ($this->meta as $meta_key => $meta_values) {
            if (empty($meta_values) || !empty($hideprefix) && substr($meta_key, 0, 1) === $hideprefix) {
                continue;
            }
            foreach ((array) $meta_values as $meta_value) {
                if (is_serialized($meta_value)) {
                    continue;
                }
                $attribute_key = urldecode(str_replace('attribute_', '', $meta_key));
                if (taxonomy_exists($attribute_key)) {
                    $term = get_term_by('slug', $meta_value, $attribute_key);
                    if (!is_wp_error($term) && is_object($term) && $term->name) {
                        $meta_value = $term->name;
                    }
                }
                $formatted_meta_key = $meta_key;
                $loop = 0;
                while (isset($formatted_meta[$formatted_meta_key])) {
                    $loop++;
                    $formatted_meta_key = $meta_key . '-' . $loop;
                }
                $formatted_meta[$formatted_meta_key] = array('key' => $meta_key, 'label' => wc_attribute_label($attribute_key, $this->product), 'value' => apply_filters('woocommerce_order_item_display_meta_value', $meta_value, $this->meta, $this->item));
            }
        }
        return $formatted_meta;
    }
}