File: /var/www/html/wpbiancoarte/wp-content/plugins/custom-twitter-feeds/inc/CTF_Parse.php
<?php
/**
* Class CTF_Parse
*
*
* @since 2.0
*/
namespace TwitterFeed;
use TwitterFeed\CtfFeed;
use TwitterFeed\V2\CtfOauthConnect;
use TwitterFeed\CTF_GDPR_Integrations;
if ( ! defined( 'ABSPATH' ) ) {
die( '-1' );
}
class CTF_Parse{
/**
* Get Tweet ID
*
* @since 2.0
*/
public static function get_tweet_id( $data ) {
return $data['id_str'];
}
public static function get_post_id( $data ) {
return $data['id_str'];
}
/**
* Get Tweet Author User name
*
* @since 2.0
*/
public static function get_user_name( $data ) {
if ( ! empty( $data['screen_name'] ) ) {
return $data['screen_name'];
}
if ( ! empty( $data['user']['screen_name'] ) ) {
return $data['user']['screen_name'];
}
return '';
}
/**
* Get Tweet Author Name
*
* @since 2.0
*/
public static function get_author_name( $data ) {
return strtolower( $data['user']['name'] );
}
/**
* Get Tweet Author Name
*
* @since 2.0
*/
public static function get_display_author_name( $data ) {
return $data['user']['name'];
}
/**
* Get Tweet Author Screen Name
*
* @since 2.0
*/
public static function get_author_screen_name( $data ) {
if ( ! empty( $data['user'] ) ) {
if ( is_array( $data['user'] ) ) {
return strtolower( $data['user']['screen_name'] );
} else {
return strtolower( $data['user'] );
}
}
if ( ! empty( $data['screen_name'] ) ) {
return strtolower( $data['screen_name'] );
}
return '';
}
public static function get_quoted_name( $data ) {
return $data['user']['name'];
}
public static function get_quoted_screen_name( $data ) {
return $data['user']['screen_name'];
}
/**
* Get Tweet Verified
*
* @since 2.0
*/
public static function get_quoted_verified( $data ) {
return $data['user']['verified'];
}
/**
* Get Tweet Post
*
* @since 2.0
*/
public static function get_post($tweet_set) {
if ( isset( $tweet_set['retweeted_status'] ) ) {
return $tweet_set['retweeted_status'];
} else {
return $tweet_set;
}
}
/**
* Get Tweet Avatar URL
*
* @since 2.0
*/
public static function get_avatar_url( $post, $feed_options ) {
if ( CTF_GDPR_Integrations::doing_gdpr( $feed_options ) ) {
return trailingslashit( CTF_PLUGIN_URL ) . 'img/placeholder.png';
}
return self::get_avatar( $post );
}
/**
* Get Tweet Avatar
*
* @since 2.0
*/
public static function get_avatar( $data ) {
if ( isset( $data['retweeted_status'] ) ) {
return $data['retweeted_status']['user']['profile_image_url_https'];
} elseif ( isset( $data['user'] ) ) {
return $data['user']['profile_image_url_https'];
} elseif ( isset( $data['profile_image_url_https'] ) ) {
return $data['profile_image_url_https'];
}
return '';
}
/**
* Get Tweet UTS Offset
*
* @since 2.0
*/
public static function get_utc_offset ( $data ) {
if ( empty( $data['user']['utc_offset'] ) ) {
return 0;
}
return $data['user']['utc_offset'];
}
/**
* Get Tweet Original TimeStamp
*
* @since 2.0
*/
public static function get_original_timestamp( $data ) {
return $data['created_at'];
}
/**
* Get Tweet Author Verified
*
* @since 2.0
*/
public static function get_verified ( $data ) {
return $data['user']['verified'];
}
/**
* Get Generic Header Text
*
* @since 2.0
*/
public static function get_generic_header_text( $data ) {
if ( $data['type'] === 'search' || $data['type'] === 'hashtag' ) {
$using_custom = $data['headertext'] != '';
$raw_header_text = $using_custom ? $data['headertext'] : $data['feed_term'];
//List multiple terms
$hashtags = explode(" OR ", $data['feed_term']);
if ( ! $using_custom ) {
$default_header_text = '';
$h_index = 0;
foreach ( $hashtags as $hashtag ) {
if( $h_index > 0 ) $default_header_text .= ', ';
$default_header_text .= $hashtag;
$h_index++;
}
} else {
$default_header_text = $data['headertext'];
}
$default_header_text = str_replace( ' -filter:retweets', '', $default_header_text );
return $default_header_text;
} else {
$default_header_text = 'Twitter';
// $url_part = $data['screenname']; //Need to get screenname here
return $default_header_text;
}
//Header for combined feed types
if ( ! empty( $data['feed_types_and_terms'] ) ) {
if ( $data['headertext'] != '' ) {
$default_header_text = $data['headertext'];
if ( $data['feed_types_and_terms'][0][0] === 'search' || $data['feed_types_and_terms'][0][0] === 'hashtag' ) {
$raw_header_text = $data['feed_types_and_terms'][0][1];
}
return $default_header_text;
} else {
$default_header_text = '';
$i_term = 0;
foreach ( $data['feed_types_and_terms'] as $feed_set ) {
if ( $feed_set[0] == 'lists' ) {
$default_header_text .= '';
} else {
if ( $i_term > 0 ) {
$default_header_text .= ', ';
}
if ( $feed_set[0] == 'usertimeline' ) {
$default_header_text .= '@';
}
$default_header_text .= $feed_set[1];
}
$i_term++;
}
}
if ( empty( $default_header_text ) ) {
return $default_header_text = 'Twitter';
}
}
}
/**
* Get Generic Header URL
*
* @since 2.0
*/
public static function get_generic_header_url ( $data ) {
$hashtags = isset($data['feed_term']) ? explode(" OR ", $data['feed_term']) : '';
if ( $data['type'] === 'search' || $data['type'] === 'hashtag' ) {
if ( $data['type'] === 'hashtag' ) {
$url_part = 'hashtag/' . str_replace("#", "", $hashtags[0]);
} else {
$url_part = 'search?q=' . rawurlencode( str_replace( array( ', ', "'" ), array( ' OR ', '"' ), $data['feed_term'] ) );
}
return $url_part;
}
if ( ! empty( $data['feed_types_and_terms'] ) ) {
if ( $data['feed_types_and_terms'][0][0] === 'search' || $data['feed_types_and_terms'][0][0] === 'hashtag' ) {
$raw_header_text = $data['feed_types_and_terms'][0][1];
//List multiple terms
$hashtags = explode( " OR ", $data['feed_types_and_terms'][0][1] );
if ( $data['feed_types_and_terms'][0][0] === 'hashtag' ) {
$url_part = 'hashtag/' . str_replace( "#", "", $hashtags[0] );
return $url_part;
} else {
$url_part = 'search?q=' . rawurlencode( str_replace( array( ', ', "'" ), array(
' OR ',
'"'
), $data['feed_types_and_terms'][0][1] ) );
return $url_part;
}
}
}
}
/**
* Get Header Text
*
* @since 2.0
*/
public static function get_header_text( $header_info, $feed_options ) {
if ( empty( $header_info ) || ! is_array( $header_info ) ) {
return '';
}
if ( $feed_options['headertext'] !== '' ) {
$header_text = $feed_options['headertext'];
return $header_text;
} else {
$header_text = $header_info['name'];
return $header_text;
}
}
/**
* Get Header Description
*
* @since 2.0
*/
public static function get_header_description( $data ) {
return $data['description'];
}
/**
* Get User Header JSON info
*
* @since 2.0
*/
public static function get_user_header_json( $data, $post_info ) {
$type = ! empty( $data['type'] ) ? $data['type'] : 'usertimeline';
$types_and_terms = isset($data['feed_types_and_terms']) ? $data['feed_types_and_terms'] : [];
$timelines_included = array();
foreach ( $types_and_terms as $type_and_term ) {
if ( $type_and_term[0] === 'usertimeline' ) {
$timelines_included[] = str_replace( '@', '', strtolower( $type_and_term[1] ) );
}
}
if ( $type === 'usertimeline' ) {
if ( ! empty( $post_info[0]['user'] ) ) {
return $post_info[0]['user'];
}
}
return array();
}
/**
* Get User Header Avatar
*
* @since 2.0
*/
public static function get_header_avatar( $data, $feed_options = array() ) {
$settings = ctf_get_database_settings();
if ( CTF_GDPR_Integrations::doing_gdpr( $settings ) ) {
$avatar = trailingslashit( CTF_PLUGIN_URL ) . 'img/placeholder.png';
} else {
$avatar = $data['profile_image_url_https'];
}
return $avatar;
}
public static function get_quoted_tc( $data ) {
$quoted = false;
// check for quoted
if ( isset( $data['quoted_status'] ) ) {
$quoted = $data['quoted_status'];
return $quoted;
} else {
unset( $quoted );
}
}
public static function get_quoted_media( $data, $num_media ) {
//Quoted Tweets Media
$quoted_media = false;
if ( isset( $data['extended_entities']['media'] ) ) {
$num_media = count( $data['extended_entities']['media'] );
for( $ii = 0; $ii < $num_media; $ii++ ) {
if ( $data['extended_entities']['media'][$ii]['type'] == 'video' || $data['extended_entities']['media'][$ii]['type'] == 'animated_gif' ) {
$quoted_media[$ii]['url'] = $data['extended_entities']['media'][$ii]['video_info']['variants'][$ii]['url'];
} else {
$quoted_media[$ii]['url'] = $data['extended_entities']['media'][$ii]['media_url_https'];
}
$quoted_media[$ii]['type'] = $data['extended_entities']['media'][$ii]['type'];
if ( $quoted_media[$ii]['type'] == 'video' ) {
$quoted_media[$ii]['video_atts'] = 'controls';
} elseif ( $quoted_media[$ii]['type'] == 'animated_gif' ) {
$quoted_media[$ii]['video_atts'] = 'controls loop autoplay muted';
}
$quoted_media[$ii]['poster'] = $data['extended_entities']['media'][$ii]['media_url_https'];
}
} elseif ( isset( $data['entities']['media'] ) ) {
$num_media = count( $data['entities']['media'] );
for( $ii = 0; $ii < $num_media; $ii++ ) {
if ( $data['entities']['media'][$ii]['type'] == 'video' || $data['entities']['media'][$ii]['type'] == 'animated_gif' ) {
$quoted_media[$ii]['url'] = $data['entities']['media'][$ii]['video_info']['variants'][$ii]['url'];
} else {
$quoted_media[$ii]['url'] = $data['entities']['media'][$ii]['media_url_https'];
}
$quoted_media[$ii]['type'] = $data['entities']['media'][$ii]['type'];
if ( $quoted_media[$ii]['type'] == 'video' ) {
$quoted_media[$ii]['video_atts'] = 'controls';
} elseif ( $quoted_media[$ii]['type'] == 'animated_gif' ) {
$quoted_media[$ii]['video_atts'] = 'controls loop autoplay muted';
}
$quoted_media[$ii]['poster'] = $data['entities']['media'][$ii]['media_url_https'];
}
}
return $quoted_media;
}
/**
* Get Feed Classes
*
* @since 2.0
*/
public static function get_feed_classes( $feed_options, $check_for_duplicates, $feed_id = false) {
if( ctf_doing_customizer( $feed_options ) ){
return ' :class="$parent.getFeedClasses()" ';
}else{
$ctf_feed_classes = 'ctf ctf-type-' . CTF_Parse::get_feed_type( $feed_options );
$ctf_feed_classes .= \ctf_should_rebrand_to_x() ? ' ctf-rebranded' : '';
$ctf_feed_classes .= ($feed_id !== false ) ? ' ctf-feed-' . $feed_id : '';
$ctf_feed_classes .= ' ' . $feed_options['class'] . ' ctf-styles';
$ctf_feed_classes .= ($feed_options['layout']) ? ' ctf-' . $feed_options['layout']: '';
$ctf_feed_classes .= ( isset( $feed_options['tweetpoststyle'] ) ) ? ' ctf-' . $feed_options['tweetpoststyle'] . '-style' : '';
if ( ! empty( $feed_options['height'] ) ) $ctf_feed_classes .= ' ctf-fixed-height';
$ctf_feed_classes .= $feed_options['width_mobile_no_fixed'] ? ' ctf-width-resp' : '';
if ( $check_for_duplicates ) { $ctf_feed_classes .= ' ctf-no-duplicates'; }
if( isset($feed_options['colorpalette']) && $feed_options['colorpalette'] !== 'inherit' && $feed_id !== false ){
$feed_id_class = $feed_options['colorpalette'] === 'custom' ? ('_' . $feed_id) : '';
$ctf_feed_classes .= ' ctf_palette_' . $feed_options['colorpalette'] . $feed_id_class;
}
$ctf_feed_classes = apply_filters( 'ctf_feed_classes', $ctf_feed_classes );
return 'class=" ' . $ctf_feed_classes .'" ';
}
}
public static function get_tweet_count( $data ) {
if ( isset( $data['statuses'] ) && is_array( $data['statuses'] ) ) {
$tweet_count = count( $data['statuses'] );
} elseif ( is_array( $data ) ) {
$tweet_count = count( $data );
} else {
$tweet_count = 0;
}
return $tweet_count;
}
/**
* Get Feed Type
*
* @since 2.0
*/
public static function get_feed_type( $feed_options ) {
$ctf_feed_type = ! empty ( $feed_options['type'] ) ? $feed_options['type'] : 'multiple';
return $ctf_feed_type;
}
public static function get_retweet_count( $data ) {
if ( isset( $data['retweeted_status']['retweet_count'] ) ) {
return $data['retweeted_status']['retweet_count'];
} else {
return $data['retweet_count'];
}
}
public static function get_favorite_count( $data ) {
if ( isset( $data['retweeted_status']['favorite_count'] ) ) {
return $data['retweeted_status']['favorite_count'];
} else {
return $data['favorite_count'];
}
}
/**
* Get Global Twitter Feed CSS
*
* @since 2.0
* @return array
*/
public static function parse_css_style ( $css_array ) {
$style = '';
$color_elements = [
'color',
'background',
'background-color'
];
$size_elements = [
'border-radius',
'height',
'width',
'font-size',
'margin',
'margin-top',
'margin-bottom',
'margin-left',
'margin-right',
'padding',
'padding-top',
'padding-bottom',
'padding-left',
'padding-right'
];
$border_elements = [
'border',
'border-top',
'border-bottom',
'border-left',
'border-right'
];
foreach ($css_array as $element) {
$items_css = '';
if( isset( $element['properties'] ) ){
foreach ($element['properties'] as $property => $item) {
if( in_array( $property, $color_elements) && !empty( $item['value'] ) && $item['value'] !== '#' ){
$items_css .= $property . ':' . stripcslashes($item['value']) . ( isset( $item['important'] ) ? '!important;' : ';' );
}
if( in_array( $property, $size_elements) && !empty( $item['value'] ) && $item['value'] !== '0' && $item['value'] !== 'inherit' ){
$items_css .= $property . ':' . stripcslashes($item['value']) . ( isset( $item['unit'] ) ? $item['unit'] : 'px' ) . ( isset( $item['important'] ) ? '!important;' : ';' );
}
if( in_array( $property, $border_elements) && !empty( $item['size'] ) && $item['size'] !== '0' && !empty( $item['color'] ) && $item['color'] !== '#' ){
$items_css .= $property . ':' . stripcslashes($item['size']) . 'px ' . ( isset( $item['style'] ) ? $item['style'] : 'solid' ) . ' ' . stripcslashes($item['color']) . ( isset( $item['important'] ) ? '!important;' : ';' );
}
}
$style .= !empty($items_css) ? $element['selector'] . '{'.$items_css .'}' : '';
}
}
return $style;
}
}