]> 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>
Sat, 28 Mar 2009 21:36:39 +0000 (17:36 -0400)
README
classes/User.php
lib/common.php
lib/noticelist.php

diff --git a/README b/README
index 62f4f18636bc51de064f84b46356987c9903ea46..95f9edceaf1eba9dc38b41aa839f6bcaf0204452 100644 (file)
--- a/README
+++ b/README
@@ -1179,6 +1179,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 d9d0ab277609a0e2851d4ef8c540fa73784dd464..c2037c3ad6b0e29c189e404a732c079a3689f542 100644 (file)
@@ -153,6 +153,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 9fc0126b3eb95e4def41607b9540330fe16dd572..6af3018396ed7d6c16de13aab4a25cc605eb2537 100644 (file)
@@ -387,6 +387,7 @@ class NoticeListItem extends Widget
              case 'xmpp':
              case 'mail':
              case 'omb':
+             case 'system':
              case 'api':
                 $this->out->element('dd', null, $source_name);
                 break;