X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fcommandinterpreter.php;h=e7d98da0255048b9786acc8506f72620f1a3aba2;hb=10f2cde0b1d75fa023b00400162cb525e8719514;hp=2e79fb27ee0a44061061f3399b7aef4de770300f;hpb=21feac3bea72b0ecd88a39d95345a0c78fe5fd89;p=quix0rs-gnu-social.git diff --git a/lib/commandinterpreter.php b/lib/commandinterpreter.php index 2e79fb27ee..e7d98da025 100644 --- a/lib/commandinterpreter.php +++ b/lib/commandinterpreter.php @@ -28,20 +28,23 @@ class CommandInterpreter // XXX: localise $text = preg_replace('/\s+/', ' ', trim($text)); - list($cmd, $arg) = $this->split_arg($text); + list($cmd, $arg) = self::split_arg($text); // We try to support all the same commands as Twitter, see // http://getsatisfaction.com/twitter/topics/what_are_the_twitter_commands // There are a few compatibility commands from earlier versions of // StatusNet - if (Event::handle('StartIntepretCommand', array($cmd, $arg, $user, &$result))) { - switch(strtolower($cmd)) { + $cmd = strtolower($cmd); + + if (Event::handle('StartInterpretCommand', array($cmd, $arg, $user, &$result))) { + switch($cmd) { case 'help': if ($arg) { $result = null; + } else { + $result = new HelpCommand($user); } - $result = new HelpCommand($user); break; case 'login': if ($arg) { @@ -52,7 +55,7 @@ class CommandInterpreter break; case 'lose': if ($arg) { - list($other, $extra) = $this->split_arg($arg); + list($other, $extra) = self::split_arg($arg); if ($extra) { $result = null; } else { @@ -85,7 +88,7 @@ class CommandInterpreter break; case 'on': if ($arg) { - list($other, $extra) = $this->split_arg($arg); + list($other, $extra) = self::split_arg($arg); if ($extra) { $result = null; } else { @@ -97,7 +100,7 @@ class CommandInterpreter break; case 'off': if ($arg) { - list($other, $extra) = $this->split_arg($arg); + list($other, $extra) = self::split_arg($arg); if ($extra) { $result = null; } else { @@ -118,49 +121,51 @@ class CommandInterpreter case 'join': if (!$arg) { $result = null; - } - list($other, $extra) = $this->split_arg($arg); - if ($extra) { - $result = null; } else { - $result = new JoinCommand($user, $other); + list($other, $extra) = self::split_arg($arg); + if ($extra) { + $result = null; + } else { + $result = new JoinCommand($user, $other); + } } break; case 'drop': if (!$arg) { $result = null; - } - list($other, $extra) = $this->split_arg($arg); - if ($extra) { - $result = null; } else { - $result = new DropCommand($user, $other); + list($other, $extra) = self::split_arg($arg); + if ($extra) { + $result = null; + } else { + $result = new DropCommand($user, $other); + } } break; case 'follow': case 'sub': if (!$arg) { $result = null; - } - - list($other, $extra) = $this->split_arg($arg); - if ($extra) { - $result = null; } else { - $result = new SubCommand($user, $other); + list($other, $extra) = self::split_arg($arg); + if ($extra) { + $result = null; + } else { + $result = new SubCommand($user, $other); + } } break; case 'leave': case 'unsub': if (!$arg) { $result = null; - } - - list($other, $extra) = $this->split_arg($arg); - if ($extra) { - $result = null; } else { - $result = new UnsubCommand($user, $other); + list($other, $extra) = self::split_arg($arg); + if ($extra) { + $result = null; + } else { + $result = new UnsubCommand($user, $other); + } } break; case 'get': @@ -168,31 +173,19 @@ class CommandInterpreter if (!$arg) { $result = null; } - list($other, $extra) = $this->split_arg($arg); + list($other, $extra) = self::split_arg($arg); if ($extra) { $result = null; } else { $result = new GetCommand($user, $other); } break; - case 'd': - case 'dm': - if (!$arg) { - $result = null; - } - list($other, $extra) = $this->split_arg($arg); - if (!$extra) { - $result = null; - } else { - $result = new MessageCommand($user, $other, $extra); - } - break; case 'r': case 'reply': if (!$arg) { $result = null; } - list($other, $extra) = $this->split_arg($arg); + list($other, $extra) = self::split_arg($arg); if (!$extra) { $result = null; } else { @@ -205,102 +198,125 @@ class CommandInterpreter case 'rd': if (!$arg) { $result = null; - } - list($other, $extra) = $this->split_arg($arg); - if ($extra) { - $result = null; } else { - $result = new RepeatCommand($user, $other); + list($other, $extra) = self::split_arg($arg); + if ($extra) { + $result = null; + } else { + $result = new RepeatCommand($user, $other); + } } break; case 'whois': if (!$arg) { $result = null; - } - list($other, $extra) = $this->split_arg($arg); - if ($extra) { - $result = null; } else { - $result = new WhoisCommand($user, $other); + list($other, $extra) = self::split_arg($arg); + if ($extra) { + $result = null; + } else { + $result = new WhoisCommand($user, $other); + } } break; - case 'fav': + case 'nudge': if (!$arg) { $result = null; + } else { + list($other, $extra) = self::split_arg($arg); + if ($extra) { + $result = null; + } else { + $result = new NudgeCommand($user, $other); + } } - list($other, $extra) = $this->split_arg($arg); - if ($extra) { + break; + case 'stats': + if ($arg) { $result = null; } else { - $result = new FavCommand($user, $other); + $result = new StatsCommand($user); } break; - case 'nudge': + case 'invite': if (!$arg) { $result = null; - } - list($other, $extra) = $this->split_arg($arg); - if ($extra) { - $result = null; } else { - $result = new NudgeCommand($user, $other); + list($other, $extra) = self::split_arg($arg); + if ($extra) { + $result = null; + } else { + $result = new InviteCommand($user, $other); + } } break; - case 'stats': - if ($arg) { + case 'list': + case 'tag': + if (!$arg) { $result = null; + break; + } + list($other, $tags) = self::split_arg($arg); + if (!$tags) { + $result = null; + } else { + $result = new TagCommand($user, $other, $tags); } - $result = new StatsCommand($user); break; - case 'invite': + case 'unlist': + case 'untag': if (!$arg) { $result = null; + break; } - list($other, $extra) = $this->split_arg($arg); - if ($extra) { + list($other, $tags) = self::split_arg($arg); + if (!$tags) { $result = null; } else { - $result = new InviteCommand($user, $other); + $result = new UntagCommand($user, $other, $tags); } break; case 'track': if (!$arg) { $result = null; - } - list($word, $extra) = $this->split_arg($arg); - if ($extra) { - $result = null; - } else if ($word == 'off') { - $result = new TrackOffCommand($user); } else { - $result = new TrackCommand($user, $word); + list($word, $extra) = self::split_arg($arg); + if ($extra) { + $result = null; + } else if ($word == 'off') { + $result = new TrackOffCommand($user); + } else { + $result = new TrackCommand($user, $word); + } } break; case 'untrack': if (!$arg) { $result = null; - } - list($word, $extra) = $this->split_arg($arg); - if ($extra) { - $result = null; - } else if ($word == 'all') { - $result = new TrackOffCommand($user); } else { - $result = new UntrackCommand($user, $word); + list($word, $extra) = self::split_arg($arg); + if ($extra) { + $result = null; + } else if ($word == 'all') { + $result = new TrackOffCommand($user); + } else { + $result = new UntrackCommand($user, $word); + } } break; case 'tracks': case 'tracking': if ($arg) { $result = null; + } else { + $result = new TrackingCommand($user); } - $result = new TrackingCommand($user); break; default: $result = false; } - - Event::handle('EndInterpretCommand', array($cmd, $arg, $user, $result)); + + Event::handle('EndInterpretCommand', array($cmd, $arg, $user, &$result)); } return $result; @@ -309,7 +325,7 @@ class CommandInterpreter /** * Split arguments without triggering a PHP notice warning */ - function split_arg($text) + static function split_arg($text) { $pieces = explode(' ', $text, 2); if (count($pieces) == 1) {