summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README3
-rw-r--r--classes/User.php29
-rw-r--r--lib/action.php3
-rw-r--r--lib/router.php12
-rw-r--r--lib/util.php3
5 files changed, 37 insertions, 13 deletions
diff --git a/README b/README
index 26a9fe4ec..43a9bb5e9 100644
--- a/README
+++ b/README
@@ -1486,7 +1486,8 @@ If an installation has only one user, this can simplify a lot of the
interface. It also makes the user's profile the root URL.
enabled: Whether to run in "single user mode". Default false.
-nickname: nickname of the single user.
+nickname: nickname of the single user. If no nickname is specified,
+ the site owner account will be used (if present).
robotstxt
---------
diff --git a/classes/User.php b/classes/User.php
index e784fd9e9..c68be223d 100644
--- a/classes/User.php
+++ b/classes/User.php
@@ -875,4 +875,33 @@ class User extends Memcached_DataObject
return $owner;
}
+
+ /**
+ * Pull the primary site account to use in single-user mode.
+ * If a valid user nickname is listed in 'singleuser':'nickname'
+ * in the config, this will be used; otherwise the site owner
+ * account is taken by default.
+ *
+ * @return User
+ * @throws ServerException if no valid single user account is present
+ * @throws ServerException if called when not in single-user mode
+ */
+ static function singleUser()
+ {
+ if (common_config('singleuser', 'enabled')) {
+ $nickname = common_config('singleuser', 'nickname');
+ if ($nickname) {
+ $user = User::staticGet('nickname', $nickname);
+ } else {
+ $user = User::siteOwner();
+ }
+ if ($user) {
+ return $user;
+ } else {
+ throw new ServerException(_("No single user defined for single-user mode."));
+ }
+ } else {
+ throw new ServerException(_('Single-user mode code called when not enabled.'));
+ }
+ }
}
diff --git a/lib/action.php b/lib/action.php
index 55ee83bde..e273b5d04 100644
--- a/lib/action.php
+++ b/lib/action.php
@@ -419,8 +419,9 @@ class Action extends HTMLOutputter // lawsuit
'class' => 'vcard'));
if (Event::handle('StartAddressData', array($this))) {
if (common_config('singleuser', 'enabled')) {
+ $user = User::singleUser();
$url = common_local_url('showstream',
- array('nickname' => common_config('singleuser', 'nickname')));
+ array('nickname' => $user->nickname));
} else {
$url = common_local_url('public');
}
diff --git a/lib/router.php b/lib/router.php
index b1cc8d529..8c682cefa 100644
--- a/lib/router.php
+++ b/lib/router.php
@@ -701,16 +701,8 @@ class Router
if (common_config('singleuser', 'enabled')) {
- $user = User::siteOwner();
-
- if (!empty($user)) {
- $nickname = $user->nickname;
- } else {
- $nickname = common_config('singleuser', 'nickname');
- if (empty($nickname)) {
- throw new ServerException(_("No single user defined for single-user mode."));
- }
- }
+ $user = User::singleUser();
+ $nickname = $user->nickname;
foreach (array('subscriptions', 'subscribers',
'all', 'foaf', 'xrds',
diff --git a/lib/util.php b/lib/util.php
index 5a94182bd..86380af28 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -974,8 +974,9 @@ function common_tag_link($tag)
$canonical = common_canonical_tag($tag);
if (common_config('singleuser', 'enabled')) {
// regular TagAction isn't set up in 1user mode
+ $user = User::singleUser();
$url = common_local_url('showstream',
- array('nickname' => common_config('singleuser', 'nickname'),
+ array('nickname' => $user->nickname,
'tag' => $canonical));
} else {
$url = common_local_url('tag', array('tag' => $canonical));