]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/Realtime/RealtimePlugin.php
Merge branch 'master' into 1.0.x
[quix0rs-gnu-social.git] / plugins / Realtime / RealtimePlugin.php
index eca3a8b029be1f90ebee22158f761f68c9117460..287e48e48475e4cb267a3ed2ec97c8754ce30ecf 100644 (file)
@@ -51,7 +51,6 @@ class RealtimePlugin extends Plugin
      * When it's time to initialize the plugin, calculate and
      * pass the URLs we need.
      */
-
     function onInitializePlugin()
     {
         // FIXME: need to find a better way to pass this pattern in
@@ -59,14 +58,14 @@ class RealtimePlugin extends Plugin
                                             array('notice' => '0000000000'));
         return true;
     }
-    
+
     function onCheckSchema()
     {
         $schema = Schema::get();
         $schema->ensureTable('realtime_channel', Realtime_channel::schemaDef());
         return true;
     }
-    
+
     function onAutoload($cls)
     {
         $dir = dirname(__FILE__);
@@ -147,7 +146,7 @@ class RealtimePlugin extends Plugin
             $pluginPath = common_path('plugins/Realtime/');
             $keepalive = common_local_url('keepalivechannel', array('channelkey' => $channel->channel_key));
             $close = common_local_url('closechannel', array('channelkey' => $channel->channel_key));
-            $realtimeUI = ' RealtimeUpdate.initActions("'.$url.'", "'.$timeline.'", "'. $pluginPath .'", "'.$keepalive.'", "'.$close.'"); ';
+            $realtimeUI = ' RealtimeUpdate.initActions('.json_encode($url).', '.json_encode($timeline).', '.json_encode($pluginPath).', '.json_encode($keepalive).', '.json_encode($close).'); ';
         }
 
         $script = ' $(document).ready(function() { '.
@@ -173,6 +172,13 @@ class RealtimePlugin extends Plugin
 
         // Add to the author's timeline
 
+        try {
+            $profile = $notice->getProfile();
+        } catch (Exception $e) {
+            $this->log(LOG_ERR, $e->getMessage());
+            return true;
+        }
+
         $user = User::staticGet('id', $notice->profile_id);
 
         if (!empty($user)) {
@@ -182,7 +188,7 @@ class RealtimePlugin extends Plugin
         // Add to the public timeline
 
         if ($notice->is_local == Notice::LOCAL_PUBLIC ||
-            ($notice->is_local == Notice::REMOTE_OMB && !common_config('public', 'localonly'))) {
+            ($notice->is_local == Notice::REMOTE && !common_config('public', 'localonly'))) {
             $paths[] = array('public', null, null);
         }
 
@@ -238,31 +244,31 @@ class RealtimePlugin extends Plugin
             $json = $this->noticeAsJson($notice);
 
             $this->_connect();
-            
+
             // XXX: We should probably fan-out here and do a
             // new queue item for each path
 
             foreach ($paths as $path) {
-               
-               list($action, $arg1, $arg2) = $path;
-               
-               $channels = Realtime_channel::getAllChannels($action, $arg1, $arg2);
-               
-               foreach ($channels as $channel) {
-                       
-                       // XXX: We should probably fan-out here and do a
-                       // new queue item for each user/path combo
-            
-                       if (is_null($channel->user_id)) {
-                               $profile = null;
-                       } else {
-                               $profile = Profile::staticGet('id', $channel->user_id);
-                       }
-                       if ($notice->inScope($profile)) {
-                               $timeline = $this->_pathToChannel(array($channel->channel_key));                
-                               $this->_publish($timeline, $json);
-                       }
-               }
+
+                list($action, $arg1, $arg2) = $path;
+
+                $channels = Realtime_channel::getAllChannels($action, $arg1, $arg2);
+
+                foreach ($channels as $channel) {
+
+                    // XXX: We should probably fan-out here and do a
+                    // new queue item for each user/path combo
+
+                    if (is_null($channel->user_id)) {
+                        $profile = null;
+                    } else {
+                        $profile = Profile::staticGet('id', $channel->user_id);
+                    }
+                    if ($notice->inScope($profile)) {
+                        $timeline = $this->_pathToChannel(array($channel->channel_key));
+                        $this->_publish($timeline, $json);
+                    }
+                }
             }
 
             $this->_disconnect();
@@ -288,9 +294,18 @@ class RealtimePlugin extends Plugin
         // root url from page output
 
         $action->elementStart('address');
+
+        if (common_config('singleuser', 'enabled')) {
+            $user = User::singleUser();
+            $url = common_local_url('showstream', array('nickname' => $user->nickname));
+        } else {
+            $url = common_local_url('public');
+        }
+
         $action->element('a', array('class' => 'url',
-                                  'href' => common_local_url('public')),
+                                    'href' => $url),
                          '');
+
         $action->elementEnd('address');
 
         $action->showContentBlock();
@@ -367,9 +382,8 @@ class RealtimePlugin extends Plugin
             $convurl = $conv->uri;
 
             if(empty($convurl)) {
-                $msg = sprintf(
-                    "Couldn't find Conversation ID %d to make 'in context'"
-                    . "link for Notice ID %d",
+                $msg = sprintf( "Could not find Conversation ID %d to make 'in context'"
+                    . "link for Notice ID %d.",
                     $notice->conversation,
                     $notice->id
                 );
@@ -455,26 +469,26 @@ class RealtimePlugin extends Plugin
     function _getChannel($action)
     {
         $timeline = null;
-               $arg1     = null;
-               $arg2     = null;
-               
+        $arg1     = null;
+        $arg2     = null;
+
         $action_name = $action->trimmed('action');
 
-               // FIXME: lists
-               // FIXME: search (!)
-               // FIXME: profile + tag
-               
+        // FIXME: lists
+        // FIXME: search (!)
+        // FIXME: profile + tag
+
         switch ($action_name) {
          case 'public':
-               // no arguments
+            // no arguments
             break;
          case 'tag':
             $tag = $action->trimmed('tag');
-            if (empty($tag)) {
+            if (!empty($tag)) {
                 $arg1 = $tag;
             } else {
-               $this->log(LOG_NOTICE, "Unexpected 'tag' action without tag argument");
-               return null;
+                $this->log(LOG_NOTICE, "Unexpected 'tag' action without tag argument");
+                return null;
             }
             break;
          case 'showstream':
@@ -485,29 +499,29 @@ class RealtimePlugin extends Plugin
             if (!empty($nickname)) {
                 $arg1 = $nickname;
             } else {
-               $this->log(LOG_NOTICE, "Unexpected $action_name action without nickname argument.");
-               return null;
+                $this->log(LOG_NOTICE, "Unexpected $action_name action without nickname argument.");
+                return null;
             }
             break;
          default:
             return null;
         }
 
-               $user = common_current_user();
-               
-               $user_id = (!empty($user)) ? $user->id : null;
-               
-               $channel = Realtime_channel::getChannel($user_id,
-                                                                                               $action_name,
-                                                                                               $arg1,
-                                                                                               $arg2);
+        $user = common_current_user();
+
+        $user_id = (!empty($user)) ? $user->id : null;
+
+        $channel = Realtime_channel::getChannel($user_id,
+                                                $action_name,
+                                                $arg1,
+                                                $arg2);
 
         return $channel;
     }
-    
+
     function onStartReadWriteTables(&$alwaysRW, &$rwdb)
     {
-       $alwaysRW[] = 'realtime_channel';
-       return true;
+        $alwaysRW[] = 'realtime_channel';
+        return true;
     }
 }