WPCF7_MailTag_OutputCalculator{}
Mail-tag output calculator.
Хуков нет.
Использование
$WPCF7_MailTag_OutputCalculator = new WPCF7_MailTag_OutputCalculator(); // use class methods
Методы
- public __construct( WPCF7_ContactForm $contact_form )
- public calc_output( WPCF7_MailTag $mail_tag )
- private calc_swv_result( WPCF7_MailTag $mail_tag, SWV\Rule $rule )
Код WPCF7_MailTag_OutputCalculator{} WPCF7 MailTag OutputCalculator{} CF7 6.0.5
class WPCF7_MailTag_OutputCalculator { const email = 0b100; const text = 0b010; const blank = 0b001; private $contact_form; public function __construct( WPCF7_ContactForm $contact_form ) { $this->contact_form = $contact_form; } public function calc_output( WPCF7_MailTag $mail_tag ) { return $this->calc_swv_result( $mail_tag, $this->contact_form->get_schema() ); } private function calc_swv_result( WPCF7_MailTag $mail_tag, SWV\Rule $rule ) { if ( $rule instanceof SWV\AnyRule ) { $result = 0b000; foreach ( $rule->rules() as $child_rule ) { $result |= $this->calc_swv_result( $mail_tag, $child_rule ); } return $result; } if ( $rule instanceof SWV\CompositeRule ) { $result = 0b111; foreach ( $rule->rules() as $child_rule ) { $result &= $this->calc_swv_result( $mail_tag, $child_rule ); } return $result; } $field_prop = $rule->get_property( 'field' ); if ( empty( $field_prop ) or $field_prop !== $mail_tag->field_name() ) { return self::email | self::text | self::blank; } if ( $rule instanceof SWV\RequiredRule ) { return ~ self::blank; } if ( $rule instanceof SWV\EmailRule ) { return self::email | self::blank; } if ( $rule instanceof SWV\EnumRule ) { $acceptable_values = (array) $rule->get_property( 'accept' ); $acceptable_values = array_map( 'strval', $acceptable_values ); $acceptable_values = array_filter( $acceptable_values ); $acceptable_values = array_unique( $acceptable_values ); if ( ! $mail_tag->get_option( 'do_not_heat' ) ) { $pipes = $this->contact_form->get_pipes( $mail_tag->field_name() ); $acceptable_values = array_map( static function ( $val ) use ( $pipes ) { return $pipes->do_pipe( $val ); }, $acceptable_values ); } $email_values = array_filter( $acceptable_values, 'wpcf7_is_mailbox_list' ); if ( count( $email_values ) === count( $acceptable_values ) ) { return self::email | self::blank; } else { return self::email | self::text | self::blank; } } return self::email | self::text | self::blank; } }