/** * Get user reports * @param null $fields unused * @param array $filter * @param int $page * @return array */ public function get_users_report($fields = null, $filter = array(), $page = 1) { $args = array('type' => 'users', 'page' => $page, 'limit' => !empty($filter['limit']) ? absint($filter['limit']) : get_option('posts_per_page')); $user_reports = FUE_Reports::get_reports($args); $report_data = array(); $total_rows = Follow_Up_Emails::instance()->wpdb->get_var("SELECT FOUND_ROWS()"); foreach ($user_reports as $report) { if (empty($report->email_address)) { continue; } $name = $report->customer_name; $sent = absint(FUE_Reports::count_emails_sent(null, null, $report->email_address)); $opened = absint(FUE_Reports::count_opened_emails(array('user_email' => $report->email_address))); $clicked = absint(FUE_Reports::count_total_email_clicks(array('user_email' => $report->email_address))); if ($report->user_id != 0 && empty($name)) { $wp_user = new WP_User($report->user_id); $name = $wp_user->first_name . ' ' . $wp_user->last_name; } $report_data[] = array('id' => absint($report->user_id), 'name' => apply_filters('fue_report_customer_name', $name, $report), 'sent' => $sent, 'opens' => $opened, 'clicks' => $clicked); } // set the pagination data $query = array('page' => $page, 'single' => count($report_data) == 1, 'total' => $total_rows, 'total_pages' => ceil($total_rows / $args['limit'])); $this->server->add_pagination_headers($query); return array('users' => apply_filters('fue_api_report_response', $report_data, $user_reports, $fields, $this->server)); }