function _getChannel($action) { $timeline = null; $arg1 = null; $arg2 = null; $action_name = $action->trimmed('action'); // FIXME: lists // FIXME: search (!) // FIXME: profile + tag switch ($action_name) { case 'public': // no arguments break; case 'tag': $tag = $action->trimmed('tag'); if (!empty($tag)) { $arg1 = $tag; } else { $this->log(LOG_NOTICE, "Unexpected 'tag' action without tag argument"); return null; } break; case 'showstream': case 'all': case 'replies': case 'showgroup': $nickname = common_canonical_nickname($action->trimmed('nickname')); if (!empty($nickname)) { $arg1 = $nickname; } else { $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); return $channel; }