]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/EmailReminder/scripts/sendemailreminder.php
EmailReminder plugin to send reminders about various things
[quix0rs-gnu-social.git] / plugins / EmailReminder / scripts / sendemailreminder.php
diff --git a/plugins/EmailReminder/scripts/sendemailreminder.php b/plugins/EmailReminder/scripts/sendemailreminder.php
new file mode 100644 (file)
index 0000000..4cb7087
--- /dev/null
@@ -0,0 +1,132 @@
+#!/usr/bin/env php
+<?php
+/*
+* StatusNet - a distributed open-source microblogging tool
+* Copyright (C) 2011, StatusNet, Inc.
+*
+* 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.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU Affero General Public License for more details.
+*
+* 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/>.
+*/
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
+
+$shortoptions = 't:e:au';
+$longoptions = array('type=', 'email=', 'all', 'universe');
+
+$helptext = <<<END_OF_SENDEMAILREMINDER_HELP
+sendemailreminder.php [options]
+Send an email summary of the inbox to users
+
+ -t --type     type of reminder to send (register | invite | all)
+ -e --email    email address to send reminder to
+ -a --all      send reminder to all addresses
+ -u --universe send reminder to all addresses on all sites
+
+END_OF_SENDEMAILREMINDER_HELP;
+
+require_once INSTALLDIR . '/scripts/commandline.inc';
+
+$quiet = have_option('q', 'quiet');
+
+$types = array(
+    // registration confirmation reminder
+    'register' => array(
+        'type'       => 'register',
+        'className'  => 'Confirm_address',
+        'utransport' => 'uregrem'
+     ),
+    // invitation confirmation reminder
+    'invite'   => array(
+        'type'       => 'invite',
+        'className'  => 'Invitation',
+        'utransport' => 'uinvrem'
+    )
+    // ... add more here
+);
+
+$type = null;
+
+if (have_option('t', 'type')) {
+    $type = trim(get_option_value('t', 'type'));
+    if (!in_array($type, array_keys($types)) && $type !== 'all') {
+       print _m("Unknown reminder type: {$type}.\n");
+       exit(1);
+    }
+} else {
+   show_help();
+   exit(1);
+}
+
+$reminders = array();
+
+switch($type) {
+case 'register':
+    $reminders[] = $types['register'];
+    break;
+case 'invite':
+    $reminders[] = $types['invite'];
+    break;
+case 'all':
+    $reminders = $types;
+    break;
+}
+
+if (have_option('u', 'universe')) {
+    $sn = new Status_network();
+    if ($sn->find()) {
+        while ($sn->fetch()) {
+            $server = $sn->getServerName();
+            StatusNet::init($server);
+            // Different queue manager, maybe!
+            $qm = QueueManager::get();
+            foreach ($reminders as $reminder) {
+                extract($reminder);
+                $qm->enqueue($type, 'siterem');
+                if (!$quiet) { print "Sent pending {$type} reminders to all unconfirmed addresses in the known universe.\n"; }
+            }
+        }
+    }
+} else {
+    $qm = QueueManager::get();
+    try {
+        // enqueue reminder for specific email address or all unconfirmed addresses
+        if (have_option('e', 'email')) {
+            $address = trim(get_option_value('e', 'email'));
+            foreach ($reminders as $reminder) {
+                // real bad voodoo here
+                extract($reminder);
+                $confirm = new $className;
+                $confirm->address = $address;
+                $result = $confirm->find(true);
+                if (empty($result)) {
+                    throw new Exception("No confirmation code found for {$address}.");
+                }
+                $qm->enqueue($confirm, $utransport);
+                if (!$quiet) { print "Sent all pending {$type} reminder to {$address}.\n"; }
+            }
+        } else if (have_option('a', 'all')) {
+            foreach ($reminders as $reminder) {
+                extract($reminder);
+                $qm->enqueue($type, 'siterem');
+                if (!$quiet) { print "Sent pending {$type} reminders to all unconfirmed addresses on the site.\n"; }
+            }
+        } else {
+            show_help();
+            exit(1);
+        }
+    } catch (Exception $e) {
+        if (!$quiet) { print $e->getMessage() . "\n"; }
+        common_log(LOG_ERR, $e->getMessage(), __FILE__);
+        exit(1);
+    }
+}