PATH:
home
/
hunkmedicalstaff
/
public_html
/
wp-content
/
plugins
/
gravityforms
/
includes
/
fields
<?php if ( ! class_exists( 'GFForms' ) ) { die(); } require_once( plugin_dir_path( __FILE__ ) . 'class-gf-field-multiple-choice.php' ); class GF_Field_Image_Choice extends GF_Field_Multiple_Choice { public $type = 'image_choice'; public $checkbox_choice; public function __construct( $data = array() ) { if ( ! has_action( 'gform_after_save_form', array( __class__, 'resize_images' ) ) ) { add_action( 'gform_after_save_form', array( __class__, 'resize_images' ), 10, 2 ); } if ( ! has_action( 'gform_forms_post_import', array( __class__, 'resize_images_after_import' ) ) ) { add_action( 'gform_forms_post_import', array( __class__, 'resize_images_after_import' ), 10, 2 ); } parent::__construct( $data ); } public function get_form_editor_field_title() { return esc_attr__( 'Image Choice', 'gravityforms' ); } /** * Returns the field's form editor description. * * @since 2.5 * * @return string */ public function get_form_editor_field_description() { return esc_attr__( 'Allow users to choose from a list of images.', 'gravityforms' ); } /** * Returns the field's form editor icon. * * This could be an icon url or a gform-icon class. * * @since 2.5 * * @return string */ public function get_form_editor_field_icon() { return 'gform-icon--image_choice'; } function get_form_editor_field_settings() { return array( 'conditional_logic_field_setting', 'prepopulate_field_setting', 'error_message_setting', 'label_setting', 'label_placement_setting', 'admin_label_setting', 'choices_setting', 'rules_setting', 'visibility_setting', 'description_setting', 'css_class_setting', 'enable_multiple_selections_setting', 'choice_min_max_setting', 'image_choice_ui_show_label_setting' ); } /* * Generate the needed image sizes for the image choice field. * * @since 2.9.3 * * @param array $form The form. * @param bool $is_new_form Is the form new. */ public static function resize_images( $form, $is_new_form ) { // Put our registered image sizes back temporarily. remove_filter( 'intermediate_image_sizes_advanced', array( 'GFForms', 'remove_image_sizes' ) ); $image_sizes = GFForms::get_image_sizes(); foreach ( $form['fields'] as $field ) { if ( $field->type == 'image_choice' ) { foreach ( $field->choices as $choice ) { if ( rgar( $choice, 'attachment_id' ) ) { // get the image to check if it has already been resized or not $image = wp_get_attachment_image_src( $choice['attachment_id'], 'gform-' . key( $image_sizes ) ); if ( is_array( $image ) && $image[3] === false ) { GFCommon::log_debug( __METHOD__ . '(): Resizing image attachment id ' . $choice['attachment_id'] . ' for the image choice field in form ' . $form['id'] ); $file_path = get_attached_file( $choice['attachment_id'] ); $attach_data = wp_generate_attachment_metadata( $choice['attachment_id'], $file_path ); wp_update_attachment_metadata( $choice['attachment_id'], $attach_data ); } } } } } // Take our registered image sizes back out add_filter( 'intermediate_image_sizes_advanced', array( 'GFForms', 'remove_image_sizes' ), 10, 2 ); } /** * Trigger the resizing of images after form import. * * @since 2.9.3 * * @param array $forms The forms being imported. */ public static function resize_images_after_import( $forms ) { if ( ! rgpost( 'gf_import_media' ) ) { return; } foreach ( $forms as $form ) { self::resize_images( $form, false ); } } /** * Get the choice labels visibility setting default for the image choice field. * * @since 2.9.0 * * @param object $field The field object. * * @return string */ public static function get_image_choice_label_visibility_setting_default( $form_id ) { /** * A filter that allows for the managing of the default image choice labels visibility setting. * Default is show. Options are 'show' and 'hide'. * * @since 2.9 * * @param string $label_visibility_default The default image choice labels visibility. * * @return string */ return gf_apply_filters( array( 'gform_image_choice_label_visibility_default', $form_id ), 'show' ); } /** * Get the choice labels visibility setting for the given image choice field. * * @since 2.9.0 * * @param object $field The field object. * * @return string */ public static function get_image_choice_label_visibility_setting( $field ) { return $field->imageChoiceLabelVisibility; } /** * Get the choice inputs visibility setting for the given image choice field. * * @since 2.9.0 * * @param object $field The field object. * * @return string */ public static function get_image_choice_input_visibility_setting( $field ) { /** * A filter that allows for the managing of image choice inputs visibility. * Default is show. Options are 'show' and 'hide'. * If image choice labels are hidden, the inputs will also be hidden. * * @since 2.9 * * @param string $input_visibility The image choice inputs visibility. * @param object $field The current field object. */ return gf_apply_filters( array( 'gform_image_choice_input_visibility', $field->formId ), 'show', $field ); } public function get_form_editor_inline_script_on_page_render() { // Set the field settings default values $js = sprintf( ' function SetDefaultValues_%1$s( field ) { if ( ! field.imageChoiceLabelVisibility ) { field.imageChoiceLabelVisibility = "%2$s"; } };', $this->type, self::get_image_choice_label_visibility_setting_default( rgget( 'id' ) ) ) . PHP_EOL; // Initialize the field settings values $js .= 'jQuery( document ).on( "gform_load_field_settings", function( event, field, form ) { if ( field.type !== "image_choice" ) { return; } document.getElementById("image_choice_ui_show_label").value = field.imageChoiceLabelVisibility; if ( field.type === "image_choice" && field.imageChoiceLabelVisibility === "hide" ) { SetFieldAccessibilityWarning( "image_choice_ui_show_label_setting", "above" ); } } );' . PHP_EOL; // Update the field settings values on change of the setting $js .= 'function SetFieldImageChoiceLabelVisibility( visibility ) { SetFieldProperty( "imageChoiceLabelVisibility", visibility ); if ( visibility === "hide" ) { SetFieldAccessibilityWarning( "image_choice_ui_show_label_setting", "above" ); } else { ResetFieldAccessibilityWarning( "image_choice_ui_show_label_setting" ); } RefreshSelectedFieldPreview(); }' . PHP_EOL; return $js; } /** * Returns the image URL for a choice to display in a merge tage with the "img_url" modifier. * * @since 2.9.0 * * @param string $value The value of the merge tag. * @param string $input_id The ID of the input. * @param array $entry The entry currently being processed. * @param array $form The form currently being processed. * @param object $field The field currently being processed. * * @return string|array */ public function get_merge_tag_img_url( $value, $input_id, $entry, $form, $field ) { if ( ! is_array( $field->choices ) ) { return $value; } foreach ( $field->choices as $choice ) { if ( is_array( $value ) && GFFormsModel::choice_value_match( $field, $choice, $value[ $input_id ] ) ) { return rgar( $choice, 'file_url' ) ? $choice['file_url'] : ''; } else if ( ! is_array( $value ) && GFFormsModel::choice_value_match( $field, $choice, $value ) ) { return rgar( $choice, 'file_url' ) ? $choice['file_url'] : ''; } } return ''; } } GF_Fields::register( new GF_Field_Image_Choice() );
[-] index.php
[edit]
[-] class-gf-field-checkbox.php
[edit]
[-] class-gf-field-number.php
[edit]
[-] class-gf-field-singleproduct.php
[edit]
[-] class-gf-field-post-content.php
[edit]
[-] class-gf-field-shipping.php
[edit]
[-] class-gf-field-date.php
[edit]
[-] class-gf-field-submit.php
[edit]
[-] class-gf-field-text.php
[edit]
[-] class-gf-field-singleshipping.php
[edit]
[-] class-gf-field-website.php
[edit]
[-] class-gf-field-fileupload.php
[edit]
[-] class-gf-field-post-custom-field.php
[edit]
[-] class-gf-fields.php
[edit]
[-] class-gf-field-page.php
[edit]
[-] class-gf-field-post-title.php
[edit]
[-] class-gf-field-creditcard.php
[edit]
[-] class-gf-field-quantity.php
[edit]
[-] class-gf-field-price.php
[edit]
[-] class-gf-field-consent.php
[edit]
[-] class-gf-field-post-image.php
[edit]
[-] class-gf-field-post-excerpt.php
[edit]
[-] class-gf-field-repeater.php
[edit]
[-] class-gf-field-image-choice.php
[edit]
[-] class-gf-field-address.php
[edit]
[-] class-gf-field-post-category.php
[edit]
[-] class-gf-field-name.php
[edit]
[-] class-gf-field-donation.php
[edit]
[-] class-gf-field-honeypot.php
[edit]
[-] class-gf-field-product.php
[edit]
[-] class-gf-field-email.php
[edit]
[-] class-gf-field-html.php
[edit]
[+]
..
[-] class-gf-field-calculation.php
[edit]
[-] class-gf-field-select.php
[edit]
[-] class-gf-field-multiple-choice.php
[edit]
[+]
field-decorator-choice
[-] class-gf-field-post-tags.php
[edit]
[-] class-gf-field-radio.php
[edit]
[-] class-gf-field-hiddenproduct.php
[edit]
[-] class-gf-field-hidden.php
[edit]
[-] class-gf-field.php
[edit]
[-] class-gf-field-section.php
[edit]
[-] class-gf-field-multiselect.php
[edit]
[-] class-gf-field-total.php
[edit]
[-] class-gf-field-captcha.php
[edit]
[-] class-gf-field-phone.php
[edit]
[-] class-gf-field-time.php
[edit]
[-] class-gf-field-password.php
[edit]
[-] class-gf-field-textarea.php
[edit]
[-] class-gf-field-option.php
[edit]
[-] class-gf-field-list.php
[edit]