]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/Realtime/RealtimePlugin.php
Merge branch 'inblob' of git@gitorious.org:~evan/statusnet/evans-mainline into inblob
[quix0rs-gnu-social.git] / plugins / Realtime / RealtimePlugin.php
index 88a87dcf9c19bc07fce4e4743ad960f8669dd8ad..89640f5beb25c7e41db6c4a3dceeb2569fa326cb 100644 (file)
@@ -59,6 +59,7 @@ class RealtimePlugin extends Plugin
     {
         $this->replyurl = common_local_url('newnotice');
         $this->favorurl = common_local_url('favor');
+        $this->repeaturl = common_local_url('repeat');
         // FIXME: need to find a better way to pass this pattern in
         $this->deleteurl = common_local_url('deletenotice',
                                             array('notice' => '0000000000'));
@@ -101,24 +102,27 @@ class RealtimePlugin extends Plugin
             $realtimeUI = ' RealtimeUpdate.initPopupWindow();';
         }
         else {
-            $iconurl = common_path('plugins/Realtime/icon_external.gif');
-            $realtimeUI = ' RealtimeUpdate.addPopup("'.$url.'", "'.$timeline.'", "'. $iconurl .'");';
+            $pluginPath = common_path('plugins/Realtime/');
+            $realtimeUI = ' RealtimeUpdate.initActions("'.$url.'", "'.$timeline.'", "'. $pluginPath .'");';
         }
 
-        $action->elementStart('script', array('type' => 'text/javascript'));
-
         $script = ' $(document).ready(function() { '.
           $realtimeUI.
           $this->_updateInitialize($timeline, $user_id).
           '}); ';
-        $action->raw($script);
+        $action->inlineScript($script);
 
-        $action->elementEnd('script');
+        return true;
+    }
 
+    function onEndShowStatusNetStyles($action)
+    {
+        $action->cssLink(common_path('plugins/Realtime/realtimeupdate.css'),
+                         null, 'screen, projection, tv');
         return true;
     }
 
-    function onEndNoticeSave($notice)
+    function onHandleQueuedNotice($notice)
     {
         $paths = array();
 
@@ -132,8 +136,8 @@ class RealtimePlugin extends Plugin
 
         // Add to the public timeline
 
-        if ($notice->is_local ||
-            ($notice->is_local == 0 && !common_config('public', 'localonly'))) {
+        if ($notice->is_local == Notice::LOCAL_PUBLIC ||
+            ($notice->is_local == Notice::REMOTE_OMB && !common_config('public', 'localonly'))) {
             $paths[] = array('public');
         }
 
@@ -150,14 +154,11 @@ class RealtimePlugin extends Plugin
         // Add to inbox timelines
         // XXX: do a join
 
-        $inbox = new Notice_inbox();
-        $inbox->notice_id = $notice->id;
+        $ni = $notice->whoGets();
 
-        if ($inbox->find()) {
-            while ($inbox->fetch()) {
-                $user = User::staticGet('id', $inbox->user_id);
-                $paths[] = array('all', $user->nickname);
-            }
+        foreach (array_keys($ni) as $user_id) {
+            $user = User::staticGet('id', $user_id);
+            $paths[] = array('all', $user->nickname);
         }
 
         // Add to the replies timeline
@@ -213,8 +214,9 @@ class RealtimePlugin extends Plugin
 
         $action->elementStart('body',
                               (common_current_user()) ? array('id' => $action->trimmed('action'),
-                                                              'class' => 'user_in')
-                              : array('id' => $action->trimmed('action')));
+                                                              'class' => 'user_in realtime-popup')
+                              : array('id' => $action->trimmed('action'),
+                                      'class'=> 'realtime-popup'));
 
         // XXX hack to deal with JS that tries to get the
         // root url from page output
@@ -240,7 +242,7 @@ class RealtimePlugin extends Plugin
         // FIXME: this code should be abstracted to a neutral third
         // party, like Notice::asJson(). I'm not sure of the ethics
         // of refactoring from within a plugin, so I'm just abusing
-        // the ApiAction method. Do not do this unless you're me!
+        // the ApiAction method. Don't do this unless you're me!
 
         require_once(INSTALLDIR.'/lib/api.php');
 
@@ -262,6 +264,24 @@ class RealtimePlugin extends Plugin
         $profile = $notice->getProfile();
         $arr['user']['profile_url'] = $profile->profileurl;
 
+        // Add needed repeat data
+
+        if (!empty($notice->repeat_of)) {
+            $original = Notice::staticGet('id', $notice->repeat_of);
+            if (!empty($original)) {
+                $arr['retweeted_status']['url'] = $original->bestUrl();
+                $arr['retweeted_status']['html'] = htmlspecialchars($original->rendered);
+                $arr['retweeted_status']['source'] = htmlspecialchars($original->source);
+                $originalProfile = $original->getProfile();
+                $arr['retweeted_status']['user']['profile_url'] = $originalProfile->profileurl;
+                if (!empty($original->reply_to)) {
+                    $originalReply = Notice::staticGet('id', $original->reply_to);
+                    $arr['retweeted_status']['in_reply_to_status_url'] = $originalReply->bestUrl();
+                }
+            }
+            $original = null;
+        }
+
         return $arr;
     }
 
@@ -285,22 +305,14 @@ class RealtimePlugin extends Plugin
         return $tags;
     }
 
-    // Push this up to Plugin
-
-    function log($level, $msg)
-    {
-        common_log($level, get_class($this) . ': '.$msg);
-    }
-
     function _getScripts()
     {
-        return array('plugins/Realtime/realtimeupdate.js',
-                     'plugins/Realtime/json2.js');
+        return array('plugins/Realtime/realtimeupdate.js');
     }
 
     function _updateInitialize($timeline, $user_id)
     {
-        return "RealtimeUpdate.init($user_id, \"$this->replyurl\", \"$this->favorurl\", \"$this->deleteurl\"); ";
+        return "RealtimeUpdate.init($user_id, \"$this->replyurl\", \"$this->favorurl\", \"$this->repeaturl\", \"$this->deleteurl\"); ";
     }
 
     function _connect()