prefix . 'als_forms'; $submissions_table = $wpdb->prefix . 'als_form_submissions'; $search = ''; if ( isset($_GET['search']) ) { if ( ! isset($_GET['als_forms_submissions_nonce']) || ! wp_verify_nonce($_GET['als_forms_submissions_nonce'], 'als_forms_submissions_search') ) { wp_die( esc_html__('Security check failed. Please reload the page and try again.', 'als-forms') ); } $search = sanitize_text_field( wp_unslash( $_GET['search'] ) ); } $query = "SELECT f.id, f.name, COUNT(s.id) as submissions_count FROM $forms_table f LEFT JOIN $submissions_table s ON f.id = s.form_id"; $params = []; if ($search) { $query .= " WHERE f.name LIKE %s"; $params[] = '%' . $wpdb->esc_like($search) . '%'; } $query .= " GROUP BY f.id ORDER BY f.created_at DESC"; $forms = $params ? $wpdb->get_results($wpdb->prepare($query, ...$params)) : $wpdb->get_results($query); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- No user input in query, safe for admin context ?>