public function widget($args, $instance) { // Don't show unless a View ID has been set. if (empty($instance['view_id'])) { do_action('gravityview_log_debug', sprintf('%s[widget]: No View ID has been defined. Not showing the widget.', get_class($this)), $instance); return; } /** This filter is documented in wp-includes/default-widgets.php */ $title = apply_filters('widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base); echo $args['before_widget']; if ($title) { echo $args['before_title'] . $title . $args['after_title']; } // @todo Add to the widget configuration form $instance['search_layout'] = apply_filters('gravityview/widget/search/layout', 'vertical', $instance); $instance['context'] = 'wp_widget'; // form $instance['form_id'] = GVCommon::get_meta_form_id($instance['view_id']); $instance['form'] = GVCommon::get_form($instance['form_id']); // We don't want to overwrite existing context, etc. $previous_view = GravityView_View::getInstance(); /** @hack */ new GravityView_View($instance); GravityView_Widget_Search::getInstance()->render_frontend($instance); /** * Restore previous View context * @hack */ new GravityView_View($previous_view); echo $args['after_widget']; }
/** * Checks if the current View is presenting search results * * @since 1.5.4 * * @return boolean True: Yes, it's a search; False: No, not a search. */ function is_searching() { // It's a single entry, not search if ($this->getSingleEntry()) { return false; } $search_method = GravityView_Widget_Search::getInstance()->get_search_method(); if ('post' === $search_method) { $get = $_POST; } else { $get = $_GET; } // No $_GET parameters if (empty($get) || !is_array($get)) { return false; } // Remove empty values $get = array_filter($get); // If the $_GET parameters are empty, it's no search. if (empty($get)) { return false; } $search_keys = array_keys($get); $search_match = implode('|', self::$search_parameters); foreach ($search_keys as $search_key) { // Analyze the search key $_GET parameter and see if it matches known GV args if (preg_match('/(' . $search_match . ')/i', $search_key)) { return true; } } return false; }
<?php /** * Display the Search widget * * @see class-search-widget.php */ $gravityview_view = GravityView_View::getInstance(); $view_id = $gravityview_view->getViewId(); $has_inputs = false; $search_method = GravityView_Widget_Search::getInstance()->get_search_method(); ?> <form class="gv-widget-search <?php echo GravityView_Widget_Search::get_search_class(); ?> " method="<?php echo $search_method; ?> " action="<?php echo esc_url(GravityView_Widget_Search::get_search_form_action()); ?> "> <?php /** * @action `gravityview_search_widget_fields_before` Inside the `<form>` tag of the GravityView search form, before inputs are rendered * @param GravityView_Widget_Search $this GravityView Widget instance */ do_action('gravityview_search_widget_fields_before', $this); foreach ($this->search_fields as $search_field) {