#!/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', dirname(__DIR__)); define('PUBLICDIR', INSTALLDIR . DIRECTORY_SEPARATOR . 'public'); $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) END_OF_USEREMAIL_HELP; require_once INSTALLDIR.'/scripts/commandline.inc'; $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"; exit(1); } unset($nickname); } else { print "You must provide a user by --id, --nickname or just send something to --all\n"; exit(1); } if (!have_option('subject')) { echo "You must provide a subject line for the mail in --subject='...' param.\n"; exit(1); } $subject = get_option_value('subject'); if (posix_isatty(STDIN)) { print "You must provide message input on stdin!\n"; exit(1); } $body = file_get_contents('php://stdin'); if ($all) { while ($user->fetch()) { _send($user, $subject, $body); } } else { _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; } }