//list of screennames that should get all public notices
public $public = array();
+ protected $requires_cli = true;
+
/**
* normalize a screenname for comparison
*
*
* @return boolean success value
*/
- function sendNotice($screenname, $notice)
+ function sendNotice($screenname, Notice $notice)
{
return $this->sendMessage($screenname, $this->formatNotice($notice));
}
* @return string plain-text version of the notice, with user nickname prefixed
*/
- function formatNotice($notice)
+ protected function formatNotice(Notice $notice)
{
$profile = $notice->getProfile();
- $nicknames = $profile->nickname;
- if (!empty($notice->reply_to)) {
- $orig_notice = $notice->getParent();
- $orig_profile = $orig_notice->getProfile();
- $nicknames = $nicknames . " => " . $orig_profile->nickname;
+
+ try {
+ $parent = $notice->getParent();
+ $orig_profile = $parent->getProfile();
+ $nicknames = sprintf('%1$s => %2$s', $profile->nickname, $orig_profile->nickname);
+ } catch (Exception $e) {
+ $nicknames = $profile->nickname;
}
- common_log(LOG_INFO, "Notice: " . $notice->content, __FILE__);
- $data = $nicknames . ': ' . $notice->content . ' [' . $notice->id . ']';
- return $data;
+ return sprintf('%1$s: %2$s [%3$u]', $nicknames, $notice->content, $notice->id);
}
//========================UTILITY FUNCTIONS USEFUL TO IMPLEMENTATIONS - RECEIVING ========================\
*/
function onEndInitializeQueueManager($manager)
{
- $manager->connect($this->transport . '-in', new ImReceiverQueueHandler($this), 'im');
- $manager->connect($this->transport, new ImQueueHandler($this));
- $manager->connect($this->transport . '-out', new ImSenderQueueHandler($this), 'im');
+ // If we don't require CLI mode, or if we do and GNUSOCIAL_CLI _is_ set, then connect the transports
+ // This check is made mostly because some IM plugins can't deliver to transports unless they
+ // have continously running daemons (such as XMPP) and we can't have that over HTTP requests.
+ if (!$this->requires_cli || defined('GNUSOCIAL_CLI')) {
+ $manager->connect($this->transport . '-in', new ImReceiverQueueHandler($this), 'im');
+ $manager->connect($this->transport, new ImQueueHandler($this));
+ $manager->connect($this->transport . '-out', new ImSenderQueueHandler($this), 'im');
+ }
return true;
}