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']; }
/** * @return GravityView_Widget_Search */ public static function getInstance() { if (empty(self::$instance)) { self::$instance = new GravityView_Widget_Search(); } return self::$instance; }
<?php /** * Display the search LINK input field * * @see class-search-widget.php */ $gravityview_view = GravityView_View::getInstance(); $view_id = $gravityview_view->getViewId(); $search_field = $gravityview_view->search_field; // base url to calculate the final full link $base_url = GravityView_Widget_Search::get_search_form_action(); // Make sure that there are choices to display if (empty($search_field['choices'])) { do_action('gravityview_log_debug', 'search-field-link.php - No choices for field'); return; } $links_label = empty($search_field['label']) ? __('Show only:', 'gravityview') : $search_field['label']; /** * @filter `gravityview/extension/search/links_label` Change the label for the "Link" search bar input type * @since 1.17 Use search field label as default value, if set. Before that, it was hard-coded to "Show only:" * @param string $links_label Default: `Show only:` if search field label is not set. Otherwise, search field label. */ $links_label = apply_filters('gravityview/extension/search/links_label', $links_label); /** * @filter `gravityview/extension/search/links_sep` Change what separates search bar "Link" input type links * @param string $links_sep Default: ` | ` Used to connect multiple links */ $links_sep = apply_filters('gravityview/extension/search/links_sep', ' | '); ?>
/** * 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; }
// show/hide the search button if there are input type fields if (!$has_inputs && $search_field['input'] != 'link') { $has_inputs = true; } } /** * @action `gravityview_search_widget_fields_after` Inside the `<form>` tag of the GravityView search form, after inputs are rendered * @param GravityView_Widget_Search $this GravityView Widget instance */ do_action('gravityview_search_widget_fields_after', $this); if ($has_inputs) { ?> <div class="gv-search-box gv-search-box-submit"> <?php // Output the Clear button, if enabled GravityView_Widget_Search::the_clear_search_button(); ?> <input type="hidden" name="mode" value="<?php echo esc_attr($gravityview_view->search_mode); ?> " /> <input type="submit" class="button gv-search-button" id="gv_search_button_<?php echo $view_id; ?> " value="<?php esc_attr_e('Search', 'gravityview'); ?> " /> </div> <?php }