HEX
Server: nginx/1.27.1
System: Linux in-4 5.15.0-131-generic #141-Ubuntu SMP Fri Jan 10 21:18:28 UTC 2025 x86_64
User: ilikadirect (1186)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source
Upload Files
File: /storage/v6964/testingff/public_html/fdfctr/wp-content/plugins/gn-publisher/utilities.php
<?php

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Returns true if the user agent making the current request is Google FeedFetcher.
 * 
 * @since 1.0.5
 * 
 * @return boolean
 */
function gnpub_is_feedfetcher() {
	if ( ! isset( $_SERVER['HTTP_USER_AGENT'] ) ) {
		return false;
	}

	$user_agent_signature = "FeedFetcher-Google";
	$user_agent = $_SERVER['HTTP_USER_AGENT'];

	return ( stripos( $user_agent, $user_agent_signature ) !== false );
}

/**
 * Returns a list of feeds which have been accessed by Google FeedFetcher.
 * 
 * @since 1.0.5
 * 
 * @return array
 */
function gnpub_feed_list() {
	$feed_list = (array) get_option( 'gnpub_feed_list', array() );

	return $feed_list;
}

/**
 * Add a feed to the list of feeds the plugin is aware of.
 * 
 * @since 1.0.5
 * 
 * @param string $feed_url
 * @param \WP_Query $wp_query
 */
function gnpub_add_feed( $feed_url, $wp_query ) {
	$feed_list = (array) get_option( 'gnpub_feed_list', array() );

	$query = gnpub_reduce_query( $wp_query );
	$query['query_timestamp'] = current_time( 'timestamp' );

	$feed_list[$feed_url] = gnpub_reduce_query( $wp_query );

	update_option( 'gnpub_feed_list', $feed_list );
}

/**
 * Takes a WP_Query instance and transforms it into a simple array
 * with the query parameters we care about.
 * 
 * @since 1.0.5
 * 
 * @param \WP_Query $wp_query
 * 
 * @return array
 */
function gnpub_reduce_query( $wp_query ) {
	$keys = array(
		'cat',
		'category_name',
		'category__and',
		'category__in',
		'author',
		'author_name',
		'author__in',
		'author__not_in',
		'tag',
		'tag_id',
		'tag__and',
		'tag__in',
		'tag__not_in',
		'tag_slug__and',
		'tag_slug__in',
		's'
	);

	return array_intersect_key(
		$wp_query->query_vars,
		array_flip( $keys )
	);
}

/**
 * Remove URLs from the feed list which haven't been fetched in over thirty days.
 * 
 * @since 1.0.5
 */
function gnpub_purge_feed() {
	$month_ago = current_time( 'timestamp' ) - MONTH_IN_SECONDS;
	$feed_list = gnpub_feed_list();

	$feed_list = array_filter( $feed_list, function( $feed_query ) use ( $month_ago ) {
		return $feed_query['query_timestamp'] >= $month_ago;
	} );

	update_option( 'gnpub_feed_list', $feed_list );
}

/**
 * Publish feeds to the hub.
 * 
 * @since 1.0.5
 * 
 * @param array $feed_urls
 */
function gnpub_publish_feeds( $feed_urls ) {
	$post_string = 'hub.mode=publish';

	foreach ( $feed_urls as $feed_url ) {
		$post_string .= '&hub.url=' . esc_url( $feed_url );
	}

	$wp_version = get_bloginfo( 'version' );
	$user_agent = apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) );

	$args = array(
		'timeout' => 100,
		'limit_response_size' => 1048576,
		'redirection' => 20,
		'user-agent' => $user_agent . "; PubSubHubbub/WebSub",
		'body' => $post_string,
		'blocking' => false, // We do not need the response.
		'headers' => array(
			'Content-Type' => 'application/x-www-form-urlencoded'
		)
	);

	update_option( 'gnpub_websub_last_ping', current_time( 'timestamp' ) );

	wp_remote_post( 'https://pubsubhubbub.appspot.com', $args );

}

/**
 * Does the same as get_self_link which is only available in WP
 * >= 5.3.
 * 
 * @since 1.0.8
 * 
 * @return string
 */
function gnpub_current_feed_link() {
	$host = @parse_url( home_url() );
	return set_url_scheme( 'http://' . $host['host'] . stripslashes_deep( $_SERVER['REQUEST_URI'] ) );
}

/**
 * Fix for feed page link with non-english language characters
 * Issue : Feed Validation Fails For arabic language #29
 * 
 * @since 1.5.3
 * 
 * @return string
 */
function gnpub_feed_channel_link() {
	$url = esc_url( apply_filters( 'self_link', get_self_link() ) );
	$host_url = @parse_url($url);

	if(isset($host_url['query']))
	{
		$host_url['query']="";
	}

	if(isset($host_url['path']))
	{
		$path_check=explode('/feed/',$host_url['path']);
		

			$tmp_arr=explode('/',$path_check[0]);
			foreach($tmp_arr as $key=>$single)
			{
				$tmp_arr[$key]=strtolower(urlencode(urldecode($single)));
			}
			$host_url['path']=implode('/',$tmp_arr);	
		

	}

	

	echo set_url_scheme($host_url['scheme'].'://'.$host_url['host'].$host_url['path']);

}


/**
 * Fix for single post link with non-english language characters 
 * Issue : Feed Validation Fails For arabic language #29
 * 
 * @since 1.5.3
 * 
 * @return string
 */
function gnpub_feed_post_link($post_url=null) {
	
	if(!$post_url)
	{
		return '';
	}
	$tmp_url = @parse_url($post_url);

	if(isset($tmp_url['query']))
	{
		$tmp_arr_query=explode('&',$tmp_url['query']);
		foreach($tmp_arr_query as $key=>$single)
		{
			$tmp_arr_query[$key]=strtolower(urlencode(urldecode($single)));
		}
		$tmp_url['query']=implode('&',$tmp_arr_query);	
	}

	if(isset($tmp_url['path']))
	{
		$tmp_arr=explode('/',$tmp_url['path']);
		foreach($tmp_arr as $key=>$single)
		{
			$tmp_arr[$key]=strtolower(urlencode(urldecode($single)));
		}
		$tmp_url['path']=implode('/',$tmp_arr);	

	}


	echo set_url_scheme($tmp_url['scheme'].'://'.$tmp_url['host'].$tmp_url['path'].((isset($tmp_url['query']) && !empty($tmp_url['query']))?'?'.$tmp_url['query']:''));

}