[SOLVED] Union to Interact with PHP?

All Union Platform questions, comments, feature requests, and bug reports.

Union to Interact with PHP?

Postby jream » Fri 17 Aug 2012 16:45

Hi,

I downloaded the orbiter and union server.
I have been playing with some examples.

1: A user logs onto a page with a session having a userid
2: I want to pass in that userid to the Union Server
3: Once passed in, I'd like to make calls to run PHP files from The JS Orbit Client (Rather than AJAX calls)
4: Im having a bit of a hard time figuring out how to get Union to Interact with PHP.

Do you have any advice or examples?
jream
 
Posts: 19
Joined: Thu 16 Aug 2012 15:33

Re: Union to Interact with PHP?  

Postby stevemann » Fri 24 Aug 2012 10:10

I think the only way to get PHP to interact with Union right now is to create your own mini-custom client in PHP which will handle messages at the UPC level. You would probably have to use PHP cURL to send and receive HTTP requests for this. Creating a custom client is documented under 'Client Frameworks'. You could also vote for PHP as the next custom client in this forum!
Edit - it is possible with PHP by the way - I got it to work ok for a couple of calls.
stevemann
 
Posts: 20
Joined: Sat 26 May 2012 02:32

Re: Union to Interact with PHP?

Postby cripito » Mon 28 Oct 2013 11:17

I use this class for my iteration with the chat..
regards

<?
class chatmanager
{
var $CHAT_config;
var $CHAT_socket = NULL;
var $CHAT_server;
var $CHAT_port;
var $CHAT_event_handlers;
var $CHAT_sessionid;
var $CHAT_ServerVersion;
var $CHAT_compability;
var $CHAT_clientid;
var $CHAT_connected;
var $CHAT_ready;
var $CHAT_login;
var $CHAT_user;
var $CHAT_pass;

function chatmanager($config=NULL, $optconfig=array())
{
// load config
libxml_use_internal_errors(true);

if (!is_null($config) && file_exists($config))
$this->CHAT_config = parse_ini_file($config, true);
else if (file_exists(DEFAULT_CHAT_CONFIG))
$this->CHAT_config = parse_ini_file(DEFAULT_CHAT_CONFIG, true);

// If optconfig is specified, stuff vals and vars into 'chatmanager' config array.
foreach ($optconfig as $var=>$val)
$this->CHAT_config['chatmanager'][$var] = $val;

// add default values to config for uninitialized values
if(!isset($this->CHAT_config['chatmanager']['server'])) $this->CHAT_config['chatmanager']['server'] = 'localhost';
if(!isset($this->CHAT_config['chatmanager']['port'])) $this->CHAT_config['chatmanager']['port'] = 9110;
if(!isset($this->CHAT_config['chatmanager']['username'])) $this->CHAT_config['chatmanager']['username'] = 'admin';
if(!isset($this->CHAT_config['chatmanager']['secret'])) $this->CHAT_config['chatmanager']['secret'] = 'scor6pio';

$this->CHAT_connected = 0;
$this->CHAT_compability = 0;
$this->CHAT_ready = 0;
$this->CHAT_login = 0;

$this->CHAT_user = "guest";
$this->CHAT_pass = "";
}


function connect($server=NULL, $username=NULL, $secret=NULL)
{
// use config if not specified
if (is_null($server)) $server = $this->CHAT_config['chatmanager']['server']; else $this->CHAT_config['chatmanager']['server'] = $server;
if(is_null($username)) $username = $this->CHAT_config['chatmanager']['username']; else $this->CHAT_config['chatmanager']['username'] = $username;
if(is_null($secret)) $secret = $this->CHAT_config['chatmanager']['secret']; else $this->CHAT_config['chatmanager']['secret'] = $secret;

$this->CHAT_user = $username;
$this->CHAT_pass = $password;

// get port from server if specified
if (strpos($server, ':') !== false) {
$c = explode(':', $server);
$this->CHAT_server = $c[0];
$this->CHAT_port = $c[1];
} else {
$this->CHAT_server = $server;
$this->CHAT_port = $this->CHAT_config['chatmanager']['port'];
}

// connect the socket
$errno = $errstr = NULL;
$this->CHAT_socket = @fsockopen($this->CHAT_server, $this->CHAT_port, $errno, $errstr, 1);
stream_set_blocking($this->CHAT_socket, 1);
stream_set_timeout($this->CHAT_socket, 1);

if ($this->CHAT_socket == false) {
$this->log("Unable to connect to chat {$this->CHAT_server}:{$this->CHAT_port} ($errno): $errstr");
return false;
}

$this->CHAT_connected = 1;
$return_val = $this->send_request("u65", array("Reactor", "PHP Management for Reactor", "1.9.1"));
foreach ($return_val as $response)
{
$parameters = $response->L;
if ($parameters)
{
$aPar = $parameters->A;
}

switch ($response->M)
{
case 'u66':
$this->CHAT_sessionid = strip_tags($aPar[1]->asXML());
$this->CHAT_ServerVersion = strip_tags($aPar[2]->asXML());

if ($aPar[3] == "true")
$this->CHAT_compability = true;
else
$this->CHAT_compability = false;
break;
case 'u29':
$this->CHAT_clientid = strip_tags($aPar[0]->asXML());
break;
case 'u8':
break;
case 'u63':
$this->CHAT_ready = 1;
break;
}
}

if ($this->CHAT_ready == 1)
{
return $this->login($username, $secret);
}

return false;
}

function send_request($action, $parameters=array())
{
$req = "<U>";
$req .= "<M>$action</M>";

if (is_array($parameters))
{
if (count($parameters) > 0)
{
$req .= "<L>";

foreach ($parameters as $var=>$val)
{
$req .= "<A>$val</A>";
}

$req .= "</L>";
}
}

$req .= "</U>\0";

fwrite($this->CHAT_socket, $req);
$return_val = $this->wait_response();

return $return_val;

}

function logoff()
{
$return_val = $this->send_request("u86", array($this->CHAT_user, $this->CHAT_pass));
if ($return_val->M == "u89")
{
$this->CHAT_login = 0;
}

return false;
}

function login($username, $secret)
{
$this->CHAT_user = $username;
$this->CHAT_pass = $secret;

$return_val = $this->send_request("u14", array($this->CHAT_user, $this->CHAT_pass));

if ($return_val->M == "u49")
{
$parameters = $response->L;
if ($parameters)
{
$aPar = $parameters->A;
$status = strip_tags($aPar[1]->asXML());
if ($status == "SUCCESS")
{
$this->CHAT_login = 1;
return true;
}
}
}

return false;
}

function terminate_session()
{
$return_val = $this->send_request("u83", array($this->CHAT_sessionid));
}

function remove_room($roomID, $secret="")
{
$mi = $this->send_request("u25", array($roomID, $secret));
$return_val = $mi[0];

if ($return_val->M == "u33")
{
$parameters = $return_val->L;
if ($parameters)
{
$aPar = $parameters->A;
$status = strip_tags($aPar[1]->asXML());

if ($status == "SUCCESS")
{
return true;
}
}
}
return false;
}

function create_room($roomID, $permanent=false, $maxclients=-1, $pass="")
{
$parameters = array($roomID, "_DIE_ON_EMPTY|" . (($permanent)? "false" : "true") . "|_MAX_CLIENTS|$maxclients" . "|_PASSWORD|$pass","","");

$mi = $this->send_request("u24", $parameters);
$return_val = $mi[0];

if ($return_val->M == "u32")
{
$parameters = $return_val->L;
if ($parameters)
{
$aPar = $parameters->A;
$status = strip_tags($aPar[1]->asXML());

if ($status == "SUCCESS")
{
return true;
}
}
}

return false;
}

function remove_account($username, $secret)
{
$mi = $this->send_request("u12", array($username, $secret));
$return_val = $mi[0];

if ($return_val->M == "u48")
{
$parameters = $return_val->L;
if ($parameters)
{
$aPar = $parameters->A;
$status = strip_tags($aPar[1]->asXML());

if ($status == "SUCCESS")
{
return true;
}
}
}

return false;
}

function change_password($username, $secret,$newsecret)
{
$mi = $this->send_request("u13", array($username, $secret, $newsecret));
$return_val = $mi[0];

if ($return_val->M == "u48")
{
$parameters = $return_val->L;
if ($parameters)
{
$aPar = $parameters->A;
$status = strip_tags($aPar[1]->asXML());

if ($status == "SUCCESS")
{
return true;
}
}
}

return false;
}

function create_account($username, $secret)
{
$mi = $this->send_request("u11", array($username, $secret));
$return_val = $mi[0];
if ($return_val->M == "u47")
{
$parameters = $return_val->L;
if ($parameters)
{
$aPar = $parameters->A;
$status = strip_tags($aPar[1]->asXML());

if ($status == "SUCCESS")
{
return true;
}
}
}

return false;
}

function wait_response($allow_timeout=false)
{
$type = NULL;
$parameters = array();

$lines = 0;
$buffer = fgets($this->CHAT_socket, 2048);

if ($buffer != '')
{
$parameters=explode("\0", trim($buffer));
}

$responses = Array();

$i = 0;
foreach ($parameters as $upc)
{
if ($upc == "")
continue;

$responses[] = @simplexml_load_string("<?xml version='1.0' encoding='utf-8'?>". $upc, "SimpleXMLElement", LIBXML_NOCDATA);
}

return $responses;
}

function disconnect() {
fclose($this->CHAT_socket);
}
}
?>
cripito
 
Posts: 13
Joined: Sun 15 Jul 2012 11:54


Return to Union Platform

Online

Users browsing this forum: No registered users and 1 guest