Making WordPress.org


Ignore:
Timestamp:
01/10/2014 05:05:37 AM (11 years ago)
Author:
nacin
Message:

Trac Notifications: New endpoint for reports to retrieve tickets the user is currently subscribed to.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/trac-notifications/trac-notifications.php

    r249 r261  
    3434            $this->trac_notifications_box_actions();
    3535            exit;
     36        } elseif ( isset( $_POST['trac-ticket-subs'] ) ) {
     37            $this->trac_notifications_query_tickets();
     38            exit;
    3639        } elseif ( isset( $_GET['trac-notifications'] ) ) {
    3740            $this->trac_notifications_box_render();
     
    7982        }
    8083        return $status;
     84    }
     85
     86    function get_trac_ticket_subscriptions_for_user( $username ) {
     87        return $this->trac->get_col( $this->trac->prepare( "SELECT ticket FROM _ticket_subs WHERE username = %s AND status = 1", $username ) );
    8188    }
    8289
     
    127134    }
    128135
     136    function trac_notifications_query_tickets() {
     137        send_origin_headers();
     138
     139        if ( ! is_user_logged_in() ) {
     140            exit;
     141        }
     142        $username = wp_get_current_user()->user_login;
     143
     144        $queried_tickets = (array) $_POST['tickets'];
     145        if ( count( $queried_tickets ) > 100 ) {
     146            wp_send_json_error();
     147        }
     148
     149        $subscribed_tickets = $this->get_trac_ticket_subscriptions_for_user( $username );
     150        if ( ! is_array( $subscribed_tickets ) ) {
     151            wp_send_json_error();
     152        }
     153        $tickets = array_intersect( $queried_tickets, $subscribed_tickets );
     154        $tickets = array_map( 'intval', array_values( $tickets ) );
     155        wp_send_json_success( array( 'tickets' => $tickets ) );
     156    }
     157
    129158    function trac_notifications_box_render() {
    130159        send_origin_headers();
     
    173202            } elseif ( 0 === $ticket_sub ) {
    174203                $class = 'blocked';
     204            } else {
     205                $class = '';
    175206            }
    176207        }
Note: See TracChangeset for help on using the changeset viewer.