<?php /** * Pipe-related classes. * * @link https://contactform7.com/selectable-recipient-with-pipes/ */ /** * Class representing a pair of pipe. */ class WPCF7_Pipe { public $before = ''; public $after = ''; public function __construct( $text ) { $text = (string) $text; $pipe_pos = strpos( $text, '|' ); if ( false === $pipe_pos ) { $this->before = $this->after = trim( $text ); } else { $this->before = trim( substr( $text, 0, $pipe_pos ) ); $this->after = trim( substr( $text, $pipe_pos + 1 ) ); } } } /** * Class representing a list of pipes. */ class WPCF7_Pipes { private $pipes = array(); public function __construct( array $texts = null ) { foreach ( (array) $texts as $text ) { $this->add_pipe( $text ); } } private function add_pipe( $text ) { $pipe = new WPCF7_Pipe( $text ); $this->pipes[] = $pipe; } public function merge( self $another ) { $this->pipes = array_merge( $this->pipes, $another->pipes ); } public function do_pipe( $input ) { $input_canonical = wpcf7_canonicalize( $input, array( 'strto' => 'as-is', ) ); foreach ( $this->pipes as $pipe ) { $before_canonical = wpcf7_canonicalize( $pipe->before, array( 'strto' => 'as-is', ) ); if ( $input_canonical === $before_canonical ) { return $pipe->after; } } return $input; } public function collect_befores() { $befores = array(); foreach ( $this->pipes as $pipe ) { $befores[] = $pipe->before; } return $befores; } public function collect_afters() { $afters = array(); foreach ( $this->pipes as $pipe ) { $afters[] = $pipe->after; } return $afters; } public function zero() { return empty( $this->pipes ); } public function random_pipe() { if ( $this->zero() ) { return null; } return $this->pipes[array_rand( $this->pipes )]; } public function to_array() { return array_map( static function ( WPCF7_Pipe $pipe ) { return array( $pipe->before, $pipe->after, ); }, $this->pipes ); } } /** * Trait for classes that hold cross-tag WPCF7_Pipes object. */ trait WPCF7_PipesHolder { protected $pipes; public function get_pipes( $field_name ) { if ( isset( $this->pipes[$field_name] ) ) { return $this->pipes[$field_name]; } $result = new WPCF7_Pipes; $tags = $this->scan_form_tags( array( 'name' => $field_name, ) ); foreach ( $tags as $tag ) { if ( $tag->pipes instanceof WPCF7_Pipes ) { $result->merge( $tag->pipes ); } } return $this->pipes[$field_name] = $result; } public function scan_form_tags() { return array(); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
block-editor | Folder | 0755 |
|
|
config-validator | Folder | 0755 |
|
|
css | Folder | 0755 |
|
|
js | Folder | 0755 |
|
|
swv | Folder | 0755 |
|
|
capabilities.php | File | 834 B | 0644 |
|
contact-form-functions.php | File | 10.25 KB | 0644 |
|
contact-form-template.php | File | 5.69 KB | 0644 |
|
contact-form.php | File | 30.53 KB | 0644 |
|
controller.php | File | 3.14 KB | 0644 |
|
file.php | File | 10.2 KB | 0644 |
|
form-tag.php | File | 13.42 KB | 0644 |
|
form-tags-manager.php | File | 14.23 KB | 0644 |
|
formatting.php | File | 12.48 KB | 0644 |
|
functions.php | File | 15.53 KB | 0644 |
|
html-formatter.php | File | 16.32 KB | 0644 |
|
integration.php | File | 8.75 KB | 0644 |
|
l10n.php | File | 3.37 KB | 0644 |
|
mail-tag.php | File | 4.1 KB | 0644 |
|
mail.php | File | 14.6 KB | 0644 |
|
pipe.php | File | 2.57 KB | 0644 |
|
pocket-holder.php | File | 325 B | 0644 |
|
rest-api.php | File | 12.88 KB | 0644 |
|
shortcodes.php | File | 2.65 KB | 0644 |
|
special-mail-tags.php | File | 6.07 KB | 0644 |
|
submission.php | File | 20.28 KB | 0644 |
|
upgrade.php | File | 3 KB | 0644 |
|
validation-functions.php | File | 6.29 KB | 0644 |
|
validation.php | File | 3.22 KB | 0644 |
|