X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FRealtime%2FRealtimePlugin.php;h=287e48e48475e4cb267a3ed2ec97c8754ce30ecf;hb=b4da5f3785de138b9b7c3672d331676ea7929c16;hp=84a1c7e86e84a45edcee5c67d894a7f7cd7f48ad;hpb=65ca0f911e83c227dc8b47c910cdb1c448e7273b;p=quix0rs-gnu-social.git diff --git a/plugins/Realtime/RealtimePlugin.php b/plugins/Realtime/RealtimePlugin.php index 84a1c7e86e..287e48e484 100644 --- a/plugins/Realtime/RealtimePlugin.php +++ b/plugins/Realtime/RealtimePlugin.php @@ -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__); @@ -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; } }