From: Brion Vibber Date: Tue, 9 Mar 2010 21:41:05 +0000 (-0800) Subject: Added scripts/command.php, can be used to run commands such as subscription on behalf... X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=971f1f64f1f42a51bced51665ae693a9d37750a0;p=quix0rs-gnu-social.git Added scripts/command.php, can be used to run commands such as subscription on behalf of users. This includes whatever support for extended command parsing plugins may have added. Example: ./scripts/command.php -nbrionv sub update@status.net --- diff --git a/lib/channel.php b/lib/channel.php index 3cd168786c..689bca0be9 100644 --- a/lib/channel.php +++ b/lib/channel.php @@ -47,6 +47,25 @@ class Channel } } +class CLIChannel extends Channel +{ + function source() + { + return 'cli'; + } + + function output($user, $text) + { + $site = common_config('site', 'name'); + print "[{$user->nickname}@{$site}] $text\n"; + } + + function error($user, $text) + { + $this->output($user, $text); + } +} + class XMPPChannel extends Channel { diff --git a/scripts/command.php b/scripts/command.php new file mode 100755 index 0000000000..6041b02eb1 --- /dev/null +++ b/scripts/command.php @@ -0,0 +1,80 @@ +#!/usr/bin/env php +. + */ + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); + +$shortoptions = 'i:n:'; +$longoptions = array('id=', 'nickname='); + +$helptext = <<handle_command($user, $body); + if ($cmd) { + $cmd->execute($chan); + return true; + } else { + $chan->error($user, "Not a valid command. Try 'help'?"); + return false; + } +} + + + +if (have_option('i', 'id')) { + $id = get_option_value('i', 'id'); + $user = User::staticGet('id', $id); + if (empty($user)) { + print "Can't find user with ID $id\n"; + exit(1); + } +} else if (have_option('n', 'nickname')) { + $nickname = get_option_value('n', 'nickname'); + $user = User::staticGet('nickname', $nickname); + if (empty($user)) { + print "Can't find user with nickname '$nickname'\n"; + exit(1); + } +} else { + print "You must provide either an ID or a nickname.\n\n"; + print $helptext; + exit(1); +} + +// @todo refactor the interactive console in console.php and use +// that to optionally make an interactive test console here too. +// Would be good to help people test commands when XMPP or email +// isn't available locally. +interpretCommand($user, implode(' ', $args)); +