]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
welcome notice, default sub for new users
authorEvan Prodromou <evan@controlyourself.ca>
Sat, 28 Mar 2009 21:36:39 +0000 (17:36 -0400)
committerEvan Prodromou <evan@controlyourself.ca>
Mon, 30 Mar 2009 15:14:43 +0000 (11:14 -0400)
README
classes/User.php
lib/common.php
lib/noticelist.php

diff --git a/README b/README
index 71760ce4f818fac5127796acb5086ece97872751..73cb95367cd4b07e6a333f7209b986dce25cf5e6 100644 (file)
--- a/README
+++ b/README
@@ -1169,6 +1169,20 @@ banned: an array of usernames and/or profile IDs of 'banned' profiles.
         not be accepted at all. (Compare with blacklisted users above,
         whose posts just won't show up in the public stream.)
 
+newuser
+-------
+
+Options with new users.
+
+subscribe: nickname of a user account to automatically subscribe new
+           users to. Typically this would be system account for e.g.
+           service updates or announcements. Users are able to unsub
+           if they want. Default is null; no auto subscribe.
+welcome: nickname of a user account that sends welcome messages to new
+         users. Can be the same as 'subscribe' account, although on
+         busy servers it may be a good idea to keep that one just for
+         'urgent' messages. Default is null; no message.
+
 Troubleshooting
 ===============
 
index d9f30bec58cf18181a0e78347b2b1b1b2209a5a7..e9e472fe1bfd13a34b5078171537c388ad129805 100644 (file)
@@ -273,12 +273,54 @@ class User extends Memcached_DataObject
             $user->emailChanged();
         }
 
+        // Default system subscription
+
+        $defnick = common_config('newuser', 'default');
+
+        if (!empty($defnick)) {
+            $defuser = User::staticGet('nickname', $defnick);
+            if (empty($defuser)) {
+                common_log(LOG_WARNING, sprintf("Default user %s does not exist.", $defnick),
+                           __FILE__);
+            } else {
+                $defsub = new Subscription();
+                $defsub->subscriber = $user->id;
+                $defsub->subscribed = $defuser->id;
+                $defsub->created = $user->created;
+
+                $result = $defsub->insert();
+
+                if (!$result) {
+                    common_log_db_error($defsub, 'INSERT', __FILE__);
+                    return false;
+                }
+            }
+        }
+
         $profile->query('COMMIT');
 
         if ($email && !$user->email) {
             mail_confirm_address($user, $confirm->code, $profile->nickname, $email);
         }
 
+        // Welcome message
+
+        $welcome = common_config('newuser', 'welcome');
+
+        if (!empty($welcome)) {
+            $welcomeuser = User::staticGet('nickname', $welcome);
+            if (empty($welcomeuser)) {
+                common_log(LOG_WARNING, sprintf("Welcome user %s does not exist.", $defnick),
+                           __FILE__);
+            } else {
+                $notice = Notice::saveNew($welcomeuser->id,
+                                          sprintf(_('Welcome to %1$s, @%2$s!'),
+                                                  common_config('site', 'name'),
+                                                  $user->nickname),
+                                          'system');
+            }
+        }
+
         return $user;
     }
 
index 1ca9e521b028a3029c2b91eb012c79009b8cec7a..caad705a42276d8cfbd5fa6ae0b8fbb74e8aace4 100644 (file)
@@ -151,6 +151,9 @@ $config =
         array('notify' => array()),
         'inboxes' =>
         array('enabled' => true), # on by default for new sites
+        'newuser' =>
+        array('subscribe' => null,
+              'welcome' => null),
         );
 
 $config['db'] = &PEAR::getStaticProperty('DB_DataObject','options');
index 8523f2e63ec0e65e3ebf8354c56b00e46246a14d..4182d8808f7046520a9453e8ab1c90b6562083dd 100644 (file)
@@ -391,6 +391,7 @@ class NoticeListItem extends Widget
              case 'xmpp':
              case 'mail':
              case 'omb':
+             case 'system':
              case 'api':
                 $this->out->element('dd', null, $source_name);
                 break;