/**
  * Echo the widget content.
  *
  * @since 2.0.0
  *
  *
  * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget.
  * @param array $instance The settings for the particular instance of the widget
  */
 function widget($args, $instance)
 {
     global $wp_query, $_genesis_displayed_ids;
     // Merge with defaults
     $instance = wp_parse_args((array) $instance, $this->defaults);
     $term_id = $instance['term'];
     $term_meta = get_option("displayfeaturedimagegenesis_{$term_id}");
     $term = get_term_by('id', $term_id, $instance['taxonomy']);
     if (!$term) {
         return;
     }
     $title = $term->meta['headline'];
     if (!$title) {
         $title = $term->name;
     }
     $permalink = get_term_link($term);
     $args['before_widget'] = str_replace('class="widget ', 'class="widget ' . $term->slug . ' ', $args['before_widget']);
     echo $args['before_widget'];
     if (!empty($instance['title'])) {
         echo $args['before_title'] . apply_filters('widget_title', $instance['title'], $instance, $this->id_base) . $args['after_title'];
     }
     if ($term_meta) {
         $image_id = displayfeaturedimagegenesis_check_image_id($term_meta['term_image']);
         $image_src = wp_get_attachment_image_src($image_id, $instance['image_size']);
         if ($image_src) {
             $image = '<img src="' . esc_url($image_src[0]) . '" alt="' . esc_html($title) . '" />';
         }
         if ($instance['show_image'] && $image) {
             $role = empty($instance['show_title']) ? '' : 'aria-hidden="true"';
             printf('<a href="%s" title="%s" class="%s" %s>%s</a>', esc_url($permalink), esc_html($title), esc_attr($instance['image_alignment']), esc_attr($role), wp_kses_post($image));
         }
     }
     if ($instance['show_title']) {
         if (!empty($instance['show_title'])) {
             $title_output = sprintf('<h2><a href="%s">%s</a></h2>', esc_url($permalink), esc_html($title));
             if (genesis_html5()) {
                 $title_output = sprintf('<h2 class="archive-title"><a href="%s">%s</a></h2>', esc_url($permalink), esc_html($title));
             }
             echo wp_kses_post($title_output);
         }
     }
     if ($instance['show_content']) {
         echo genesis_html5() ? '<div class="term-description">' : '';
         $intro_text = apply_filters('display_featured_image_genesis_term_description', $term->meta['intro_text']);
         if (!$intro_text) {
             $intro_text = $term->description;
         }
         echo wp_kses_post(wpautop($intro_text));
         echo genesis_html5() ? '</div>' : '';
     }
     echo $args['after_widget'];
 }
 /**
  * manage new taxonomy column
  * @param  blank $value   blank (because WP)
  * @param  column id $column  column id is featured_image
  * @param  term id $term_id term_id for taxonomy
  * @return featured image          display featured image, if it exists, for each term in a public taxonomy
  *
  * @since 2.0.0
  */
 public function manage_taxonomy_column($value, $column, $term_id)
 {
     if ('featured_image' !== $column) {
         return;
     }
     $term_meta = get_option("displayfeaturedimagegenesis_{$term_id}");
     if (empty($term_meta['term_image'])) {
         return;
     }
     $taxonomy = filter_input(INPUT_POST, 'taxonomy', FILTER_SANITIZE_STRING);
     $taxonomy = !is_null($taxonomy) ? $taxonomy : get_current_screen()->taxonomy;
     $image_id = displayfeaturedimagegenesis_check_image_id($term_meta['term_image']);
     $args = array('image_id' => $image_id, 'context' => 'term', 'alt' => get_term($term_id, $taxonomy)->name);
     echo wp_kses_post($this->admin_featured_image($args));
 }
/**
 * Get custom post type featured image ID.
 * @return ID Gets the ID of the image assigned as the custom post type featured image.
 *
 * @since  2.1.0
 */
function display_featured_image_genesis_get_cpt_image_id($image_id = '')
{
    $post_type = '';
    $displaysetting = get_option('displayfeaturedimagegenesis');
    $object = get_queried_object();
    if (!$object || is_admin()) {
        return;
    }
    if ($object->name) {
        // results in post type on cpt archive
        $post_type = $object->name;
    } elseif ($object->taxonomy) {
        // on a tax/term/category
        $tax_object = get_taxonomy($object->taxonomy);
        $post_type = $tax_object->object_type[0];
    } elseif ($object->post_type) {
        // on singular
        $post_type = $object->post_type;
    }
    if (!empty($displaysetting['post_type'][$post_type])) {
        $image_id = displayfeaturedimagegenesis_check_image_id($displaysetting['post_type'][$post_type]);
    }
    return (int) $image_id;
}
 /**
  * retrieve image ID for output
  * @param string $image_id variable, ID of featured image
  *
  * @since 2.2.1
  */
 public static function set_image_id($image_id = '')
 {
     $frontpage = get_option('show_on_front');
     // either 'posts' or 'page'
     $postspage = get_option('page_for_posts');
     $displaysetting = get_option('displayfeaturedimagegenesis');
     $postspage_image = get_post_thumbnail_id($postspage);
     $fallback = $displaysetting['default'];
     $medium = (int) get_option('medium_size_w');
     $fallback_id = displayfeaturedimagegenesis_check_image_id($fallback);
     /**
      * create a filter to use the fallback image
      * @var filter
      * @since  2.0.0 (deprecated old use_fallback_image function from 1.2.2)
      */
     $use_fallback = apply_filters('display_featured_image_genesis_use_default', array());
     // set here with fallback preemptively, if it exists
     if (!empty($fallback)) {
         $image_id = $fallback_id;
         if (in_array(get_post_type(), $use_fallback)) {
             return (int) $image_id;
         }
     }
     // outlier: if it's a home page with a static front page, and there is a featured image set on the home page
     // also provisionally sets featured image for posts, similar to CPT archives
     if (is_home() && 'page' === $frontpage && !empty($postspage_image) || 'post' === get_post_type()) {
         $image_id = $postspage_image ? $postspage_image : $image_id;
     }
     $object = get_queried_object();
     // singular or archive CPT
     if ($object && is_main_query() && !is_admin()) {
         $post_type = '';
         if ($object->name) {
             // results in post type on cpt archive
             $post_type = $object->name;
         } elseif ($object->taxonomy) {
             // on a tax/term/category
             $tax_object = get_taxonomy($object->taxonomy);
             $post_type = $tax_object->object_type[0];
         } elseif ($object->post_type) {
             // on singular
             $post_type = $object->post_type;
         }
         if (!empty($displaysetting['post_type'][$post_type])) {
             $image_id = displayfeaturedimagegenesis_check_image_id($displaysetting['post_type'][$post_type]);
             /**
              * use the custom post type featured image
              *
              * @since 2.2.1
              */
             $use_cpt = apply_filters('displayfeaturedimagegenesis_use_post_type_image', array());
             if (in_array(get_post_type(), $use_cpt)) {
                 return (int) $image_id;
             }
         }
     }
     if (is_author()) {
         $image_id = get_the_author_meta('displayfeaturedimagegenesis', (int) get_query_var('author'));
     }
     // taxonomy
     if (is_category() || is_tag() || is_tax()) {
         $t_id = $object->term_id;
         $term_meta = get_option("displayfeaturedimagegenesis_{$t_id}");
         // if there is a term image
         if (!empty($term_meta['term_image'])) {
             $image_id = displayfeaturedimagegenesis_check_image_id($term_meta['term_image']);
         }
     }
     // any singular post/page/CPT
     if (is_singular()) {
         $term_image = display_featured_image_genesis_get_term_image_id();
         if (!empty($term_image)) {
             $image_id = $term_image;
             /**
              * create filter to use taxonomy image if single post doesn't have a thumbnail, but one of its terms does.
              * @var filter
              */
             $use_tax_image = apply_filters('display_featured_image_genesis_use_taxonomy', array());
             if (in_array(get_post_type(), $use_tax_image)) {
                 return (int) $image_id;
             }
         }
         $thumb_metadata = wp_get_attachment_metadata(get_post_thumbnail_id(get_the_ID()));
         // needed only for the next line
         $width = $thumb_metadata ? $thumb_metadata['width'] : '';
         if (has_post_thumbnail() && $width >= $medium) {
             $image_id = get_post_thumbnail_id(get_the_ID());
         }
     }
     /**
      * filter to use a different image id
      * @var $image_id
      *
      * @since 2.2.0
      */
     $image_id = apply_filters('display_featured_image_genesis_image_id', $image_id);
     // make sure the image id is an integer
     $image_id = is_numeric($image_id) ? (int) $image_id : '';
     return $image_id;
 }
 /**
  * Echo the widget content.
  *
  * @since 2.0.0
  *
  *
  * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget.
  * @param array $instance The settings for the particular instance of the widget
  */
 function widget($args, $instance)
 {
     //* Merge with defaults
     $instance = wp_parse_args((array) $instance, $this->defaults);
     $post_type = get_post_type_object($instance['post_type']);
     $option = get_option('displayfeaturedimagegenesis');
     if ('post' === $instance['post_type']) {
         $frontpage = get_option('show_on_front');
         // either 'posts' or 'page'
         $postspage = get_option('page_for_posts');
         $postspage_image = get_post_thumbnail_id($postspage);
         $title = get_post($postspage)->post_title;
         $permalink = esc_url(get_the_permalink($postspage));
         if ('posts' === $frontpage || 'page' === $frontpage && !$postspage) {
             $postspage_image = display_featured_image_genesis_get_default_image_id();
             $title = get_bloginfo('name');
             $permalink = home_url();
         }
     } else {
         $title = $post_type->label;
         $permalink = esc_url(get_post_type_archive_link($instance['post_type']));
         if (post_type_supports($instance['post_type'], 'genesis-cpt-archives-settings')) {
             $headline = genesis_get_cpt_option('headline', $instance['post_type']);
             if (!empty($headline)) {
                 $title = $headline;
             }
         }
     }
     echo $args['before_widget'];
     if (!empty($instance['title'])) {
         echo $args['before_title'] . apply_filters('widget_title', $instance['title'], $instance, $this->id_base) . $args['after_title'];
     }
     $image = '';
     $image_id = 'post' === $instance['post_type'] ? $postspage_image : displayfeaturedimagegenesis_check_image_id($option['post_type'][$post_type->name]);
     $image_src = wp_get_attachment_image_src($image_id, $instance['image_size']);
     if ($image_src) {
         $image = '<img src="' . $image_src[0] . '" alt="' . $title . '" />';
     }
     if ($instance['show_image'] && $image) {
         $role = empty($instance['show_title']) ? '' : 'aria-hidden="true"';
         printf('<a href="%s" title="%s" class="%s" %s>%s</a>', esc_url($permalink), esc_html($title), esc_attr($instance['image_alignment']), esc_attr($role), $image);
     }
     if ($instance['show_title']) {
         if (!empty($instance['show_title'])) {
             $title_output = sprintf('<h2><a href="%s">%s</a></h2>', $permalink, esc_html($title));
             if (genesis_html5()) {
                 $title_output = sprintf('<h2 class="archive-title"><a href="%s">%s</a></h2>', $permalink, esc_html($title));
             }
             echo wp_kses_post($title_output);
         }
     }
     $intro_text = '';
     if (post_type_supports($instance['post_type'], 'genesis-cpt-archives-settings')) {
         $intro_text = genesis_get_cpt_option('intro_text', $instance['post_type']);
     } elseif ('post' === $instance['post_type']) {
         $intro_text = get_post($postspage)->post_excerpt;
         if ('posts' === $frontpage || 'page' === $frontpage && !$postspage) {
             $intro_text = get_bloginfo('description');
         }
     }
     if ($instance['show_content'] && $intro_text) {
         echo genesis_html5() ? '<div class="archive-description">' : '';
         $intro_text = apply_filters('display_featured_image_genesis_cpt_description', $intro_text);
         echo wp_kses_post(wpautop($intro_text));
         echo genesis_html5() ? '</div>' : '';
     }
     echo $args['after_widget'];
 }
 /**
  * retrieve image ID for output
  *
  * @param string $image_id variable, ID of featured image
  *
  * @since 2.2.1
  * @return int|string $image_id
  */
 public static function set_image_id($image_id = '')
 {
     $setting = displayfeaturedimagegenesis_get_setting();
     $fallback = $setting['default'];
     $fallback_id = displayfeaturedimagegenesis_check_image_id($fallback);
     // set here with fallback preemptively, if it exists
     if (!empty($fallback)) {
         /**
          * Creates display_featured_image_genesis_use_default filter to check
          * whether get_post_type array should use default image.
          * @uses is_in_array()
          */
         $image_id = $fallback_id;
         if (self::is_in_array('use_default') || $setting['always_default']) {
             return (int) $image_id;
         }
     }
     // outlier: if it's a home page with a static front page, and there is a featured image set on the home page
     // also provisionally sets featured image for posts, similar to CPT archives
     $frontpage = get_option('show_on_front');
     // either 'posts' or 'page'
     if ('page' === $frontpage) {
         $postspage = get_option('page_for_posts');
         $postspage_image = get_post_thumbnail_id($postspage);
         $setting['post_type']['post'] = (int) $postspage_image;
     }
     // if a post type image exists, it takes priority over the fallback. check that next.
     $post_type = get_post_type();
     if (!empty($setting['post_type'][$post_type])) {
         /**
          * Creates display_featured_image_genesis_use_post_type_image filter to check
          * whether get_post_type array should use the post type image.
          * @uses is_in_array()
          */
         $image_id = displayfeaturedimagegenesis_check_image_id($setting['post_type'][$post_type]);
         if (self::is_in_array('use_post_type_image')) {
             return (int) $image_id;
         }
     }
     if (is_author()) {
         $image_id = get_the_author_meta('displayfeaturedimagegenesis', (int) get_query_var('author'));
     }
     // taxonomy
     if (is_category() || is_tag() || is_tax()) {
         $object = get_queried_object();
         $image = displayfeaturedimagegenesis_get_term_image($object->term_id);
         if ($image) {
             $image_id = $image;
         }
     }
     // search page
     if (is_search() && !empty($setting['post_type']['search'])) {
         $image_id = $setting['post_type']['search'];
     }
     // 404
     if (is_404() && !empty($setting['post_type']['fourohfour'])) {
         $image_id = $setting['post_type']['fourohfour'];
     }
     // any singular post/page/CPT
     if (is_singular()) {
         $image_id = self::get_singular_post_image($image_id, $setting, $post_type);
     }
     /**
      * filter to use a different image id
      * @var $image_id
      *
      * @since 2.2.0
      */
     $image_id = apply_filters('display_featured_image_genesis_image_id', $image_id);
     // make sure the image id is an integer
     $image_id = is_numeric($image_id) ? (int) $image_id : '';
     return $image_id;
 }
 /**
  * Returns previous value for image if not correct file type/size
  * @param  string $new_value New value
  * @return string            New or previous value, depending on allowed image size.
  * @since  1.2.2
  */
 protected function validate_image($new_value, $old_value, $label, $size_to_check)
 {
     // ok for field to be empty
     if (!$new_value) {
         return '';
     }
     $new_value = displayfeaturedimagegenesis_check_image_id($new_value);
     $old_value = displayfeaturedimagegenesis_check_image_id($old_value);
     $source = wp_get_attachment_image_src($new_value, 'full');
     $valid = (bool) $this->is_valid_img_ext($source[0]);
     $width = $source[1];
     if ($valid && $width > $size_to_check) {
         return (int) $new_value;
     }
     $class = 'invalid';
     $message = $this->image_validation_message($valid, $label);
     if (!is_customize_preview()) {
         add_settings_error($old_value, esc_attr($class), esc_attr($message), 'error');
     } elseif (method_exists('WP_Customize_Setting', 'validate')) {
         return new WP_Error(esc_attr($class), esc_attr($message));
     }
     return (int) $old_value;
 }
 /**
  * Update and/or delete term_meta and wp_options
  * @since 2.4.0
  */
 protected function update_delete_term_meta()
 {
     if (isset($_POST['displayfeaturedimagegenesis_termmeta'])) {
         if (!check_admin_referer('displayfeaturedimagegenesis_metanonce', 'displayfeaturedimagegenesis_metanonce')) {
             return;
         }
         foreach ($this->term_option_query as $option_key) {
             $term_id = (int) str_replace('displayfeaturedimagegenesis_', '', $option_key);
             $option = get_option(esc_attr($option_key), false);
             $term = get_term((int) $term_id);
             if (!is_wp_error($term) && !is_null($term)) {
                 $image_id = (int) displayfeaturedimagegenesis_check_image_id($option['term_image']);
                 update_term_meta($term_id, 'displayfeaturedimagegenesis', $image_id);
             }
             if (false !== $option) {
                 delete_option(esc_attr($option_key));
             }
         }
     }
     if (isset($_POST['displayfeaturedimagegenesis_termmeta']) || isset($_POST['displayfeaturedimagegenesis_termmetadismiss'])) {
         if (!check_admin_referer('displayfeaturedimagegenesis_metanonce', 'displayfeaturedimagegenesis_metanonce')) {
             return;
         }
         update_option('displayfeaturedimagegenesis_updatedterms', true);
     }
 }
 /**
  * Returns false value for image if not correct file type/size
  * @param  string $new_value New value
  * @return string            New value or false, depending on allowed image size.
  * @since  2.0.0
  */
 protected function validate_taxonomy_image($new_value)
 {
     // if the image was selected using the old URL method
     $new_value = displayfeaturedimagegenesis_check_image_id($new_value);
     $medium = get_option('medium_size_w');
     $source = wp_get_attachment_image_src($new_value, 'full');
     $valid = $this->is_valid_img_ext($source[0]);
     $width = $source[1];
     // ok for field to be empty
     if ($new_value && (!$valid || $width <= $medium)) {
         $new_value = false;
     }
     return $new_value;
 }