View file globalchat/model/gcprocess.class.php

File size: 3Kb
<?php

/**
* gcProcess
*
* Класс для вывода ответа сервера
*/

class gcProcess
{
var $request = false;
var $module = false;
var $requestsAllowed = false;
var $errors = false;

	function __construct ()
	{
	set_time_limit (10);
	}

	/**
	* AddRequest
	*
	* Дополняет список запросов 
	*
	* @$title Метка значения
	* @$value Значение
	*/

	function addRequest ($title, $value)
	{
		if (empty ($this->request[$title]))
		$this->request[$title] = $value;
		if (is_array ($value))
		{
			if (is_array ($this->request[$title]))
				/* Сливаем массивы */
				$this->request[$title] = $this->request[$title] + $value;
			else
			{
			/* Заменяем старое значение новыми данными другого типа */
			$this->errors[] = "Тип добавляемого результата для метки $title должен быть scalar";
			$this->request[$title] = $value;
			}
		}
		else
		{
			if (is_scalar ($this->request[$title]))
			$this->request[$title] = $value;
			else
			{
			/* Заменяем старое значение новыми данными другого типа */
			$this->errors[] = "Тип добавляемого результата для метки $title должен быть array";
			$this->request[$title] = $value;
			}
		}
	}

	
	function requestTo ($module)
	{
		if (empty ($module))
		{
		echo "Редактирование кода (кроме папки /gchat/view/mobile/***.tpl) GlobalChat запрещено";
		exit ();
		}
	$this->module = $module;
	}
	
	function sendRequest ()
	{
	global $gcFiltering;
		if (empty ($this->module))
		return array ('no_request' => 1);
	/* Запрещаем последующие запросы */
	$result = null;
	$postRequestJson = 'request='.json_encode ($this->request);
	
		if ($this->requestsAllowed)
		{
		$this->errors[] = 'Множественные подключения запрещены';
		return false;
		}
	$this->requestsAllowed = 1; 

	$sockError = null;
	$sockErrorNo = null;
	$socket = fsockopen ("chatmix.ru", 80, $sockErrorNo, $sockError, 8);
		if (!$socket)
		return false;
    $out = "POST /gc_server/{$this->module} HTTP/1.1\r\n";
    $out .= "Host: chatmix.ru\r\n";
	$out .= "Content-type: application/x-www-form-urlencoded; charset=utf-8\r\n";
	$out .= "Content-length: ".mb_strlen ($postRequestJson, 'UTF-8')."\r\n";
    $out .= "Connection: Close\r\n\r\n";
	$out .= $postRequestJson.'\r\n\r\n';
    fwrite ($socket, $out);
		while (fgets ($socket, 1024) != "\r\n" && !feof ($socket));
	
 		while (!feof ($socket))
		$result .= fgets ($socket, 4096);
    fclose ($socket);
	$result = json_decode ($result, true);

	/* Фильтруем ответ для вывода в браузер */
	$result = $gcFiltering->filterArrayToOutput ($result);
		if (empty ($result))
		return false;
	return $result;
	}
}

$gcProcess = new gcProcess;