summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@controlyourself.ca>2009-03-28 17:36:39 -0400
committerEvan Prodromou <evan@controlyourself.ca>2009-03-28 17:36:39 -0400
commitfe426a3152db14e175e3a5bb819c4eca4279b6f7 (patch)
tree0099a3f9cbe0149f74d96bff37d9ecfbdbd76fa1
parenta4919eab6a5f01c3220507790f16c55dd4dbc1f6 (diff)
welcome notice, default sub for new users
-rw-r--r--README14
-rw-r--r--classes/User.php42
-rw-r--r--lib/common.php3
-rw-r--r--lib/noticelist.php1
4 files changed, 60 insertions, 0 deletions
diff --git a/README b/README
index 62f4f1863..95f9edcea 100644
--- 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
===============
diff --git a/classes/User.php b/classes/User.php
index d9f30bec5..e9e472fe1 100644
--- a/classes/User.php
+++ b/classes/User.php
@@ -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;
}
diff --git a/lib/common.php b/lib/common.php
index d9d0ab277..c2037c3ad 100644
--- a/lib/common.php
+++ b/lib/common.php
@@ -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');
diff --git a/lib/noticelist.php b/lib/noticelist.php
index 9fc0126b3..6af301839 100644
--- a/lib/noticelist.php
+++ b/lib/noticelist.php
@@ -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;