Server IP : 213.176.29.180 / Your IP : 3.133.110.37 Web Server : Apache System : Linux 213.176.29.180.hostiran.name 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64 User : webtaragh ( 1001) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/webtaragh/public_html/wordpress/../wp-content/plugins/gravityview/future/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
<?php namespace GV\Mocks; /** * This file contains mock code for deprecated functions. */ /** * @see \GravityView_View_Data::add_view * @internal * @since 2.0 * * @return array|false The old array data, or false on error. */ function GravityView_View_Data_add_view( $view_id, $atts, $_this ) { /** Handle array of IDs. */ if ( is_array( $view_id ) ) { foreach ( $view_id as $id ) { call_user_func( __FUNCTION__, $id, $atts, $_this ); } if ( ! $_this->views->count() ) { return array(); } return array_combine( array_map( function( $view ) { return $view->ID; }, $_this->views->all() ), array_map( function( $view ) { return $view->as_data(); }, $_this->views->all() ) ); } /** View has been set already. */ if ( $view = $_this->views->get( $view_id ) ) { do_action( 'gravityview_log_debug', sprintf( 'GravityView_View_Data[add_view] Returning; View #%s already exists.', $view_id ) ); return $view->as_data(); } $view = \GV\View::by_id( $view_id ); if ( ! $view ) { do_action( 'gravityview_log_debug', sprintf( 'GravityView_View_Data[add_view] Returning; View #%s does not exist.', $view_id ) ); return false; } /** Doesn't have a connected form. */ if ( ! $view->form ) { do_action( 'gravityview_log_debug', sprintf( 'GravityView_View_Data[add_view] Returning; Post ID #%s does not have a connected form.', $view_id ) ); return false; } /** Update the settings */ if ( is_array( $atts ) ) { $view->settings->update( $atts ); } $_this->views->add( $view ); return $view->as_data(); } /** * @see \GravityView_frontend::get_view_entries * @internal * @since 2.0 * * @return array The old associative array data as returned by * \GravityView_frontend::get_view_entries(), the paging parameters * and a total count of all entries. */ function GravityView_frontend_get_view_entries( $args, $form_id, $parameters, $count ) { $form = \GV\GF_Form::by_id( $form_id ); /** * Kick off all advanced filters. * * Parameters and criteria are pretty much the same thing here, just * different naming, where `$parameters` are the initial parameters * calculated for hte view, and `$criteria` are the filtered ones * retrieved via \GVCommon::calculate_get_entries_criteria() */ $criteria = \GVCommon::calculate_get_entries_criteria( $parameters, $form->ID ); do_action( 'gravityview_log_debug', '[gravityview_get_entries] Final Parameters', $criteria ); /** ...and all the (now deprecated) filters that usually follow `gravityview_get_entries` */ /** * @deprecated * Do not use this filter anymore. */ $entries = apply_filters_ref_array( 'gravityview_before_get_entries', array( null, $criteria, $parameters, &$count ) ); if ( ! is_null( $entries ) ) { /** * We've been given an entries result that we can return, * just set the paging and we're good to go. */ $paging = \GV\Utils::get( $parameters, 'paging' ); } else { $entries = new \GV\Entry_Collection(); if ( $view = \GV\View::by_id( \GV\Utils::get( $args, 'id' ) ) ) { $view->settings->update( $args ); $entries = $view->get_entries( gravityview()->request ); } $page = \GV\Utils::get( $parameters['paging'], 'current_page' ) ? : ( ( ( $parameters['paging']['offset'] - $view->settings->get( 'offset' ) ) / $parameters['paging']['page_size'] ) + 1 ); /** Set paging, count and unwrap the entries. */ $paging = array( 'offset' => ( $page - 1 ) * $view->settings->get( 'page_size' ), 'page_size' => $view->settings->get( 'page_size' ), ); /** * GF_Query does not subtract the offset, we have to subtract it ourselves. */ $count = $entries->total() - ( gravityview()->plugin->supports( \GV\Plugin::FEATURE_GFQUERY ) ? $view->settings->get( 'offset' ) : 0 ); $entries = array_map( function( $e ) { return $e->as_entry(); }, $entries->all() ); } /** Just one more filter, for compatibility's sake! */ /** * @deprecated * Do not use this filter anymore. */ $entries = apply_filters_ref_array( 'gravityview_entries', array( $entries, $criteria, $parameters, &$count ) ); return array( $entries, $paging, $count ); } /** * The old function does a bit too much, not only does it retrieve * the value for a field, but it also renders some output. We are * stubbing the plain value part of it, the rendering will follow once * our field renderers are ready. * * @see \GravityView_API::field_value * @deprecated Use \GV\Field_Template::render() * @internal * @since 2.0 * * @return null|string The value of a field in an entry. */ function GravityView_API_field_value( $entry, $field_settings, $format ) { if ( empty( $entry['form_id'] ) || empty( $field_settings['id'] ) ) { gravityview()->log->error( 'No entry or field_settings[id] supplied', array( 'data' => array( func_get_args() ) ) ); return null; } if ( ! empty( $entry['_multi'] ) && ! empty( $field_settings['form_id'] ) && ! empty( $entry['_multi'][ $field_settings['form_id'] ] ) ) { $multientry = \GV\Multi_Entry::from_entries( array_map( '\GV\GF_Entry::from_entry', $entry['_multi'] ) ); $entry = $entry['_multi'][ $field_settings['form_id'] ]; } if ( empty( $entry['id'] ) || ! $entry = \GV\GF_Entry::by_id( $entry['id'] ) ) { gravityview()->log->error( 'Invalid \GV\GF_Entry supplied', array( 'data' => $entry ) ); return null; } /** * Determine the source backend. * * Fields with a numeric ID are Gravity Forms ones. */ $source = is_numeric( $field_settings['id'] ) ? \GV\Source::BACKEND_GRAVITYFORMS : \GV\Source::BACKEND_INTERNAL;; /** Initialize the future field. */ switch ( $source ): /** The Gravity Forms backend. */ case \GV\Source::BACKEND_GRAVITYFORMS: if ( ! $form = \GV\GF_Form::by_id( $entry['form_id'] ) ) { gravityview()->log->error( 'No form Gravity Form found for entry', array( 'data' => $entry ) ); return null; } if ( ! $field = $form::get_field( $form, $field_settings['id'] ) ) { return null; } break; /** Our internal backend. */ case \GV\Source::BACKEND_INTERNAL: if ( ! $field = \GV\Internal_Source::get_field( $field_settings['id'] ) ) { return null; } break; /** An unidentified backend. */ default: gravityview()->log->error( 'Could not determine source for entry', array( 'data' => array( func_get_args() ) ) ); return null; endswitch; /** Add the field settings. */ $field->update_configuration( $field_settings ); $renderer = new \GV\Field_Renderer(); $views = gravityview()->views->get(); if ( $views instanceof \GV\View_Collection ) { $view = $views->first(); } else if ( $views instanceof \GV\View ) { $view = $views; } else { return null; } return $renderer->render( $field, $view, $source == \GV\Source::BACKEND_GRAVITYFORMS ? $form : null, isset( $multientry ) ? $multientry : $entry, gravityview()->request ); } /** * Mock out the \GravityView_API::field_label method * * Uses the new \GV\Field::get_label methods * * @see \GravityView_API::field_label * @internal * @since 2.0 * * @return string The label of a field in an entry. */ function GravityView_API_field_label( $form, $field_settings, $entry, $force_show_label = false ) { /** A bail condition. */ $bail = function( $label, $field_settings, $entry, $force_show_label, $form ) { if ( ! empty( $field_settings['show_label'] ) || $force_show_label ) { $label = isset( $field_settings['label'] ) ? $field_settings['label'] : ''; // Use Gravity Forms label by default, but if a custom label is defined in GV, use it. if ( ! empty( $field_settings['custom_label'] ) ) { $label = \GravityView_API::replace_variables( $field_settings['custom_label'], $form, $entry ); } /** * @filter `gravityview_render_after_label` Append content to a field label * @param string $appended_content Content you can add after a label. Empty by default. * @param array $field GravityView field array */ $label .= apply_filters( 'gravityview_render_after_label', '', $field_settings ); } /** * @filter `gravityview/template/field_label` Modify field label output * @since 1.7 * @param string $label Field label HTML * @param array $field GravityView field array * @param array $form Gravity Forms form array * @param array $entry Gravity Forms entry array */ $label = apply_filters( 'gravityview/template/field_label', $label, $field_settings, $form, $entry ); return $label; }; $label = ''; if ( ! empty( $entry['_multi'] ) && ! empty( $field_settings['form_id'] ) && ! empty( $entry['_multi'][ $field_settings['form_id'] ] ) ) { $entry = $entry['_multi'][ $field_settings['form_id'] ]; if ( $_form = \GV\GF_Form::by_id( $field_settings['form_id'] ) ) { $form = $_form->form; } } if ( empty( $entry['form_id'] ) || empty( $field_settings['id'] ) ) { gravityview()->log->error( 'No entry or field_settings[id] supplied', array( 'data' => array( func_get_args() ) ) ); return $bail( $label, $field_settings, $entry, $force_show_label, $form ); } if ( empty( $entry['id'] ) || ! $gv_entry = \GV\GF_Entry::by_id( $entry['id'] ) ) { gravityview()->log->error( 'Invalid \GV\GF_Entry supplied', array( 'data' => $entry ) ); return $bail( $label, $field_settings, $entry, $force_show_label, $form ); } $entry = $gv_entry; /** * Determine the source backend. * * Fields with a numeric ID are Gravity Forms ones. */ $source = is_numeric( $field_settings['id'] ) ? \GV\Source::BACKEND_GRAVITYFORMS : \GV\Source::BACKEND_INTERNAL; /** Initialize the future field. */ switch ( $source ): /** The Gravity Forms backend. */ case \GV\Source::BACKEND_GRAVITYFORMS: if ( ! $gf_form = \GV\GF_Form::by_id( $entry['form_id'] ) ) { gravityview()->log->error( 'No form Gravity Form found for entry', array( 'data' => $entry ) ); return $bail( $label, $field_settings, $entry->as_entry(), $force_show_label, $form ); } if ( ! $field = $gf_form::get_field( $gf_form, $field_settings['id'] ) ) { gravityview()->log->error( 'No field found for specified form and field ID #{field_id}', array( 'field_id' => $field_settings['id'], 'data' => $form ) ); return $bail( $label, $field_settings, $entry->as_entry(), $force_show_label, $gf_form->form ); } if ( empty( $field_settings['show_label'] ) ) { /** The label never wins... */ $field_settings['label'] = ''; } break; /** Our internal backend. */ case \GV\Source::BACKEND_INTERNAL: if ( ! $field = \GV\Internal_Source::get_field( $field_settings['id'] ) ) { return $bail( $label, $field_settings, $entry->as_entry(), $force_show_label, $form ); } break; /** An unidentified backend. */ default: gravityview()->log->error( 'Could not determine source for entry. Using empty field.', array( 'data' => array( func_get_args() ) ) ); $field = new \GV\Field(); break; endswitch; if( $force_show_label ) { $field_settings['show_label'] = '1'; } /** Add the field settings. */ $field->update_configuration( $field_settings ); if ( ! empty( $field->show_label ) ) { $label = $field->get_label( null, isset( $gf_form ) ? $gf_form : null, $entry ); /** * @filter `gravityview_render_after_label` Append content to a field label * @param string $appended_content Content you can add after a label. Empty by default. * @param array $field GravityView field array */ $label .= apply_filters( 'gravityview_render_after_label', '', $field->as_configuration() ); } /** * @filter `gravityview/template/field_label` Modify field label output * @since 1.7 * @param string $label Field label HTML * @param array $field GravityView field array * @param array $form Gravity Forms form array * @param array $entry Gravity Forms entry array */ return apply_filters( 'gravityview/template/field_label', $label, $field->as_configuration(), isset( $gf_form ) ? $gf_form->form : $form, $entry->as_entry() ); } /** * A manager of legacy global states and contexts. * * Handles mocking of: * - \GravityView_View_Data * - \GravityView_View * - \GravityView_frontend * * Allows us to set a specific state globally using the old * containers, then reset it. Useful for legacy code that keeps * on depending on these variables. * * Some examples right now include template files, utility functions, * some actions and filters that expect the old contexts to be set. */ final class Legacy_Context { private static $stack = array(); /** * Set the state depending on the provided configuration. * * Saves current global state and context. * * Configuration keys: * * - \GV\View view: sets \GravityView_View::atts, \GravityView_View::view_id, * \GravityView_View::back_link_label * \GravityView_frontend::context_view_id, * \GravityView_View::form, \GravityView_View::form_id * - \GV\Field field: sets \GravityView_View::_current_field, \GravityView_View::field_data, * - \GV\Entry entry: sets \GravityView_View::_current_entry, \GravityView_frontend::single_entry, * \GravityView_frontend::entry * - \WP_Post post: sets \GravityView_View::post_id, \GravityView_frontend::post_id, * \GravityView_frontend::is_gravityview_post_type, * \GravityView_frontend::post_has_shortcode * - array paging: sets \GravityView_View::paging * - array sorting: sets \GravityView_View::sorting * - array template: sets \GravityView_View::template_part_slug, \GravityView_View::template_part_name * * - boolean in_the_loop sets $wp_actions['loop_start'] and $wp_query::in_the_loop * * also: * * - \GV\Request request: sets \GravityView_frontend::is_search, \GravityView_frontend::single_entry, * \GravityView_View::context, \GravityView_frontend::entry * * - \GV\View_Collection views: sets \GravityView_View_Data::views * - \GV\Field_Collection fields: sets \GravityView_View::fields * - \GV\Entry_Collection entries: sets \GravityView_View::entries, \GravityView_View::total_entries * * and automagically: * * - \GravityView_View data: sets \GravityView_frontend::gv_output_data * * @param array $configuration The configuration. * * @return void */ public static function push( $configuration ) { array_push( self::$stack, self::freeze() ); self::load( $configuration ); } /** * Restores last saved state and context. * * @return void */ public static function pop() { self::thaw( array_pop( self::$stack ) ); } /** * Serializes the current configuration as needed. * * @return array The configuration. */ public static function freeze() { global $wp_actions, $wp_query; return array( '\GravityView_View::atts' => \GravityView_View::getInstance()->getAtts(), '\GravityView_View::view_id' => \GravityView_View::getInstance()->getViewId(), '\GravityView_View::back_link_label' => \GravityView_View::getInstance()->getBackLinkLabel( false ), '\GravityView_View_Data::views' => \GravityView_View_Data::getInstance()->views, '\GravityView_View::entries' => \GravityView_View::getInstance()->getEntries(), '\GravityView_View::form' => \GravityView_View::getInstance()->getForm(), '\GravityView_View::form_id' => \GravityView_View::getInstance()->getFormId(), '\GravityView_View::context' => \GravityView_View::getInstance()->getContext(), '\GravityView_View::total_entries' => \GravityView_View::getInstance()->getTotalEntries(), '\GravityView_View::post_id' => \GravityView_View::getInstance()->getPostId(), '\GravityView_View::hide_until_searched' => \GravityView_View::getInstance()->isHideUntilSearched(), '\GravityView_frontend::post_id' => \GravityView_frontend::getInstance()->getPostId(), '\GravityView_frontend::context_view_id' => \GravityView_frontend::getInstance()->get_context_view_id(), '\GravityView_frontend::is_gravityview_post_type' => \GravityView_frontend::getInstance()->isGravityviewPostType(), '\GravityView_frontend::post_has_shortcode' => \GravityView_frontend::getInstance()->isPostHasShortcode(), '\GravityView_frontend::gv_output_data' => \GravityView_frontend::getInstance()->getGvOutputData(), '\GravityView_View::paging' => \GravityView_View::getInstance()->getPaging(), '\GravityView_View::sorting' => \GravityView_View::getInstance()->getSorting(), '\GravityView_frontend::is_search' => \GravityView_frontend::getInstance()->isSearch(), '\GravityView_frontend::single_entry' => \GravityView_frontend::getInstance()->getSingleEntry(), '\GravityView_frontend::entry' => \GravityView_frontend::getInstance()->getEntry(), '\GravityView_View::_current_entry' => \GravityView_View::getInstance()->getCurrentEntry(), '\GravityView_View::fields' => \GravityView_View::getInstance()->getFields(), '\GravityView_View::_current_field' => \GravityView_View::getInstance()->getCurrentField(), 'wp_actions[loop_start]' => empty( $wp_actions['loop_start'] ) ? 0 : $wp_actions['loop_start'], 'wp_query::in_the_loop' => $wp_query->in_the_loop, ); } /** * Deserializes a saved configuration. Modifies the global state. * * @param array $data Saved configuration from self::freeze() */ public static function thaw( $data ) { foreach ( (array)$data as $key => $value ) { switch ( $key ): case '\GravityView_View::atts': \GravityView_View::getInstance()->setAtts( $value ); break; case '\GravityView_View::view_id': \GravityView_View::getInstance()->setViewId( $value ); break; case '\GravityView_View::back_link_label': \GravityView_View::getInstance()->setBackLinkLabel( $value ); break; case '\GravityView_View_Data::views': \GravityView_View_Data::getInstance()->views = $value; break; case '\GravityView_View::entries': \GravityView_View::getInstance()->setEntries( $value ); break; case '\GravityView_View::form': \GravityView_View::getInstance()->setForm( $value ); break; case '\GravityView_View::form_id': \GravityView_View::getInstance()->setFormId( $value ); break; case '\GravityView_View::context': \GravityView_View::getInstance()->setContext( $value ); break; case '\GravityView_View::total_entries': \GravityView_View::getInstance()->setTotalEntries( $value ); break; case '\GravityView_View::post_id': \GravityView_View::getInstance()->setPostId( $value ); break; case '\GravityView_View::is_hide_until_searched': \GravityView_View::getInstance()->setHideUntilSearched( $value ); break; case '\GravityView_frontend::post_id': \GravityView_frontend::getInstance()->setPostId( $value ); break; case '\GravityView_frontend::context_view_id': $frontend = \GravityView_frontend::getInstance(); $frontend->context_view_id = $value; break; case '\GravityView_frontend::is_gravityview_post_type': \GravityView_frontend::getInstance()->setIsGravityviewPostType( $value ); break; case '\GravityView_frontend::post_has_shortcode': \GravityView_frontend::getInstance()->setPostHasShortcode( $value ); break; case '\GravityView_frontend::gv_output_data': \GravityView_frontend::getInstance()->setGvOutputData( $value ); break; case '\GravityView_View::paging': \GravityView_View::getInstance()->setPaging( $value ); break; case '\GravityView_View::sorting': \GravityView_View::getInstance()->setSorting( $value ); break; case '\GravityView_frontend::is_search': \GravityView_frontend::getInstance()->setIsSearch( $value ); break; case '\GravityView_frontend::single_entry': \GravityView_frontend::getInstance()->setSingleEntry( $value ); break; case '\GravityView_frontend::entry': \GravityView_frontend::getInstance()->setEntry( $value ); break; case '\GravityView_View::_current_entry': \GravityView_View::getInstance()->setCurrentEntry( $value ); break; case '\GravityView_View::fields': \GravityView_View::getInstance()->setFields( $value ); break; case '\GravityView_View::_current_field': \GravityView_View::getInstance()->setCurrentField( $value ); break; case 'wp_actions[loop_start]': global $wp_actions; $wp_actions['loop_start'] = $value; break; case 'wp_query::in_the_loop': global $wp_query; $wp_query->in_the_loop = $value; break; endswitch; } } /** * Hydrates the legacy context globals as needed. * * @see Legacy_Context::push() for format. * * @return void */ public static function load( $configuration ) { foreach ( (array)$configuration as $key => $value ) { switch ( $key ): case 'view': $views = new \GV\View_Collection(); $views->add( $value ); self::thaw( array( '\GravityView_View::atts' => $value->settings->as_atts(), '\GravityView_View::view_id' => $value->ID, '\GravityView_View::back_link_label' => $value->settings->get( 'back_link_label', null ), '\GravityView_View::form' => $value->form ? $value->form->form : null, '\GravityView_View::form_id' => $value->form ? $value->form->ID : null, '\GravityView_View::is_hide_until_searched' => $value->settings->get( 'hide_until_searched', null ) && ! gravityview()->request->is_search(), '\GravityView_View_Data::views' => $views, '\GravityView_frontend::gv_output_data' => \GravityView_View_Data::getInstance(), '\GravityView_frontend::context_view_id' => $value->ID, ) ); break; case 'post': $has_shortcode = false; foreach ( \GV\Shortcode::parse( $value->post_content ) as $shortcode ) { if ( $shortcode->name == 'gravityview' ) { $has_shortcode = true; break; } } self::thaw( array( '\GravityView_View::post_id' => $value->ID, '\GravityView_frontend::post_id' => $value->ID, '\GravityView_frontend::is_gravityview_post_type' => $value->post_type == 'gravityview', '\GravityView_frontend::post_has_shortcode' => $has_shortcode, ) ); break; case 'views': self::thaw( array( '\GravityView_View_Data::views' => $value, '\GravityView_frontend::gv_output_data' => \GravityView_View_Data::getInstance(), ) ); break; case 'entries': self::thaw( array( '\GravityView_View::entries' => array_map( function( $e ) { return $e->as_entry(); }, $value->all() ), '\GravityView_View::total_entries' => $value->total(), ) ); break; case 'entry': self::thaw( array( '\GravityView_frontend::single_entry' => $value->ID, '\GravityView_frontend::entry' => $value->as_entry(), '\GravityView_View::_current_entry' => $value->as_entry(), ) ); break; case 'fields': self::thaw( array( '\GravityView_View::fields' => $value->as_configuration(), ) ); break; case 'field': self::thaw( array( '\GravityView_View::_current_field' => array( 'field_id' => $value->ID, 'field' => $value->field, 'field_settings' => $value->as_configuration(), 'form' => \GravityView_View::getInstance()->getForm(), 'field_type' => $value->type, /** {@since 1.6} */ 'entry' => \GravityView_View::getInstance()->getCurrentEntry(), 'UID' => $value->UID, // 'field_path' => $field_path, /** {@since 1.16} */ // 'value' => $value, // 'display_value' => $display_value, // 'format' => $format, ), ) ); break; case 'request': self::thaw( array( '\GravityView_View::context' => ( $value->is_entry() ? 'single' : ( $value->is_edit_entry() ? 'edit' : ( $value->is_view( false ) ? 'directory': null ) ) ), '\GravityView_frontend::is_search' => $value->is_search(), ) ); if ( ! $value->is_entry() ) { self::thaw( array( '\GravityView_frontend::single_entry' => 0, '\GravityView_frontend::entry' => 0 ) ); } break; case 'paging': self::thaw( array( '\GravityView_View::paging' => $value, ) ); break; case 'sorting': self::thaw( array( '\GravityView_View::sorting' => $value, ) ); break; case 'in_the_loop': self::thaw( array( 'wp_query::in_the_loop' => $value, 'wp_actions[loop_start]' => $value ? 1 : 0, ) ); break; endswitch; } global $gravityview_view; $gravityview_view = \GravityView_View::getInstance(); } /** * Resets the global state completely. * * Use with utmost care, as filter and action callbacks * may be added again. * * Does not touch the context stack. * * @return void */ public static function reset() { \GravityView_View::$instance = null; \GravityView_frontend::$instance = null; \GravityView_View_Data::$instance = null; global $wp_query, $wp_actions; $wp_query->in_the_loop = false; $wp_actions['loop_start'] = 0; } } /** Add some global fix for field capability discrepancies. */ add_filter( 'gravityview/configuration/fields', function( $fields ) { if ( empty( $fields ) ) { return $fields; } /** * Each view field is saved in a weird capability state by default. * * With loggedin set to false, but a capability of 'read' it introduces * some logical issues and is not robust. Fix this behavior throughout * core by making sure capability is '' if log in is not required. * * Perhaps in the UI a fix would be to unite the two fields (as our new * \GV\Field class already does) into one dropdown: * * Anyone, Logged In Only, ... etc. etc. * * The two "settings" should be as tightly coupled as possible to avoid * split logic scenarios. Uniting them into one field is the way to go. */ foreach ( $fields as $position => &$_fields ) { if ( empty( $_fields ) || ! is_array( $_fields ) ) { continue; } foreach ( $_fields as $uid => &$_field ) { if ( ! isset( $_field['only_loggedin'] ) ) { continue; } /** If we do not require login, we don't require a cap. */ $_field['only_loggedin'] != '1' && ( $_field['only_loggedin_cap'] = '' ); } } return $fields; } ); /** Add a future fix to make sure field configurations include the form ID. */ add_filter( 'gravityview/view/configuration/fields', function( $fields, $view ) { if ( ! $view || empty( $fields ) ) { return $fields; } if ( ! $view->form || ! $view->form->ID ) { return $fields; } /** * In order to instantiate the correct \GV\Field implementation * we need to provide a form_id inside the configuration. * * @todo Make sure this actually happens in the admin side * when saving the views. */ foreach ( $fields as $position => &$_fields ) { if ( empty( $_fields ) || ! is_array( $_fields ) ) { continue; } foreach ( $_fields as $uid => &$_field ) { if ( ! empty( $_field['id'] ) && is_numeric( $_field['id'] ) && empty( $_field['form_id'] ) ) { $_field['form_id'] = $view->form->ID; } } } return $fields; }, 10, 2 ); /** Make sure the non-configured notice is not output twice. */ add_action( 'gravityview/template/after', function( $gravityview = null ) { if ( class_exists( '\GravityView_frontend' ) ) { global $wp_filter; if ( empty( $wp_filter['gravityview_after'] ) ) { return; } foreach ( $wp_filter['gravityview_after']->callbacks[10] as $function_key => $callback ) { if ( strpos( $function_key, 'context_not_configured_warning' ) ) { unset( $wp_filter['gravityview_after']->callbacks[10][ $function_key ] ); } } } } ); add_filter( 'gravityview/query/is_null_condition', function() { if ( ! class_exists( $class = '\GV\Mocks\GF_Query_Condition_IS_NULL' ) ) { require_once gravityview()->plugin->dir( 'future/_mocks.isnull.php' ); } return $class; } );