]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/LinkbackPlugin.php
Merge branch 'master' of gitorious.org:statusnet/mainline into testing
[quix0rs-gnu-social.git] / plugins / LinkbackPlugin.php
index 0513687e9196026dbd3daa99d145996df7d50e66..8e44beae1828b207d008e08119b44e4e82856bcb 100644 (file)
@@ -59,7 +59,7 @@ class LinkbackPlugin extends Plugin
         parent::__construct();
     }
 
-    function onEndNoticeSave($notice)
+    function onHandleQueuedNotice($notice)
     {
         if ($notice->is_local == 1) {
             // Try to avoid actually mucking with the
@@ -126,29 +126,29 @@ class LinkbackPlugin extends Plugin
         if (!extension_loaded('xmlrpc')) {
             if (!dl('xmlrpc.so')) {
                 common_log(LOG_ERR, "Can't pingback; xmlrpc extension not available.");
+                return;
             }
         }
 
-        $request = new HTTPClient($endpoint, 'POST');
-        $request->setHeader('User-Agent', $this->userAgent());
-        $request->setHeader('Content-Type', 'text/xml');
-        $request->setBody(xmlrpc_encode_request('pingback.ping', $args));
+        $request = HTTPClient::start();
         try {
-            $response = $request->send();
+            $response = $request->post($endpoint,
+                array('Content-Type: text/xml'),
+                xmlrpc_encode_request('pingback.ping', $args));
+            $response = xmlrpc_decode($response->getBody());
+            if (xmlrpc_is_fault($response)) {
+                common_log(LOG_WARNING,
+                       "Pingback error for '$url' ($endpoint): ".
+                       "$response[faultString] ($response[faultCode])");
+            } else {
+                common_log(LOG_INFO,
+                       "Pingback success for '$url' ($endpoint): ".
+                       "'$response'");
+            }
         } catch (HTTP_Request2_Exception $e) {
             common_log(LOG_WARNING,
                    "Pingback request failed for '$url' ($endpoint)");
         }
-        $response = xmlrpc_decode($response->getBody());
-        if (xmlrpc_is_fault($response)) {
-            common_log(LOG_WARNING,
-                   "Pingback error for '$url' ($endpoint): ".
-                   "$response[faultString] ($response[faultCode])");
-        } else {
-            common_log(LOG_INFO,
-                   "Pingback success for '$url' ($endpoint): ".
-                   "'$response'");
-        }
     }
 
     // Largely cadged from trackback_cls.php by
@@ -232,4 +232,18 @@ class LinkbackPlugin extends Plugin
         return 'LinkbackPlugin/'.LINKBACKPLUGIN_VERSION .
           ' StatusNet/' . STATUSNET_VERSION;
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'Linkback',
+                            'version' => LINKBACKPLUGIN_VERSION,
+                            'author' => 'Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:Linkback',
+                            'rawdescription' =>
+                            _m('Notify blog authors when their posts have been linked in '.
+                               'microblog notices using '.
+                               '<a href="http://www.hixie.ch/specs/pingback/pingback">Pingback</a> '.
+                               'or <a href="http://www.movabletype.org/docs/mttrackback.html">Trackback</a> protocols.'));
+        return true;
+    }
 }