//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));
}
{
$user_im_prefs = $this->getUserImPrefsFromScreenname($screenname);
if($user_im_prefs){
- $user = User::staticGet('id', $user_im_prefs->user_id);
+ $user = User::getKV('id', $user_im_prefs->user_id);
$user_im_prefs->free();
return $user;
}else{
*/
function sendConfirmationCode($screenname, $code, $user)
{
- // @todo FIXME: parameter 4 is not being used. Should para3 and para4 be a markdown link?
// TRANS: Body text for confirmation code e-mail.
// TRANS: %1$s is a user nickname, %2$s is the StatusNet sitename,
// TRANS: %3$s is the display name of an IM plugin.
' . (If you cannot click it, copy-and-paste it into the ' .
'address bar of your browser). If that user is not you, ' .
'or if you did not request this confirmation, just ignore this message.'),
- $user->nickname, common_config('site', 'name'), $this->getDisplayName(), common_local_url('confirmaddress', array('code' => $code)));
+ $user->nickname, common_config('site', 'name'), $this->getDisplayName(), common_local_url('confirmaddress', null, array('code' => $code)));
return $this->sendMessage($screenname, $body);
}
$ni = $notice->whoGets();
foreach ($ni as $user_id => $reason) {
- $user = User::staticGet($user_id);
+ $user = User::getKV($user_id);
if (empty($user)) {
// either not a local user, or just not found
continue;
* @return string plain-text version of the notice, with user nickname prefixed
*/
- function formatNotice($notice)
+ protected function formatNotice(Notice $notice)
{
$profile = $notice->getProfile();
- return $profile->nickname . ': ' . $notice->content . ' [' . $notice->id . ']';
+
+ try {
+ $parent = $notice->getParent();
+ $orig_profile = $parent->getProfile();
+ $nicknames = sprintf('%1$s => %2$s', $profile->nickname, $orig_profile->nickname);
+ } catch (NoParentNoticeException $e) {
+ $nicknames = $profile->nickname;
+ }
+
+ return sprintf('%1$s: %2$s [%3$u]', $nicknames, $notice->content, $notice->id);
}
//========================UTILITY FUNCTIONS USEFUL TO IMPLEMENTATIONS - RECEIVING ========================\
$chan = new IMChannel($this);
$cmd->execute($chan);
return true;
- } else {
- return false;
}
+ return false;
}
/**
*
* @return boolean hook return
*/
- function onEndInitializeQueueManager($manager)
+ function onEndInitializeQueueManager(QueueManager $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;
}
return true;
}
- function onStartEnqueueNotice($notice, &$transports)
+ function onStartEnqueueNotice(Notice $notice, array &$transports)
{
- $profile = Profile::staticGet($notice->profile_id);
+ $profile = Profile::getKV($notice->profile_id);
if (!$profile) {
common_log(LOG_WARNING, 'Refusing to broadcast notice with ' .
return true;
}
+ function onHaveImPlugin(&$haveImPlugin) {
+ $haveImPlugin = true; // set flag true (we're loaded, after all!)
+ return false; // stop looking
+ }
+
function initialize()
{
if( ! common_config('queue', 'enabled'))