id = $post->ID;
$this->name = $post->post_name;
$this->title = $post->post_title;
$this->is_locale = get_post_meta( $post->ID, '_is_locale', true );
$properties = $this->get_properties();
foreach ( $properties as $key => $value ) {
if ( metadata_exists( 'post', $post->ID, $key ) ) {
$properties[$key] = get_post_meta( $post->ID, $key, true );
}
}
$this->properties = $properties;
}
}
public static function get_instance( $post ) {
$post = get_post( $post );
if ( ! $post || self::post_type != get_post_type( $post ) ) {
return false;
}
return self::$current = new self( $post );
}
public static function count() {
return self::$found_items;
}
public static function get_current() {
return self::$current;
}
public static function register_post_type() {
register_post_type( self::post_type, array(
'labels' => array(
'name' => __( 'Search Forms', 'ivory-search' ),
'singular_name' => __( 'Search Form', 'ivory-search' ),
),
'rewrite' => false,
'query_var' => false,
) );
}
public static function find( $args = '' ) {
$defaults = array(
'post_status' => 'any',
'posts_per_page' => -1,
'offset' => 0,
'orderby' => 'ID',
'order' => 'ASC',
);
$args = wp_parse_args( $args, $defaults );
$args['post_type'] = self::post_type;
$q = new WP_Query();
$posts = $q->query( $args );
self::$found_items = $q->found_posts;
$objs = array();
foreach ( (array) $posts as $post ) {
$objs[] = new self( $post );
}
return $objs;
}
public static function get_template( $args = '' ) {
global $l10n;
$defaults = array( 'locale' => null, 'title' => '' );
$args = wp_parse_args( $args, $defaults );
$locale = $args['locale'];
$title = $args['title'];
if ( $locale ) {
$mo_orig = $l10n['ivory-search'];
$is_i18n = IS_I18n::getInstance();
$is_i18n->load_is_textdomain( $locale );
}
self::$current = $search_form = new self;
$search_form->title =
( $title ? $title : __( 'Untitled', 'ivory-search' ) );
$search_form->locale = ( $locale ? $locale : get_locale() );
$properties = $search_form->get_properties();
$search_form->properties = $properties;
$search_form = apply_filters( 'is_search_form_default_pack',
$search_form, $args );
if ( isset( $mo_orig ) ) {
$l10n['ivory-search'] = $mo_orig;
}
return $search_form;
}
public function __get( $name ) {
$message = __( '%1$s property of a IS_Search_Form object is no longer accessible. Use %2$s method instead.', 'ivory-search' );
if ( 'id' == $name ) {
if ( WP_DEBUG ) {
trigger_error( sprintf( $message, 'id', 'id()' ) );
}
return $this->id;
} elseif ( 'title' == $name ) {
if ( WP_DEBUG ) {
trigger_error( sprintf( $message, 'title', 'title()' ) );
}
return $this->title;
} elseif ( $prop = $this->prop( $name ) ) {
if ( WP_DEBUG ) {
trigger_error(
sprintf( $message, $name, 'prop(\'' . $name . '\')' ) );
}
return $prop;
}
}
public function initial() {
return empty( $this->id );
}
public function prop( $name ) {
$props = $this->get_properties();
return isset( $props[$name] ) ? $props[$name] : null;
}
public function get_properties() {
$properties = (array) $this->properties;
$properties = wp_parse_args( $properties, array(
'_is_includes' => '',
'_is_excludes' => '',
'_is_settings' => '',
'_is_ajax' => '',
'_is_customize' => '',
) );
$properties = (array) apply_filters( 'is_search_form_properties',
$properties, $this );
return $properties;
}
public function set_properties( $properties ) {
$defaults = $this->get_properties();
$properties = wp_parse_args( $properties, $defaults );
$properties = array_intersect_key( $properties, $defaults );
$this->properties = $properties;
}
public function id() {
return $this->id;
}
public function name() {
return $this->name;
}
public function title() {
return $this->title;
}
public function set_title( $title ) {
$title = strip_tags( $title );
$title = trim( $title );
if ( '' === $title ) {
$title = __( 'Untitled', 'ivory-search' );
}
$this->title = $title;
}
public function locale() {
if ( $this->is_valid_locale( $this->locale ) ) {
return $this->locale;
} else {
return '';
}
}
public function set_locale( $locale ) {
$locale = trim( $locale );
if ( $this->is_valid_locale( $locale ) ) {
$this->locale = $locale;
} else {
$this->locale = 'en_US';
}
}
// Return true if this form is the same one as currently POSTed.
public function is_posted() {
if ( empty( $_POST['_is_unit_tag'] ) ) {
return false;
}
return $this->unit_tag == $_POST['_is_unit_tag'];
}
/**
* Get Customizer Generated CSS
*
* @since 4.3
*
* @param int $post_id Post ID.
* @return mixed
*/
function get_css( $post_id ) {
$settings = get_option( 'is_search_' . $post_id );
$search_form = IS_Search_Form::get_instance( $post_id );
$css = '';
// AJAX customizer fields.
$_ajax = $search_form->prop( '_is_ajax' );
if ( isset( $_ajax['enable_ajax'] ) ) {
// Suggestion Box.
$suggestion_box_bg_color = isset( $settings['search-results-bg'] ) ? $settings['search-results-bg'] : '';
$suggestion_box_selected_color = isset( $settings['search-results-hover'] ) ? $settings['search-results-hover'] : '';
$suggestion_box_text_color = isset( $settings['search-results-text'] ) ? $settings['search-results-text'] : '';
$suggestion_box_link_color = isset( $settings['search-results-link'] ) ? $settings['search-results-link'] : '';
$suggestion_box_border_color = isset( $settings['search-results-border'] ) ? $settings['search-results-border'] : '';
ob_start();
if ( '' !== $suggestion_box_bg_color ) { ?>
#is-ajax-search-result- .is-ajax-search-post,
#is-ajax-search-result- .is-show-more-results,
#is-ajax-search-details- .mCSB_container > div {
background-color: !important;
}
#is-ajax-search-result- .is-ajax-search-post:hover,
#is-ajax-search-result- .is-show-more-results:hover,
#is-ajax-search-details- .is-ajax-search-tags-details > div:hover,
#is-ajax-search-details- .is-ajax-search-categories-details > div:hover {
background-color: !important;
}
#is-ajax-search-result-,
#is-ajax-search-details- {
color: !important;
}
#is-ajax-search-result- a,
#is-ajax-search-details- a:not(.button) {
color: !important;
}
#is-ajax-search-details- .is-ajax-woocommerce-actions a.button {
background-color: !important;
}
#is-ajax-search-result- .is-ajax-search-post,
#is-ajax-search-details- .is-ajax-search-post-details {
border-color: !important;
}
#is-ajax-search-result-,
#is-ajax-search-details- {
background-color: !important;
}
prop('_is_customize');
if( isset( $_customize['enable_customize'] ) ) {
// Input.
$search_input_color = isset( $settings['text-box-text'] ) ? $settings['text-box-text'] : '';
$search_input_bg_color = isset( $settings['text-box-bg'] ) ? $settings['text-box-bg'] : '';
$search_input_border_color = isset( $settings['text-box-border'] ) ? $settings['text-box-border'] : '';
// Submit.
$search_submit_color = isset( $settings['submit-button-text'] ) ? $settings['submit-button-text'] : '';
$search_submit_bg_color = isset( $settings['submit-button-bg'] ) ? $settings['submit-button-bg'] : '';
ob_start();
if ( '' !== $search_submit_color || '' !== $search_submit_bg_color ) { ?>
.is-form-id- .is-search-submit:focus,
.is-form-id- .is-search-submit:hover,
.is-form-id- .is-search-submit,
.is-form-id- .is-search-icon {
}
.is-form-id- .is-search-input::-webkit-input-placeholder {
color: !important;
}
.is-form-id- .is-search-input:-moz-placeholder {
color: !important;
opacity: 1;
}
.is-form-id- .is-search-input::-moz-placeholder {
color: !important;
opacity: 1;
}
.is-form-id- .is-search-input:-ms-input-placeholder {
color: !important;
}
.is-form-style-1.is-form-id- .is-search-input:focus,
.is-form-style-1.is-form-id- .is-search-input:hover,
.is-form-style-1.is-form-id- .is-search-input,
.is-form-style-2.is-form-id- .is-search-input:focus,
.is-form-style-2.is-form-id- .is-search-input:hover,
.is-form-style-2.is-form-id- .is-search-input,
.is-form-style-3.is-form-id- .is-search-input:focus,
.is-form-style-3.is-form-id- .is-search-input:hover,
.is-form-style-3.is-form-id- .is-search-input,
.is-form-id- .is-search-input:focus,
.is-form-id- .is-search-input:hover,
.is-form-id- .is-search-input {
}
.is-form-id- .is-search-icon {
border-color: !important;
}
prop('_is_ajax');
$_customize = $this->prop('_is_customize');
$_includes = $this->prop( '_is_includes' );
$_settings = $this->prop('_is_settings');
$result = '';
if ( ( $this->ivory_search || ! isset( $this->opt['do_not_load_plugin_files']['plugin-css-file'] ) ) && ! isset( $this->opt['not_load_files']['css'] ) ){
wp_enqueue_style( 'ivory-search-styles', plugins_url( '/public/css/ivory-search.css', IS_PLUGIN_FILE ), array(), IS_VERSION );
}
if ( isset( $_customize['enable_customize'] ) || isset( $_ajax['enable_ajax'] ) ) {
wp_add_inline_style( 'ivory-search-styles', $this->get_css( $args['id'] ) );
}
if ( isset( $_settings['disable'] ) ) {
return '';
}
if ( isset( $_settings['demo'] ) && ! current_user_can( 'administrator' ) ) {
return '';
}
if ( ! isset( $_ajax['enable_ajax'] ) && ! isset( $_customize['enable_customize'] ) ) {
remove_filter( 'get_search_form', array( IS_Public::getInstance(), 'get_search_form' ), 9999999 );
$result = get_search_form( false );
add_filter( 'get_search_form', array( IS_Public::getInstance(), 'get_search_form' ), 9999999 );
if ( 'n' !== $display_id ) {
$result = preg_replace('/<\/form>/', '', $result );
}
if ( isset( $_includes['post_type'] ) && count( $_includes['post_type'] ) < 2 ) {
$result = preg_replace('/<\/form>/', '', $result );
}
$result = apply_filters( 'is_default_search_form', $result );
} else {
$view_search_result_class = ( isset( $_ajax['search_results'] ) && 'ajax_results' === $_ajax['search_results'] ) ? 'is-disable-submit ' : '';
$settings = get_option( 'is_search_' . $args['id'] );
$is_ajax_search = '';
$data_attrs = '';
$placeholder_text = __( 'Search...', 'ivory-search');
$search_btn_text = __( 'Search', 'ivory-search');
$form_style = '';
if ( isset( $_customize['enable_customize'] ) ) {
$placeholder_text = isset( $settings['placeholder-text'] ) ? $settings['placeholder-text'] : $placeholder_text;
$search_btn_text = isset( $settings['search-btn-text'] ) ? $settings['search-btn-text'] : $search_btn_text;
$form_style = ( isset( $settings['form-style'] ) && 'is-form-style-default' !== $settings['form-style'] ) ? $settings['form-style'] : '';
}
if ( isset( $_ajax['enable_ajax'] ) ) {
$is_ajax_search = 'is-ajax-search';
// Enqueue scripts.
wp_enqueue_script( 'ivory-ajax-search-scripts' );
$min_no_for_search = isset( $_ajax['min_no_for_search'] ) ? $_ajax['min_no_for_search'] : '1';
$result_box_max_height = isset( $_ajax['result_box_max_height'] ) ? $_ajax['result_box_max_height'] : '400';
// Add data AJAX attributes.
$data_attrs = 'data-min-no-for-search="'.esc_attr( $min_no_for_search ).'"';
$data_attrs .= ' data-result-box-max-height="'.$result_box_max_height.'"';
$data_attrs .= ' data-form-id="'.$args['id'].'"';
}
$temp = ( '' !== $form_style ) ? 'is-form-style ' : '';
$classes = $view_search_result_class . $temp . $form_style . ' is-form-id-' . $args['id'].' '.$is_ajax_search;
$classes = apply_filters( 'is_search_form_classes', $classes );
$result = '