<?php /** * Genesis Framework * * WARNING: This file is part of the core Genesis Framework. DO NOT edit * this file under any circumstances. Please do all modifications * in the form of a child theme. * * @package StudioPress\Genesis * @author StudioPress * @license GPL-2.0-or-later * @link https://my.studiopress.com/themes/genesis/ */ /** * Search form class. * * @since 2.7.0 * * @link https://gist.github.com/cdils/caa151461a2d494dc85ed860cedcd503 */ class Genesis_Search_Form { /** * Unique ID for this search field. * * @var string */ protected $unique_id; /** * Holds form strings. * * @var array */ protected $strings; /** * Constructor. * * @since 2.7.0 * * @param array $strings Optional. Array of strings. Default is an empty array. */ public function __construct( array $strings = [] ) { $default_strings = [ 'label' => __( 'Search site', 'genesis' ), 'placeholder' => '', 'input_value' => apply_filters( 'the_search_query', get_search_query() ), // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- WordPress core hook 'submit_value' => __( 'Search', 'genesis' ), ]; $this->strings = array_merge( $default_strings, $strings ); $this->unique_id = wp_unique_id( 'searchform-' ); } /** * Return markup. * * @since 2.7.0 * * @param array $args The args array to pass to `genesis_markup()`. */ protected function markup( $args ) { $args = array_merge( $args, [ 'echo' => false, ] ); return genesis_markup( $args ); } /** * Render the search form. * * @since 2.7.0 */ public function render() { echo $this->get_form(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- We need raw output here } /** * Get form markup. * * @since 1.0.0 * * @return string Form markup. */ public function get_form() { return $this->markup( [ 'open' => '<form %s>', 'close' => '</form>', 'content' => $this->get_label() . $this->get_input() . $this->get_submit(), 'context' => 'search-form', ] ); } /** * Get label markup. * * @since 1.0.0 * * @return string Label markup. */ protected function get_label() { return $this->markup( [ 'open' => '<label %s>', 'close' => '</label>', 'content' => $this->strings['label'], 'context' => 'search-form-label', 'params' => [ 'input_id' => $this->get_input_id(), ], ] ); } /** * Get input markup. * * @since 1.0.0 * * @return string Input field markup. */ protected function get_input() { return $this->markup( [ 'open' => '<input %s>', 'context' => 'search-form-input', 'params' => [ 'id' => $this->get_input_id(), 'value' => $this->strings['input_value'], 'placeholder' => $this->strings['placeholder'], ], ] ); } /** * Get submit button markup. * * @since 2.7.0 * * @return string Submit button markup. */ protected function get_submit() { return $this->markup( [ 'open' => '<input %s>', 'context' => 'search-form-submit', 'params' => [ 'value' => $this->strings['submit_value'], ], ] ); } /** * Get a unique ID for the search input. * * @since 2.7.0 * * @return string Unique ID. */ protected function get_input_id() { return $this->unique_id; } }