Making WordPress.org


Ignore:
Timestamp:
06/03/2016 11:05:55 PM (8 years ago)
Author:
iandunn
Message:

WordCamp Budgets: Add search functionality for Reimbursement Requests.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordcamp.org/public_html/wp-content/plugins/wordcamp-payments-network/includes/reimbursement-requests-dashboard.php

    r2775 r3299  
    55defined( 'WPINC' ) or die();
    66
    7 const LATEST_DATABASE_VERSION = 3;
     7const LATEST_DATABASE_VERSION = 4;
    88
    99if ( is_network_admin() ) {
     
    160160            currency       varchar( 3  )             NOT NULL default '',
    161161            amount         numeric( 10, 2 ) unsigned NOT NULL default '0',
     162            keywords       text                      NOT NULL default '',
    162163
    163164            PRIMARY KEY  (blog_id, request_id),
     
    234235        'currency'       => get_post_meta( $request_id, '_wcbrr_currency', true ),
    235236        'amount'         => get_amount( $request_id ),
     237        'keywords'       => wp_json_encode( get_search_keywords( $request ) ),
    236238    );
    237239
     
    246248    }
    247249
    248     $formats = array( '%d', '%d', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%f' );
     250    $formats = array( '%d', '%d', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%f', '%s' );
    249251
    250252    $wpdb->replace( get_index_table_name(), $index_row, $formats );
     
    269271
    270272    return $amount;
     273}
     274
     275/**
     276 * Get the search keywords for a Reimbursement Request
     277 *
     278 * @param \WP_Post $request
     279 *
     280 * @return array
     281 */
     282function get_search_keywords( $request ) {
     283    $keywords   = array();
     284    $expenses   = get_post_meta( $request->ID, '_wcbrr_expenses', true );
     285    $categories = \WordCamp_Budgets::get_payment_categories();
     286
     287    if ( ! empty( $request->post_title ) ) {
     288        $keywords[] = $request->post_title;
     289    }
     290
     291    $payer_name = get_post_meta( $request->ID, '_wcbrr_name_of_payer', true );
     292    if ( ! empty( $payer_name ) ) {
     293        $keywords[] = $payer_name;
     294    }
     295
     296    $payment_method = get_post_meta( $request->ID, '_wcbrr_payment_method', true );
     297    if ( ! empty( $payment_method ) ) {
     298        $keywords[] = $payment_method;
     299    }
     300
     301    if ( is_array( $expenses ) ) {
     302        $keywords[] = get_amount( $request->ID );
     303
     304        foreach ( $expenses as $expense ) {
     305            if ( array_key_exists( $expense['_wcbrr_category'], $categories ) ) {
     306                $keywords[] = $expense['_wcbrr_category'];  // Use the category key, because the category value is localized
     307            }
     308
     309            if ( ! empty( $expense['_wcbrr_vendor_name'] ) ) {
     310                $keywords[] = $expense['_wcbrr_vendor_name'];
     311            }
     312
     313            if ( ! empty( $expense['_wcbrr_amount'] ) ) {
     314                $keywords[] = $expense['_wcbrr_amount'];
     315            }
     316        }
     317    }
     318
     319    return $keywords;
    271320}
    272321
Note: See TracChangeset for help on using the changeset viewer.