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;
 }