WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Платформа для конвертации и монетизации трафика
функция не описана

SimplePie_File::__construct() public WP 1.0

{} Это метод класса: SimplePie_File{}

Хуков нет.

Возвращает

Null. Ничего.

Использование

$SimplePie_File = new SimplePie_File();
$SimplePie_File->__construct( $url, $timeout, $redirects, $headers, $useragent, $force_fsockopen, $curl_options );

Код SimplePie_File::__construct() WP 5.5.3

<?php
public function __construct($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false, $curl_options = array())
{
	if (class_exists('idna_convert'))
	{
		$idn = new idna_convert();
		$parsed = SimplePie_Misc::parse_url($url);
		$url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], NULL);
	}
	$this->url = $url;
	$this->permanent_url = $url;
	$this->useragent = $useragent;
	if (preg_match('/^http(s)?:\/\//i', $url))
	{
		if ($useragent === null)
		{
			$useragent = ini_get('user_agent');
			$this->useragent = $useragent;
		}
		if (!is_array($headers))
		{
			$headers = array();
		}
		if (!$force_fsockopen && function_exists('curl_exec'))
		{
			$this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_CURL;
			$fp = curl_init();
			$headers2 = array();
			foreach ($headers as $key => $value)
			{
				$headers2[] = "$key: $value";
			}
			if (version_compare(SimplePie_Misc::get_curl_version(), '7.10.5', '>='))
			{
				curl_setopt($fp, CURLOPT_ENCODING, '');
			}
			curl_setopt($fp, CURLOPT_URL, $url);
			curl_setopt($fp, CURLOPT_HEADER, 1);
			curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt($fp, CURLOPT_FAILONERROR, 1);
			curl_setopt($fp, CURLOPT_TIMEOUT, $timeout);
			curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout);
			curl_setopt($fp, CURLOPT_REFERER, $url);
			curl_setopt($fp, CURLOPT_USERAGENT, $useragent);
			curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2);
			if (!ini_get('open_basedir') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>='))
			{
				curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1);
				curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects);
			}
			foreach ($curl_options as $curl_param => $curl_value) {
				curl_setopt($fp, $curl_param, $curl_value);
			}

			$this->headers = curl_exec($fp);
			if (curl_errno($fp) === 23 || curl_errno($fp) === 61)
			{
				curl_setopt($fp, CURLOPT_ENCODING, 'none');
				$this->headers = curl_exec($fp);
			}
			if (curl_errno($fp))
			{
				$this->error = 'cURL error ' . curl_errno($fp) . ': ' . curl_error($fp);
				$this->success = false;
			}
			else
			{
				// Use the updated url provided by curl_getinfo after any redirects.
				if ($info = curl_getinfo($fp)) {
					$this->url = $info['url'];
				}
				curl_close($fp);
				$this->headers = SimplePie_HTTP_Parser::prepareHeaders($this->headers, $info['redirect_count'] + 1);
				$parser = new SimplePie_HTTP_Parser($this->headers);
				if ($parser->parse())
				{
					$this->headers = $parser->headers;
					$this->body = trim($parser->body);
					$this->status_code = $parser->status_code;
					if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
					{
						$this->redirects++;
						$location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
						$previousStatusCode = $this->status_code;
						$this->__construct($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
						$this->permanent_url = ($previousStatusCode == 301) ? $location : $url;
						return;
					}
				}
			}
		}
		else
		{
			$this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
			$url_parts = parse_url($url);
			$socket_host = $url_parts['host'];
			if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https')
			{
				$socket_host = "ssl://$url_parts[host]";
				$url_parts['port'] = 443;
			}
			if (!isset($url_parts['port']))
			{
				$url_parts['port'] = 80;
			}
			$fp = @fsockopen($socket_host, $url_parts['port'], $errno, $errstr, $timeout);
			if (!$fp)
			{
				$this->error = 'fsockopen error: ' . $errstr;
				$this->success = false;
			}
			else
			{
				stream_set_timeout($fp, $timeout);
				if (isset($url_parts['path']))
				{
					if (isset($url_parts['query']))
					{
						$get = "$url_parts[path]?$url_parts[query]";
					}
					else
					{
						$get = $url_parts['path'];
					}
				}
				else
				{
					$get = '/';
				}
				$out = "GET $get HTTP/1.1\r\n";
				$out .= "Host: $url_parts[host]\r\n";
				$out .= "User-Agent: $useragent\r\n";
				if (extension_loaded('zlib'))
				{
					$out .= "Accept-Encoding: x-gzip,gzip,deflate\r\n";
				}

				if (isset($url_parts['user']) && isset($url_parts['pass']))
				{
					$out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n";
				}
				foreach ($headers as $key => $value)
				{
					$out .= "$key: $value\r\n";
				}
				$out .= "Connection: Close\r\n\r\n";
				fwrite($fp, $out);

				$info = stream_get_meta_data($fp);

				$this->headers = '';
				while (!$info['eof'] && !$info['timed_out'])
				{
					$this->headers .= fread($fp, 1160);
					$info = stream_get_meta_data($fp);
				}
				if (!$info['timed_out'])
				{
					$parser = new SimplePie_HTTP_Parser($this->headers);
					if ($parser->parse())
					{
						$this->headers = $parser->headers;
						$this->body = $parser->body;
						$this->status_code = $parser->status_code;
						if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
						{
							$this->redirects++;
							$location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
							$previousStatusCode = $this->status_code;
							$this->__construct($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
							$this->permanent_url = ($previousStatusCode == 301) ? $location : $url;
							return;
						}
						if (isset($this->headers['content-encoding']))
						{
							// Hey, we act dumb elsewhere, so let's do that here too
							switch (strtolower(trim($this->headers['content-encoding'], "\x09\x0A\x0D\x20")))
							{
								case 'gzip':
								case 'x-gzip':
									$decoder = new SimplePie_gzdecode($this->body);
									if (!$decoder->parse())
									{
										$this->error = 'Unable to decode HTTP "gzip" stream';
										$this->success = false;
									}
									else
									{
										$this->body = trim($decoder->data);
									}
									break;

								case 'deflate':
									if (($decompressed = gzinflate($this->body)) !== false)
									{
										$this->body = $decompressed;
									}
									else if (($decompressed = gzuncompress($this->body)) !== false)
									{
										$this->body = $decompressed;
									}
									else if (function_exists('gzdecode') && ($decompressed = gzdecode($this->body)) !== false)
									{
										$this->body = $decompressed;
									}
									else
									{
										$this->error = 'Unable to decode HTTP "deflate" stream';
										$this->success = false;
									}
									break;

								default:
									$this->error = 'Unknown content coding';
									$this->success = false;
							}
						}
					}
				}
				else
				{
					$this->error = 'fsocket timed out';
					$this->success = false;
				}
				fclose($fp);
			}
		}
	}
	else
	{
		$this->method = SIMPLEPIE_FILE_SOURCE_LOCAL | SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS;
		if (empty($url) || !($this->body = trim(file_get_contents($url))))
		{
			$this->error = 'file_get_contents could not read the file';
			$this->success = false;
		}
	}
}