form(), answers from * `ninja_forms_after_submission`. */ class Beon_Notify_Source_Ninja_Forms extends Beon_Notify_Form_Source { public function key() { return 'nf'; } public function name() { return 'Ninja Forms'; } public function active() { return function_exists( 'Ninja_Forms' ); } public function forms() { $forms = array(); foreach ( (array) Ninja_Forms()->form()->get_forms() as $form ) { $id = (int) $form->get_id(); $fields = array(); foreach ( (array) Ninja_Forms()->form( $id )->get_fields() as $field ) { $type = (string) $field->get_setting( 'type' ); $key = (string) $field->get_setting( 'key' ); if ( '' === $key || $this->skip_type( $type ) ) { continue; } $fields[] = array( 'key' => $key, 'label' => wp_strip_all_tags( (string) $field->get_setting( 'label' ) ) ?: $key, 'type' => $type, ); } $forms[ (string) $id ] = array( /* translators: %d: form ID */ 'title' => wp_strip_all_tags( (string) $form->get_setting( 'title' ) ) ?: sprintf( __( 'Form #%d', 'beon-chat' ), $id ), 'fields' => $fields, ); } return $forms; } public function listen() { add_action( 'ninja_forms_after_submission', array( $this, 'on_submit' ) ); } /** * @param array $form_data form_id, settings, fields[] with key / value. */ public function on_submit( $form_data ) { $answers = array(); foreach ( (array) ( $form_data['fields'] ?? array() ) as $field ) { $key = (string) ( $field['key'] ?? ( $field['settings']['key'] ?? '' ) ); if ( '' !== $key ) { $answers[ $key ] = $this->text( $field['value'] ?? '' ); } } Beon_Notify_Forms::submitted( $this->key(), (string) ( $form_data['form_id'] ?? '' ), $answers, (string) ( $form_data['settings']['title'] ?? '' ), $form_data ); } }