// 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);
+ $result = false;
+
+ 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) {
break;
case 'lose':
if ($arg) {
- list($other, $extra) = $this->split_arg($arg);
+ list($other, $extra) = self::split_arg($arg);
if ($extra) {
$result = null;
} else {
break;
case 'on':
if ($arg) {
- list($other, $extra) = $this->split_arg($arg);
+ list($other, $extra) = self::split_arg($arg);
if ($extra) {
$result = null;
} else {
break;
case 'off':
if ($arg) {
- list($other, $extra) = $this->split_arg($arg);
+ list($other, $extra) = self::split_arg($arg);
if ($extra) {
$result = null;
} else {
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':
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 {
$result = new ReplyCommand($user, $other, $extra);
}
break;
- case 'repeat':
- case 'rp':
- case 'rt':
- case 'rd':
+ case 'whois':
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 WhoisCommand($user, $other);
+ }
}
break;
- case 'whois':
+ 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 WhoisCommand($user, $other);
+ $result = new StatsCommand($user);
}
break;
- case 'fav':
+ case 'invite':
if (!$arg) {
$result = null;
- }
- list($other, $extra) = $this->split_arg($arg);
- if ($extra) {
- $result = null;
} else {
- $result = new FavCommand($user, $other);
+ list($other, $extra) = self::split_arg($arg);
+ if ($extra) {
+ $result = null;
+ } else {
+ $result = new InviteCommand($user, $other);
+ }
}
break;
- case 'nudge':
+ case 'list':
+ case 'tag':
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 NudgeCommand($user, $other);
+ $result = new TagCommand($user, $other, $tags);
}
break;
- case 'stats':
- if ($arg) {
- $result = null;
- }
- $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;
/**
* 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) {