]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/Meteor/MeteorPlugin.php
Plugins didn't match lib/plugin.php onPluginVersion function definition
[quix0rs-gnu-social.git] / plugins / Meteor / MeteorPlugin.php
index ec8c9e217c8eb16e97f4edc41fcb7610f1c52af8..64c2fd3d6902b39e3c36e89a683ce3c6fae02ba4 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * StatusNet, the distributed open-source microblogging tool
  *
- * Plugin to do "real time" updates using Comet/Bayeux
+ * Plugin to do "real time" updates using Meteor
  *
  * PHP version 5
  *
@@ -27,7 +27,7 @@
  * @link      http://status.net/
  */
 
-if (!defined('STATUSNET') && !defined('LACONICA')) {
+if (!defined('GNUSOCIAL') && !defined('STATUSNET')) {
     exit(1);
 }
 
@@ -42,7 +42,6 @@ require_once INSTALLDIR.'/plugins/Realtime/RealtimePlugin.php';
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link     http://status.net/
  */
-
 class MeteorPlugin extends RealtimePlugin
 {
     public $webserver     = null;
@@ -50,10 +49,11 @@ class MeteorPlugin extends RealtimePlugin
     public $controlport   = null;
     public $controlserver = null;
     public $channelbase   = null;
+    public $protocol      = null;
     public $persistent    = true;
     protected $_socket    = null;
 
-    function __construct($webserver=null, $webport=4670, $controlport=4671, $controlserver=null, $channelbase='')
+    function __construct($webserver=null, $webport=4670, $controlport=4671, $controlserver=null, $channelbase='', $protocol='http')
     {
         global $config;
 
@@ -62,7 +62,8 @@ class MeteorPlugin extends RealtimePlugin
         $this->controlport   = $controlport;
         $this->controlserver = (empty($controlserver)) ? $webserver : $controlserver;
         $this->channelbase   = $channelbase;
-
+               $this->protocol      = $protocol;
+               
         parent::__construct();
     }
 
@@ -75,7 +76,8 @@ class MeteorPlugin extends RealtimePlugin
                           'webport',
                           'controlport',
                           'controlserver',
-                          'channelbase');
+                          'channelbase',
+                          'protocol');
         foreach ($settings as $name) {
             $val = common_config('meteor', $name);
             if ($val !== false) {
@@ -89,15 +91,24 @@ class MeteorPlugin extends RealtimePlugin
     function _getScripts()
     {
         $scripts = parent::_getScripts();
-        $scripts[] = 'http://'.$this->webserver.(($this->webport == 80) ? '':':'.$this->webport).'/meteor.js';
-        $scripts[] = common_path('plugins/Meteor/meteorupdater.js');
+        if ($this->protocol == 'https') {
+               $scripts[] = 'https://'.$this->webserver.(($this->webport == 443) ? '':':'.$this->webport).'/meteor.js';
+        } else {
+               $scripts[] = 'http://'.$this->webserver.(($this->webport == 80) ? '':':'.$this->webport).'/meteor.js';
+        }
+        $scripts[] = $this->path('js/meteorupdater.js');
         return $scripts;
     }
 
     function _updateInitialize($timeline, $user_id)
     {
         $script = parent::_updateInitialize($timeline, $user_id);
-        return $script." MeteorUpdater.init(\"$this->webserver\", $this->webport, \"{$timeline}\");";
+        $ours = sprintf("MeteorUpdater.init(%s, %s, %s, %s);",
+                        json_encode($this->webserver),
+                        json_encode($this->webport),
+                        json_encode($this->protocol),
+                        json_encode($timeline));
+        return $script." ".$ours;
     }
 
     function _connect()
@@ -112,7 +123,8 @@ class MeteorPlugin extends RealtimePlugin
         // May throw an exception.
         $this->_socket = stream_socket_client("tcp://{$controlserver}:{$this->controlport}", $errno, $errstr, $timeout, $flags);
         if (!$this->_socket) {
-            throw new Exception("Couldn't connect to {$controlserver} on {$this->controlport}");
+            // TRANS: Exception. %1$s is the control server, %2$s is the control port.
+            throw new Exception(sprintf(_m('Could not connect to %1$s on %2$s.'),$controlserver,$this->controlport));
         }
     }
 
@@ -124,7 +136,8 @@ class MeteorPlugin extends RealtimePlugin
         $cnt = fwrite($this->_socket, $cmd);
         $result = fgets($this->_socket);
         if (preg_match('/^ERR (.*)$/', $result, $matches)) {
-            throw new Exception('Error adding meteor message "'.$matches[1].'"');
+            // TRANS: Exception. %s is the Meteor message that could not be added.
+            throw new Exception(sprintf(_m('Error adding meteor message "%s".'),$matches[1]));
         }
         // TODO: parse and deal with result
     }
@@ -146,4 +159,16 @@ class MeteorPlugin extends RealtimePlugin
         }
         return implode('-', $path);
     }
+
+    function onPluginVersion(array &$versions)
+    {
+        $versions[] = array('name' => 'Meteor',
+                            'version' => GNUSOCIAL_VERSION,
+                            'author' => 'Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:Meteor',
+                            'rawdescription' =>
+                            // TRANS: Plugin description.
+                            _m('Plugin to do "real time" updates using Meteor.'));
+        return true;
+    }
 }