Registers the template tag handler for email notifications.
Description
See also
Source
File: src/modules/actions/email-notifications.php
protected function register_template_tag_handlers() { $tags = array( 'sitetitle' => array( 'group' => 'global', 'label' => __( 'Site Title', 'torro-forms' ), 'description' => __( 'Inserts the site title.', 'torro-forms' ), 'callback' => function() { return get_bloginfo( 'name' ); }, ), 'sitetagline' => array( 'group' => 'global', 'label' => __( 'Site Tagline', 'torro-forms' ), 'description' => __( 'Inserts the site tagline.', 'torro-forms' ), 'callback' => function() { return get_bloginfo( 'description' ); }, ), 'siteurl' => array( 'group' => 'global', 'label' => __( 'Site URL', 'torro-forms' ), 'description' => __( 'Inserts the site home URL.', 'torro-forms' ), 'callback' => function() { return home_url( '/' ); }, ), 'adminemail' => array( 'group' => 'global', 'label' => __( 'Site Admin Email', 'torro-forms' ), 'description' => __( 'Inserts the site admin email.', 'torro-forms' ), 'callback' => function() { return get_option( 'admin_email' ); }, ), 'userip' => array( 'group' => 'global', 'label' => __( 'User IP', 'torro-forms' ), 'description' => __( 'Inserts the current user IP address.', 'torro-forms' ), 'callback' => function() { $validated_ip = filter_var( $_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP ); if ( empty( $validated_ip ) ) { return '0.0.0.0'; } return $validated_ip; }, ), 'refererurl' => array( 'group' => 'global', 'label' => __( 'Referer URL', 'torro-forms' ), 'description' => __( 'Inserts the current referer URL.', 'torro-forms' ), 'callback' => function() { return wp_get_referer(); }, ), 'formtitle' => array( 'group' => 'form', 'label' => __( 'Form Title', 'torro-forms' ), 'description' => __( 'Inserts the form title.', 'torro-forms' ), 'callback' => function( $form ) { return $form->title; }, ), 'formurl' => array( 'group' => 'form', 'label' => __( 'Form URL', 'torro-forms' ), 'description' => __( 'Inserts the URL to the form.', 'torro-forms' ), 'callback' => function( $form ) { return get_permalink( $form->id ); }, ), 'formediturl' => array( 'group' => 'form', 'label' => __( 'Form Edit URL', 'torro-forms' ), 'description' => __( 'Inserts the edit URL for the form.', 'torro-forms' ), 'callback' => function( $form ) { return get_edit_post_link( $form->id ); }, ), 'submissionurl' => array( 'group' => 'submission', 'label' => __( 'Submission URL', 'torro-forms' ), 'description' => __( 'Inserts the URL to the submission.', 'torro-forms' ), 'callback' => function( $form, $submission ) { return add_query_arg( 'torro_submission_id', $submission->id, get_permalink( $form->id ) ); }, ), 'submissionediturl' => array( 'group' => 'submission', 'label' => __( 'Submission Edit URL', 'torro-forms' ), 'description' => __( 'Inserts the edit URL for the submission.', 'torro-forms' ), 'callback' => function( $form, $submission ) { return add_query_arg( 'id', $submission->id, torro()->admin_pages()->get( 'edit_submission' )->url ); }, ), 'submissiondatetime' => array( 'group' => 'submission', 'label' => __( 'Submission Date and Time', 'torro-forms' ), 'description' => __( 'Inserts the submission date and time.', 'torro-forms' ), 'callback' => function( $form, $submission ) { $date = $submission->format_datetime( get_option( 'date_format' ), false ); $time = $submission->format_datetime( get_option( 'time_format' ), false ); /* translators: 1: formatted date, 2: formatted time */ return sprintf( _x( '%1$s at %2$s', 'concatenating date and time', 'torro-forms' ), $date, $time ); }, ), ); $complex_tags = array( 'allelements' => array( 'group' => 'submission', 'label' => __( 'All Element Values', 'torro-forms' ), 'description' => __( 'Inserts all element values from the submission.', 'torro-forms' ), 'callback' => function( $form, $submission ) { $element_columns = array(); foreach ( $form->get_elements() as $element ) { $element_type = $element->get_element_type(); if ( ! $element_type ) { continue; } $element_columns[ $element->id ] = array( 'columns' => $element_type->get_export_columns( $element ), 'callback' => function( $values ) use ( $element, $element_type ) { return $element_type->format_values_for_export( $values, $element, 'html' ); }, ); } $element_values = $submission->get_element_values_data(); $output = '<table style="width:100%;">'; foreach ( $element_columns as $element_id => $data ) { $values = isset( $element_values[ $element_id ] ) ? $element_values[ $element_id ] : array(); $column_values = call_user_func( $data['callback'], $values ); foreach ( $data['columns'] as $slug => $label ) { $output .= '<tr>'; $output .= '<th scope="row">' . esc_html( $label ) . '</th>'; $output .= '<td>' . esc_html( $column_values[ $slug ] ) . '</td>'; $output .= '</tr>'; } } $output .= '</table>'; return $output; }, ), ); $groups = array( 'global' => _x( 'Global', 'template tag group', 'torro-forms' ), 'form' => _x( 'Form', 'template tag group', 'torro-forms' ), 'submission' => _x( 'Submission', 'template tag group', 'torro-forms' ), ); $this->template_tag_handler = new Template_Tag_Handler( $this->slug, $tags, array( Form::class, Submission::class ), $groups ); $this->template_tag_handler_email_only = new Template_Tag_Handler( $this->slug . '_email_only', array( 'adminemail' => $tags['adminemail'] ), array( Form::class, Submission::class ), array( 'global' => $groups['global'] ) ); $this->template_tag_handler_complex = new Template_Tag_Handler( $this->slug . '_complex', array_merge( $tags, $complex_tags ), array( Form::class, Submission::class ), $groups ); $this->module->manager()->template_tag_handlers()->register( $this->template_tag_handler ); $this->module->manager()->template_tag_handlers()->register( $this->template_tag_handler_email_only ); $this->module->manager()->template_tag_handlers()->register( $this->template_tag_handler_complex ); }
Changelog
Version | Description |
---|---|
1.0.0 | Introduced. |