/** * Fetch and sort fields. * * @global object $wpdb */ function _get_meta() { global $wpdb; $cache_key = md5('usermetarepeater::_get_meta' . $this->currentUID . $this->slug); $cache_group = 'types_cache'; $cached_object = wp_cache_get($cache_key, $cache_group); if ($this->use_cache) { if (false != $cached_object && is_array($cached_object)) { return $cached_object; } } $this->order_meta_name = '_' . $this->slug . '-sort-order'; $_meta = parent::_get_meta(); $ordered = array(); $this->order = get_user_meta($this->currentUID, $this->order_meta_name, true); $cache_key_userfield = md5('usermeta::_get_meta' . $this->currentUID . $this->slug); $cached_object_userfield = wp_cache_get($cache_key_userfield, $cache_group); if ($this->use_cache) { if (false != $cached_object_userfield && is_array($cached_object_userfield)) { // WordPress cache $r = $cached_object_userfield; } else { $r = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->usermeta}\r\r\n\t\t\t\t\t\t\t\tWHERE user_id=%d\r\r\n\t\t\t\t\t\t\t\tAND meta_key=%s", $this->currentUID, $this->slug)); } } if (!empty($r)) { $_meta = array(); $_meta['by_meta_id'] = array(); $_meta['by_meta_key'] = array(); // Default order foreach ($r as $meta) { //print_r($meta);exit; // This will use last item in array if multiple values exist $_meta['single'] = maybe_unserialize($meta->meta_value); // Sort by meta_id column $_meta['by_meta_id'][$meta->umeta_id] = maybe_unserialize($meta->meta_value); // Sort by meta_key $_meta['by_meta_key'][] = maybe_unserialize($meta->meta_value); } ksort($_meta['by_meta_id']); // Custom order if (!empty($this->order)) { foreach ($this->order as $meta_id) { if (isset($_meta['by_meta_id'][$meta_id])) { $_meta['custom_order'][$meta_id] = $_meta['by_meta_id'][$meta_id]; } } // This ones are orphaned foreach ($_meta['by_meta_id'] as $meta_id => $meta) { if (!isset($ordered[$meta_id])) { $_meta['custom_order'][$meta_id] = $meta; } } } else { $_meta['custom_order'] = $_meta['by_meta_id']; } } else { if (!is_null($this->meta_object)) { $_meta = array(); $_meta['single'] = maybe_unserialize($this->meta_object->meta_value); // Sort by meta_id column $_meta['by_meta_id'][$this->meta_object->umeta_id] = maybe_unserialize($this->meta_object->meta_value); // Sort by meta_key $_meta['by_meta_key'][] = maybe_unserialize($this->meta_object->meta_value); } else { $_meta = array(); $_meta['single'] = ''; $_meta['by_meta_id'] = array(); $_meta['by_meta_key'] = array(); } } if (empty($_meta['custom_order'])) { $_meta['custom_order'] = $_meta['by_meta_id']; } wp_cache_add($cache_key, $_meta, $cache_group); // WordPress cache return $_meta; }