????
Current Path : /home/darkwebsol/acrepairkwt.com/wp-content/plugins/feeds-for-youtube/inc/ |
Current File : /home/darkwebsol/acrepairkwt.com/wp-content/plugins/feeds-for-youtube/inc/SBY_Display_Elements.php |
<?php namespace SmashBalloon\YouTubeFeed; use SmashBalloon\YouTubeFeed\SBY_Parse; use SmashBalloon\YouTubeFeed\Pro\SBY_Parse_Pro; use Smashballoon\Customizer\Feed_Builder; class SBY_Display_Elements { /** * Images are hidden initially with the new/transition classes * except if the js image loading is disabled using the plugin * settings * * @param $settings * * @return string * * @since 1.0 */ public static function get_item_classes( $settings ) { $classes = array( 'sby_new' ); if ( empty( $settings['global_settings'] ) ) { $settings['global_settings'] = $settings; } if ( !$settings['global_settings']['disable_js_image_loading'] ) { if ( !sby_doing_customizer( $settings ) ) { $classes[] = 'sby_transition'; } } else { $classes[] = 'sby_no_js'; $classes[] = 'sby_no_resraise'; $classes[] = 'sby_js_load_disabled'; } return ' ' . implode( ' ', $classes ); } /** * Returns the list of CSS classes * * @param array $settings * @param array $additional_classes * * @return string * * @since 2.0 */ public static function get_feed_container_css_classes( $settings, $additional_classes ) { $customizer = sby_doing_customizer( $settings ); $classes = ''; $classes_array = array( 'sb_youtube', 'sby_layout_' . esc_attr( $settings['layout'] ), 'sby_col_' . esc_attr( self::get_cols( $settings ) ), 'sby_mob_col_' . esc_attr( self::get_cols_mobile( $settings ) ), 'sby_palette_' . esc_attr( $settings['colorpalette'] ), ); if ( $customizer ) { return ' :class="$parent.getFeedContainerClasses()" '; } else { $classes = ' class="'. implode(" ", $classes_array ) .' ' . $additional_classes .'"'; } return $classes; } /** * Get feed container main attributes * * @since 2.0 */ public static function get_feed_container_main_attributes( $settings ) { $customizer = sby_doing_customizer( $settings ); $atts = self::print_element_attribute( $customizer, array( 'attr' => 'data-card-boxshadow', 'vue_content' => ' $parent.customizerFeedData.settings.enableboxshadow', 'php_condition' => $settings['enableboxshadow'] == true, 'php_content' => $settings['enableboxshadow'], ) ); $atts .= self::print_element_attribute( $customizer, array( 'attr' => 'data-videostyle', 'vue_content' => ' $parent.customizerFeedData.settings.videocardstyle', 'php_condition' => $settings['videocardstyle'] === 'boxed', 'php_content' => $settings['videocardstyle'], ) ); $atts .= self::print_element_attribute( $customizer, array( 'attr' => 'data-videocardlayout', 'vue_content' => '$parent.customizerFeedData.settings.videocardlayout', 'php_condition' => isset($settings['videocardlayout']), 'php_content' => $settings['videocardlayout'], ) ); $atts .= self::print_element_attribute( $customizer, array( 'attr' => 'data-cardboxshadow', 'vue_content' => '$parent.customizerFeedData.settings.enableboxshadow', 'php_condition' => isset($settings['enableboxshadow']), 'php_content' => $settings['enableboxshadow'], ) ); return $atts; } /** * Get text header attributes * * @since 2.0 */ public static function get_text_header_attributes( $settings ) { $customizer = sby_doing_customizer( $settings ); $atts = self::print_element_attribute( $customizer, array( 'attr' => 'data-header-size', 'vue_content' => '$parent.customizerFeedData.settings.customheadersize', 'php_condition' => isset($settings['customheadersize']), 'php_content' => $settings['customheadersize'], ) ); return $atts; } /** * Print Element HTML Attribute * * @param bool $customizer * @param array $args * * @return string * * @since 2.0 */ public static function print_element_attribute( $customizer, $args ) { if ( $customizer ) { return ' :' . $args['attr'] . '="' . $args['vue_content'] . '"'; } if( ( isset( $args['php_condition'] ) && $args['php_condition'] ) || !isset( $args['php_condition'] ) ){ if ( isset( $args['php_content'] ) && !empty( $args['php_content'] ) ) { return ' ' . $args['attr'] . '="' . esc_attr($args['php_content']) . '"'; } } } public static function get_element_attribute( $element, $settings ) { $customizer = sby_doing_customizer( $settings ); if ( $customizer ) { switch ($element) { case 'icon': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.include.includes(\'icon\'))'); break; case 'title': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.include.includes(\'title\'))'); break; case 'user': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.include.includes(\'user\'))'); break; case 'views': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.include.includes(\'views\'))'); break; case 'date': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.include.includes(\'date\'))'); break; case 'countdown': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.include.includes(\'countdown\'))'); break; case 'stats': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.include.includes(\'stats\'))'); break; case 'description': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.include.includes(\'description\'))'); break; case 'duration': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.include.includes(\'duration\'))'); break; case 'hover_title': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.hoverinclude.includes(\'title\'))'); break; case 'hover_user': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.hoverinclude.includes(\'user\'))'); break; case 'hover_countdown': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.hoverinclude.includes(\'countdown\'))'); break; case 'hover_description': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.hoverinclude.includes(\'description\'))'); break; case 'hover_date': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.hoverinclude.includes(\'date\'))'); break; case 'hover_views': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.hoverinclude.includes(\'views\'))'); break; case 'hover_stats': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.hoverinclude.includes(\'stats\'))'); break; case 'show_gallery_player': return self::create_condition_show_vue( $customizer, '$parent.valueIsEnabled($parent.customizerFeedData.settings.layout == \'gallery\')'); break; } } } /** * Should Show Print HTML * * @param bool $customizer * @param string $condition * * @return string * * @since 2.0 */ public static function create_condition_show_vue( $customizer, $condition ) { if ( $customizer ) { return ' v-show="' . $condition . '" '; } return ''; } public static function full_date( $timestamp, $settings, $include_time = false ) { return date_i18n( self::date_format_setting( $settings['dateformat'], $settings['customdate'] ), $timestamp + sby_get_utc_offset() ); } public static function date_format_setting( $date_format, $custom_format ) { if ( empty( $date_format ) ) { $date_format = get_option( 'date_format' ); if ( ! $date_format ) { $date_format = 'F j, Y'; } $time_format = get_option( 'time_format' ); if ( ! $time_format ) { $date_format .= ' g:i a'; } else { $date_format .= ' ' . $time_format; } return $date_format; } else { switch ( $date_format ) { case '1': return 'F jS, g:i a'; case '2': return 'F jS'; case '3': return 'D F jS'; case '4': return 'l F jS'; case '5': return 'D M jS, Y'; case '6': return 'l F jS, Y - g:i a'; case '7': return 'm.d.y'; case '8': return'm.d.y - G:i'; case '9': return'm/d/y'; break; case '10': return 'd.m.y'; case '11': return 'd/m/y'; case '12': return 'l jS F Y, G:i'; case 'custom': if ( empty( $custom_format ) ) { return 'F jS, g:i a'; } return $custom_format; default: // if the value is not one of the number options and not "custom" then it's likely // the person set their own custom format in the shortcode return $date_format; } } } public static function escaped_formatted_count_string( $count, $type, $no_spinner = false ) { global $sby_settings; $type_text = isset( $sby_settings[ $type . 'text' ] ) ? ' ' . esc_attr($sby_settings[ $type . 'text' ]) : ''; if ( '' === $count && false === $no_spinner ) { return SBY_Display_Elements::spinner() . $type_text; } $count = (int)$count; if ( $count < 1000 ) { $text = esc_html( number_format_i18n( (float)$count ) ); } elseif ( $count < 1000000 ) { $thousands = $count/1000; $num_text = round( $thousands, 1 ); $text = esc_html( $num_text . $sby_settings['thousandstext'] ); } else { $millions = $count/1000000; $num_text = round( $millions, 1 ); $text = esc_html( $num_text . $sby_settings['millionstext'] ); } return $text . $type_text; } public static function spinner() { return '<span class="sby_loader" style="background-color: rgb(255, 255, 255);"></span>'; } /** * Get the item media URL * * @since 2.0 */ public static function get_media_url( $settings, $media_url, $media_full_res ) { return $media_full_res; } public static function escaped_live_streaming_time_string( $post, $misc_data = array() ) { $live_broadcast_type = SBY_Parse::get_live_broadcast_content( $post ); // 'none', 'upcoming', 'live', 'completed' if ( $live_broadcast_type === 'none' ) { return ''; } $scheduled_start_timestamp = SBY_Parse::get_scheduled_start_timestamp( $post, $misc_data ); $actual_start_timestamp = SBY_Parse::get_actual_start_timestamp( $post, $misc_data ); $actual_end_timestamp = SBY_Parse_Pro::get_actual_end_timestamp( $post, $misc_data ); global $sby_settings; if ( $actual_end_timestamp !== 0 || $actual_start_timestamp !== 0 || $live_broadcast_type === 'live' || $live_broadcast_type === 'completed' ) { return esc_html( $sby_settings['watchnowtext'] ); } if ( $scheduled_start_timestamp === 0 ) { return esc_html( $sby_settings['beforedatetext'] ) . ' ' . '<span class="sby_loader sby_hidden" style="background-color: rgb(255, 255, 255);"></span>'; } $now = time(); $difference = $scheduled_start_timestamp - $now; if ( $difference < 0 ) { $text = esc_html( $sby_settings['watchnowtext'] ); } elseif ( $difference < 2 * HOUR_IN_SECONDS ) { $unit_text = $difference < 60 ? $sby_settings['minutetext'] : $sby_settings['minutestext']; $num_text = round( $difference / 60, 0 ); $text = esc_html( $sby_settings['beforestreamtimetext'] ) . ' ' . $num_text . ' ' . esc_html( $unit_text ); } elseif ( $difference < DAY_IN_SECONDS ) { $unit_text = $sby_settings['hourstext']; $num_text = round( $difference / HOUR_IN_SECONDS, 0 ); $text = esc_html( $sby_settings['beforestreamtimetext'] ) . ' ' . $num_text . ' ' . esc_html( $unit_text ); } else { $text = esc_html( $sby_settings['beforedatetext'] ) . ' ' . esc_html( self::format_date( $scheduled_start_timestamp, $sby_settings, true ) ); } return $text; } public static function format_date( $timestamp, $settings = false, $include_time = false ) { if ( ! $settings ) { global $sby_settings; $settings = $sby_settings; } $now = time(); $difference = $now - $timestamp; $do_not_use_relative = ! $settings['userelative']; // future date, is a live stream if ( $difference < 0 || $do_not_use_relative ) { return self::full_date( $timestamp, $settings, $include_time ); } elseif ( $difference < 2 * HOUR_IN_SECONDS ) { $unit_text = $difference < 60 ? $settings['minutetext'] : $settings['minutestext']; $num_text = round( $difference / 60, 0 ); return $num_text . ' ' . esc_html( $unit_text ) . ' ' . esc_html( $settings['agotext'] ); } elseif ( $difference < DAY_IN_SECONDS ) { $unit_text = $settings['hourstext']; $num_text = round( $difference / HOUR_IN_SECONDS, 0 ); return $num_text . ' ' . esc_html( $unit_text ) . ' ' . esc_html( $settings['agotext'] ); } else { return self::full_date( $timestamp, $settings, $include_time ); } } /** * The sby_link element for each item has different styles applied if * the lightbox is disabled. * * @param $settings * * @return string * * @since 5.0 */ public static function get_sby_link_classes( $settings ) { if ( ! empty( $settings['disablelightbox'] ) && ($settings['disablelightbox'] === 'on' || $settings['disablelightbox'] === 'true' || $settings['disablelightbox'] === true) ) { return ' sby_disable_lightbox'; } return ''; } /** * Get gallery layout player attributes * * @since 2.0 */ public static function get_player_attributes( $settings ) { $customizer = sby_doing_customizer( $settings ); if ( ! $customizer ) { return; } return self::create_condition_show_vue( $customizer, '$parent.shouldShowPlayer()'); } /** * Custom background color for the hover element. Slightly opaque. * * @param $settings * * @return string * * @since 5.0 */ public static function get_sby_link_styles( $settings ) { if ( ! empty( $settings['hovercolor'] ) && $settings['hovercolor'] !== '#000' ) { return 'style="background: rgba(' . esc_attr( sby_hextorgb( $settings['hovercolor'] ) ) . ',0.85)"'; } return ''; } /** * Text color for the hover element. * * @param $settings * * @return string * * @since 5.0 */ public static function get_hover_styles( $settings ) { if ( ! empty( $settings['hovertextcolor'] ) && $settings['hovertextcolor'] !== '#000' ) { return 'style="color: rgba(' . esc_attr( sby_hextorgb( $settings['hovertextcolor'] ) ) . ',1)"'; } return ''; } /** * Inline styles applied to the caption/like count/comment count information appearing * underneath each post by default. * * @param $settings * * @return string * * @since 5.0 */ public static function get_sby_info_styles( $settings ) { $styles = ''; if ( (! empty( $settings['captionsize'] ) && $settings['captionsize'] !== 'inherit') || ! empty( $settings['captioncolor'] ) ) { $styles = 'style="'; if ( ! empty( $settings['captionsize'] ) && $settings['captionsize'] !== 'inherit' ) { $styles .= 'font-size: '. esc_attr( $settings['captionsize'] ) . 'px;'; } if ( ! empty( $settings['captioncolor'] ) ) { $styles .= 'color: rgb(' . esc_attr( sby_hextorgb( $settings['captioncolor'] ) ). ');'; } $styles .= '"'; } return $styles; } /** * Color of the likes heart icon and the comment voice box icon in the * sby_info area. * * @param $settings * * @return string * * @since 5.0 */ public static function get_sby_meta_color_styles( $settings ) { if ( ! empty( $settings['likescolor'] ) ) { return 'style="color: rgb(' . esc_attr( sby_hextorgb( $settings['likescolor'] ) ). ');"'; } return ''; } /** * Size of the likes heart icon and the comment voice box icon in the * sby_info area. * * @param $settings * * @return string * * @since 5.0 */ public static function get_sby_meta_size_color_styles( $settings ) { $styles = ''; if ( (! empty( $settings['likessize'] ) && $settings['likessize'] !== 'inherit') || ! empty( $settings['likescolor'] ) ) { $styles = 'style="'; if ( ! empty( $settings['likessize'] ) && $settings['likessize'] !== 'inherit' ) { $styles .= 'font-size: '. esc_attr( $settings['likessize'] ) . 'px;'; } if ( ! empty( $settings['likescolor'] ) ) { $styles .= 'color: rgb(' . esc_attr( sby_hextorgb( $settings['likescolor'] ) ). ');'; } $styles .= '"'; } return $styles; } /** * Display header * * @since 2.0 */ public static function display_header( $header_data, $settings ) { if ( sby_doing_customizer( $settings ) ) { include sby_get_feed_template_part( 'header', $settings ); include sby_get_feed_template_part( 'header-text', $settings ); } else { if ( $settings['headerstyle'] == 'standard' ) { include sby_get_feed_template_part( 'header', $settings ); } else if ( $settings['headerstyle'] == 'text' ) { include sby_get_feed_template_part( 'header-text', $settings ); } } } /** * Overwritten in the Pro version. * * @param string $type key of the kind of icon needed * @param string $icon_type svg or font * * @return string the complete html for the icon * * @since 1.0 */ public static function get_icon( $type, $icon_type ) { return self::get_basic_icons( $type, $icon_type ); } public static function get_cols( $settings ) { if( $settings['layout'] == 'list' ) { return 0; } if ( isset( $settings['cols'] ) ) { return $settings['cols']; } return 0; } public static function get_cols_mobile( $settings ) { if( $settings['layout'] == 'list' ) { return 0; } if ( isset( $settings['colsmobile'] ) ) { return $settings['colsmobile']; } return 0; } public static function get_style_att( $context, $settings, $pos = false ) { $style_settings = array(); $item_spacing_setting = $settings['itemspacing']; if ( ! preg_match("/(px)|(%)/", $item_spacing_setting ) ) { $item_spacing_setting = $item_spacing_setting . $settings['itemspacingunit']; } if ( $context === 'player' ) { $style_settings['margin-bottom'] = $item_spacing_setting; } elseif ( $context === 'item' ) { if ( $settings['layout'] === 'list' ) { $style_settings['margin-bottom'] = $item_spacing_setting; } } elseif ( $context === 'items_wrap' || $context === 'player_outer_wrap' ) { if ( $settings['layout'] !== 'list' ) { $style_settings['padding'] = $item_spacing_setting; } } elseif ( $context === 'header' ) { if ( $settings['itemspacing'] > 0 ) { $style_settings['padding'] = $item_spacing_setting; } if ( $settings['itemspacing'] < 10 ) { $style_settings['margin-bottom'] = '10px'; } $style_settings['padding-bottom'] = '0'; } if ( $context === 'player_outer_wrap' ) { $style_settings['padding-bottom'] = 0; } $style_att = ''; if ( ! empty( $style_settings ) ) { $style_att = ' style="'; foreach ( $style_settings as $prop => $val ) { $style_att .= esc_attr( $prop . ': '. $val . ';' ); } $style_att .= '"'; } return $style_att; } public static function get_display_avatar( $header_data, $settings ) { if ( SBY_GDPR_Integrations::doing_gdpr( $settings ) && $settings['global_settings']['disablecdn'] ) { return trailingslashit( SBY_PLUGIN_URL ) . 'img/placeholder.png'; } return SBY_Parse::get_avatar( $header_data, $settings ); } /** * Get Text Header Attributes * * @since 2.0 */ public static function get_header_text_attr( $settings ) { if ( sby_doing_customizer( $settings ) ) { return ' :data-header-subscriber="$parent.checkShouldShowSubscribers()"'; } // If not doing customizer $subscribe_shown = $settings['showsubscribe'] == true ? 'shown' : ''; return ' data-header-subscriber="'. $subscribe_shown .'"'; } /** * Palette class * * @param array $settings * @param string $context * * @return string * * @since 2.0 */ public static function get_palette_class( $settings, $context = '' ) { $customizer = sby_doing_customizer( $settings ); if ( $customizer ) { return ' $parent.getPaletteClass() '; } else { $feed_id_addition = ! empty( $settings['colorpalette'] ) && $settings['colorpalette'] === 'custom' ? '_' . $settings['feed'] : ''; $palette_class = ! empty( $settings['colorpalette'] ) && $settings['colorpalette'] !== 'inherit' ? ' sby' . $context . '_palette_' . $settings['colorpalette'] . $feed_id_addition : ''; return $palette_class; } } /** * Palette type * * @param array $settings * * @return string * * @since 2.0 */ public static function palette_type( $settings ) { return ! empty( $settings['colorpalette'] ) ? $settings['colorpalette'] : 'inherit'; } /** * Returns the best media url for an image based on settings. * By default a white placeholder image is loaded and replaced * with the most optimal image size based on the actual dimensions * of the image element in the feed. * * @param array $post data for an individual post * @param array $settings * @param array $resized_images (optional) not yet used but * can pass in existing resized images to use in the source * * @return string * * @since 1.0 */ public static function get_optimum_media_url( $post, $settings, $resized_images = array() ) { $media_url = ''; $optimum_res = $settings['imageres']; $account_type = isset( $post['images'] ) ? 'personal' : 'business'; if ( empty( $settings['global_settings'] ) ) { $settings['global_settings'] = $settings; } // only use the placeholder if it will be replaced using JS if ( ! $settings['global_settings']['disable_js_image_loading'] || ($settings['global_settings']['disablecdn'] && $settings['global_settings']['gdpr'] === 'yes')) { return trailingslashit( SBY_PLUGIN_URL ) . 'img/placeholder.png'; } else { $optimum_res = 'full'; $settings['imageres'] = 'full'; } $media_url = SBY_Parse::get_media_url( $post, 'lightbox' ); return $media_url; } /** * Creates a style attribute that contains all of the styles for * the main feed div. * * @param $settings * * @return string */ public static function get_feed_style( $settings ) { $styles = ''; $bg_color = str_replace( '#', '', $settings['background'] ); if ( ! empty( $settings['imagepadding'] ) || ! empty( $bg_color ) || ! empty( $settings['width'] ) || ! empty( $settings['height'] ) ) { $styles = ' style="'; if ( ! empty( $settings['imagepadding'] ) ) { $styles .= 'padding-bottom: ' . ((int)$settings['imagepadding'] * 2) . esc_attr( $settings['imagepaddingunit'] ) . ';'; } if ( ! empty( $bg_color ) ) { $styles .= 'background-color: rgb(' . esc_attr( sby_hextorgb( $bg_color ) ). ');'; } if ( ! empty( $settings['width'] ) ) { $styles .= 'width: ' . (int)$settings['width'] . esc_attr( $settings['widthunit'] ) . ';'; } if ( ! empty( $settings['height'] ) ) { $styles .= 'height: ' . (int)$settings['height'] . esc_attr( $settings['heightunit'] ) . ';'; } $styles .= '"'; } return $styles; } /** * Creates a style attribute for the sby_images div * * @param $settings * * @return string * * @since 1.0 */ public static function get_items_wrap_style( $settings ) { if ( ! empty ( $settings['imagepadding'] ) ) { return 'style="padding: '.(int)$settings['imagepadding'] . esc_attr( $settings['imagepaddingunit'] ) . ';"'; } return ''; } /** * Creates a style attribute for the header. Can be used in * several places based on the header style * * @param $settings * * @return string * * @since 1.0 */ public static function get_header_text_color_styles( $settings ) { $header_color = str_replace( '#', '', $settings['headercolor'] ); if ( ! empty( $header_color ) ) { return 'style="color: rgb(' . esc_attr( sby_hextorgb( $header_color ) ). ');"'; } return ''; } /** * Header icon and text size is styled using the class added here. * * @param $settings * * @return string * * @since 1.0 */ public static function get_header_size_class( $settings ) { $header_size_class = in_array( strtolower( $settings['headersize'] ), array( 'medium', 'large' ) ) ? ' sby_'.strtolower( $settings['headersize'] ) : ''; return $header_size_class; } /** * Creates a style attribute for the subscribe button. Can be in * the feed footer or in a boxed header. * * @param $settings * * @return string * * @since 1.0 */ public static function get_subscribe_styles( $settings ) { $styles = ''; $subscribe_color = str_replace( '#', '', $settings['subscribecolor'] ); $subscribe_text_color = str_replace( '#', '', $settings['subscribetextcolor'] ); if ( ! empty( $subscribe_color ) || ! empty( $subscribe_text_color ) ) { $styles = 'style="'; if ( ! empty( $subscribe_color ) ) { $styles .= 'background: rgb(' . esc_attr( sby_hextorgb( $subscribe_color ) ) . ');'; } if ( ! empty( $subscribe_text_color ) ) { $styles .= 'color: rgb(' . esc_attr( sby_hextorgb( $subscribe_text_color ) ). ');'; } $styles .= '"'; } return $styles; } /** * Creates a style attribute for styling the load more button. * * @param $settings * * @return string * * @since 1.0 */ public static function get_load_button_styles( $settings ) { $styles = ''; $button_color = str_replace( '#', '', $settings['buttoncolor'] ); $button_text_color = str_replace( '#', '', $settings['buttontextcolor'] ); if ( ! empty( $button_color ) || ! empty( $button_text_color ) ) { $styles = 'style="'; if ( ! empty( $button_color ) ) { $styles .= 'background: rgb(' . esc_attr( sby_hextorgb( $button_color ) ) . ');'; } if ( ! empty( $button_text_color ) ) { $styles .= 'color: rgb(' . esc_attr( sby_hextorgb( $button_text_color ) ). ');'; } $styles .= '"'; } return $styles; } /** * Get load more button attributes * * @since 2.0 */ public static function get_load_button_attribute( $settings ) { return self::should_print_element_vue( sby_doing_customizer( $settings ), '$parent.customizerFeedData.settings.buttontext' ); } /** * Get subscribe button attributes * * @since 2.0 */ public static function get_subscribe_button_attribute( $settings ) { return self::should_print_element_vue( sby_doing_customizer( $settings ), '$parent.customizerFeedData.settings.subscribetext' ); } /** * Get subscribe button attributes * * @since 2.0 */ public static function get_text_header_content( $settings ) { return self::should_print_element_vue( sby_doing_customizer( $settings ), '$parent.getCustomHeaderText()' ); } /** * Channel subscribers data attributes * * @param array $settings * * @return string * * @since 2.0 */ public static function get_subscribers_data_attributes( $settings ) { if ( ! sby_doing_customizer( $settings ) ) { return ''; } return ' ' . self::display_vue_condition( 'showsubscribers' ); } /** * Channel description data attributes * * @param array $settings * * @return string * * @since 2.0 */ public static function get_description_data_attributes( $settings ) { if ( ! sby_doing_customizer( $settings ) ) { return ''; } return ' ' . self::display_vue_condition( 'showdescription' ); } /** * Load button data attributes * * @param array $settings * * @return string * * @since 2.0 */ public static function get_button_data_attributes( $settings ) { if ( ! sby_doing_customizer( $settings ) ) { return ''; } return ' ' . self::display_vue_condition( 'showbutton' ); } /** * Subscribe link bar data attributes * * @param array $settings * * @return string * * @since 2.1 */ public static function get_subscribe_bar_link_data_attributes( $settings ) { if ( ! sby_doing_customizer( $settings ) ) { return ''; } return ' ' . self::display_vue_condition( 'enablesubscriberlink' ); } /** * Subscribe button data attributes * * @param array $settings * * @return string * * @since 2.0 */ public static function get_subscribe_button_data_attributes( $settings ) { if ( ! sby_doing_customizer( $settings ) ) { return ''; } return ' ' . self::display_vue_condition( 'showsubscribe' ); } /** * Customizer feed Header display conditions * * @param array $settings * * @return string * * @since 2.0 */ public static function get_header_display_condition( $settings ) { if ( ! sby_doing_customizer( $settings ) ) { return ''; } return ' v-show="$parent.shouldShowStandardHeader()"'; } /** * Get subscribe button text * * @since 2.1 * * @return string */ public static function get_subscribe_btn_text( $settings ) { if ( sby_doing_customizer( $settings ) ) { return ''; } return isset( $settings['subscribetext'] ) ? $settings['subscribetext'] : ''; } /** * Customizer feed text header data attributes * * @param array $settings * * @return string * * @since 2.0 */ public static function get_text_header_display_condition( $settings ) { if ( ! sby_doing_customizer( $settings ) ) { return ''; } return ' v-show="$parent.shouldShowTextHeader()"'; } /** * Display vue condition * * @param array $setting_name * * @return string * * @since 6.0 */ public static function display_vue_condition( $setting_name, $custom_condition = '' ) { return self::create_condition_vue( true, '$parent.valueIsEnabled( $parent.customizerFeedData.settings.' . $setting_name . ' ) '. $custom_condition ); } /** * Should Print HTML * * @param bool $customizer * @param string $condition * * @return string * * @since 2.0 */ public static function create_condition_vue( $customizer, $condition ) { if ( $customizer ) { return ' v-if="' . $condition . '" '; } return ''; } /** * A not very elegant but useful method to abstract out how the settings * work for displaying certain elements in the feed. * * @param string $element specific key, view below for supported ones * @param $settings * * @return bool * * @since 5.0 */ public static function should_show_element( $element, $context, $settings ) { //user, views, date if ( $context === 'item-hover' ) { $include_array = is_array( $settings['hoverinclude'] ) ? $settings['hoverinclude'] : explode( ',', str_replace( ' ', '', $settings['hoverinclude'] ) ); } else { $include_array = is_array( $settings['include'] ) ? $settings['include'] : explode( ',', str_replace( ' ', '', $settings['include'] ) ); } if ( in_array( $element, $include_array, true ) ) { return true; } return false; } /** * Returns the html for an icon based on the kind requested * * @param string $type kind of icon needed (ex "video" is a play button) * @param string $icon_type svg or font * * @return string * * @since 1.0 */ protected static function get_basic_icons( $type, $icon_type ) { if ( $type === 'carousel' ) { if ( $icon_type === 'svg' ) { return '<svg class="svg-inline--fa fa-clone fa-w-16 sby_lightbox_carousel_icon" aria-hidden="true" data-fa-proƒcessed="" data-prefix="far" data-icon="clone" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"> <path fill="currentColor" d="M464 0H144c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-48h48c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zM362 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h42v224c0 26.51 21.49 48 48 48h224v42a6 6 0 0 1-6 6zm96-96H150a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h308a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6z"></path> </svg>'; } else { return '<i class="fa fa-clone sby_carousel_icon" aria-hidden="true"></i>'; } } elseif ( $type === 'video' ) { if ( $icon_type === 'svg' ) { return '<svg style="color: rgba(255,255,255,1)" class="svg-inline--fa fa-play fa-w-14 sby_playbtn" aria-hidden="true" data-fa-processed="" data-prefix="fa" data-icon="play" role="presentation" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"></path></svg>'; } else { return '<i class="fa fa-play sby_playbtn" aria-hidden="true"></i>'; } } elseif ( $type === 'youtube' ) { if ( $icon_type === 'svg' ) { return '<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="youtube" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="svg-inline--fa fa-youtube fa-w-18"><path fill="currentColor" d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z" class=""></path></svg>'; } else { return '<i aria-hidden="true" role="img" class="sby_new_logo fab fa-youtube"></i>'; } } elseif ( $type === 'newlogo' ) { if ( $icon_type === 'svg' ) { return '<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="youtube" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="sby_new_logo svg-inline--fa fa-youtube fa-w-18"><path fill="currentColor" d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z" class=""></path></svg>'; } else { return '<i aria-hidden="true" role="img" class="sby_new_logo fab fa-youtube"></i>'; } } elseif ( $type === 'play') { if ( $icon_type === 'svg' ) { return '<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="youtube" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="svg-inline--fa fa-youtube fa-w-18"><path fill="currentColor" d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z" class=""></path></svg>'; } else { return '<i aria-hidden="true" role="img" class="fa fas fa-play"></i>'; } } else { return ''; } } public static function escaped_data_att_string( $atts ) { if ( empty( $atts ) ) { return ''; } $string = ''; foreach ( $atts as $key => $value ) { $string .= ' ' . esc_attr( $key ) . '="' . esc_attr( $value ) . '"'; } return $string; } /** * Should Print HTML * * @param bool $customizer * @param string $content * * @return string * * @since 2.0 */ public static function should_print_element_vue( $customizer, $content ) { if ( $customizer ) { return ' v-html="' . $content . '" '; } return ''; } }