: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
$posts = $this->merge_posts( $new_post_sets, $settings );
if ( ! empty( $this->post_data ) && is_array( $this->post_data ) ) {
$posts = array_merge( $this->post_data, $posts );
} elseif ( $one_post_found ) {
$this->one_post_found = true;
$this->post_data = $posts;
if ( isset( $next_page_found ) && $next_page_found ) {
$this->next_pages = $next_pages;
$this->next_pages = false;
* attempts to connect and retrieve tweets from the Twitter api
* @return mixed|string object containing the response
public function apiConnectionResponse( $get_fields, $end_point, $settings ){
// Only can be set in the options page
$request_settings = array(
'consumer_key' => $settings['consumer_key'],
'consumer_secret' => $settings['consumer_secret'],
'access_token' => $settings['access_token'],
'access_token_secret' => $settings['access_token_secret'],
$twitter_connect = new CtfOauthConnect( $request_settings, $end_point );
$twitter_connect->setUrlBase();
$twitter_connect->setGetFields( $get_fields );
$twitter_connect->setRequestMethod( $settings['request_method'] );
return $twitter_connect->performRequest();
public static function reduceTweetSetData( $tweets ) {
$tweet_count = count( $tweets );
$trimmed_tweets = array();
foreach ( $tweets as $tweet ) {
$trimmed_tweet = array();
$trimmed_tweet['user']['name'] = $tweet['user']['name'];
$trimmed_tweet['user']['screen_name'] = $tweet['user']['screen_name'];
$trimmed_tweet['user']['verified'] = $tweet['user']['verified'];
$trimmed_tweet['user']['profile_image_url_https'] = $tweet['user']['profile_image_url_https'];
$trimmed_tweet['user']['utc_offset'] = $tweet['user']['utc_offset'];
$trimmed_tweet['user']['statuses_count'] = $tweet['user']['statuses_count'];
$trimmed_tweet['user']['followers_count'] = $tweet['user']['followers_count'];
$trimmed_tweet['user']['description'] = $tweet['user']['description'];
$trimmed_tweet['text'] = isset( $tweet['text'] ) ? $tweet['text'] : $tweet['full_text'];
$trimmed_tweet['id_str'] = $tweet['id_str'];
$trimmed_tweet['created_at'] = $tweet['created_at'];
$trimmed_tweet['retweet_count'] = $tweet['retweet_count'];
$trimmed_tweet['favorite_count'] = $tweet['favorite_count'];
if ( isset( $tweet['entities']['urls'][0] ) ) {
foreach ( $tweet['entities']['urls'] as $url ) {
$trimmed_tweet['entities']['urls'][] = array(
'expanded_url' => $url['expanded_url'],
'display_url' => $url['display_url'],
if ( isset( $tweet['retweeted_status'] ) ) {
$trimmed_tweet['retweeted_status']['user']['name'] = $tweet['retweeted_status']['user']['name'];
$trimmed_tweet['retweeted_status']['user']['screen_name'] = $tweet['retweeted_status']['user']['screen_name'];
$trimmed_tweet['retweeted_status']['user']['verified'] = $tweet['retweeted_status']['user']['verified'];
$trimmed_tweet['retweeted_status']['user']['profile_image_url_https'] = $tweet['retweeted_status']['user']['profile_image_url_https'];
$trimmed_tweet['retweeted_status']['user']['utc_offset'] = $tweet['retweeted_status']['user']['utc_offset'];
$trimmed_tweet['retweeted_status']['text'] = isset( $tweet['retweeted_status']['text'] ) ? $tweet['retweeted_status']['text'] : $tweet['retweeted_status']['full_text'];
$trimmed_tweet['retweeted_status']['id_str'] = $tweet['retweeted_status']['id_str'];
$trimmed_tweet['retweeted_status']['created_at'] = $tweet['retweeted_status']['created_at'];
$trimmed_tweet['retweeted_status']['retweet_count'] = $tweet['retweeted_status']['retweet_count'];
$trimmed_tweet['retweeted_status']['favorite_count'] = $tweet['retweeted_status']['favorite_count'];
if ( isset( $tweet['retweeted_status']['entities']['urls'][0] ) ) {
foreach ( $tweet['retweeted_status']['entities']['urls'] as $url ) {
$trimmed_tweet['retweeted_status']['entities']['urls'][] = array(
'expanded_url' => $url['expanded_url'],
'display_url' => $url['display_url'],
if ( isset( $tweet['retweeted_status']['quoted_status'] ) ) {
$trimmed_tweet['retweeted_status']['quoted_status']['user']['name'] = $tweet['retweeted_status']['quoted_status']['user']['name'];
$trimmed_tweet['retweeted_status']['quoted_status']['user']['screen_name'] = $tweet['retweeted_status']['quoted_status']['user']['screen_name'];
$trimmed_tweet['retweeted_status']['quoted_status']['user']['verified'] = $tweet['retweeted_status']['quoted_status']['user']['verified'];
$trimmed_tweet['retweeted_status']['quoted_status']['user']['profile_image_url_https'] = $tweet['retweeted_status']['quoted_status']['user']['profile_image_url_https'];
$trimmed_tweet['retweeted_status']['quoted_status']['text'] = isset( $tweet['retweeted_status']['quoted_status']['text'] ) ? $tweet['retweeted_status']['quoted_status']['text'] : $tweet['retweeted_status']['quoted_status']['full_text'];
$trimmed_tweet['retweeted_status']['quoted_status']['id_str'] = $tweet['retweeted_status']['quoted_status']['id_str'];
$trimmed_tweet['retweeted_status']['quoted_status']['created_at'] = $tweet['retweeted_status']['quoted_status']['created_at'];
if ( isset( $tweet['retweeted_status']['quoted_status']['entities']['urls'][0] ) ) {
foreach ( $tweet['retweeted_status']['quoted_status']['entities']['urls'] as $url ) {
$trimmed_tweet['retweeted_status']['quoted_status']['entities']['urls'][] = array(
'expanded_url' => $url['expanded_url'],
'display_url' => $url['display_url'],
if ( isset( $tweet['quoted_status'] ) ) {
$trimmed_tweet['quoted_status']['user']['name'] = $tweet['quoted_status']['user']['name'];
$trimmed_tweet['quoted_status']['user']['screen_name'] = $tweet['quoted_status']['user']['screen_name'];
$trimmed_tweet['quoted_status']['user']['profile_image_url_https'] = $tweet['quoted_status']['user']['profile_image_url_https'];
$trimmed_tweet['quoted_status']['user']['verified'] = $tweet['quoted_status']['user']['verified'];
$trimmed_tweet['quoted_status']['text'] = isset( $tweet['quoted_status']['text'] ) ? $tweet['quoted_status']['text'] : $tweet['quoted_status']['full_text'];
$trimmed_tweet['quoted_status']['id_str'] = $tweet['quoted_status']['id_str'];
$trimmed_tweet['quoted_status']['created_at'] = $tweet['quoted_status']['created_at'];
if ( isset( $tweet['quoted_status']['entities']['urls'][0] ) ) {
foreach ( $tweet['quoted_status']['entities']['urls'] as $url ) {
$trimmed_tweet['quoted_status']['entities']['urls'][] = array(
'expanded_url' => $url['expanded_url'],
'display_url' => $url['display_url'],
if ( isset( $tweet['in_reply_to_screen_name'] ) ) {
$trimmed_tweet['in_reply_to_screen_name'] = $tweet['in_reply_to_screen_name'];
$trimmed_tweet['entities']['user_mentions'][0]['name'] = isset( $tweet['entities']['user_mentions'][0]['name'] ) ? $tweet['entities']['user_mentions'][0]['name'] : '';
$trimmed_tweet['in_reply_to_status_id_str'] = $tweet['in_reply_to_status_id_str'];
if ( isset( $tweet['extended_entities']['media'] ) ) {
// if there is media, we need to remove the media url from the tweet text
if ( isset( $tweet['extended_entities']['media'][0]['url'] ) ) {
$trimmed_tweet['text'] = CTF_Feed::removeStringFromText( $tweet['extended_entities']['media'][0]['url'], $trimmed_tweet['text'] );
$num_media = count( $tweet['extended_entities']['media'] );
for ( $i = 0; $i < $num_media; $i++ ) {
$trimmed_tweet['extended_entities']['media'][$i]['media_url_https'] = $tweet['extended_entities']['media'][$i]['media_url_https'];
$trimmed_tweet['extended_entities']['media'][$i]['type'] = $tweet['extended_entities']['media'][$i]['type'];
if ( isset( $tweet['extended_entities']['media'][$i]['sizes'] ) ) {
$trimmed_tweet['extended_entities']['media'][$i]['sizes'] = $tweet['extended_entities']['media'][$i]['sizes'];
if ( $tweet['extended_entities']['media'][$i]['type'] == 'video' || $tweet['extended_entities']['media'][$i]['type'] == 'animated_gif' ) {
$preferred_variant = $tweet['extended_entities']['media'][$i]['video_info']['variants'][0]['url'];
foreach ( $tweet['extended_entities']['media'][$i]['video_info']['variants'] as $variant ) {
if ( isset( $variant['content_type'] )
&& $variant['content_type'] == 'video/mp4'
&& $variant['bitrate'] > $highest_bitrate ) {
$highest_bitrate = $variant['bitrate'];
$preferred_variant = $variant['url'];
$trimmed_tweet['extended_entities']['media'][$i]['video_info']['variants'][0]['url'] = $preferred_variant;
$trimmed_tweet['extended_entities']['media'][$i]['video_info']['variants'][0]['bitrate'] = $highest_bitrate;
} elseif ( isset( $tweet['entities']['media'] ) ) {
// if there is media, we need to remove the media url from the tweet text
if ( isset( $tweet['entities']['media'][0]['url'] ) ) {
$trimmed_tweet['text'] = CTF_Feed::removeStringFromText( $tweet['entities']['media'][0]['url'], $trimmed_tweet['text'] );
$num_media = count( $tweet['entities']['media'] );
for ( $i = 0; $i < $num_media; $i++ ) {
$trimmed_tweet['entities']['media'][$i]['media_url_https'] = $tweet['entities']['media'][$i]['media_url_https'];
$trimmed_tweet['entities']['media'][$i]['type'] = $tweet['entities']['media'][$i]['type'];
if ( isset( $tweet['entities']['media'][$i]['sizes'] ) ) {
$trimmed_tweet['entities']['media'][$i]['sizes'] = $tweet['entities']['media'][$i]['sizes'];
if ( $tweet['entities']['media'][$i]['type'] == 'video' || $tweet['entities']['media'][$i]['type'] == 'animated_gif' ) {
$preferred_variant = $tweet['entities']['media'][$i]['video_info']['variants'][0]['url'];
foreach ( $tweet['entities']['media'][$i]['video_info']['variants'] as $variant ) {
if ( isset( $variant['content_type'] )
&& $variant['content_type'] == 'video/mp4'
&& $variant['bitrate'] > $highest_bitrate ) {
$highest_bitrate = $variant['bitrate'];
$preferred_variant = $variant['url'];
$trimmed_tweet['entities']['media'][$i]['video_info']['variants'][0]['url'] = $preferred_variant;
$trimmed_tweet['entities']['media'][$i]['video_info']['variants'][0]['bitrate'] = $highest_bitrate;
if ( isset( $tweet['retweeted_status']['extended_entities']['media'] ) ) {
// if there is media, we need to remove the media url from the tweet text
$retweeted_text = isset( $tweet['retweeted_status']['full_text'] ) ? $tweet['retweeted_status']['full_text'] : $tweet['retweeted_status']['text'];
if ( isset( $tweet['retweeted_status']['extended_entities']['media'][0]['url'] ) ) {
$trimmed_tweet['retweeted_status']['text'] = CTF_Feed::removeStringFromText( $tweet['retweeted_status']['extended_entities']['media'][0]['url'], $retweeted_text );
$num_media = count( $tweet['retweeted_status']['extended_entities']['media'] );
for ( $i = 0; $i < $num_media; $i++ ) {
$trimmed_tweet['retweeted_status']['extended_entities']['media'][$i]['media_url_https'] = $tweet['retweeted_status']['extended_entities']['media'][$i]['media_url_https'];
$trimmed_tweet['retweeted_status']['extended_entities']['media'][$i]['type'] = $tweet['retweeted_status']['extended_entities']['media'][$i]['type'];
if ( isset( $tweet['retweeted_status']['extended_entities']['media'][$i]['sizes'] ) ) {
$trimmed_tweet['retweeted_status']['extended_entities']['media'][$i]['sizes'] = $tweet['retweeted_status']['extended_entities']['media'][$i]['sizes'];
if ( $tweet['retweeted_status']['extended_entities']['media'][$i]['type'] == 'video' || $tweet['retweeted_status']['extended_entities']['media'][$i]['type'] == 'animated_gif' ) {
foreach ( $tweet['retweeted_status']['extended_entities']['media'][$i]['video_info']['variants'] as $variant ) {
if ( isset( $variant['content_type'] ) && $variant['content_type'] == 'video/mp4' ) {
$trimmed_tweet['retweeted_status']['extended_entities']['media'][$i]['video_info']['variants'][$i]['url'] = $variant['url'];
if ( ! isset( $trimmed_tweet['retweeted_status']['extended_entities']['media'][$i]['video_info']['variants'][$i]['url'] ) ) {
$trimmed_tweet['retweeted_status']['extended_entities']['media'][$i]['video_info']['variants'][$i]['url'] = $tweet['retweeted_status']['extended_entities']['media'][$i]['video_info']['variants'][0]['url'];
} elseif ( isset( $tweet['retweeted_status']['entities']['media'] ) ) {
// if there is media, we need to remove the media url from the tweet text
$retweeted_text = isset( $tweet['retweeted_status']['full_text'] ) ? $tweet['retweeted_status']['full_text'] : $tweet['retweeted_status']['text'];
if ( isset( $tweet['retweeted_status']['entities']['media'][0]['url'] ) ) {
$trimmed_tweet['retweeted_status']['text'] = CTF_Feed::removeStringFromText( $tweet['retweeted_status']['entities']['media'][0]['url'], $retweeted_text );
$num_media = count( $tweet['retweeted_status']['entities']['media'] );
for( $i = 0; $i < $num_media; $i++ ) {
$trimmed_tweet['retweeted_status']['entities']['media'][$i]['media_url_https'] = $tweet['retweeted_status']['entities']['media'][$i]['media_url_https'];
$trimmed_tweet['retweeted_status']['entities']['media'][$i]['type'] = $tweet['retweeted_status']['entities']['media'][$i]['type'];
if ( isset( $tweet['retweeted_status']['entities']['media'][$i]['sizes'] ) ) {
$trimmed_tweet['retweeted_status']['entities']['media'][$i]['sizes'] = $tweet['retweeted_status']['entities']['media'][$i]['sizes'];
if ( $tweet['retweeted_status']['entities']['media'][$i]['type'] == 'video' || $tweet['retweeted_status']['entities']['media'][$i]['type'] == 'animated_gif' ) {
foreach ( $tweet['retweeted_status']['entities']['media'][$i]['video_info']['variants'] as $variant ) {
if ( isset( $variant['content_type'] ) && $variant['content_type'] == 'video/mp4' ) {
$trimmed_tweet['retweeted_status']['entities']['media'][$i]['video_info']['variants'][$i]['url'] = $variant['url'];
if ( ! isset( $trimmed_tweet['retweeted_status']['entities']['media'][$i]['video_info']['variants'][$i]['url'] ) ) {
$trimmed_tweet['retweeted_status']['entities']['media'][$i]['video_info']['variants'][$i]['url'] = $tweet['retweeted_status']['entities']['media'][$i]['video_info']['variants'][0]['url'];
} elseif ( isset( $tweet['quoted_status']['extended_entities']['media'] ) ) {
// if there is media, we need to remove the media url from the tweet text
$quoted_text = isset( $tweet['quoted_status']['full_text'] ) ? $tweet['quoted_status']['full_text'] : $tweet['quoted_status']['text'];
if ( isset( $tweet['quoted_status']['extended_entities']['media'][0]['url'] ) ) {
$trimmed_tweet['quoted_status']['text'] = CTF_Feed::removeStringFromText( $tweet['quoted_status']['extended_entities']['media'][0]['url'], $quoted_text );
$num_media = count( $tweet['quoted_status']['extended_entities']['media'] );
for( $i = 0; $i < $num_media; $i++ ) {
$trimmed_tweet['quoted_status']['extended_entities']['media'][$i]['media_url_https'] = $tweet['quoted_status']['extended_entities']['media'][$i]['media_url_https'];
$trimmed_tweet['quoted_status']['extended_entities']['media'][$i]['type'] = $tweet['quoted_status']['extended_entities']['media'][$i]['type'];
if ( $tweet['quoted_status']['extended_entities']['media'][$i]['type'] == 'video' || $tweet['quoted_status']['extended_entities']['media'][$i]['type'] == 'animated_gif' ) {
foreach ( $tweet['quoted_status']['extended_entities']['media'][$i]['video_info']['variants'] as $variant ) {
if ( isset( $variant['content_type'] ) && $variant['content_type'] == 'video/mp4' ) {
$trimmed_tweet['quoted_status']['extended_entities']['media'][$i]['video_info']['variants'][$i]['url'] = $variant['url'];
if ( ! isset( $trimmed_tweet['quoted_status']['extended_entities']['media'][$i]['video_info']['variants'][$i]['url'] ) ) {
$trimmed_tweet['quoted_status']['extended_entities']['media'][$i]['video_info']['variants'][$i]['url'] = $tweet['quoted_status']['extended_entities']['media'][$i]['video_info']['variants'][0]['url'];
} elseif ( isset( $tweet['quoted_status']['entities']['media'] ) ) {
// if there is media, we need to remove the media url from the tweet text
$quoted_text = isset( $tweet['quoted_status']['full_text'] ) ? $tweet['quoted_status']['full_text'] : $tweet['quoted_status']['text'];
if ( isset( $tweet['quoted_status']['entities']['media'][0]['url'] ) ) {
$trimmed_tweet['quoted_status']['text'] = CTF_Feed::removeStringFromText( $tweet['quoted_status']['entities']['media'][0]['url'], $quoted_text );
$num_media = count( $tweet['quoted_status']['entities']['media'] );
for( $i = 0; $i < $num_media; $i++ ) {
$trimmed_tweet['quoted_status']['entities']['media'][$i]['media_url_https'] = $tweet['quoted_status']['entities']['media'][$i]['media_url_https'];
$trimmed_tweet['quoted_status']['entities']['media'][$i]['type'] = $tweet['quoted_status']['entities']['media'][$i]['type'];
if ( $tweet['quoted_status']['entities']['media'][$i]['type'] == 'video' || $tweet['quoted_status']['entities']['media'][$i]['type'] == 'animated_gif' ) {
foreach ( $tweet['quoted_status']['entities']['media'][$i]['video_info']['variants'] as $variant ) {
if ( isset( $variant['content_type'] ) && $variant['content_type'] == 'video/mp4' ) {
$trimmed_tweet['quoted_status']['entities']['media'][$i]['video_info']['variants'][$i]['url'] = $variant['url'];
if ( ! isset( $trimmed_tweet['quoted_status']['entities']['media'][$i]['video_info']['variants'][$i]['url'] ) ) {
$trimmed_tweet['quoted_status']['entities']['media'][$i]['video_info']['variants'][$i]['url'] = $tweet['quoted_status']['entities']['media'][$i]['video_info']['variants'][0]['url'];
if ( isset( $tweet['retweeted_status']['quoted_status']['extended_entities']['media'] ) ) {
// if there is media, we need to remove the media url from the tweet text
$retweeted_text = isset( $tweet['retweeted_status']['quoted_status']['full_text'] ) ? $tweet['retweeted_status']['quoted_status']['full_text'] : $tweet['retweeted_status']['quoted_status']['text'];
if ( isset( $tweet['retweeted_status']['quoted_status']['extended_entities']['media'][0]['url'] ) ) {
$trimmed_tweet['retweeted_status']['quoted_status']['text'] = CTF_Feed::removeStringFromText( $tweet['retweeted_status']['quoted_status']['extended_entities']['media'][0]['url'], $retweeted_text );
$num_media = count( $tweet['retweeted_status']['quoted_status']['extended_entities']['media'] );
for ( $i = 0; $i < $num_media; $i++ ) {
$trimmed_tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['media_url_https'] = $tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['media_url_https'];
$trimmed_tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['type'] = $tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['type'];
if ( isset( $tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['sizes'] ) ) {
$trimmed_tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['sizes'] = $tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['sizes'];
if ( $tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['type'] == 'video' || $tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['type'] == 'animated_gif' ) {
foreach ( $tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['video_info']['variants'] as $variant ) {
if ( isset( $variant['content_type'] ) && $variant['content_type'] == 'video/mp4' ) {
$trimmed_tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['video_info']['variants'][$i]['url'] = $variant['url'];
if ( ! isset( $trimmed_tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['video_info']['variants'][$i]['url'] ) ) {
$trimmed_tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['video_info']['variants'][$i]['url'] = $tweet['retweeted_status']['quoted_status']['extended_entities']['media'][$i]['video_info']['variants'][0]['url'];
} elseif ( isset( $tweet['retweeted_status']['quoted_status']['entities']['media'] ) ) {
// if there is media, we need to remove the media url from the tweet text
$retweeted_text = isset( $tweet['retweeted_status']['quoted_status']['full_text'] ) ? $tweet['retweeted_status']['quoted_status']['full_text'] : $tweet['retweeted_status']['quoted_status']['text'];
if ( isset( $tweet['retweeted_status']['quoted_status']['entities']['media'][0]['url'] ) ) {
$trimmed_tweet['retweeted_status']['quoted_status']['text'] = CTF_Feed::removeStringFromText( $tweet['retweeted_status']['quoted_status']['entities']['media'][0]['url'], $retweeted_text );
$num_media = count( $tweet['retweeted_status']['quoted_status']['entities']['media'] );
for( $i = 0; $i < $num_media; $i++ ) {
$trimmed_tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['media_url_https'] = $tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['media_url_https'];
$trimmed_tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['type'] = $tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['type'];
if ( isset( $tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['sizes'] ) ) {
$trimmed_tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['sizes'] = $tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['sizes'];
if ( $tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['type'] == 'video' || $tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['type'] == 'animated_gif' ) {
foreach ( $tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['video_info']['variants'] as $variant ) {
if ( isset( $variant['content_type'] ) && $variant['content_type'] == 'video/mp4' ) {
$trimmed_tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['video_info']['variants'][$i]['url'] = $variant['url'];
if ( ! isset( $trimmed_tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['video_info']['variants'][$i]['url'] ) ) {
$trimmed_tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['video_info']['variants'][$i]['url'] = $tweet['retweeted_status']['quoted_status']['entities']['media'][$i]['video_info']['variants'][0]['url'];
//remove the url from the text if it links to a quoted tweet that is already linked to
if ( isset( $tweet['quoted_status'] ) ) {
$maybe_remove_index = count( $tweet['entities']['urls'] ) - 1;
if ( isset( $tweet['entities']['urls'][$maybe_remove_index]['url'] ) ) {
$text = isset( $trimmed_tweet['full_text'] ) ? $trimmed_tweet['full_text'] : $trimmed_tweet['text'];
$trimmed_tweet['text'] = CTF_Feed::removeStringFromText( $tweet['entities']['urls'][$maybe_remove_index]['url'], $text );
$api_twitter_card = false;
if ( isset( $tweet['card'] ) ) {
$api_twitter_card = self::parse_api_card_data($tweet['card']);
// used to generate twitter cards
if ( isset( $tweet['entities']['urls'][0]['expanded_url'] ) ) {
$trimmed_tweet['entities']['urls'][0]['expanded_url'] = $tweet['entities']['urls'][0]['expanded_url'];
$twitter_card = CTF_Feed::maybeGetTwitterCardData( $tweet['entities']['urls'][0]['expanded_url'], $trimmed_tweet['id_str'] );
if ( ! empty( $twitter_card ) ) {
$trimmed_tweet['twitter_card'] = $twitter_card;
$remove_url_from_tweet = apply_filters( 'ctf_should_remove_url_from_text', true );
if ( ! empty( $twitter_card["twitter:card"] ) && isset( $tweet['entities']['urls'][0]['url'] ) && $remove_url_from_tweet ) {
$trimmed_tweet['text'] = CTF_Feed::removeStringFromText( $tweet['entities']['urls'][0]['url'], $trimmed_tweet['text'] );
} elseif ( $twitter_card !== false ) {
$trimmed_tweet['twitter_card'] = $twitter_card;
if ( isset( $tweet['retweeted_status']['entities']['urls'][0]['expanded_url'] ) ) {
$trimmed_tweet['retweeted_status']['entities']['urls'][0]['expanded_url'] = $tweet['retweeted_status']['entities']['urls'][0]['expanded_url'];
$twitter_card = CTF_Feed::maybeGetTwitterCardData( $tweet['retweeted_status']['entities']['urls'][0]['expanded_url'], $trimmed_tweet['retweeted_status']['id_str'] );
if ( ! empty( $twitter_card ) ) {
$trimmed_tweet['retweeted_status']['twitter_card'] = $twitter_card;
$retweeted_text = isset( $tweet['retweeted_status']['full_text'] ) ? $tweet['retweeted_status']['full_text'] : $tweet['retweeted_status']['text'];
$remove_url_from_tweet = apply_filters( 'ctf_should_remove_url_from_text', true );
if ( ! empty( $twitter_card["twitter:card"] ) && isset( $tweet['retweeted_status']['entities']['urls'][0]['url'] ) && $remove_url_from_tweet ) {
$trimmed_tweet['retweeted_status']['text'] = CTF_Feed::removeStringFromText( $tweet['retweeted_status']['entities']['urls'][0]['url'], $retweeted_text );
} elseif ( $twitter_card !== false ) {
$trimmed_tweet['twitter_card'] = $twitter_card;
if ( ! empty( $api_twitter_card ) ) {
$trimmed_tweet['twitter_card'] = $api_twitter_card;
if ( isset( $tweet['entities']['urls'][0]['expanded_url'] ) ) {
$target_one = $tweet['entities']['urls'][0]['expanded_url'];
$target_two = $tweet['entities']['urls'][0]['url'];
$remove_url_from_tweet = apply_filters( 'ctf_should_remove_url_from_text', true );
if ( $remove_url_from_tweet ) {
$trimmed_tweet['text'] = CTF_Feed::removeStringFromText( $target_one, $trimmed_tweet['text'] );
$trimmed_tweet['text'] = CTF_Feed::removeStringFromText( $target_two, $trimmed_tweet['text'] );
if ( isset( $tweet['retweeted_status']['entities']['urls'][0]['expanded_url'] ) ) {
$target_one = $tweet['retweeted_status']['entities']['urls'][0]['expanded_url'];
$target_two = $tweet['retweeted_status']['entities']['urls'][0]['url'];
$remove_url_from_tweet = apply_filters( 'ctf_should_remove_url_from_text', true );
if ( $remove_url_from_tweet ) {
$trimmed_tweet['retweeted_status']['text'] = CTF_Feed::removeStringFromText( $target_one, $trimmed_tweet['retweeted_status']['text'] );
$trimmed_tweet['retweeted_status']['text'] = CTF_Feed::removeStringFromText( $target_two, $trimmed_tweet['retweeted_status']['text'] );
$trimmed_tweets[] = $trimmed_tweet;
public static function filterTweetSet( $tweet_set, $settings ){
$tweets_to_remove_strip_ctf = str_replace( 'ctf_', '', $settings['remove_by_id'] );
$ids_of_tweets_to_remove = ! empty( $tweets_to_remove_strip_ctf ) ? explode( ',', str_replace( ' ', '', $tweets_to_remove_strip_ctf ) ) : '';
$tweets_that_pass_filter = array();
foreach ( $tweet_set as $tweet ) {
$retweet_id = isset( $tweet['retweeted_status']['id_str'] ) ? $tweet['retweeted_status']['id_str'] : '';
if ( ! empty( $retweet_id ) && ! $settings['includeretweets'] ) {
} elseif ( !$settings['includereplies'] && !$settings['selfreplies'] && isset( $tweet['in_reply_to_screen_name'] ) ) {
} elseif ( !$settings['includereplies']
&& $settings['selfreplies']
&& isset( $tweet['in_reply_to_screen_name'] )
&& $tweet['in_reply_to_screen_name'] !== $tweet['user']['screen_name']) {
} elseif ( ! empty( $ids_of_tweets_to_remove ) && in_array( $tweet['id_str'], $ids_of_tweets_to_remove ) ) {
} elseif ( CTF_Feed::tweetShouldBeRemoved( $tweet, $settings ) ) {
$tweets_that_pass_filter[] = $tweet;
return $tweets_that_pass_filter;
public static function tweetShouldBeRemoved( $tweet, $settings )
$good_text = ! empty( $settings['includewords'] ) ? explode( ',', str_replace( ' ', '', $settings['includewords'] ) ) : '';
$bad_text = ! empty( $settings['excludewords'] ) ? explode( ',', str_replace( ' ', '', $settings['excludewords'] ) ) : '';
$includewords_any_all = $settings['includeanyall'];
$excludewords_any_all = $settings['excludeanyall'];
$filter_and_or = $settings['filterandor'];
if ( isset( $tweet['retweeted_status']['full_text'] ) ) {
$tweet_text = $tweet['retweeted_status']['full_text'];
} elseif ( isset( $tweet['retweeted_status']['text'] ) ) {
$tweet_text = $tweet['retweeted_status']['text'];