diff --git a/scripts/sendemail.php b/scripts/sendemail.php index 0441bfe7ee..d41f96564a 100755 --- a/scripts/sendemail.php +++ b/scripts/sendemail.php @@ -1,10 +1,9 @@ #!/usr/bin/env php . + * + * @category Plugin + * @package GNUsocial + * @copyright 2008 Free Software Foundation http://fsf.org + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link https://www.gnu.org/software/social/ */ -define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); +define('INSTALLDIR', realpath(dirname(__DIR__))); -$shortoptions = 'i:n:'; -$longoptions = array('id=', 'nickname=', 'subject='); +$shortoptions = 'i:n:a:'; +$longoptions = ['id=', 'nickname=', 'subject=', 'all=']; $helptext = << Sends given email text to user. -i --id id of the user to query + -a --all send to all users -n --nickname nickname of the user to query --subject mail subject line (required) @@ -35,28 +41,29 @@ END_OF_USEREMAIL_HELP; require_once INSTALLDIR.'/scripts/commandline.inc'; -if (have_option('i', 'id')) { +$all = have_option('a', 'all'); + +if ($all) { + $user = new User(); + $user->find(); +} else if (have_option('i', 'id')) { $id = get_option_value('i', 'id'); $user = User::getKV('id', $id); if (empty($user)) { print "Can't find user with ID $id\n"; exit(1); } + unset ($id); } else if (have_option('n', 'nickname')) { $nickname = get_option_value('n', 'nickname'); $user = User::getKV('nickname', $nickname); if (empty($user)) { - print "Can't find user with nickname '$nickname'\n"; + print "Can't find user with nickname '$nickname'.\n"; exit(1); } + unset($nickname); } else { - print "You must provide a user by --id or --nickname\n"; - exit(1); -} - -if (empty($user->email)) { - // @fixme unconfirmed address? - print "No email registered for user '$user->nickname'\n"; + print "You must provide a user by --id, --nickname or just send something to --all\n"; exit(1); } @@ -72,11 +79,25 @@ if (posix_isatty(STDIN)) { } $body = file_get_contents('php://stdin'); -print "Sending to $user->email..."; -if (mail_to_user($user, $subject, $body)) { - print " done\n"; +if ($all) { + while ($user->fetch()) { + _send($user, $subject, $body); + } } else { - print " failed.\n"; - exit(1); + _send($user, $subject, $body); } +function _send($user, $subject, $body) { + if (empty($user->email)) { + // @fixme unconfirmed address? + print "No email registered for user '$user->nickname'.\n"; + return; + } + print "Sending to $user->email... "; + if (mail_to_user($user, $subject, $body)) { + print "done.\n"; + } else { + print "failed.\n"; + return; + } +}