' . esc_html__( 'No entries yet for this form.', 'phemightforms' ) . '
' . sprintf( esc_html__( 'Total submissions: %d', 'phemightforms' ), (int) $total ) . '
'; // Choice fields defined on the form (label + allowed choices). $registry = \PhemightForms\phemightforms()->fields; $choice_fields = []; foreach ( $form->get_fields() as $field ) { if ( isset( $field['type'] ) && $registry->has_choices( $field['type'] ) ) { $choice_fields[ $field['label'] ] = [ 'choices' => isset( $field['choices'] ) ? $field['choices'] : [], 'counts' => [], ]; } } // Tally answers from the stored entries. $quiz_scores = []; foreach ( $rows as $row ) { $data = json_decode( $row->fields, true ); if ( ! is_array( $data ) ) { continue; } foreach ( $data as $item ) { $label = isset( $item['label'] ) ? $item['label'] : ''; if ( isset( $item['type'] ) && 'quiz' === $item['type'] ) { $quiz_scores[] = $item['value']; continue; } if ( ! isset( $choice_fields[ $label ] ) ) { continue; } $values = array_map( 'trim', explode( ',', (string) $item['value'] ) ); foreach ( $values as $value ) { if ( '' === $value ) { continue; } if ( ! isset( $choice_fields[ $label ]['counts'][ $value ] ) ) { $choice_fields[ $label ]['counts'][ $value ] = 0; } $choice_fields[ $label ]['counts'][ $value ]++; } } } // Quiz summary. if ( $quiz_scores ) { self::render_quiz_summary( $quiz_scores ); } // Choice charts. foreach ( $choice_fields as $label => $info ) { echo '' . sprintf( esc_html__( 'Average score: %d%%', 'phemightforms' ), (int) $avg ) . '
'; echo '