/** * Loads invoice information * Overwrites globals * @global type $wpdb * @global type $wpi_settings * @global type $blog_id * @param type $args * @return type */ function load_invoice($args = '') { global $wpdb, $wpi_settings, $blog_id; extract(wp_parse_args($args, array('id' => '', 'return' => false)), EXTR_SKIP); $id = wpi_invoice_id_to_post_id($id); $new_invoice = is_numeric($id) ? false : true; $invoice_data = $wpdb->get_row("SELECT * FROM {$wpdb->posts} WHERE ID = '{$id}'", ARRAY_A); if ($new_invoice || count($invoice_data) < 1) { $this->error = true; $this->new_invoice = true; return; } $object_meta = get_post_custom($id); if (is_array($object_meta)) { foreach ($object_meta as $meta_key => $meta_value) { if (is_array($meta_value)) { $meta_value = $meta_value[key($meta_value)]; } if (is_serialized($meta_value)) { $tmp_meta_value = unserialize($meta_value); } else { $tmp_meta_value = $meta_value; } $invoice_data[$meta_key] = empty($tmp_meta_value) || !is_array($tmp_meta_value) ? $meta_value : $tmp_meta_value; } } WPI_Functions::merge_billings($wpi_settings['billing'], $invoice_data['billing']); //** Add support for MS and for old invoice histories which will have a blog_id of 0 after upgrade */ if ($blog_id == 1) { $ms_blog_query = " AND ( blog_id = {$blog_id} OR blog_id = 0) "; } else { $ms_blog_query = " AND blog_id = '{$blog_id}' "; } $object_log = $wpdb->get_results("SELECT * FROM {$wpdb->base_prefix}wpi_object_log WHERE object_id = '{$id}' {$ms_blog_query} ORDER BY ID", ARRAY_A); if (!empty($object_log)) { $invoice_data['log'] = $object_log; } $invoice_data = apply_filters('wpi_load_invoice', $invoice_data); if (!empty($invoice_data['user_email'])) { $this->load_user("email={$invoice_data['user_email']}"); } if (!is_array($this->data)) { $this->data = array(); } $this->data = array_merge($invoice_data, $this->data); if ($return) { return $this->data; } }