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;