Editing XMPPHP

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search

Warning: The database has been locked for maintenance, so you will not be able to save your edits right now. You may wish to copy and paste your text into a text file and save it for later.

The administrator who locked it offered this explanation: MediaWiki upgrading

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
 
{{stub}}
 
{{stub}}
 
{{Library
 
{{Library
|            name=XMPPHP
+
|            name=XMPPPHP
 
|              url=http://code.google.com/p/xmpphp/
 
|              url=http://code.google.com/p/xmpphp/
|          author=[[Nathan Fritz]] (fritzy)
+
|          author=[http://nathan.fritzclan.com/ Nathan Fritz]
 
|        language={{Lang|l|PHP}}
 
|        language={{Lang|l|PHP}}
|          license={{GPL}} v2
+
|          license=GNU General Public License v2
|          roster=да
+
|          roster=поддерживается
 
}}
 
}}
  
XMPPHP класс на [[PHP]], являющийся наследником [[Class.jabber.php]].
+
XMPPHP - класс на PHP5, являющийся наследником [[Class.jabber.php]].  
  
Простой пример кода для отправки сообщений:
+
{{fixme|так есть там или нет поддержка ростера? я что-то не понял. [[User:Vindicar|Vindicar]] 13:55, 11 April 2009 (GMT)}}
  
  <?php
+
class Roster {
    include("xmpp.php");
+
/**
    $conn = new XMPP('talk.google.com', 5222, 'username', 'password', 'xmpphp',
+
* Roster array, handles contacts and presence. Indexed by jid.
        'gmail.com', $printlog=False, $loglevel=LOGGING_INFO);
+
* Contains array with potentially two indexes 'contact' and 'presence'
    $conn->connect();
+
* @var array
    $conn->processUntil('session_start');
+
*/
    $conn->message('someguy@someserver.net', 'This is a test message!');
+
protected $roster_array = array();
    $conn->disconnect();
+
/**
?>
+
* Constructor
 +
*
 +
*/
 +
public function __construct($roster_array = array()) {
 +
if ($this->verifyRoster($roster_array)) {
 +
$this->roster_array = $roster_array; //Allow for prepopulation with existing roster
 +
} else {
 +
$this->roster_array = array();
 +
}
 +
}
 +
 
 +
/**
 +
*
 +
* Check that a given roster array is of a valid structure (empty is still valid)
 +
*
 +
* @param array $roster_array
 +
*/
 +
protected function verifyRoster($roster_array) {
 +
#TODO once we know *what* a valid roster array looks like
 +
return True;
 +
}
 +
 
 +
/**
 +
*
 +
* Add given contact to roster
 +
*
 +
* @param string $jid
 +
* @param string $subscription
 +
* @param string $name
 +
* @param array $groups
 +
*/
 +
public function addContact($jid, $subscription, $name='', $groups=array()) {
 +
$contact = array('jid' => $jid, 'subscription' => $subscription, 'name' => $name, 'groups' => $groups);
 +
if ($this->isContact($jid)) {
 +
$this->roster_array[$jid]['contact'] = $contact;
 +
} else {
 +
$this->roster_array[$jid] = array('contact' => $contact);
 +
}
 +
}
 +
 
 +
/**
 +
*
 +
* Retrieve contact via jid
 +
*
 +
* @param string $jid
 +
*/
 +
public function getContact($jid) {
 +
if ($this->isContact($jid)) {
 +
return $this->roster_array[$jid]['contact'];
 +
}
 +
}
 +
 
 +
/**
 +
*
 +
* Discover if a contact exists in the roster via jid
 +
*
 +
* @param string $jid
 +
*/
 +
public function isContact($jid) {
 +
return (array_key_exists($jid, $this->roster_array));
 +
}
 +
 
 +
/**
 +
*
 +
* Set presence
 +
*
 +
* @param string $presence
 +
* @param integer $priority
 +
* @param string $show
 +
* @param string $status
 +
*/
 +
public function setPresence($presence, $priority, $show, $status) {
 +
list($jid, $resource) = split("/", $presence);
 +
if ($show != 'unavailable') {
 +
if (!$this->isContact($jid)) {
 +
$this->addContact($jid, 'not-in-roster');
 +
}
 +
$resource = $resource ? $resource : '';
 +
$this->roster_array[$jid]['presence'][$resource] = array('priority' => $priority, 'show' => $show, 'status' => $status);
 +
} else { //Nuke unavailable resources to save memory
 +
unset($this->roster_array[$jid]['resource'][$resource]);
 +
}
 +
}
 +
 
 +
/*
 +
*
 +
* Return best presence for jid
 +
*
 +
* @param string $jid
 +
*/
 +
public function getPresence($jid) {
 +
$split = split("/", $jid);
 +
$jid = $split[0];
 +
if($this->isContact($jid)) {
 +
$current = array('resource' => '', 'active' => '', 'priority' => -129, 'show' => '', 'status' => ''); //Priorities can only be -128 = 127
 +
foreach($this->roster_array[$jid]['presence'] as $resource => $presence) {
 +
//Highest available priority or just highest priority
 +
if ($presence['priority'] > $current['priority'] and (($presence['show'] == "chat" or $presence['show'] == "available") or ($current['show'] != "chat" or $current['show'] != "available"))) {
 +
$current = $presence;
 +
$current['resource'] = $resource;
 +
}
 +
}
 +
return $current;
 +
}
 +
}
 +
/**
 +
*
 +
* Get roster
 +
*
 +
*/
 +
public function getRoster() {
 +
return $this->roster_array;
 +
}

Please note that all contributions to JaWiki (Jabber/XMPP wiki) may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see JaWiki (Jabber/XMPP wiki):Copyrights for details). Do not submit copyrighted work without permission!

Cancel | Editing help (opens in new window)
Retrieved from "http://jawiki.ru/XMPPHP"