]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Add option to send email to --all users on sendemail.php script
authorDiogo Cordeiro <diogo@fc.up.pt>
Thu, 23 Aug 2018 22:48:38 +0000 (23:48 +0100)
committerDiogo Cordeiro <diogo@fc.up.pt>
Thu, 23 Aug 2018 22:48:38 +0000 (23:48 +0100)
scripts/sendemail.php

index 0441bfe7ee9abef0ebc417ca31d2e4cb8bf9a8b9..d41f96564a23b8f646219909efff1619adb39fe2 100755 (executable)
@@ -1,10 +1,9 @@
 #!/usr/bin/env php
 <?php
-/*
- * StatusNet - a distributed open-source microblogging tool
- * Copyright (C) 2008, 2009, StatusNet, Inc.
+/**
+ * GNU social - a federating social network
  *
- * This program is free software: you can redistribute it and/or modify
+ * LICENCE: This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  *
  * You should have received a copy of the GNU Affero General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @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 = <<<END_OF_USEREMAIL_HELP
 sendemail.php [options] < <message body>
 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;
+    }
+}