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

Snoopy::fetch() public WP 1.0

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

Хуков нет.

Возвращает

Null. Ничего.

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

$Snoopy = new Snoopy();
$Snoopy->fetch( $URI );

Код Snoopy::fetch() WP 5.5.3

<?php
function fetch($URI)
{

	//preg_match("|^([^:]+)://([^:/]+)(:[\d]+)*(.*)|",$URI,$URI_PARTS);
	$URI_PARTS = parse_url($URI);
	if (!empty($URI_PARTS["user"]))
		$this->user = $URI_PARTS["user"];
	if (!empty($URI_PARTS["pass"]))
		$this->pass = $URI_PARTS["pass"];
	if (empty($URI_PARTS["query"]))
		$URI_PARTS["query"] = '';
	if (empty($URI_PARTS["path"]))
		$URI_PARTS["path"] = '';

	switch(strtolower($URI_PARTS["scheme"]))
	{
		case "http":
			$this->host = $URI_PARTS["host"];
			if(!empty($URI_PARTS["port"]))
				$this->port = $URI_PARTS["port"];
			if($this->_connect($fp))
			{
				if($this->_isproxy)
				{
					// using proxy, send entire URI
					$this->_httprequest($URI,$fp,$URI,$this->_httpmethod);
				}
				else
				{
					$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
					// no proxy, send only the path
					$this->_httprequest($path, $fp, $URI, $this->_httpmethod);
				}

				$this->_disconnect($fp);

				if($this->_redirectaddr)
				{
					/* url was redirected, check if we've hit the max depth */
					if($this->maxredirs > $this->_redirectdepth)
					{
						// only follow redirect if it's on this site, or offsiteok is true
						if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
						{
							/* follow the redirect */
							$this->_redirectdepth++;
							$this->lastredirectaddr=$this->_redirectaddr;
							$this->fetch($this->_redirectaddr);
						}
					}
				}

				if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
				{
					$frameurls = $this->_frameurls;
					$this->_frameurls = array();

					foreach ( $frameurls as $frameurl )
					{
						if($this->_framedepth < $this->maxframes)
						{
							$this->fetch($frameurl);
							$this->_framedepth++;
						}
						else
							break;
					}
				}
			}
			else
			{
				return false;
			}
			return true;
			break;
		case "https":
			if(!$this->curl_path)
				return false;
			if(function_exists("is_executable"))
			    if (!is_executable($this->curl_path))
			        return false;
			$this->host = $URI_PARTS["host"];
			if(!empty($URI_PARTS["port"]))
				$this->port = $URI_PARTS["port"];
			if($this->_isproxy)
			{
				// using proxy, send entire URI
				$this->_httpsrequest($URI,$URI,$this->_httpmethod);
			}
			else
			{
				$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
				// no proxy, send only the path
				$this->_httpsrequest($path, $URI, $this->_httpmethod);
			}

			if($this->_redirectaddr)
			{
				/* url was redirected, check if we've hit the max depth */
				if($this->maxredirs > $this->_redirectdepth)
				{
					// only follow redirect if it's on this site, or offsiteok is true
					if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
					{
						/* follow the redirect */
						$this->_redirectdepth++;
						$this->lastredirectaddr=$this->_redirectaddr;
						$this->fetch($this->_redirectaddr);
					}
				}
			}

			if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
			{
				$frameurls = $this->_frameurls;
				$this->_frameurls = array();

				foreach ( $frameurls as $frameurl )
				{
					if($this->_framedepth < $this->maxframes)
					{
						$this->fetch($frameurl);
						$this->_framedepth++;
					}
					else
						break;
				}
			}
			return true;
			break;
		default:
			// not a valid protocol
			$this->error	=	'Invalid protocol "'.$URI_PARTS["scheme"].'"\n';
			return false;
			break;
	}
	return true;
}