Making WordPress.org

Changeset 3299


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

WordCamp Budgets: Add search functionality for Reimbursement Requests.

Location:
sites/trunk/wordcamp.org/public_html/wp-content/plugins/wordcamp-payments-network
Files:
3 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
  • sites/trunk/wordcamp.org/public_html/wp-content/plugins/wordcamp-payments-network/includes/reimbursement-requests-list-table.php

    r3294 r3299  
    5252        $limit      = 30;
    5353        $offset     = $limit * ( $paged - 1 );
    54 
    55         $this->items = $wpdb->get_results( $wpdb->prepare( "
     54        $search     = '';
     55
     56        if ( ! empty( $_REQUEST['s'] ) ) {
     57            $search = $wpdb->prepare(
     58                "AND `keywords` LIKE '%%%s%%'",
     59                $wpdb->esc_like( wp_unslash( $_REQUEST['s'] ) )
     60            );
     61        }
     62
     63        $query = "
    5664            SELECT *
    5765            FROM $table_name
    58             WHERE status = %s
     66            WHERE
     67                status = %s
     68                {{search}}
    5969            ORDER BY date_requested ASC
    6070            LIMIT %d
    61             OFFSET %d",
    62             $status,
    63             $limit,
    64             $offset
    65         ) );
     71            OFFSET %d
     72        ";
     73
     74        $query = $wpdb->prepare( $query, $status, $limit, $offset );
     75        $query = str_replace( '{{search}}', $search, $query );
     76
     77        $this->items = $wpdb->get_results( $query );
    6678
    6779        // A second query is faster than using SQL_CALC_FOUND_ROWS during the first query
  • sites/trunk/wordcamp.org/public_html/wp-content/plugins/wordcamp-payments-network/views/reimbursement-requests/page-reimbursement-requests.php

    r2393 r3299  
    2626    </h3>
    2727
    28     <?php $list_table->display(); ?>
     28    <div id="wcp-list-table">
     29        <form id="posts-filter" action="" method="get">
     30            <input type="hidden" name="page"    value="reimbursement-requests-dashboard" />
     31            <input type="hidden" name="section" value="<?php echo esc_attr( get_current_section() ); ?>" />
     32           
     33            <?php $list_table->search_box( __( 'Search Reimbursements', 'wordcamporg' ), 'wcp' ); ?>
     34            <?php $list_table->display(); ?>
     35        </form>
     36    </div>
    2937</div>
Note: See TracChangeset for help on using the changeset viewer.