forked from GNUsocial/gnu-social
		
	Merge branch '0.8.x' of git@gitorious.org:statusnet/mainline into 0.8.x
This commit is contained in:
		| @@ -47,11 +47,6 @@ class Profile extends Memcached_DataObject | ||||
|     /* the code above is auto generated do not remove the tag below */ | ||||
|     ###END_AUTOCODE | ||||
|  | ||||
|     function &pkeyGet($kv) | ||||
|     { | ||||
|         return Memcached_DataObject::pkeyGet('Profile', $kv); | ||||
|     } | ||||
|  | ||||
|     function getAvatar($width, $height=null) | ||||
|     { | ||||
|         if (is_null($height)) { | ||||
|   | ||||
							
								
								
									
										124
									
								
								extlib/Stomp.php
									
									
									
									
									
								
							
							
						
						
									
										124
									
								
								extlib/Stomp.php
									
									
									
									
									
								
							| @@ -26,7 +26,7 @@ require_once 'Stomp/Frame.php'; | ||||
|  * | ||||
|  * @package Stomp | ||||
|  * @author Hiram Chirino <hiram@hiramchirino.com> | ||||
|  * @author Dejan Bosanac <dejan@nighttale.net> | ||||
|  * @author Dejan Bosanac <dejan@nighttale.net>  | ||||
|  * @author Michael Caplan <mcaplan@labnet.net> | ||||
|  * @version $Revision: 43 $ | ||||
|  */ | ||||
| @@ -44,15 +44,15 @@ class Stomp | ||||
|      * | ||||
|      * @var int | ||||
|      */ | ||||
|     public $prefetchSize = 1; | ||||
|  | ||||
|     /** | ||||
| 	public $prefetchSize = 1; | ||||
|      | ||||
| 	/** | ||||
|      * Client id used for durable subscriptions | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     public $clientId = null; | ||||
|  | ||||
| 	public $clientId = null; | ||||
|      | ||||
|     protected $_brokerUri = null; | ||||
|     protected $_socket = null; | ||||
|     protected $_hosts = array(); | ||||
| @@ -66,7 +66,7 @@ class Stomp | ||||
|     protected $_sessionId; | ||||
|     protected $_read_timeout_seconds = 60; | ||||
|     protected $_read_timeout_milliseconds = 0; | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * Constructor | ||||
|      * | ||||
| @@ -134,10 +134,10 @@ class Stomp | ||||
|             require_once 'Stomp/Exception.php'; | ||||
|             throw new Stomp_Exception("No broker defined"); | ||||
|         } | ||||
|  | ||||
|          | ||||
|         // force disconnect, if previous established connection exists | ||||
|         $this->disconnect(); | ||||
|  | ||||
|          | ||||
|         $i = $this->_currentHost; | ||||
|         $att = 0; | ||||
|         $connected = false; | ||||
| @@ -190,11 +190,11 @@ class Stomp | ||||
|         if ($password != '') { | ||||
|             $this->_password = $password; | ||||
|         } | ||||
|         $headers = array('login' => $this->_username , 'passcode' => $this->_password); | ||||
|         if ($this->clientId != null) { | ||||
|             $headers["client-id"] = $this->clientId; | ||||
|         } | ||||
|         $frame = new Stomp_Frame("CONNECT", $headers); | ||||
| 		$headers = array('login' => $this->_username , 'passcode' => $this->_password); | ||||
| 		if ($this->clientId != null) { | ||||
| 			$headers["client-id"] = $this->clientId; | ||||
| 		} | ||||
| 		$frame = new Stomp_Frame("CONNECT", $headers); | ||||
|         $this->_writeFrame($frame); | ||||
|         $frame = $this->readFrame(); | ||||
|         if ($frame instanceof Stomp_Frame && $frame->command == 'CONNECTED') { | ||||
| @@ -209,7 +209,7 @@ class Stomp | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * Check if client session has ben established | ||||
|      * | ||||
| @@ -229,7 +229,7 @@ class Stomp | ||||
|         return $this->_sessionId; | ||||
|     } | ||||
|     /** | ||||
|      * Send a message to a destination in the messaging system | ||||
|      * Send a message to a destination in the messaging system  | ||||
|      * | ||||
|      * @param string $destination Destination queue | ||||
|      * @param string|Stomp_Frame $msg Message | ||||
| @@ -237,7 +237,7 @@ class Stomp | ||||
|      * @param boolean $sync Perform request synchronously | ||||
|      * @return boolean | ||||
|      */ | ||||
|     public function send ($destination, $msg, $properties = array(), $sync = null) | ||||
|     public function send ($destination, $msg, $properties = null, $sync = null) | ||||
|     { | ||||
|         if ($msg instanceof Stomp_Frame) { | ||||
|             $msg->headers['destination'] = $destination; | ||||
| @@ -319,12 +319,10 @@ class Stomp | ||||
|     public function subscribe ($destination, $properties = null, $sync = null) | ||||
|     { | ||||
|         $headers = array('ack' => 'client'); | ||||
|         // FIXME: this seems to be activemq specific, but not hurting rabbitmq? | ||||
|         $headers['activemq.prefetchSize'] = $this->prefetchSize; | ||||
|         if ($this->clientId != null) { | ||||
|             // FIXME: this seems to be activemq specific, but not hurting rabbitmq? | ||||
|             $headers["activemq.subcriptionName"] = $this->clientId; | ||||
|         } | ||||
| 		$headers['activemq.prefetchSize'] = $this->prefetchSize; | ||||
| 		if ($this->clientId != null) { | ||||
| 			$headers["activemq.subcriptionName"] = $this->clientId; | ||||
| 		} | ||||
|         if (isset($properties)) { | ||||
|             foreach ($properties as $name => $value) { | ||||
|                 $headers[$name] = $value; | ||||
| @@ -426,7 +424,7 @@ class Stomp | ||||
|     } | ||||
|     /** | ||||
|      * Acknowledge consumption of a message from a subscription | ||||
|      * Note: This operation is always asynchronous | ||||
| 	 * Note: This operation is always asynchronous | ||||
|      * | ||||
|      * @param string|Stomp_Frame $messageMessage ID | ||||
|      * @param string $transactionId | ||||
| @@ -435,26 +433,20 @@ class Stomp | ||||
|      */ | ||||
|     public function ack ($message, $transactionId = null) | ||||
|     { | ||||
|         // Handle the headers, | ||||
|         $headers = array(); | ||||
|  | ||||
|         if ($message instanceof Stomp_Frame) { | ||||
|             // Copy headers from the object | ||||
|             // FIXME: at least content-length can be wrong here (set to 3 sometimes). | ||||
|             $headers = $message->headers; | ||||
|             $frame = new Stomp_Frame('ACK', $message->headers); | ||||
|             $this->_writeFrame($frame); | ||||
|             return true; | ||||
|         } else { | ||||
|             $headers = array(); | ||||
|             if (isset($transactionId)) { | ||||
|                 $headers['transaction'] = $transactionId; | ||||
|             } | ||||
|             $headers['message-id'] = $message; | ||||
|             $frame = new Stomp_Frame('ACK', $headers); | ||||
|             $this->_writeFrame($frame); | ||||
|             return true; | ||||
|         } | ||||
|         // An ACK has no content | ||||
|         $headers['content-length'] = 0; | ||||
|  | ||||
|         // Create it and write it out | ||||
|         $frame = new Stomp_Frame('ACK', $headers); | ||||
|         $this->_writeFrame($frame); | ||||
|         return true; | ||||
|     } | ||||
|     /** | ||||
|      * Graceful disconnect from the server | ||||
| @@ -462,11 +454,11 @@ class Stomp | ||||
|      */ | ||||
|     public function disconnect () | ||||
|     { | ||||
|         $headers = array(); | ||||
| 		$headers = array(); | ||||
|  | ||||
|         if ($this->clientId != null) { | ||||
|             $headers["client-id"] = $this->clientId; | ||||
|         } | ||||
| 		if ($this->clientId != null) { | ||||
| 			$headers["client-id"] = $this->clientId; | ||||
| 		} | ||||
|  | ||||
|         if (is_resource($this->_socket)) { | ||||
|             $this->_writeFrame(new Stomp_Frame('DISCONNECT', $headers)); | ||||
| @@ -498,19 +490,19 @@ class Stomp | ||||
|             $this->_writeFrame($stompFrame); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * Set timeout to wait for content to read | ||||
|      * | ||||
|      * @param int $seconds_to_wait  Seconds to wait for a frame | ||||
|      * @param int $milliseconds Milliseconds to wait for a frame | ||||
|      */ | ||||
|     public function setReadTimeout($seconds, $milliseconds = 0) | ||||
|     public function setReadTimeout($seconds, $milliseconds = 0)  | ||||
|     { | ||||
|         $this->_read_timeout_seconds = $seconds; | ||||
|         $this->_read_timeout_milliseconds = $milliseconds; | ||||
|     } | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * Read responce frame from server | ||||
|      * | ||||
| @@ -521,29 +513,19 @@ class Stomp | ||||
|         if (!$this->hasFrameToRead()) { | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|          | ||||
|         $rb = 1024; | ||||
|         $data = ''; | ||||
|          do { | ||||
|              $read = fread($this->_socket, $rb); | ||||
|              if ($read === false) { | ||||
|                  $this->_reconnect(); | ||||
|                  return $this->readFrame(); | ||||
|              } | ||||
|              $data .= $read; | ||||
|              $len = strlen($data); | ||||
|  | ||||
|              $continue = true; | ||||
|              // ActiveMq apparently add \n after 0 char | ||||
|              if($data[$len - 2] == "\x00" && $data[$len - 1] == "\n")  { | ||||
|                $continue = false; | ||||
|              } | ||||
|  | ||||
|              // RabbitMq does not | ||||
|              if($data[$len - 1] == "\x00") { | ||||
|                 $continue = false; | ||||
|              } | ||||
|         } while ( $continue ); | ||||
|         do { | ||||
|             $read = fgets($this->_socket, $rb); | ||||
|             if ($read === false) { | ||||
|                 $this->_reconnect(); | ||||
|                 return $this->readFrame(); | ||||
|             } | ||||
|             $data .= $read; | ||||
|             $len = strlen($data); | ||||
|         } while (($len < 2 || ! ($data[$len - 2] == "\x00" && $data[$len - 1] == "\n"))); | ||||
|          | ||||
|         list ($header, $body) = explode("\n\n", $data, 2); | ||||
|         $header = explode("\n", $header); | ||||
|         $headers = array(); | ||||
| @@ -564,7 +546,7 @@ class Stomp | ||||
|             return $frame; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * Check if there is a frame to read | ||||
|      * | ||||
| @@ -575,7 +557,7 @@ class Stomp | ||||
|         $read = array($this->_socket); | ||||
|         $write = null; | ||||
|         $except = null; | ||||
|  | ||||
|          | ||||
|         $has_frame_to_read = stream_select($read, $write, $except, $this->_read_timeout_seconds, $this->_read_timeout_milliseconds); | ||||
|  | ||||
|         if ($has_frame_to_read === false) { | ||||
| @@ -583,18 +565,18 @@ class Stomp | ||||
|         } else if ($has_frame_to_read > 0) { | ||||
|             return true; | ||||
|         } else { | ||||
|             return false; | ||||
|             return false;  | ||||
|         } | ||||
|     } | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * Reconnects and renews subscriptions (if there were any) | ||||
|      * Call this method when you detect connection problems | ||||
|      * Call this method when you detect connection problems      | ||||
|      */ | ||||
|     protected function _reconnect () | ||||
|     { | ||||
|         $subscriptions = $this->_subscriptions; | ||||
|  | ||||
|          | ||||
|         $this->connect($this->_username, $this->_password); | ||||
|         foreach ($subscriptions as $dest => $properties) { | ||||
|             $this->subscribe($dest, $properties); | ||||
|   | ||||
| @@ -17,46 +17,46 @@ | ||||
|  */ | ||||
|  | ||||
| /* vim: set expandtab tabstop=3 shiftwidth=3: */ | ||||
|  | ||||
| /** | ||||
|  * Stomp Frames are messages that are sent and received on a StompConnection. | ||||
|  * | ||||
|  * @package Stomp | ||||
|  * @author Hiram Chirino <hiram@hiramchirino.com> | ||||
|  * @author Dejan Bosanac <dejan@nighttale.net> | ||||
|  * @author Michael Caplan <mcaplan@labnet.net> | ||||
|  * @version $Revision: 36 $ | ||||
|  */ | ||||
| class Stomp_Frame | ||||
| { | ||||
|     public $command; | ||||
|     public $headers = array(); | ||||
|     public $body; | ||||
|      | ||||
|     /** | ||||
|      * Constructor | ||||
|      * | ||||
|      * @param string $command | ||||
|      * @param array $headers | ||||
|      * @param string $body | ||||
|      */ | ||||
|     public function __construct ($command = null, $headers = null, $body = null) | ||||
|     { | ||||
|         $this->_init($command, $headers, $body); | ||||
|     } | ||||
|      | ||||
|     protected function _init ($command = null, $headers = null, $body = null) | ||||
|     { | ||||
|         $this->command = $command; | ||||
|         if ($headers != null) { | ||||
|             $this->headers = $headers; | ||||
|         } | ||||
|         $this->body = $body; | ||||
|          | ||||
|         if ($this->command == 'ERROR') { | ||||
|             require_once 'Stomp/Exception.php'; | ||||
|             throw new Stomp_Exception($this->headers['message'], 0, $this->body); | ||||
|         } | ||||
|  | ||||
| /** | ||||
|  * Stomp Frames are messages that are sent and received on a StompConnection. | ||||
|  * | ||||
|  * @package Stomp | ||||
|  * @author Hiram Chirino <hiram@hiramchirino.com> | ||||
|  * @author Dejan Bosanac <dejan@nighttale.net> | ||||
|  * @author Michael Caplan <mcaplan@labnet.net> | ||||
|  * @version $Revision: 36 $ | ||||
|  */ | ||||
| class Stomp_Frame | ||||
| { | ||||
|     public $command; | ||||
|     public $headers = array(); | ||||
|     public $body; | ||||
|      | ||||
|     /** | ||||
|      * Constructor | ||||
|      * | ||||
|      * @param string $command | ||||
|      * @param array $headers | ||||
|      * @param string $body | ||||
|      */ | ||||
|     public function __construct ($command = null, $headers = null, $body = null) | ||||
|     { | ||||
|         $this->_init($command, $headers, $body); | ||||
|     } | ||||
|      | ||||
|     protected function _init ($command = null, $headers = null, $body = null) | ||||
|     { | ||||
|         $this->command = $command; | ||||
|         if ($headers != null) { | ||||
|             $this->headers = $headers; | ||||
|         } | ||||
|         $this->body = $body; | ||||
|          | ||||
|         if ($this->command == 'ERROR') { | ||||
|             require_once 'Stomp/Exception.php'; | ||||
|             throw new Stomp_Exception($this->headers['message'], 0, $this->body); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     /** | ||||
| @@ -74,8 +74,7 @@ class Stomp_Frame | ||||
|          | ||||
|         $data .= "\n"; | ||||
|         $data .= $this->body; | ||||
|         $data .= "\x00\n"; // Should there really be a linefeed here? | ||||
|         return $data; | ||||
|     } | ||||
| } | ||||
|         return $data .= "\x00\n"; | ||||
|     } | ||||
| } | ||||
| ?> | ||||
| @@ -29,12 +29,8 @@ require_once 'Stomp/Frame.php'; | ||||
|  */ | ||||
| class Stomp_Message extends Stomp_Frame | ||||
| { | ||||
|     public function __construct ($body, $headers = array()) | ||||
|     public function __construct ($body, $headers = null) | ||||
|     { | ||||
|         if(!isset($headers['content-length'])) { | ||||
|           // TODO: log this, to see if this is correct | ||||
|           $headers['content-length'] = strlen($body); | ||||
|         } | ||||
|         $this->_init("SEND", $headers, $body); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -900,7 +900,6 @@ class Action extends HTMLOutputter // lawsuit | ||||
|                         !$etag || | ||||
|                         $this->_hasEtag($etag, $if_none_match)) { | ||||
|                         header('HTTP/1.1 304 Not Modified'); | ||||
|                         header('Content-Length: 0'); | ||||
|                         // Better way to do this? | ||||
|                         exit(0); | ||||
|                     } | ||||
| @@ -919,7 +918,6 @@ class Action extends HTMLOutputter // lawsuit | ||||
|             header('ETag: ' . $etag); | ||||
|             if($if_none_match && $this->_hasEtag($etag, $if_none_match)) { | ||||
|                 header('HTTP/1.1 304 Not Modified'); | ||||
|                 header('Content-Length: 0'); | ||||
|                 // Better way to do this? | ||||
|                 exit(0); | ||||
|             } | ||||
|   | ||||
| @@ -141,11 +141,10 @@ class StompQueueManager | ||||
|                 $this->con->ack($frame); | ||||
|             } else { | ||||
|                 if ($handler->handle_notice($notice)) { | ||||
|                     $this->_log(LOG_INFO, 'Successfully handled notice '. $notice->id .' originally posted at ' . $notice->created . ' in queue '. $queue); | ||||
|                      | ||||
|                     $this->_log(LOG_INFO, 'Successfully handled notice '. $notice->id .' posted at ' . $frame->headers['created'] . ' in queue '. $queue); | ||||
|                     $this->con->ack($frame); | ||||
|                 } else { | ||||
|                     $this->_log(LOG_WARNING, 'Failed handling notice '. $notice->id .' originally posted at ' . $notice->created   . ' in queue '. $queue); | ||||
|                     $this->_log(LOG_WARNING, 'Failed handling notice '. $notice->id .' posted at ' . $frame->headers['created']  . ' in queue '. $queue); | ||||
|                     // FIXME we probably shouldn't have to do | ||||
|                     // this kind of queue management ourselves | ||||
|                     $this->con->ack($frame); | ||||
|   | ||||
| @@ -62,7 +62,7 @@ class AutocompleteAction extends Action | ||||
|             $user->whereAdd('nickname like \'' . trim($user->escape($q), '\'') . '%\''); | ||||
|             $user->find(); | ||||
|             while($user->fetch()) { | ||||
|                 $profile = Profile::pkeyGet(array('id' => $user->id)); | ||||
|                 $profile = Profile::staticGet($user->id); | ||||
|                 $this->results[]=array('nickname' => $user->nickname, 'fullname'=> $profile->fullname, 'type'=>'user'); | ||||
|             } | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user