/** * Gets the next available order number * * This is used when inserting a new payment * * @since 1.0 * @return string $number The next available payment number */ function give_get_next_payment_number() { if (!give_get_option('enable_sequential')) { return false; } $number = get_option('give_last_payment_number'); $start = give_get_option('sequential_start', 1); $increment_number = true; if (false !== $number) { if (empty($number)) { $number = $start; $increment_number = false; } } else { // This case handles the first addition of the new option, as well as if it get's deleted for any reason $payments = new Give_Payments_Query(array('number' => 1, 'order' => 'DESC', 'orderby' => 'ID', 'output' => 'posts', 'fields' => 'ids')); $last_payment = $payments->get_payments(); if (!empty($last_payment)) { $number = give_get_payment_number($last_payment[0]); } if (!empty($number) && $number !== (int) $last_payment[0]) { $number = give_remove_payment_prefix_postfix($number); } else { $number = $start; $increment_number = false; } } $increment_number = apply_filters('give_increment_payment_number', $increment_number, $number); if ($increment_number) { $number++; } return apply_filters('give_get_next_payment_number', $number); }
/** * Retrieve all the data for all the payments * * @access public * @since 1.0 * @return array $payment_data Array of all the data for the payments */ public function payments_data() { $per_page = $this->per_page; $orderby = isset($_GET['orderby']) ? urldecode($_GET['orderby']) : 'ID'; $order = isset($_GET['order']) ? $_GET['order'] : 'DESC'; $user = isset($_GET['user']) ? $_GET['user'] : null; $status = isset($_GET['status']) ? $_GET['status'] : give_get_payment_status_keys(); $meta_key = isset($_GET['meta_key']) ? $_GET['meta_key'] : null; $year = isset($_GET['year']) ? $_GET['year'] : null; $month = isset($_GET['m']) ? $_GET['m'] : null; $day = isset($_GET['day']) ? $_GET['day'] : null; $search = isset($_GET['s']) ? sanitize_text_field($_GET['s']) : null; $start_date = isset($_GET['start-date']) ? sanitize_text_field($_GET['start-date']) : null; $end_date = isset($_GET['end-date']) ? sanitize_text_field($_GET['end-date']) : $start_date; if (!empty($search)) { $status = 'any'; // Force all payment statuses when searching } $args = array('output' => 'payments', 'number' => $per_page, 'page' => isset($_GET['paged']) ? $_GET['paged'] : null, 'orderby' => $orderby, 'order' => $order, 'user' => $user, 'status' => $status, 'meta_key' => $meta_key, 'year' => $year, 'month' => $month, 'day' => $day, 's' => $search, 'start_date' => $start_date, 'end_date' => $end_date); if (is_string($search) && false !== strpos($search, 'txn:')) { $args['search_in_notes'] = true; $args['s'] = trim(str_replace('txn:', '', $args['s'])); } $p_query = new Give_Payments_Query($args); return $p_query->get_payments(); }
/** * Gets the next available order number * * This is used when inserting a new payment * * @since 1.0 * @return string $number The next available payment number */ function give_get_next_payment_number() { if (!give_get_option('enable_sequential')) { return false; } $prefix = give_get_option('sequential_prefix'); $postfix = give_get_option('sequential_postfix'); $start = give_get_option('sequential_start', 1); $payments = new Give_Payments_Query(array('number' => 1, 'order' => 'DESC', 'orderby' => 'ID', 'output' => 'posts', 'fields' => 'ids')); $last_payment = $payments->get_payments(); if ($last_payment) { $number = give_get_payment_number($last_payment[0]); if (empty($number)) { $number = $prefix . $start . $postfix; } else { // Remove prefix and postfix $number = str_replace($prefix, '', $number); $number = str_replace($postfix, '', $number); // Ensure it's a whole number $number = intval($number); // Increment the payment number $number++; // Re-add the prefix and postfix $number = $prefix . $number . $postfix; } } else { $number = $prefix . $start . $postfix; } return apply_filters('give_get_next_payment_number', $number); }