function web_invoice_get_single_invoice_status($invoice_id) { // in class global $wpdb; if ($status_update = $wpdb->get_row("SELECT * FROM " . Web_Invoice::tablename('log') . " WHERE invoice_id = {$invoice_id} ORDER BY `" . Web_Invoice::tablename('log') . "`.`time_stamp` DESC LIMIT 0 , 1")) { return $status_update->value . " - " . web_invoice_Date::convert($status_update->time_stamp, 'Y-m-d H', __('M d Y')); } }
function display($what) { global $_web_invoice_clear_cache, $wpdb; if (!$this->_row_cache || $_web_invoice_clear_cache) { $this->_setRowCache($wpdb->get_row("SELECT * FROM " . Web_Invoice::tablename('main') . " WHERE invoice_num = '{$this->id}'")); $_web_invoice_clear_cache = false; } $invoice_info = $this->_row_cache; switch ($what) { case 'log_status': if ($status_update = $wpdb->get_row("SELECT * FROM " . Web_Invoice::tablename('log') . " WHERE invoice_id = " . $this->id . " ORDER BY `" . Web_Invoice::tablename('log') . "`.`time_stamp` DESC LIMIT 0 , 1")) { return $status_update->value . " - " . web_invoice_Date::convert($status_update->time_stamp, 'Y-m-d H', __('M d Y', WEB_INVOICE_TRANS_DOMAIN)); } break; case 'paid_date': $paid_date = $wpdb->get_var("SELECT time_stamp FROM " . Web_Invoice::tablename('log') . " WHERE action_type = 'paid' AND invoice_id = '" . $this->id . "' ORDER BY time_stamp DESC LIMIT 0, 1"); if ($paid_date) { return date(get_option('date_format', __('Y-m-d', WEB_INVOICE_TRANS_DOMAIN)), strtotime(web_invoice_Date::convert($paid_date, 'Y-m-d H', __('M d Y', WEB_INVOICE_TRANS_DOMAIN)))); } break; case 'paid_date_raw': $paid_date = $wpdb->get_var("SELECT time_stamp FROM " . Web_Invoice::tablename('log') . " WHERE action_type = 'paid' AND invoice_id = '" . $this->id . "' ORDER BY time_stamp DESC LIMIT 0, 1"); if ($paid_date) { return $paid_date; } break; case 'subscription_name': return web_invoice_meta($this->id, 'web_invoice_subscription_name'); break; case 'interval_length': return web_invoice_meta($this->id, 'web_invoice_subscription_length'); break; case 'interval_unit': return web_invoice_meta($this->id, 'web_invoice_subscription_unit'); break; case 'totalOccurrences': return web_invoice_meta($this->id, 'web_invoice_subscription_total_occurances'); break; case 'installment': return web_invoice_meta($this->id, 'installment', 0); break; case 'startDate': $web_invoice_subscription_start_day = web_invoice_meta($this->id, 'web_invoice_subscription_start_day'); $web_invoice_subscription_start_year = web_invoice_meta($this->id, 'web_invoice_subscription_start_year'); $web_invoice_subscription_start_month = web_invoice_meta($this->id, 'web_invoice_subscription_start_month'); if ($web_invoice_subscription_start_month && $web_invoice_subscription_start_year && $web_invoice_subscription_start_day && strtotime($web_invoice_subscription_start_year . "-" . $web_invoice_subscription_start_month . "-" . $web_invoice_subscription_start_day) > time()) { return date(get_option('date_format', __('Y-m-d', WEB_INVOICE_TRANS_DOMAIN)), strtotime($web_invoice_subscription_start_year . "-" . $web_invoice_subscription_start_month . "-" . $web_invoice_subscription_start_day)); } else { return date(get_option('date_format', __('Y-m-d', WEB_INVOICE_TRANS_DOMAIN)), time() + 1800); } break; case 'endDate': return date(get_option('date_format', __('Y-m-d', WEB_INVOICE_TRANS_DOMAIN)), strtotime("+" . $this->display('interval_length') * $this->display('totalOccurrences') . " " . $this->display('interval_unit'), strtotime($this->display('startDateM')))); break; case 'nextDate': if ($this->display('totalOccurrences') > $this->display('installment')) { if ($this->display('installment') == 0 && strtotime($this->display('startDateM')) >= strtotime($this->display('due_dateM'))) { $start_date = $this->display('due_dateM'); } else { $start_date = $this->display('startDateM'); } return date(get_option('date_format', __('Y-m-d', WEB_INVOICE_TRANS_DOMAIN)), strtotime("+" . $this->display('interval_length') * $this->display('installment') . " " . $this->display('interval_unit'), strtotime($start_date))); } return $this->display('endDate'); break; case 'startDateM': $web_invoice_subscription_start_day = web_invoice_meta($this->id, 'web_invoice_subscription_start_day'); $web_invoice_subscription_start_year = web_invoice_meta($this->id, 'web_invoice_subscription_start_year'); $web_invoice_subscription_start_month = web_invoice_meta($this->id, 'web_invoice_subscription_start_month'); if ($web_invoice_subscription_start_month && $web_invoice_subscription_start_year && $web_invoice_subscription_start_day && strtotime($web_invoice_subscription_start_year . "-" . $web_invoice_subscription_start_month . "-" . $web_invoice_subscription_start_day) > time()) { return date('Y-m-d', strtotime($web_invoice_subscription_start_year . "-" . $web_invoice_subscription_start_month . "-" . $web_invoice_subscription_start_day)); } else { return date('Y-m-d', time() + 1800); } break; case 'endDateM': return date('Y-m-d', strtotime("+" . $this->display('interval_length') * $this->display('totalOccurrences') . " " . $this->display('interval_unit'), strtotime($this->display('startDateM')))); break; case 'nextDateM': if ($this->display('totalOccurrences') > $this->display('installment')) { if ($this->display('installment') == 0 && strtotime($this->display('startDateM')) >= strtotime($this->display('due_dateM'))) { $start_date = $this->display('due_dateM'); } else { $start_date = $this->display('startDateM'); } return date('Y-m-d', strtotime("+" . $this->display('interval_length') * $this->display('installment') . " " . $this->display('interval_unit'), strtotime($start_date))); } return $this->display('endDate'); break; case 'profileEndDate': return date(get_option('date_format', __('Y-m-d', WEB_INVOICE_TRANS_DOMAIN)), strtotime("+" . $this->display('interval_length') * ($this->display('totalOccurrences') - 1) . " " . $this->display('interval_unit'), strtotime($this->display('startDate')) + 3600 * 24)); break; case 'archive_status': $result = $wpdb->get_col("SELECT action_type FROM " . Web_Invoice::tablename('log') . " WHERE invoice_id = '" . $this->id . "' ORDER BY time_stamp DESC"); foreach ($result as $event) { if ($event == 'unarchive') { return ''; break; } if ($event == 'archive') { return 'archive'; break; } } break; case 'display_billing_rate': $length = web_invoice_meta($this->id, 'web_invoice_subscription_length'); $unit = web_invoice_meta($this->id, 'web_invoice_subscription_unit'); $occurances = web_invoice_meta($this->id, 'web_invoice_subscription_total_occurances'); // days if ($unit == "days") { if ($length == '1') { return "daily for {$occurances} days"; } if ($length > '1') { return "every {$length} days for a total of {$occurances} billing cycles"; } } //months if ($unit == "months") { if ($length == '1') { return "monthly for {$occurances} months"; } if ($length > '1') { return "every {$length} months {$occurances} times"; } } if ($unit == "years") { if ($length == '1') { return "annually for {$occurances} years"; } if ($length > '1') { return "every {$length} years {$occurances} times"; } } break; case 'link': $link_to_page = get_permalink(get_option('web_invoice_web_invoice_page')); $hashed = md5($this->id); if (get_option("permalink_structure")) { return $link_to_page . "?invoice_id=" . $hashed; } else { return $link_to_page . "&invoice_id=" . $hashed; } break; case 'invoice_hash': return md5($this->id); break; case 'print_link': return $this->display('link') . '&print=1'; break; case 'hash': return md5($this->id); break; case 'currency': if (web_invoice_meta($this->id, 'web_invoice_currency_code') != '') { $currency_code = web_invoice_meta($this->id, 'web_invoice_currency_code'); } else { if (get_option('web_invoice_default_currency_code') != '') { $currency_code = get_option('web_invoice_default_currency_code'); } else { $currency_code = "USD"; } } return $currency_code; break; case 'display_id': $web_invoice_custom_invoice_id = web_invoice_meta($this->id, 'web_invoice_custom_invoice_id'); if (empty($web_invoice_custom_invoice_id)) { return $this->id; } else { return $web_invoice_custom_invoice_id; } break; case 'due_date': $web_invoice_due_date_month = web_invoice_meta($this->id, 'web_invoice_due_date_month'); $web_invoice_due_date_year = web_invoice_meta($this->id, 'web_invoice_due_date_year'); $web_invoice_due_date_day = web_invoice_meta($this->id, 'web_invoice_due_date_day'); if (!empty($web_invoice_due_date_month) && !empty($web_invoice_due_date_year) && !empty($web_invoice_due_date_day)) { return date(get_option('date_format', __('Y-m-d', WEB_INVOICE_TRANS_DOMAIN)), strtotime("{$web_invoice_due_date_year}-{$web_invoice_due_date_month}-{$web_invoice_due_date_day}")); } return date(get_option('date_format', __('Y-m-d', WEB_INVOICE_TRANS_DOMAIN))); break; case 'due_dateM': $web_invoice_due_date_month = web_invoice_meta($this->id, 'web_invoice_due_date_month'); $web_invoice_due_date_year = web_invoice_meta($this->id, 'web_invoice_due_date_year'); $web_invoice_due_date_day = web_invoice_meta($this->id, 'web_invoice_due_date_day'); if (!empty($web_invoice_due_date_month) && !empty($web_invoice_due_date_year) && !empty($web_invoice_due_date_day)) { return date('Y-m-d', strtotime("{$web_invoice_due_date_year}-{$web_invoice_due_date_month}-{$web_invoice_due_date_day}")); } return date('Y-m-d'); break; case 'invoice_date': if ($invoice_info && $invoice_info->invoice_date && !empty($invoice_info->invoice_date)) { date(get_option('date_format', __('Y-m-d', WEB_INVOICE_TRANS_DOMAIN)), strtotime($invoice_info->invoice_date)); } return date(get_option('date_format', __('Y-m-d', WEB_INVOICE_TRANS_DOMAIN))); break; case 'amount': return $invoice_info->amount; break; case 'due_amount': $payments = web_invoice_sum_payments($this->id); return max(0, $invoice_info->amount - $payments); break; case 'tax_percent': $_tax_values = unserialize(web_invoice_meta($this->id, 'tax_value')); if (is_array($_tax_values)) { $_tax_value = 0; foreach ($_tax_values as $_tax_valuex) { $_tax_value += $_tax_valuex; } } else { $_tax_value = $_tax_values; } return $_tax_value; break; case 'tax_total': $_tax_values = unserialize(web_invoice_meta($this->id, 'tax_value')); if (is_array($_tax_values)) { $_tax_value = 0; foreach ($_tax_values as $_tax_valuex) { $_tax_value += $_tax_valuex; } } else { $_tax_value = $_tax_values; } return $_tax_value * $invoice_info->amount; break; case 'subject': return $invoice_info->subject; break; case 'display_amount': return web_invoice_display_payment($this->display('currency'), $invoice_info->amount); break; case 'description': return str_replace("\n", "<br />", $invoice_info->description); break; case 'itemized': return unserialize(urldecode($invoice_info->itemized)); break; case 'status': return $invoice_info->status; break; case 'trx_id': return web_invoice_payment_register($this->id, $this->display('amount')); break; } }