]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/Xmpp/XmppPlugin.php
Merge remote-tracking branch 'upstream/master' into social-master
[quix0rs-gnu-social.git] / plugins / Xmpp / XmppPlugin.php
index 99d43e47c5d3b6bcb94f2e5934e972280e8f5c12..7112b8b63eaeb8013bf24be41ff05047ab8b1b33 100644 (file)
@@ -49,7 +49,7 @@ class XmppPlugin extends ImPlugin
     public $server = null;
     public $port = 5222;
     public $user =  'update';
-    public $resource = null;
+    public $resource = 'gnusocial';
     public $encryption = true;
     public $password = null;
     public $host = null;  // only set if != server
@@ -59,7 +59,7 @@ class XmppPlugin extends ImPlugin
 
     function getDisplayName(){
         // TRANS: Plugin display name.
-        return _m('XMPP/Jabber/GTalk');
+        return _m('XMPP/Jabber');
     }
 
     /**
@@ -296,16 +296,9 @@ class XmppPlugin extends ImPlugin
         case 'XMPPHP_XMPP':
             require_once $dir . '/extlib/XMPPHP/XMPP.php';
             return false;
-        case 'Sharing_XMPP':
-        case 'Queued_XMPP':
-            require_once $dir . '/'.$cls.'.php';
-            return false;
-        case 'XmppManager':
-            require_once $dir . '/'.strtolower($cls).'.php';
-            return false;
-        default:
-            return true;
         }
+
+        return parent::onAutoload($cls);
     }
 
     function onStartImDaemonIoManagers(&$classes)
@@ -315,17 +308,12 @@ class XmppPlugin extends ImPlugin
         return true;
     }
 
-    function microiduri($screenname)
-    {
-        return 'xmpp:' . $screenname;
-    }
-
     function sendMessage($screenname, $body)
     {
         $this->queuedConnection()->message($screenname, $body, 'chat');
     }
 
-    function sendNotice($screenname, $notice)
+    function sendNotice($screenname, Notice $notice)
     {
         $msg   = $this->formatNotice($notice);
         $entry = $this->format_entry($notice);
@@ -342,7 +330,7 @@ class XmppPlugin extends ImPlugin
      *
      * @return string Extra information (Atom, HTML, addresses) in string format
      */
-    function format_entry($notice)
+    protected function format_entry(Notice $notice)
     {
         $profile = $notice->getProfile();
 
@@ -351,21 +339,31 @@ class XmppPlugin extends ImPlugin
         $xs = new XMLStringer();
         $xs->elementStart('html', array('xmlns' => 'http://jabber.org/protocol/xhtml-im'));
         $xs->elementStart('body', array('xmlns' => 'http://www.w3.org/1999/xhtml'));
-        $xs->element('a', array('href' => $profile->profileurl),
-                     $profile->nickname);
-        $xs->text(": ");
-        if (!empty($notice->rendered)) {
-            $xs->raw($notice->rendered);
-        } else {
-            $xs->raw(common_render_content($notice->content, $notice));
+        $xs->element('a', array('href' => $profile->profileurl), $profile->nickname);
+        try {
+            $parent = $notice->getParent();
+            $orig_profile = $parent->getProfile();
+            $orig_profurl = $orig_profile->getUrl();
+            $xs->text(" => ");
+            $xs->element('a', array('href' => $orig_profurl), $orig_profile->nickname);
+            $xs->text(": ");
+        } catch (InvalidUrlException $e) {
+            $xs->text(sprintf(' => %s', $orig_profile->nickname));
+        } catch (NoParentNoticeException $e) {
+            $xs->text(": ");
+        } catch (NoResultException $e) {
+            // Parent notice was probably deleted.
+            $xs->text(": ");
         }
+        // FIXME: Why do we replace \t with ''? is it just to make it pretty? shouldn't whitespace be handled well...?
+        $xs->raw(str_replace("\t", "", $notice->getRendered()));
         $xs->text(" ");
         $xs->element('a', array(
             'href'=>common_local_url('conversation',
                 array('id' => $notice->conversation)).'#notice-'.$notice->id),
              // TRANS: Link description to notice in conversation.
              // TRANS: %s is a notice ID.
-             sprintf(_m('[%s]'),$notice->id));
+             sprintf(_m('[%u]'),$notice->id));
         $xs->elementEnd('body');
         $xs->elementEnd('html');
 
@@ -397,7 +395,7 @@ class XmppPlugin extends ImPlugin
      * Build a queue-proxied XMPP interface object. Any outgoing messages
      * will be run back through us for enqueing rather than sent directly.
      *
-     * @return Queued_XMPP
+     * @return QueuedXMPP
      * @throws Exception if server settings are invalid.
      */
     function queuedConnection(){
@@ -418,7 +416,7 @@ class XmppPlugin extends ImPlugin
             throw new Exception(_m('You must specify a password in the configuration.'));
         }
 
-        return new Queued_XMPP($this, $this->host ?
+        return new QueuedXMPP($this, $this->host ?
                                     $this->host :
                                     $this->server,
                                     $this->port,
@@ -440,7 +438,7 @@ class XmppPlugin extends ImPlugin
      *
      * @return boolean hook return
      */
-    function onGetValidDaemons($daemons)
+    function onGetValidDaemons(array &$daemons)
     {
         if( isset($this->server) &&
             isset($this->port)   &&
@@ -458,10 +456,10 @@ class XmppPlugin extends ImPlugin
     }
 
 
-    function onPluginVersion(&$versions)
+    function onPluginVersion(array &$versions)
     {
         $versions[] = array('name' => 'XMPP',
-                            'version' => STATUSNET_VERSION,
+                            'version' => GNUSOCIAL_VERSION,
                             'author' => 'Craig Andrews, Evan Prodromou',
                             'homepage' => 'http://status.net/wiki/Plugin:XMPP',
                             'rawdescription' =>