// ======================================================================
// Third party code
// m@d pr0ps to the coders 😉
// ======================================================================
// xmlize()
// (c) Hans Anderson / [url]http://www.hansanderson.com/php/xml/[/url]
function xmlize($data)
{
$vals = $index = $array = array();
$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, $data, $vals, $index);
xml_parser_free($parser);
$i = 0;
$tagname = $vals[$i]['tag'];
$array[$tagname]['@'] = $vals[$i]['attributes'];
$array[$tagname]['#'] = $this->_xml_depth($vals, $i);
return $array;
}
// _xml_depth()
// (c) Hans Anderson / [url]http://www.hansanderson.com/php/xml/[/url]
function _xml_depth($vals, &$i)
{
$children = array();
if ($vals[$i]['value'])
{
array_push($children, trim($vals[$i]['value']));
}
while (++$i < count($vals))
{
switch ($vals[$i]['type'])
{
case 'cdata':
array_push($children, trim($vals[$i]['value']));
break;
case 'complete':
$tagname = $vals[$i]['tag'];
$size = sizeof($children[$tagname]);
$children[$tagname][$size]['#'] = trim($vals[$i]['value']);
if ($vals[$i]['attributes'])
{
$children[$tagname][$size]['@'] = $vals[$i]['attributes'];
}
break;
case 'open':
$tagname = $vals[$i]['tag'];
$size = sizeof($children[$tagname]);
if ($vals[$i]['attributes'])
{
$children[$tagname][$size]['@'] = $vals[$i]['attributes'];
$children[$tagname][$size]['#'] = $this->_xml_depth($vals, $i);
}
else
{
$children[$tagname][$size]['#'] = $this->_xml_depth($vals, $i);
}
break;
case 'close':
return $children;
break;
}
}
return $children;
}
// TraverseXMLize()
// (c) [email]acebone@f2s.com[/email], a HUGE help!
function TraverseXMLize($array, $arrName = "array", $level = 0)
{
if ($level == 0)
{
echo "<pre>";
}
while (list($key, $val) = @each($array))
{
if (is_array($val))
{
$this->TraverseXMLize($val, $arrName . "[" . $key . "]", $level + 1);
}
else
{
echo '$' . $arrName . '[' . $key . '] = "' . $val . "\"\n";
}
}
if ($level == 0)
{
echo "</pre>";
}
}
}
class MakeXML extends Jabber
{
var $nodes;
function MakeXML()
{
$nodes = array();
}
function AddPacketDetails($string, $value = NULL)
{
if (preg_match("/\(([0-9]*)\)$/i", $string))
{
$string .= "/[\"#\"]";
}
$temp = @explode("/", $string);
for ($a = 0; $a < count($temp); $a++)
{
$temp[$a] = preg_replace("/^[@]{1}([a-z0-9_]*)$/i", "[\"@\"][\"\\1\"]", $temp[$a]);
$temp[$a] = preg_replace("/^([a-z0-9_]*)\(([0-9]*)\)$/i", "[\"\\1\"][\\2]", $temp[$a]);
$temp[$a] = preg_replace("/^([a-z0-9_]*)$/i", "[\"\\1\"]", $temp[$a]);
}
$node = implode("", $temp);
// Yeahyeahyeah, I know it's ugly... get over it. ;)
echo "\$this->nodes$node = \"" . htmlspecialchars($value) . "\";<br/>";
eval("\$this->nodes$node = \"" . htmlspecialchars($value) . "\";");
}
function BuildPacket($array = NULL)
{
if (!$array)
{
$array = $this->nodes;
}
if (is_array($array))
{
array_multisort($array, SORT_ASC, SORT_STRING);
foreach ($array as $key => $value)
{
if (is_array($value) && $key == "@")
{
foreach ($value as $subkey => $subvalue)
{
$subvalue = htmlspecialchars($subvalue);
$text .= " $subkey='$subvalue'";
}
$text .= ">\n";
}
elseif ($key == "#")
{
$text .= htmlspecialchars($value);
}
elseif (is_array($value))
{
for ($a = 0; $a < count($value); $a++)
{
$text .= "<$key";
if (!$this->_preg_grep_keys("/^@/", $value[$a]))
{
$text .= ">";
}
$text .= $this->BuildPacket($value[$a]);
$text .= "</$key>\n";
}
}
else
{
$value = htmlspecialchars($value);
$text .= "<$key>$value</$key>\n";
}
}
return $text;
}
}
function _preg_grep_keys($pattern, $array)
{
while (list($key, $val) = each($array))
{
if (preg_match($pattern, $key))
{
$newarray[$key] = $val;
}
}
return (is_array($newarray)) ? $newarray : FALSE;
}
}
class CJP_StandardConnector
{
var $active_socket;
function OpenSocket($server, $port)
{
if ($this->active_socket = fsockopen($server, $port))
{
socket_set_blocking($this->active_socket, 0);
socket_set_timeout($this->active_socket, 31536000);
return TRUE;
}
else
{
return FALSE;
}
}
function CloseSocket()
{
return fclose($this->active_socket);
}
function WriteToSocket($data)
{
return fwrite($this->active_socket, $data);
}
function ReadFromSocket($chunksize)
{
set_magic_quotes_runtime(0);
$buffer = fread($this->active_socket, $chunksize);
set_magic_quotes_runtime(get_magic_quotes_gpc());
return $buffer;
}
}
?>
[/code]
ahora donde creo la conexión y trato de enviar mensajes es esto:
<?
ob_start();
require("functions.php");
nocache();
if((isset($action))&&($action=="singin")){
include('includes/class.jabber.php');
$jab = new Jabber();
$jab->username = $_POST['login'];
$jab->password = $_POST['password'];
$jab->resource = "ClassJabberPHP";
$jab->enable_logging = TRUE;
$jab->log_filename = 'logs/logjab.log';
$jab->Connect() or die("No me he podido conectar la Servidor de Jabber: ".$_POST['server']."");
$jab->SendPresence("available", "online");
if($jab->connected){
echo "sdfjsdfjksdhfjksdhfjkasdghfgasdjgfasdgf";
echo "Disconnect";
}else{
echo "efkjsfjkhfdgjkhjdg";
}
$jab->SendMessage("rperezm@jabber.uci.cu", "chat", NULL, array("body" => "This is the message text"));
}
ob_end_flush();
?>
El se conecta bien y todo puesto que me imprime esta cadena en mi navegador:
sdfjsdfjksdhfjksdhfjkasdghfgasdjgfasdgf
así que en realidad no se que pasa.
Salu2 y gracias por responder 😕
PD: Mi Yahoo Messenger es reynierpm@yahoo.es, por si tienes y quieres agregarme a tu lista de contactos, pues en realidad lo necesito
Perdon pero tuve que picar la clases en varios POST pues no cabia completa en niguna. De todas maneras dejo el txt con el contenido de la misma.