]> git.mxchange.org Git - friendica.git/commitdiff
Merge branch 'master', remote-tracking branch 'remotes/upstream/master'
authorSimon L'nu <simon.lnu@gmail.com>
Fri, 1 Jun 2012 03:22:19 +0000 (23:22 -0400)
committerSimon L'nu <simon.lnu@gmail.com>
Fri, 1 Jun 2012 03:22:19 +0000 (23:22 -0400)
* remotes/upstream/master:
  turn registration code into a standalone function for re-use
  query using both `id` and `parent`
  prevent email from leaking in feeds
  y didn't i think of this b4?
  some zero theming on settings page
  missing delimiter
  transition to beta for private forums
  rev update
  Friendicaland - you can't 'live' on a demo server.
  Create a "potential default group" called "Friends" on registration.
  fix private photos that also have a size specification
  private group tests, cont.
  hide private group if desired
  prvgroup should see intros
  private group fix
  possible sql injection in search
  bugfixes: private photo embeds and search for strings with %

* master:

24 files changed:
boot.php
database.sql
include/api.php
include/diaspora.php
include/items.php
include/nav.php
include/text.php
include/user.php [new file with mode: 0644]
js/country.js
mod/acl.php
mod/dfrn_confirm.php
mod/dfrn_notify.php
mod/dfrn_request.php
mod/item.php
mod/network.php
mod/register.php
mod/search.php
mod/settings.php
update.php
util/messages.po
view/dfrn_req_confirm.tpl
view/pagetypes.tpl
view/settings.tpl
view/theme/duepuntozero/style.css

index affa351dc6a956646cfbe771e6173fcfe2f3b92a..76cf5cbbef29c9b4540ab3b69ec231141876e973 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -9,9 +9,9 @@ require_once('include/nav.php');
 require_once('include/cache.php');
 
 define ( 'FRIENDICA_PLATFORM',     'Friendica');
-define ( 'FRIENDICA_VERSION',      '3.0.1357' );
+define ( 'FRIENDICA_VERSION',      '3.0.1360' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
-define ( 'DB_UPDATE_VERSION',      1144      );
+define ( 'DB_UPDATE_VERSION',      1145      );
 
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
index ed97cd4aa7edd1820e571f4f9741e5a859407031..48900839c938a83335d2ca55b3d86df0c0ae9820 100644 (file)
@@ -173,6 +173,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
   `readonly` tinyint(1) NOT NULL DEFAULT '0',
   `writable` tinyint(1) NOT NULL DEFAULT '0',
   `forum` tinyint(1) NOT NULL DEFAULT '0',
+  `prv` tinyint(1) NOT NULL DEFAULT '0',
   `hidden` tinyint(1) NOT NULL DEFAULT '0',
   `archive` tinyint(1) NOT NULL DEFAULT '0',
   `pending` tinyint(1) NOT NULL DEFAULT '1',
index 5697fbdbcb881c35365cdacbb525a43fa120ec76..5c17b35f56e7ae25b64631b653e966f3523dae75 100644 (file)
                 else
                         $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ",
                                 dbesc(protect_sprintf('%' . $myurl)),
-                                dbesc(protect_sprintf('%' . $myurl . '\\]%')),
-                                dbesc(protect_sprintf('%' . $diasp_url . '\\]%'))
+                                dbesc(protect_sprintf('%' . $myurl . ']%')),
+                                dbesc(protect_sprintf('%' . $diasp_url . ']%'))
                         );
 
                if ($max_id > 0)
index 3f2cdf8e4691c34a721b7b86fe4947cda909d271..f7c2c5e8ec2e77ac88f9dad8b08b80b70fae82aa 100644 (file)
@@ -2055,8 +2055,12 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
        $myaddr = $owner['nickname'] . '@' .  substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
        $theiraddr = $contact['addr'];
 
-       $p = q("select guid from item where parent = %d limit 1",
-               $item['parent']
+       // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
+       // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
+       // The only item with `parent` and `id` as the parent id is the parent item.
+       $p = q("select guid from item where parent = %d and id = %d limit 1",
+               intval($item['parent']),
+               intval($item['parent'])
        );
        if(count($p))
                $parent_guid = $p[0]['guid'];
@@ -2111,8 +2115,12 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
        $theiraddr = $contact['addr'];
 
 
-       $p = q("select guid from item where parent = %d limit 1",
-               $item['parent']
+       // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
+       // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
+       // The only item with `parent` and `id` as the parent id is the parent item.
+       $p = q("select guid from item where parent = %d and id = %d limit 1",
+               intval($item['parent']),
+               intval($item['parent'])
        );
        if(count($p))
                $parent_guid = $p[0]['guid'];
index 3fe977b6f77fb9230ef6a42c5dbda0866ca0b347..0ed16217fae917634a0cad8db85ee62c728266b2 100644 (file)
@@ -180,6 +180,10 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0)
 
        foreach($items as $item) {
 
+               // prevent private email from leaking.
+               if($item['network'] === NETWORK_MAIL)
+                       continue;
+
                // public feeds get html, our own nodes use bbcode
 
                if($public_feed) {
@@ -1063,9 +1067,6 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
 
        $a = get_app();
 
-//     if((! strlen($contact['issued-id'])) && (! $contact['duplex']) && (! ($owner['page-flags'] == PAGE_COMMUNITY)))
-//             return 3;
-
        $idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
 
        if($contact['duplex'] && $contact['dfrn-id'])
@@ -1130,6 +1131,9 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
        $rino_allowed = ((intval($res->rino) === 1) ? 1 : 0);
        $page         = (($owner['page-flags'] == PAGE_COMMUNITY) ? 1 : 0);
 
+       if($owner['page-flags'] == PAGE_PRVGROUP)
+               $page = 2;
+
        $final_dfrn_id = '';
 
        if($perm) {
@@ -1183,7 +1187,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
        $postvars['ssl_policy'] = $ssl_policy;
 
        if($page)
-               $postvars['page'] = '1';
+               $postvars['page'] = $page;
        
        if($rino && $rino_allowed && (! $dissolve)) {
                $key = substr(random_string(),0,16);
@@ -2931,10 +2935,10 @@ function fix_private_photos($s,$uid, $item = null, $cid = 0) {
        $a = get_app();
 
        logger('fix_private_photos', LOGGER_DEBUG);
-       $site = substr($a->get_baseurl(),strpos($a->get_baseurl,'://'));
+       $site = substr($a->get_baseurl(),strpos($a->get_baseurl(),'://'));
 
-       if(preg_match("/\[img\](.*?)\[\/img\]/is",$s,$matches)) {
-               $image = $matches[1];
+       if(preg_match("/\[img(.*?)\](.*?)\[\/img\]/is",$s,$matches)) {
+               $image = $matches[2];
                logger('fix_private_photos: found photo ' . $image, LOGGER_DEBUG);
                if(stristr($image , $site . '/photo/')) {
                        $replace = false;
index 2c9c643a92f596ec7d6c10cef84fbdc76b3c02a2..909ba9b541da97cc278fb0922cb5a8faa402b1c9 100644 (file)
@@ -117,7 +117,7 @@ function nav(&$a) {
 
                /* only show friend requests for normal pages. Other page types have automatic friendship. */
 
-               if($_SESSION['page_flags'] == PAGE_NORMAL) {
+               if($_SESSION['page_flags'] == PAGE_NORMAL || $_SESSION['page_flags'] == PAGE_PRVGROUP) {
                        $nav['introductions'] = array('notifications/intros',   t('Introductions'), "", t('Friend Requests'));
                        $nav['notifications'] = array('notifications',  t('Notifications'), "", t('Notifications'));
                        $nav['notifications']['all']=array('notifications/system', t('See all notifications'), "", "");
index d6a9ef5d3a03a33dbd8b2008e50392ac9cfb1c06..376ac473de28fab45394501bd45ca15e813f7ffe 100644 (file)
@@ -742,6 +742,8 @@ function smilies($s, $sample = false) {
                ':homebrew', 
                ':coffee', 
                ':facepalm',
+               ':like',
+               ':dislike',
                '~friendika', 
                '~friendica'
 
@@ -778,6 +780,8 @@ function smilies($s, $sample = false) {
                '<img src="' . $a->get_baseurl() . '/images/beer_mug.gif" alt=":homebrew" />',
                '<img src="' . $a->get_baseurl() . '/images/coffee.gif" alt=":coffee" />',
                '<img src="' . $a->get_baseurl() . '/images/smiley-facepalm.gif" alt=":facepalm" />',
+               '<img src="' . $a->get_baseurl() . '/images/like.gif" alt=":like" />',
+               '<img src="' . $a->get_baseurl() . '/images/dislike.gif" alt=":dislike" />',
                '<a href="http://project.friendika.com">~friendika <img src="' . $a->get_baseurl() . '/images/friendika-16.png" alt="~friendika" /></a>',
                '<a href="http://friendica.com">~friendica <img src="' . $a->get_baseurl() . '/images/friendica-16.png" alt="~friendica" /></a>'
        );
diff --git a/include/user.php b/include/user.php
new file mode 100644 (file)
index 0000000..75a91b0
--- /dev/null
@@ -0,0 +1,325 @@
+<?php
+
+require_once('include/config.php');
+require_once('include/network.php');
+require_once('include/plugin.php');
+require_once('include/text.php');
+require_once('include/pgettext.php');
+require_once('include/datetime.php');
+
+function create_user($arr) {
+
+       // Required: { username, nickname, email } or { openid_url }
+
+       $a = get_app();
+       $result = array('success' => false, 'user' => null, 'password' => '', 'message' => '');
+
+       $using_invites = get_config('system','invitation_only');
+       $num_invites   = get_config('system','number_invites');
+
+
+       $invite_id  = ((x($arr,'invite_id'))  ? notags(trim($arr['invite_id']))  : '');
+       $username   = ((x($arr,'username'))   ? notags(trim($arr['username']))   : '');
+       $nickname   = ((x($arr,'nickname'))   ? notags(trim($arr['nickname']))   : '');
+       $email      = ((x($arr,'email'))      ? notags(trim($arr['email']))      : '');
+       $openid_url = ((x($arr,'openid_url')) ? notags(trim($arr['openid_url'])) : '');
+       $photo      = ((x($arr,'photo'))      ? notags(trim($arr['photo']))      : '');
+       $publish    = ((x($arr,'profile_publish_reg') && intval($arr['profile_publish_reg'])) ? 1 : 0);
+       $password   = ((x($arr,'password'))   ? trim($arr['password'])           : '');
+
+       $netpublish = ((strlen(get_config('system','directory_submit_url'))) ? $publish : 0);
+               
+       $tmp_str = $openid_url;
+
+       if($using_invites) {
+               if(! $invite_id) {
+                       $result['message'] .= t('An invitation is required.') . EOL;
+                       return $result;
+               }
+               $r = q("select * from register where `hash` = '%s' limit 1", dbesc($invite_id));
+               if(! results($r)) {
+                       $result['message'] .= t('Invitation could not be verified.') . EOL;
+                       return $result;
+               }
+       } 
+
+       if((! x($username)) || (! x($email)) || (! x($nickname))) {
+               if($openid_url) {
+                       if(! validate_url($tmp_str)) {
+                               $result['message'] .= t('Invalid OpenID url') . EOL;
+                               return $result;
+                       }
+                       $_SESSION['register'] = 1;
+                       $_SESSION['openid'] = $openid_url;
+                       require_once('library/openid.php');
+                       $openid = new LightOpenID;
+                       $openid->identity = $openid_url;
+                       $openid->returnUrl = $a->get_baseurl() . '/openid'; 
+                       $openid->required = array('namePerson/friendly', 'contact/email', 'namePerson');
+                       $openid->optional = array('namePerson/first','media/image/aspect11','media/image/default');
+                       goaway($openid->authUrl());
+                       // NOTREACHED   
+               }
+
+               notice( t('Please enter the required information.') . EOL );
+               return;
+       }
+
+       if(! validate_url($tmp_str))
+               $openid_url = '';
+
+
+       $err = '';
+
+       // collapse multiple spaces in name
+       $username = preg_replace('/ +/',' ',$username);
+
+       if(mb_strlen($username) > 48)
+               $result['message'] .= t('Please use a shorter name.') . EOL;
+       if(mb_strlen($username) < 3)
+               $result['message'] .= t('Name too short.') . EOL;
+
+       // I don't really like having this rule, but it cuts down
+       // on the number of auto-registrations by Russian spammers
+       
+       //  Using preg_match was completely unreliable, due to mixed UTF-8 regex support
+       //      $no_utf = get_config('system','no_utf');
+       //      $pat = (($no_utf) ? '/^[a-zA-Z]* [a-zA-Z]*$/' : '/^\p{L}* \p{L}*$/u' ); 
+
+       // So now we are just looking for a space in the full name. 
+       
+       $loose_reg = get_config('system','no_regfullname');
+       if(! $loose_reg) {
+               $username = mb_convert_case($username,MB_CASE_TITLE,'UTF-8');
+               if(! strpos($username,' '))
+                       $result['message'] .= t("That doesn't appear to be your full \x28First Last\x29 name.") . EOL;
+       }
+
+
+       if(! allowed_email($email))
+                       $result['message'] .= t('Your email domain is not among those allowed on this site.') . EOL;
+
+       if((! valid_email($email)) || (! validate_email($email)))
+               $result['message'] .= t('Not a valid email address.') . EOL;
+
+       // Disallow somebody creating an account using openid that uses the admin email address,
+       // since openid bypasses email verification. We'll allow it if there is not yet an admin account.
+
+       if((x($a->config,'admin_email')) && (strcasecmp($email,$a->config['admin_email']) == 0) && strlen($openid_url)) {
+               $r = q("SELECT * FROM `user` WHERE `email` = '%s' LIMIT 1",
+                       dbesc($email)
+               );
+               if(count($r))
+                       $result['message'] .= t('Cannot use that email.') . EOL;
+       }
+
+       $nickname = $arr['nickname'] = strtolower($nickname);
+
+       if(! preg_match("/^[a-z][a-z0-9\-\_]*$/",$nickname))
+               $result['message'] .= t('Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.') . EOL;
+       $r = q("SELECT `uid` FROM `user`
+                       WHERE `nickname` = '%s' LIMIT 1",
+                       dbesc($nickname)
+       );
+       if(count($r))
+               $result['message'] .= t('Nickname is already registered. Please choose another.') . EOL;
+
+       // Check deleted accounts that had this nickname. Doesn't matter to us,
+       // but could be a security issue for federated platforms.
+
+       $r = q("SELECT * FROM `userd`
+                       WHERE `username` = '%s' LIMIT 1",
+                       dbesc($nickname)
+       );
+       if(count($r))
+               $result['message'] .= t('Nickname was once registered here and may not be re-used. Please choose another.') . EOL;
+
+       if(strlen($result['message'])) {
+               return $result;
+       }
+
+       $new_password = ((strlen($password)) ? $password : autoname(6) . mt_rand(100,9999));
+       $new_password_encoded = hash('whirlpool',$new_password);
+
+       $result['password'] = $new_password;
+
+       require_once('include/crypto.php');
+
+       $keys = new_keypair(1024);
+
+       if($keys === false) {
+               $result['message'] .= t('SERIOUS ERROR: Generation of security keys failed.') . EOL;
+               return $result;
+       }
+
+       $prvkey = $keys['prvkey'];
+       $pubkey = $keys['pubkey'];
+
+       /**
+        *
+        * Create another keypair for signing/verifying
+        * salmon protocol messages. We have to use a slightly
+        * less robust key because this won't be using openssl
+        * but the phpseclib. Since it is PHP interpreted code
+        * it is not nearly as efficient, and the larger keys
+        * will take several minutes each to process.
+        *
+        */
+       
+       $sres    = new_keypair(512);
+       $sprvkey = $sres['prvkey'];
+       $spubkey = $sres['pubkey'];
+
+       $r = q("INSERT INTO `user` ( `guid`, `username`, `password`, `email`, `openid`, `nickname`,
+               `pubkey`, `prvkey`, `spubkey`, `sprvkey`, `register_date`, `verified`, `blocked`, `timezone` )
+               VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, 'UTC' )",
+               dbesc(generate_user_guid()),
+               dbesc($username),
+               dbesc($new_password_encoded),
+               dbesc($email),
+               dbesc($openid_url),
+               dbesc($nickname),
+               dbesc($pubkey),
+               dbesc($prvkey),
+               dbesc($spubkey),
+               dbesc($sprvkey),
+               dbesc(datetime_convert()),
+               intval($verified),
+               intval($blocked)
+       );
+
+       if($r) {
+               $r = q("SELECT * FROM `user` 
+                       WHERE `username` = '%s' AND `password` = '%s' LIMIT 1",
+                       dbesc($username),
+                       dbesc($new_password_encoded)
+               );
+               if($r !== false && count($r)) {
+                       $u = $r[0];
+                       $newuid = intval($r[0]['uid']);
+               }
+       }
+       else {
+               $result['message'] .=  t('An error occurred during registration. Please try again.') . EOL ;
+               return $result;
+       }               
+
+       /**
+        * if somebody clicked submit twice very quickly, they could end up with two accounts 
+        * due to race condition. Remove this one.
+        */
+
+       $r = q("SELECT `uid` FROM `user`
+                       WHERE `nickname` = '%s' ",
+                       dbesc($nickname)
+       );
+       if((count($r) > 1) && $newuid) {
+               $result['message'] .= t('Nickname is already registered. Please choose another.') . EOL;
+               q("DELETE FROM `user` WHERE `uid` = %d LIMIT 1",
+                       intval($newuid)
+               );
+               return $result;
+       }
+
+       if(x($newuid) !== false) {
+               $r = q("INSERT INTO `profile` ( `uid`, `profile-name`, `is-default`, `name`, `photo`, `thumb`, `publish`, `net-publish` )
+                       VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, %d ) ",
+                       intval($newuid),
+                       t('default'),
+                       1,
+                       dbesc($username),
+                       dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
+                       dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
+                       intval($publish),
+                       intval($netpublish)
+
+               );
+               if($r === false) {
+                       $result['message'] .=  t('An error occurred creating your default profile. Please try again.') . EOL;
+                       // Start fresh next time.
+                       $r = q("DELETE FROM `user` WHERE `uid` = %d",
+                               intval($newuid));
+                       return $result;
+               }
+               $r = q("INSERT INTO `contact` ( `uid`, `created`, `self`, `name`, `nick`, `photo`, `thumb`, `micro`, `blocked`, `pending`, `url`, `nurl`,
+                       `request`, `notify`, `poll`, `confirm`, `poco`, `name-date`, `uri-date`, `avatar-date`, `closeness` )
+                       VALUES ( %d, '%s', 1, '%s', '%s', '%s', '%s', '%s', 0, 0, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 0 ) ",
+                       intval($newuid),
+                       datetime_convert(),
+                       dbesc($username),
+                       dbesc($nickname),
+                       dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
+                       dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
+                       dbesc($a->get_baseurl() . "/photo/micro/{$newuid}.jpg"),
+                       dbesc($a->get_baseurl() . "/profile/$nickname"),
+                       dbesc(normalise_link($a->get_baseurl() . "/profile/$nickname")),
+                       dbesc($a->get_baseurl() . "/dfrn_request/$nickname"),
+                       dbesc($a->get_baseurl() . "/dfrn_notify/$nickname"),
+                       dbesc($a->get_baseurl() . "/dfrn_poll/$nickname"),
+                       dbesc($a->get_baseurl() . "/dfrn_confirm/$nickname"),
+                       dbesc($a->get_baseurl() . "/poco/$nickname"),
+                       dbesc(datetime_convert()),
+                       dbesc(datetime_convert()),
+                       dbesc(datetime_convert())
+               );
+
+               // Create a group with no members. This allows somebody to use it 
+               // right away as a default group for new contacts. 
+
+               require_once('include/group.php');
+               group_add($newuid, t('Friends'));
+
+       }
+
+       // if we have no OpenID photo try to look up an avatar
+       if(! strlen($photo))
+               $photo = avatar_img($email);
+
+       // unless there is no avatar-plugin loaded
+       if(strlen($photo)) {
+               require_once('include/Photo.php');
+               $photo_failure = false;
+
+               $filename = basename($photo);
+               $img_str = fetch_url($photo,true);
+               $img = new Photo($img_str);
+               if($img->is_valid()) {
+
+                       $img->scaleImageSquare(175);
+
+                       $hash = photo_new_resource();
+
+                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 4 );
+
+                       if($r === false)
+                               $photo_failure = true;
+
+                       $img->scaleImage(80);
+
+                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 5 );
+
+                       if($r === false)
+                               $photo_failure = true;
+
+                       $img->scaleImage(48);
+
+                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 6 );
+
+                       if($r === false)
+                               $photo_failure = true;
+
+                       if(! $photo_failure) {
+                               q("UPDATE `photo` SET `profile` = 1 WHERE `resource-id` = '%s' ",
+                                       dbesc($hash)
+                               );
+                       }
+               }
+       }
+
+       call_hooks('register_account', $newuid);
+
+       $result['success'] = true;
+       $result['user'] = $u;
+       return $result;
+
+}
\ No newline at end of file
index 8d218bde68e6eee9cd7af56a908963cb9cc4bd55..c3add477f013c2df9a40a758c82873b5e6d918ae 100644 (file)
@@ -275,7 +275,7 @@ aStates[249]="|'Adan|'Ataq|Abyan|Al Bayda'|Al Hudaydah|Al Jawf|Al Mahrah|Al Mahw
 aStates[250]="|Kosovo|Montenegro|Serbia|Vojvodina";\r
 aStates[251]="|Central|Copperbelt|Eastern|Luapula|Lusaka|North-Western|Northern|Southern|Western";\r
 aStates[252]="|Bulawayo|Harare|ManicalandMashonaland Central|Mashonaland East|Mashonaland West|Masvingo|Matabeleland North|Matabeleland South|Midlands";\r
-aStates[253]="Self Hosted|Private Server|Architects Of Sleep|DFRN|Distributed Friend Network|Free-Beer.ch|Foojbook|Free-Haven|Friendica.eu|Friendika.me.4.it|Friendika - I Ask Questions|Frndc.com|Hipatia|Hungerfreunde|Kaluguran Community|Kak Ste?|Karl.Markx.pm|Loozah Social Club|MyFriendica.net|MyFriendNetwork|Oi!|OpenMindSpace|Oradons Friendica|Recolutionari.es|Sysfu Social Club|theshi.re|Tumpambae|Uzmiac|Other";\r
+aStates[253]="|Self Hosted|Private Server|Architects Of Sleep|DFRN|Distributed Friend Network|Free-Beer.ch|Foojbook|Free-Haven|Friendica.eu|Friendika.me.4.it|Friendika - I Ask Questions|Frndc.com|Hipatia|Hungerfreunde|Kaluguran Community|Kak Ste?|Karl.Markx.pm|Loozah Social Club|MyFriendica.net|MyFriendNetwork|Oi!|OpenMindSpace|Recolutionari.es|Sysfu Social Club|theshi.re|Tumpambae|Uzmiac|Other";\r
 /* \r
  * gArCountryInfo\r
  * (0) Country name\r
index 168b1f59f0a636978b32e4c45a532f895ef244f0..1e8898ab6f103f4fc2516a50bf2b91a3c83f106c 100644 (file)
@@ -135,7 +135,7 @@ function acl_init(&$a){
                        foreach($r as $g) {
                                $x['photos'][] = $g['micro'];
                                $x['links'][] = $g['url'];
-                               $x['suggestions'][] = $g['name']; // sprintf( t('%s [%s]'),$g['name'],$g['url']);
+                               $x['suggestions'][] = $g['name'];
                                $x['data'][] = intval($g['id']);
                        }
                }
index 564ae5ca2346a952e4ccf750c30bdd8b43d7012d..76b99cbca7a121ba600553992bf8ee310d4af24b 100644 (file)
@@ -202,6 +202,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
 
                        if($user[0]['page-flags'] == PAGE_COMMUNITY)
                                $params['page'] = 1;
+                       if($user[0]['page-flags'] == PAGE_PRVGROUP)
+                               $params['page'] = 2;
 
                        logger('dfrn_confirm: Confirm: posting data to ' . $dfrn_confirm . ': ' . print_r($params,true), LOGGER_DATA);
 
@@ -537,6 +539,9 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                $page       = ((x($_POST,'page'))         ? intval($_POST['page'])         : 0 );
                $version_id = ((x($_POST,'dfrn_version')) ? (float) $_POST['dfrn_version'] : 2.0);
        
+               $forum = (($page == 1) ? 1 : 0);
+               $prv   = (($page == 2) ? 1 : 0);
+
                logger('dfrn_confirm: requestee contacted: ' . $node);
 
                logger('dfrn_confirm: request: POST=' . print_r($_POST,true), LOGGER_DATA);
@@ -691,6 +696,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                        `pending` = 0,
                        `duplex` = %d, 
                        `forum` = %d,
+                       `prv` = %d,
                        `network` = '%s' WHERE `id` = %d LIMIT 1
                ",
                        dbesc($photos[0]),
@@ -701,7 +707,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                        dbesc(datetime_convert()),
                        dbesc(datetime_convert()),
                        intval($duplex),
-                       intval($page),
+                       intval($forum),
+                       intval($prv),
                        dbesc(NETWORK_DFRN),
                        intval($dfrn_record)
                );
index 65d39d5fe12f8d844d7ce15f545e67dd6676fe03..e55da557223c8e9708881e331b16664f89092ea8 100644 (file)
@@ -17,6 +17,9 @@ function dfrn_notify_post(&$a) {
        $ssl_policy   = ((x($_POST,'ssl_policy'))   ? notags(trim($_POST['ssl_policy'])): 'none');
        $page         = ((x($_POST,'page'))         ? intval($_POST['page'])            :  0);
 
+       $forum = (($page == 1) ? 1 : 0);
+       $prv   = (($page == 2) ? 1 : 0);
+
        $writable = (-1);
        if($dfrn_version >= 2.21) {
                $writable = (($perm === 'rw') ? 1 : 0);
@@ -88,10 +91,11 @@ function dfrn_notify_post(&$a) {
 
        $importer = $r[0];
 
-       if((($writable != (-1)) && ($writable != $importer['writable'])) || ($importer['forum'] != $page)) {
-               q("UPDATE `contact` SET `writable` = %d, forum = %d WHERE `id` = %d LIMIT 1",
+       if((($writable != (-1)) && ($writable != $importer['writable'])) || ($importer['forum'] != $forum) || ($importer['prv'] != $prv)) {
+               q("UPDATE `contact` SET `writable` = %d, forum = %d, prv = %d WHERE `id` = %d LIMIT 1",
                        intval(($writable == (-1)) ? $importer['writable'] : $writable),
-                       intval($page),
+                       intval($forum),
+                       intval($prv),
                        intval($importer['id'])
                );
                if($writable != (-1))
index b809929d7e14b4b506348b3200b437534b35e63f..896fe179271d465c0dbe13939b8f08784402840c 100644 (file)
@@ -68,7 +68,7 @@ function dfrn_request_post(&$a) {
                        $dfrn_url    = notags(trim($_POST['dfrn_url']));
                        $aes_allow   = (((x($_POST,'aes_allow')) && ($_POST['aes_allow'] == 1)) ? 1 : 0);
                        $confirm_key = ((x($_POST,'confirm_key')) ? $_POST['confirm_key'] : "");
-
+                       $hidden = ((x($_POST,'hidden-contact')) ? intval($_POST['hidden-contact']) : 0);
                        $contact_record = null;
        
                        if(x($dfrn_url)) {
@@ -98,8 +98,9 @@ function dfrn_request_post(&$a) {
                                }
        
                                if(is_array($contact_record)) {
-                                       $r = q("UPDATE `contact` SET `ret-aes` = %d WHERE `id` = %d LIMIT 1",
+                                       $r = q("UPDATE `contact` SET `ret-aes` = %d, hidden = %d WHERE `id` = %d LIMIT 1",
                                                intval($aes_allow),
+                                               intval($hidden),
                                                intval($contact_record['id'])
                                        );
                                }
@@ -144,8 +145,8 @@ function dfrn_request_post(&$a) {
                                         */
 
                                        $r = q("INSERT INTO `contact` ( `uid`, `created`,`url`, `nurl`, `name`, `nick`, `photo`, `site-pubkey`,
-                                               `request`, `confirm`, `notify`, `poll`, `poco`, `network`, `aes_allow`) 
-                                               VALUES ( %d, '%s', '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",
+                                               `request`, `confirm`, `notify`, `poll`, `poco`, `network`, `aes_allow`, `hidden`
+                                               VALUES ( %d, '%s', '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d)",
                                                intval(local_user()),
                                                datetime_convert(),
                                                dbesc($dfrn_url),
@@ -160,7 +161,8 @@ function dfrn_request_post(&$a) {
                                                $parms['dfrn-poll'],
                                                $parms['dfrn-poco'],
                                                dbesc(NETWORK_DFRN),
-                                               intval($aes_allow)
+                                               intval($aes_allow),
+                                               intval($hidden)
                                        );
                                }
 
@@ -649,6 +651,8 @@ function dfrn_request_content(&$a) {
                $o  = replace_macros($tpl,array(
                        '$dfrn_url' => $dfrn_url,
                        '$aes_allow' => (($aes_allow) ? '<input type="hidden" name="aes_allow" value="1" />' : "" ),
+                       '$hidethem' => t('Hide this contact'),
+                       '$hidechecked' => '',
                        '$confirm_key' => $confirm_key,
                        '$welcome' => sprintf( t('Welcome home %s.'), $a->user['username']),
                        '$please' => sprintf( t('Please confirm your introduction/connection request to %s.'), $dfrn_url),
@@ -680,7 +684,7 @@ function dfrn_request_content(&$a) {
                        $auto_confirm = false;
 
                        if(count($r)) {
-                               if($r[0]['page-flags'] != PAGE_NORMAL)
+                               if(($r[0]['page-flags'] != PAGE_NORMAL) && ($r[0]['page-flags'] != PAGE_PRVGROUP))
                                        $auto_confirm = true;                           
 
                                if(! $auto_confirm) {
index df242d6f7c5390f6cb2c64b7dfc75e9dc2e27378..497cf5daa2d3e97c4cd694a5dbae89f356c18e91 100644 (file)
@@ -262,17 +262,17 @@ function item_post(&$a) {
                }
        }
 
-        if(strlen($categories)) {
-               // get the "fileas" tags for this post
-                $filedas = file_tag_file_to_list($categories, 'file');
+       if(strlen($categories)) {
+               // get the "fileas" tags for this post
+               $filedas = file_tag_file_to_list($categories, 'file');
        }
-        // save old and new categories, so we can determine what needs to be deleted from pconfig
-        $categories_old = $categories;
-        $categories = file_tag_list_to_file(trim($_REQUEST['category']), 'category');
-        $categories_new = $categories;
-        if(strlen($filedas)) {
-               // append the fileas stuff to the new categories list
-               $categories .= file_tag_list_to_file($filedas, 'file');
+       // save old and new categories, so we can determine what needs to be deleted from pconfig
+       $categories_old = $categories;
+       $categories = file_tag_list_to_file(trim($_REQUEST['category']), 'category');
+       $categories_new = $categories;
+       if(strlen($filedas)) {
+               // append the fileas stuff to the new categories list
+               $categories .= file_tag_list_to_file($filedas, 'file');
        }
 
        // Work around doubled linefeeds in Tinymce 3.5b2
@@ -453,6 +453,7 @@ function item_post(&$a) {
 
        $tagged = array();
 
+       $private_forum = false;
 
        if(count($tags)) {
                foreach($tags as $tag) {
@@ -471,11 +472,22 @@ function item_post(&$a) {
                                continue;
 
                        $success = handle_tag($a, $body, $inform, $str_tags, (local_user()) ? local_user() : $profile_uid , $tag); 
-                       if($success)
+                       if($success['replaced'])
                                $tagged[] = $tag;
+                       if(is_array($success['contact']) && intval($success['contact']['prv'])) {
+                               $private_forum = true;
+                               $private_id = $success['contact']['id'];
+                       }
                }
        }
 
+       if(($private_forum) && (! $parent) && (! $private)) {
+               // we tagged a private forum in a top level post and the message was public.
+               // Restrict it.
+               $private = 1;
+               $str_contact_allow = '<' . $private_id . '>'; 
+       }
+
        $attachments = '';
        $match = false;
 
@@ -893,6 +905,7 @@ function item_content(&$a) {
 function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) {
 
        $replaced = false;
+       $r = null;
 
        //is it a hash tag? 
        if(strpos($tag,'#') === 0) {
@@ -1023,5 +1036,5 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) {
                }
        }
 
-       return $replaced;       
+       return array('replaced' => $replaced, 'contact' => $r[0]);      
 }
index a94272a4290fac21307bb6a720ae402db89d3d4e..7c4c1ac04e77f97c5e9a2c30e22bb66be1e7ed39 100644 (file)
@@ -437,8 +437,8 @@ function network_content(&$a, $update = 0) {
                else
                        $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ",
                                dbesc(protect_sprintf('%' . $myurl)),
-                               dbesc(protect_sprintf('%' . $myurl . '\\]%')),
-                               dbesc(protect_sprintf('%' . $diasp_url . '\\]%'))
+                               dbesc(protect_sprintf('%' . $myurl . ']%')),
+                               dbesc(protect_sprintf('%' . $diasp_url . ']%'))
                        );
 
        }
index 58bba85333dabce8f077129dc5eee62d21c64b32..b162f62beb35bb949db4cb15f7ace2bd42d4f36f 100644 (file)
@@ -43,326 +43,44 @@ function register_post(&$a) {
                break;
        }
 
-       $using_invites = get_config('system','invitation_only');
-       $num_invites = get_config('system','number_invites');
-
-
-       $invite_id  = ((x($_POST,'invite_id'))  ? notags(trim($_POST['invite_id']))  : '');
-       $username   = ((x($_POST,'username'))   ? notags(trim($_POST['username']))   : '');
-       $nickname   = ((x($_POST,'nickname'))   ? notags(trim($_POST['nickname']))   : '');
-       $email      = ((x($_POST,'email'))      ? notags(trim($_POST['email']))      : '');
-       $openid_url = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
-       $photo      = ((x($_POST,'photo'))      ? notags(trim($_POST['photo']))      : '');
-       $publish    = ((x($_POST,'profile_publish_reg') && intval($_POST['profile_publish_reg'])) ? 1 : 0);
-
-       $netpublish = ((strlen(get_config('system','directory_submit_url'))) ? $publish : 0);
-               
-       $tmp_str = $openid_url;
-
-       if($using_invites) {
-               if(! $invite_id) {
-                       notice( t('An invitation is required.') . EOL);
-                       return;
-               }
-               $r = q("select * from register where `hash` = '%s' limit 1", dbesc($invite_id));
-               if(! results($r)) {
-                       notice( t('Invitation could not be verified.') . EOL);
-                       return;
-               }
-       } 
-
-       if((! x($username)) || (! x($email)) || (! x($nickname))) {
-               if($openid_url) {
-                       if(! validate_url($tmp_str)) {
-                               notice( t('Invalid OpenID url') . EOL);
-                               return;
-                       }
-                       $_SESSION['register'] = 1;
-                       $_SESSION['openid'] = $openid_url;
-                       require_once('library/openid.php');
-                       $openid = new LightOpenID;
-                       $openid->identity = $openid_url;
-                       $openid->returnUrl = $a->get_baseurl() . '/openid'; 
-                       $openid->required = array('namePerson/friendly', 'contact/email', 'namePerson');
-                       $openid->optional = array('namePerson/first','media/image/aspect11','media/image/default');
-                       goaway($openid->authUrl());
-                       // NOTREACHED   
-               }
-
-               notice( t('Please enter the required information.') . EOL );
-               return;
-       }
-
-       if(! validate_url($tmp_str))
-               $openid_url = '';
-
-
-       $err = '';
-
-       // collapse multiple spaces in name
-       $username = preg_replace('/ +/',' ',$username);
-
-       if(mb_strlen($username) > 48)
-               $err .= t('Please use a shorter name.') . EOL;
-       if(mb_strlen($username) < 3)
-               $err .= t('Name too short.') . EOL;
-
-       // I don't really like having this rule, but it cuts down
-       // on the number of auto-registrations by Russian spammers
-       
-       //  Using preg_match was completely unreliable, due to mixed UTF-8 regex support
-       //      $no_utf = get_config('system','no_utf');
-       //      $pat = (($no_utf) ? '/^[a-zA-Z]* [a-zA-Z]*$/' : '/^\p{L}* \p{L}*$/u' ); 
+       require_once('include/user.php');
 
-       // So now we are just looking for a space in the full name. 
-       
-       $loose_reg = get_config('system','no_regfullname');
-       if(! $loose_reg) {
-               $username = mb_convert_case($username,MB_CASE_TITLE,'UTF-8');
-               if(! strpos($username,' '))
-                       $err .= t("That doesn't appear to be your full \x28First Last\x29 name.") . EOL;
-       }
-
-
-       if(! allowed_email($email))
-                       $err .= t('Your email domain is not among those allowed on this site.') . EOL;
-
-       if((! valid_email($email)) || (! validate_email($email)))
-               $err .= t('Not a valid email address.') . EOL;
-
-       // Disallow somebody creating an account using openid that uses the admin email address,
-       // since openid bypasses email verification. We'll allow it if there is not yet an admin account.
-
-       if((x($a->config,'admin_email')) && (strcasecmp($email,$a->config['admin_email']) == 0) && strlen($openid_url)) {
-               $r = q("SELECT * FROM `user` WHERE `email` = '%s' LIMIT 1",
-                       dbesc($email)
-               );
-               if(count($r))
-                       $err .= t('Cannot use that email.') . EOL;
-       }
+       $result = create_user($_POST);
 
-       $nickname = $_POST['nickname'] = strtolower($nickname);
-
-       if(! preg_match("/^[a-z][a-z0-9\-\_]*$/",$nickname))
-               $err .= t('Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.') . EOL;
-       $r = q("SELECT `uid` FROM `user`
-                       WHERE `nickname` = '%s' LIMIT 1",
-                       dbesc($nickname)
-       );
-       if(count($r))
-               $err .= t('Nickname is already registered. Please choose another.') . EOL;
-
-       // Check deleted accounts that had this nickname. Doesn't matter to us,
-       // but could be a security issue for federated platforms.
-
-       $r = q("SELECT * FROM `userd`
-                       WHERE `username` = '%s' LIMIT 1",
-                       dbesc($nickname)
-       );
-       if(count($r))
-               $err .= t('Nickname was once registered here and may not be re-used. Please choose another.') . EOL;
-
-       if(strlen($err)) {
-               notice( $err );
+       if(! $result['success']) {
+               notice($result['message']);
                return;
        }
 
-
-       $new_password = autoname(6) . mt_rand(100,9999);
-       $new_password_encoded = hash('whirlpool',$new_password);
-
-       require_once('include/crypto.php');
-
-       $result = new_keypair(1024);
-
-       if($result === false) {
-               notice( t('SERIOUS ERROR: Generation of security keys failed.') . EOL);
-               return;
-       }
-
-       $prvkey = $result['prvkey'];
-       $pubkey = $result['pubkey'];
-
-       /**
-        *
-        * Create another keypair for signing/verifying
-        * salmon protocol messages. We have to use a slightly
-        * less robust key because this won't be using openssl
-        * but the phpseclib. Since it is PHP interpreted code
-        * it is not nearly as efficient, and the larger keys
-        * will take several minutes each to process.
-        *
-        */
-       
-       $sres    = new_keypair(512);
-       $sprvkey = $sres['prvkey'];
-       $spubkey = $sres['pubkey'];
-
-       $r = q("INSERT INTO `user` ( `guid`, `username`, `password`, `email`, `openid`, `nickname`,
-               `pubkey`, `prvkey`, `spubkey`, `sprvkey`, `register_date`, `verified`, `blocked`, `timezone` )
-               VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, 'UTC' )",
-               dbesc(generate_user_guid()),
-               dbesc($username),
-               dbesc($new_password_encoded),
-               dbesc($email),
-               dbesc($openid_url),
-               dbesc($nickname),
-               dbesc($pubkey),
-               dbesc($prvkey),
-               dbesc($spubkey),
-               dbesc($sprvkey),
-               dbesc(datetime_convert()),
-               intval($verified),
-               intval($blocked)
-               );
-
-       if($r) {
-               $r = q("SELECT `uid` FROM `user` 
-                       WHERE `username` = '%s' AND `password` = '%s' LIMIT 1",
-                       dbesc($username),
-                       dbesc($new_password_encoded)
-                       );
-               if($r !== false && count($r))
-                       $newuid = intval($r[0]['uid']);
-       }
-       else {
-               notice( t('An error occurred during registration. Please try again.') . EOL );
-               return;
-       }               
-
-       /**
-        * if somebody clicked submit twice very quickly, they could end up with two accounts 
-        * due to race condition. Remove this one.
-        */
-
-       $r = q("SELECT `uid` FROM `user`
-                       WHERE `nickname` = '%s' ",
-                       dbesc($nickname)
-       );
-       if((count($r) > 1) && $newuid) {
-               $err .= t('Nickname is already registered. Please choose another.') . EOL;
-               q("DELETE FROM `user` WHERE `uid` = %d LIMIT 1",
-                       intval($newuid)
-               );
-               notice ($err);
-               return;
-       }
-
-       if(x($newuid) !== false) {
-               $r = q("INSERT INTO `profile` ( `uid`, `profile-name`, `is-default`, `name`, `photo`, `thumb`, `publish`, `net-publish` )
-                       VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, %d ) ",
-                       intval($newuid),
-                       'default',
-                       1,
-                       dbesc($username),
-                       dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
-                       dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
-                       intval($publish),
-                       intval($netpublish)
-
-               );
-               if($r === false) {
-                       notice( t('An error occurred creating your default profile. Please try again.') . EOL );
-                       // Start fresh next time.
-                       $r = q("DELETE FROM `user` WHERE `uid` = %d",
-                               intval($newuid));
-                       return;
-               }
-               $r = q("INSERT INTO `contact` ( `uid`, `created`, `self`, `name`, `nick`, `photo`, `thumb`, `micro`, `blocked`, `pending`, `url`, `nurl`,
-                       `request`, `notify`, `poll`, `confirm`, `poco`, `name-date`, `uri-date`, `avatar-date`, `closeness` )
-                       VALUES ( %d, '%s', 1, '%s', '%s', '%s', '%s', '%s', 0, 0, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 0 ) ",
-                       intval($newuid),
-                       datetime_convert(),
-                       dbesc($username),
-                       dbesc($nickname),
-                       dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
-                       dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
-                       dbesc($a->get_baseurl() . "/photo/micro/{$newuid}.jpg"),
-                       dbesc($a->get_baseurl() . "/profile/$nickname"),
-                       dbesc(normalise_link($a->get_baseurl() . "/profile/$nickname")),
-                       dbesc($a->get_baseurl() . "/dfrn_request/$nickname"),
-                       dbesc($a->get_baseurl() . "/dfrn_notify/$nickname"),
-                       dbesc($a->get_baseurl() . "/dfrn_poll/$nickname"),
-                       dbesc($a->get_baseurl() . "/dfrn_confirm/$nickname"),
-                       dbesc($a->get_baseurl() . "/poco/$nickname"),
-                       dbesc(datetime_convert()),
-                       dbesc(datetime_convert()),
-                       dbesc(datetime_convert())
-               );
-
-
-       }
-
-       // if we have no OpenID photo try to look up an avatar
-       if(! strlen($photo))
-               $photo = avatar_img($email);
-
-       // unless there is no avatar-plugin loaded
-       if(strlen($photo)) {
-               require_once('include/Photo.php');
-               $photo_failure = false;
-
-               $filename = basename($photo);
-               $img_str = fetch_url($photo,true);
-               $img = new Photo($img_str);
-               if($img->is_valid()) {
-
-                       $img->scaleImageSquare(175);
-
-                       $hash = photo_new_resource();
-
-                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 4 );
-
-                       if($r === false)
-                               $photo_failure = true;
-
-                       $img->scaleImage(80);
-
-                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 5 );
-
-                       if($r === false)
-                               $photo_failure = true;
-
-                       $img->scaleImage(48);
-
-                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 6 );
-
-                       if($r === false)
-                               $photo_failure = true;
-
-                       if(! $photo_failure) {
-                               q("UPDATE `photo` SET `profile` = 1 WHERE `resource-id` = '%s' ",
-                                       dbesc($hash)
-                               );
-                       }
-               }
-       }
-
+       $user = $result['user'];
        if($netpublish && $a->config['register_policy'] != REGISTER_APPROVE) {
-               $url = $a->get_baseurl() . "/profile/$nickname";
+               $url = $a->get_baseurl() . '/profile/' . $user['nickname'];
                proc_run('php',"include/directory.php","$url");
        }
 
+       $using_invites = get_config('system','invitation_only');
+       $num_invites   = get_config('system','number_invites');
+       $invite_id  = ((x($_POST,'invite_id'))  ? notags(trim($_POST['invite_id']))  : '');
 
-       call_hooks('register_account', $newuid);
 
        if( $a->config['register_policy'] == REGISTER_OPEN ) {
 
                if($using_invites && $invite_id) {
                        q("delete * from register where hash = '%s' limit 1", dbesc($invite_id));
-                       set_pconfig($newuid,'system','invites_remaining',$num_invites);
+                       set_pconfig($user['uid'],'system','invites_remaining',$num_invites);
                }
 
                $email_tpl = get_intltext_template("register_open_eml.tpl");
                $email_tpl = replace_macros($email_tpl, array(
                                '$sitename' => $a->config['sitename'],
                                '$siteurl' =>  $a->get_baseurl(),
-                               '$username' => $username,
-                               '$email' => $email,
-                               '$password' => $new_password,
-                               '$uid' => $newuid ));
+                               '$username' => $user['username'],
+                               '$email' => $user['email'],
+                               '$password' => $result['password'],
+                               '$uid' => $user['uid'] ));
 
-               $res = mail($email, sprintf(t('Registration details for %s'), $a->config['sitename']),
+               $res = mail($user['email'], sprintf(t('Registration details for %s'), $a->config['sitename']),
                        $email_tpl, 
                                'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
                                . 'Content-type: text/plain; charset=UTF-8' . "\n"
@@ -387,8 +105,8 @@ function register_post(&$a) {
                $r = q("INSERT INTO `register` ( `hash`, `created`, `uid`, `password`, `language` ) VALUES ( '%s', '%s', %d, '%s', '%s' ) ",
                        dbesc($hash),
                        dbesc(datetime_convert()),
-                       intval($newuid),
-                       dbesc($new_password),
+                       intval($user['uid']),
+                       dbesc($result['password']),
                        dbesc($lang)
                );
 
@@ -402,17 +120,17 @@ function register_post(&$a) {
 
                if($using_invites && $invite_id) {
                        q("delete * from register where hash = '%s' limit 1", dbesc($invite_id));
-                       set_pconfig($newuid,'system','invites_remaining',$num_invites);
+                       set_pconfig($user['uid'],'system','invites_remaining',$num_invites);
                }
 
                $email_tpl = get_intltext_template("register_verify_eml.tpl");
                $email_tpl = replace_macros($email_tpl, array(
                                '$sitename' => $a->config['sitename'],
                                '$siteurl' =>  $a->get_baseurl(),
-                               '$username' => $username,
-                               '$email' => $email,
-                               '$password' => $new_password,
-                               '$uid' => $newuid,
+                               '$username' => $user['username'],
+                               '$email' => $user['email'],
+                               '$password' => $result['password'],
+                               '$uid' => $user['uid'],
                                '$hash' => $hash
                 ));
 
index d4cd9d96763c7d0838fa2fc72b3e0e00b345df6a..466ffc4c34cad18c6fdf62c3deaa495a81836321 100644 (file)
@@ -110,18 +110,19 @@ function search_content(&$a) {
 
        if (get_config('system','use_fulltext_engine')) {
                if($tag)
-                       $sql_extra = sprintf(" AND MATCH (`item`.`tag`) AGAINST ('".'"%s"'."' in boolean mode) ", '#'.preg_quote($search));
+                       $sql_extra = sprintf(" AND MATCH (`item`.`tag`) AGAINST ('".'"%s"'."' in boolean mode) ", '#'.dbesc(protect_sprintf($search)));
                else
-                       $sql_extra = sprintf(" AND MATCH (`item`.`body`) AGAINST ('".'"%s"'."' in boolean mode) ", dbesc(preg_quote($search)));
+                       $sql_extra = sprintf(" AND MATCH (`item`.`body`) AGAINST ('".'"%s"'."' in boolean mode) ", dbesc(protect_sprintf($search)));
        } else {
                if($tag)
-                       $sql_extra = sprintf(" AND `item`.`tag` REGEXP '%s' ",  dbesc('\\]' . preg_quote($search) . '\\['));
+                       $sql_extra = sprintf(" AND `item`.`tag` REGEXP '%s' ",  dbesc('\\]' . protect_sprintf(preg_quote($search)) . '\\['));
                else
-                       $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(preg_quote($search)));
+                       $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search))));
        }
 
 
 
+
        // Here is the way permissions work in the search module...
        // Only public posts can be shown
        // OR your own posts if you are a logged in member
index b5214e917b3027d54ee7fd834e9621d6fc17ca01..92593d7a848034c564b525f36c50fe34eb84e74f 100644 (file)
@@ -445,7 +445,7 @@ function settings_post(&$a) {
 
        if($page_flags == PAGE_PRVGROUP) {
                $hidewall = 1;
-               if((! str_contact_allow) && (! str_group_allow) && (! str_contact_deny) && (! $str_group_deny)) {
+               if((! $str_contact_allow) && (! $str_group_allow) && (! $str_contact_deny) && (! $str_group_deny)) {
                        if($def_gid) {
                                info( t('Private forum has no privacy permissions. Using default privacy group.'). EOL);
                                $str_group_allow = '<' . $def_gid . '>';
@@ -837,27 +837,26 @@ function settings_content(&$a) {
 
        $pageset_tpl = get_markup_template('pagetypes.tpl');
        $pagetype = replace_macros($pageset_tpl,array(
-               '$page_normal'  => array('page-flags', t('Normal Account'), PAGE_NORMAL, 
+               '$page_normal'  => array('page-flags', t('Normal Account Page'), PAGE_NORMAL, 
                                                                        t('This account is a normal personal profile'), 
                                                                        ($a->user['page-flags'] == PAGE_NORMAL)),
                                                                
-               '$page_soapbox'         => array('page-flags', t('Soapbox Account'), PAGE_SOAPBOX, 
+               '$page_soapbox'         => array('page-flags', t('Soapbox Page'), PAGE_SOAPBOX, 
                                                                        t('Automatically approve all connection/friend requests as read-only fans'), 
                                                                        ($a->user['page-flags'] == PAGE_SOAPBOX)),
                                                                        
-               '$page_community'       => array('page-flags', t('Community/Celebrity Account'), PAGE_COMMUNITY, 
+               '$page_community'       => array('page-flags', t('Community Forum/Celebrity Account'), PAGE_COMMUNITY, 
                                                                        t('Automatically approve all connection/friend requests as read-write fans'), 
                                                                        ($a->user['page-flags'] == PAGE_COMMUNITY)),
                                                                        
-               '$page_freelove'        => array('page-flags', t('Automatic Friend Account'), PAGE_FREELOVE, 
+               '$page_freelove'        => array('page-flags', t('Automatic Friend Page'), PAGE_FREELOVE, 
                                                                        t('Automatically approve all connection/friend requests as friends'), 
                                                                        ($a->user['page-flags'] == PAGE_FREELOVE)),
 
-               '$page_prvgroup'        => array('page-flags', t('Private Forum'), PAGE_PRVGROUP, 
-                                                                       t('Private forum - approved members only [Experimental]'), 
+               '$page_prvgroup'        => array('page-flags', t('Private Forum [Experimental]'), PAGE_PRVGROUP, 
+                                                                       t('Private forum - approved members only'), 
                                                                        ($a->user['page-flags'] == PAGE_PRVGROUP)),
 
-               '$experimental' => ( (intval(get_config('system','prvgroup_testing'))) ? 'true' : ''),
 
        ));
 
@@ -1026,7 +1025,8 @@ function settings_content(&$a) {
                '$notify7'  => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, ''),         
                
                
-               '$h_advn' => t('Advanced Page Settings'),
+               '$h_advn' => t('Advanced Account/Page Type Settings'),
+               '$h_descadvn' => t('Change the behaviour of this account for special situations'),
                '$pagetype' => $pagetype,
                
 
index f25d16f9df13e6411381181a0f32725c7e606363..f94b89fd31d08a3e6b55c38d2d1d5ec22eafd2a0 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-define( 'UPDATE_VERSION' , 1144 );
+define( 'UPDATE_VERSION' , 1145 );
 
 /**
  *
@@ -1253,5 +1253,9 @@ function update_1143() {
        return UPDATE_SUCCESS ;
 }
 
-
-
+function update_1144() {
+       $r = q("alter table contact add prv tinyint(1) not null default '0' after forum");
+       if(! $r)
+               return UPDATE_FAILED ;
+       return UPDATE_SUCCESS ;
+}
index c39ac3bc106e4d08c713d03e197a30b84aa8ba40..69a9df6c328c0c8486227d5e50690f969a0166de 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: 3.0.1357\n"
+"Project-Id-Version: 3.0.1360\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-05-28 10:00-0700\n"
+"POT-Creation-Date: 2012-05-31 10:00-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: ../../mod/api.php:31 ../../mod/photos.php:130 ../../mod/photos.php:920
 #: ../../mod/editpost.php:10 ../../mod/install.php:151
 #: ../../mod/notifications.php:66 ../../mod/contacts.php:125
-#: ../../mod/settings.php:105 ../../mod/settings.php:536
-#: ../../mod/settings.php:541 ../../mod/manage.php:86 ../../mod/network.php:6
+#: ../../mod/settings.php:106 ../../mod/settings.php:537
+#: ../../mod/settings.php:542 ../../mod/manage.php:86 ../../mod/network.php:6
 #: ../../mod/notes.php:20 ../../mod/wallmessage.php:9
 #: ../../mod/wallmessage.php:33 ../../mod/wallmessage.php:79
 #: ../../mod/wallmessage.php:103 ../../mod/attach.php:33
@@ -55,7 +55,7 @@ msgstr ""
 #: ../../mod/profiles.php:374 ../../mod/delegate.php:6
 #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81
 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:503
-#: ../../include/items.php:3286 ../../index.php:306
+#: ../../include/items.php:3297 ../../index.php:306
 msgid "Permission denied."
 msgstr ""
 
@@ -84,8 +84,8 @@ msgstr ""
 msgid "Return to contact editor"
 msgstr ""
 
-#: ../../mod/crepair.php:148 ../../mod/settings.php:556
-#: ../../mod/settings.php:582 ../../mod/admin.php:656 ../../mod/admin.php:665
+#: ../../mod/crepair.php:148 ../../mod/settings.php:557
+#: ../../mod/settings.php:583 ../../mod/admin.php:656 ../../mod/admin.php:665
 msgid "Name"
 msgstr ""
 
@@ -127,8 +127,8 @@ msgstr ""
 #: ../../mod/photos.php:1336 ../../mod/photos.php:1367
 #: ../../mod/install.php:245 ../../mod/install.php:283
 #: ../../mod/localtime.php:45 ../../mod/contacts.php:322
-#: ../../mod/settings.php:554 ../../mod/settings.php:700
-#: ../../mod/settings.php:761 ../../mod/settings.php:965
+#: ../../mod/settings.php:555 ../../mod/settings.php:701
+#: ../../mod/settings.php:762 ../../mod/settings.php:969
 #: ../../mod/manage.php:109 ../../mod/group.php:85 ../../mod/admin.php:417
 #: ../../mod/admin.php:653 ../../mod/admin.php:789 ../../mod/admin.php:988
 #: ../../mod/admin.php:1075 ../../mod/profiles.php:543
@@ -159,7 +159,7 @@ msgstr ""
 #: ../../addon/irc/irc.php:55 ../../addon/blogger/blogger.php:102
 #: ../../addon/posterous/posterous.php:103
 #: ../../view/theme/cleanzero/config.php:80
-#: ../../view/theme/diabook/theme.php:752
+#: ../../view/theme/diabook/theme.php:757
 #: ../../view/theme/diabook/config.php:190
 #: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70
 #: ../../include/conversation.php:559
@@ -216,11 +216,11 @@ msgstr ""
 msgid "Edit event"
 msgstr ""
 
-#: ../../mod/events.php:300 ../../include/text.php:1060
+#: ../../mod/events.php:300 ../../include/text.php:1064
 msgid "link to source"
 msgstr ""
 
-#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:126
+#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:131
 #: ../../include/nav.php:52 ../../boot.php:1520
 msgid "Events"
 msgstr ""
@@ -280,8 +280,8 @@ msgid "Share this event"
 msgstr ""
 
 #: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
-#: ../../mod/dfrn_request.php:826 ../../mod/settings.php:555
-#: ../../mod/settings.php:581 ../../addon/js_upload/js_upload.php:45
+#: ../../mod/dfrn_request.php:830 ../../mod/settings.php:556
+#: ../../mod/settings.php:582 ../../addon/js_upload/js_upload.php:45
 msgid "Cancel"
 msgstr ""
 
@@ -324,25 +324,27 @@ msgid ""
 "and/or create new posts for you?"
 msgstr ""
 
-#: ../../mod/api.php:105 ../../mod/dfrn_request.php:814
-#: ../../mod/settings.php:876 ../../mod/settings.php:882
-#: ../../mod/settings.php:890 ../../mod/settings.php:894
-#: ../../mod/settings.php:899 ../../mod/settings.php:905
-#: ../../mod/settings.php:911 ../../mod/settings.php:917
-#: ../../mod/settings.php:953 ../../mod/settings.php:954
-#: ../../mod/settings.php:955 ../../mod/settings.php:956
-#: ../../mod/register.php:511 ../../mod/profiles.php:520
+#: ../../mod/api.php:105 ../../mod/dfrn_request.php:818
+#: ../../mod/settings.php:879 ../../mod/settings.php:885
+#: ../../mod/settings.php:893 ../../mod/settings.php:897
+#: ../../mod/settings.php:902 ../../mod/settings.php:908
+#: ../../mod/settings.php:914 ../../mod/settings.php:920
+#: ../../mod/settings.php:956 ../../mod/settings.php:957
+#: ../../mod/settings.php:958 ../../mod/settings.php:959
+#: ../../mod/settings.php:960 ../../mod/register.php:516
+#: ../../mod/profiles.php:520
 msgid "Yes"
 msgstr ""
 
-#: ../../mod/api.php:106 ../../mod/dfrn_request.php:815
-#: ../../mod/settings.php:876 ../../mod/settings.php:882
-#: ../../mod/settings.php:890 ../../mod/settings.php:894
-#: ../../mod/settings.php:899 ../../mod/settings.php:905
-#: ../../mod/settings.php:911 ../../mod/settings.php:917
-#: ../../mod/settings.php:953 ../../mod/settings.php:954
-#: ../../mod/settings.php:955 ../../mod/settings.php:956
-#: ../../mod/register.php:512 ../../mod/profiles.php:521
+#: ../../mod/api.php:106 ../../mod/dfrn_request.php:819
+#: ../../mod/settings.php:879 ../../mod/settings.php:885
+#: ../../mod/settings.php:893 ../../mod/settings.php:897
+#: ../../mod/settings.php:902 ../../mod/settings.php:908
+#: ../../mod/settings.php:914 ../../mod/settings.php:920
+#: ../../mod/settings.php:956 ../../mod/settings.php:957
+#: ../../mod/settings.php:958 ../../mod/settings.php:959
+#: ../../mod/settings.php:960 ../../mod/register.php:517
+#: ../../mod/profiles.php:521
 msgid "No"
 msgstr ""
 
@@ -354,7 +356,7 @@ msgstr ""
 #: ../../mod/photos.php:1005 ../../mod/photos.php:1020
 #: ../../mod/photos.php:1445 ../../mod/photos.php:1457
 #: ../../addon/communityhome/communityhome.php:110
-#: ../../view/theme/diabook/theme.php:593
+#: ../../view/theme/diabook/theme.php:598
 msgid "Contact Photos"
 msgstr ""
 
@@ -371,13 +373,13 @@ msgid "Contact information unavailable"
 msgstr ""
 
 #: ../../mod/photos.php:151 ../../mod/photos.php:652 ../../mod/photos.php:1005
-#: ../../mod/photos.php:1020 ../../mod/register.php:314
-#: ../../mod/register.php:321 ../../mod/register.php:328
+#: ../../mod/photos.php:1020 ../../mod/register.php:319
+#: ../../mod/register.php:326 ../../mod/register.php:333
 #: ../../mod/profile_photo.php:60 ../../mod/profile_photo.php:67
 #: ../../mod/profile_photo.php:74 ../../mod/profile_photo.php:174
 #: ../../mod/profile_photo.php:252 ../../mod/profile_photo.php:261
 #: ../../addon/communityhome/communityhome.php:111
-#: ../../view/theme/diabook/theme.php:594
+#: ../../view/theme/diabook/theme.php:599
 msgid "Profile Photos"
 msgstr ""
 
@@ -399,7 +401,7 @@ msgstr ""
 
 #: ../../mod/photos.php:583 ../../mod/like.php:127 ../../mod/tagger.php:70
 #: ../../addon/communityhome/communityhome.php:163
-#: ../../view/theme/diabook/theme.php:565 ../../include/text.php:1311
+#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1315
 #: ../../include/diaspora.php:1662 ../../include/conversation.php:53
 #: ../../include/conversation.php:126
 msgid "photo"
@@ -428,7 +430,7 @@ msgid "Image upload failed."
 msgstr ""
 
 #: ../../mod/photos.php:814 ../../mod/community.php:16
-#: ../../mod/dfrn_request.php:740 ../../mod/viewcontacts.php:17
+#: ../../mod/dfrn_request.php:744 ../../mod/viewcontacts.php:17
 #: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29
 msgid "Public access denied."
 msgstr ""
@@ -560,8 +562,8 @@ msgstr ""
 msgid "Preview"
 msgstr ""
 
-#: ../../mod/photos.php:1394 ../../mod/settings.php:617
-#: ../../mod/settings.php:698 ../../mod/group.php:168 ../../mod/admin.php:660
+#: ../../mod/photos.php:1394 ../../mod/settings.php:618
+#: ../../mod/settings.php:699 ../../mod/group.php:168 ../../mod/admin.php:660
 #: ../../include/conversation.php:322 ../../include/conversation.php:588
 msgid "Delete"
 msgstr ""
@@ -578,12 +580,12 @@ msgstr ""
 msgid "Not available."
 msgstr ""
 
-#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:128
+#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:133
 #: ../../include/nav.php:101
 msgid "Community"
 msgstr ""
 
-#: ../../mod/community.php:61 ../../mod/search.php:138
+#: ../../mod/community.php:61 ../../mod/search.php:144
 msgid "No results."
 msgstr ""
 
@@ -631,7 +633,7 @@ msgstr ""
 msgid "Post to Email"
 msgstr ""
 
-#: ../../mod/editpost.php:95 ../../mod/settings.php:616
+#: ../../mod/editpost.php:95 ../../mod/settings.php:617
 #: ../../include/conversation.php:575
 msgid "Edit"
 msgstr ""
@@ -700,184 +702,188 @@ msgstr ""
 msgid "This introduction has already been accepted."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:117 ../../mod/dfrn_request.php:495
+#: ../../mod/dfrn_request.php:118 ../../mod/dfrn_request.php:497
 msgid "Profile location is not valid or does not contain profile information."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:122 ../../mod/dfrn_request.php:500
+#: ../../mod/dfrn_request.php:123 ../../mod/dfrn_request.php:502
 msgid "Warning: profile location has no identifiable owner name."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:124 ../../mod/dfrn_request.php:502
+#: ../../mod/dfrn_request.php:125 ../../mod/dfrn_request.php:504
 msgid "Warning: profile location has no profile photo."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:127 ../../mod/dfrn_request.php:505
+#: ../../mod/dfrn_request.php:128 ../../mod/dfrn_request.php:507
 #, php-format
 msgid "%d required parameter was not found at the given location"
 msgid_plural "%d required parameters were not found at the given location"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../mod/dfrn_request.php:168
+#: ../../mod/dfrn_request.php:170
 msgid "Introduction complete."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:192
+#: ../../mod/dfrn_request.php:194
 msgid "Unrecoverable protocol error."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:220
+#: ../../mod/dfrn_request.php:222
 msgid "Profile unavailable."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:245
+#: ../../mod/dfrn_request.php:247
 #, php-format
 msgid "%s has received too many connection requests today."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:246
+#: ../../mod/dfrn_request.php:248
 msgid "Spam protection measures have been invoked."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:247
+#: ../../mod/dfrn_request.php:249
 msgid "Friends are advised to please try again in 24 hours."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:309
+#: ../../mod/dfrn_request.php:311
 msgid "Invalid locator"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:318
+#: ../../mod/dfrn_request.php:320
 msgid "Invalid email address."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:344
+#: ../../mod/dfrn_request.php:346
 msgid "This account has not been configured for email. Request failed."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:440
+#: ../../mod/dfrn_request.php:442
 msgid "Unable to resolve your name at the provided location."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:453
+#: ../../mod/dfrn_request.php:455
 msgid "You have already introduced yourself here."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:457
+#: ../../mod/dfrn_request.php:459
 #, php-format
 msgid "Apparently you are already friends with %s."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:478
+#: ../../mod/dfrn_request.php:480
 msgid "Invalid profile URL."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:484 ../../mod/follow.php:23
+#: ../../mod/dfrn_request.php:486 ../../mod/follow.php:23
 msgid "Disallowed profile URL."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:553 ../../mod/contacts.php:102
+#: ../../mod/dfrn_request.php:555 ../../mod/contacts.php:102
 msgid "Failed to update contact record."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:574
+#: ../../mod/dfrn_request.php:576
 msgid "Your introduction has been sent."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:627
+#: ../../mod/dfrn_request.php:629
 msgid "Please login to confirm introduction."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:641
+#: ../../mod/dfrn_request.php:643
 msgid ""
 "Incorrect identity currently logged in. Please login to <strong>this</"
 "strong> profile."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:653
+#: ../../mod/dfrn_request.php:654
+msgid "Hide this contact"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:657
 #, php-format
 msgid "Welcome home %s."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:654
+#: ../../mod/dfrn_request.php:658
 #, php-format
 msgid "Please confirm your introduction/connection request to %s."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:655
+#: ../../mod/dfrn_request.php:659
 msgid "Confirm"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:696 ../../include/items.php:2729
+#: ../../mod/dfrn_request.php:700 ../../include/items.php:2733
 msgid "[Name Withheld]"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:789
+#: ../../mod/dfrn_request.php:793
 msgid ""
 "Please enter your 'Identity Address' from one of the following supported "
 "communications networks:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:805
+#: ../../mod/dfrn_request.php:809
 msgid "<strike>Connect as an email follower</strike> (Coming soon)"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:807
+#: ../../mod/dfrn_request.php:811
 msgid ""
 "If you are not yet a member of the free social web, <a href=\"http://dir."
 "friendica.com/siteinfo\">follow this link to find a public Friendica site "
 "and join us today</a>."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:810
+#: ../../mod/dfrn_request.php:814
 msgid "Friend/Connection Request"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:811
+#: ../../mod/dfrn_request.php:815
 msgid ""
 "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
 "testuser@identi.ca"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:812
+#: ../../mod/dfrn_request.php:816
 msgid "Please answer the following:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:813
+#: ../../mod/dfrn_request.php:817
 #, php-format
 msgid "Does %s know you?"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:816
+#: ../../mod/dfrn_request.php:820
 msgid "Add a personal note:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:818 ../../include/contact_selectors.php:76
+#: ../../mod/dfrn_request.php:822 ../../include/contact_selectors.php:76
 msgid "Friendica"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:819
+#: ../../mod/dfrn_request.php:823
 msgid "StatusNet/Federated Social Web"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:820 ../../mod/settings.php:651
+#: ../../mod/dfrn_request.php:824 ../../mod/settings.php:652
 #: ../../include/contact_selectors.php:80
 msgid "Diaspora"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:821
+#: ../../mod/dfrn_request.php:825
 #, php-format
 msgid ""
 " - please do not use this form.  Instead, enter %s into your Diaspora search "
 "bar."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:822
+#: ../../mod/dfrn_request.php:826
 msgid "Your Identity Address:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:825
+#: ../../mod/dfrn_request.php:829
 msgid "Submit Request"
 msgstr ""
 
@@ -1229,7 +1235,7 @@ msgstr ""
 msgid "Personal"
 msgstr ""
 
-#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:122
+#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:127
 #: ../../include/nav.php:77 ../../include/nav.php:115
 msgid "Home"
 msgstr ""
@@ -1670,7 +1676,7 @@ msgstr ""
 msgid "Edit contact"
 msgstr ""
 
-#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:124
+#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:129
 #: ../../include/nav.php:139
 msgid "Contacts"
 msgstr ""
@@ -1702,12 +1708,12 @@ msgid "Password reset requested at %s"
 msgstr ""
 
 #: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107
-#: ../../mod/register.php:367 ../../mod/register.php:421
-#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:745
+#: ../../mod/register.php:372 ../../mod/register.php:426
+#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752
 #: ../../addon/facebook/facebook.php:688
 #: ../../addon/facebook/facebook.php:1178
 #: ../../addon/public_server/public_server.php:62
-#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2738
+#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2742
 #: ../../boot.php:694
 msgid "Administrator"
 msgstr ""
@@ -1791,40 +1797,40 @@ msgid "Remove account"
 msgstr ""
 
 #: ../../mod/settings.php:89 ../../mod/admin.php:748 ../../mod/admin.php:953
-#: ../../addon/mathjax/mathjax.php:36 ../../view/theme/diabook/theme.php:638
-#: ../../view/theme/diabook/theme.php:768 ../../include/nav.php:137
+#: ../../addon/mathjax/mathjax.php:36 ../../view/theme/diabook/theme.php:643
+#: ../../view/theme/diabook/theme.php:773 ../../include/nav.php:137
 msgid "Settings"
 msgstr ""
 
-#: ../../mod/settings.php:132
+#: ../../mod/settings.php:133
 msgid "Missing some important data!"
 msgstr ""
 
-#: ../../mod/settings.php:135 ../../mod/settings.php:580
+#: ../../mod/settings.php:136 ../../mod/settings.php:581
 msgid "Update"
 msgstr ""
 
-#: ../../mod/settings.php:240
+#: ../../mod/settings.php:241
 msgid "Failed to connect with email account using the settings provided."
 msgstr ""
 
-#: ../../mod/settings.php:245
+#: ../../mod/settings.php:246
 msgid "Email settings updated."
 msgstr ""
 
-#: ../../mod/settings.php:304
+#: ../../mod/settings.php:305
 msgid "Passwords do not match. Password unchanged."
 msgstr ""
 
-#: ../../mod/settings.php:309
+#: ../../mod/settings.php:310
 msgid "Empty passwords are not allowed. Password unchanged."
 msgstr ""
 
-#: ../../mod/settings.php:320
+#: ../../mod/settings.php:321
 msgid "Password changed."
 msgstr ""
 
-#: ../../mod/settings.php:322
+#: ../../mod/settings.php:323
 msgid "Password update failed. Please try again."
 msgstr ""
 
@@ -1844,15 +1850,15 @@ msgstr ""
 msgid " Cannot change to that email."
 msgstr ""
 
-#: ../../mod/settings.php:449
+#: ../../mod/settings.php:450
 msgid "Private forum has no privacy permissions. Using default privacy group."
 msgstr ""
 
-#: ../../mod/settings.php:453
+#: ../../mod/settings.php:454
 msgid "Private forum has no privacy permissions and no default privacy group."
 msgstr ""
 
-#: ../../mod/settings.php:483 ../../addon/facebook/facebook.php:488
+#: ../../mod/settings.php:484 ../../addon/facebook/facebook.php:488
 #: ../../addon/impressum/impressum.php:77
 #: ../../addon/openstreetmap/openstreetmap.php:80
 #: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105
@@ -1860,418 +1866,426 @@ msgstr ""
 msgid "Settings updated."
 msgstr ""
 
-#: ../../mod/settings.php:553 ../../mod/settings.php:579
-#: ../../mod/settings.php:615
+#: ../../mod/settings.php:554 ../../mod/settings.php:580
+#: ../../mod/settings.php:616
 msgid "Add application"
 msgstr ""
 
-#: ../../mod/settings.php:557 ../../mod/settings.php:583
+#: ../../mod/settings.php:558 ../../mod/settings.php:584
 #: ../../addon/statusnet/statusnet.php:555
 msgid "Consumer Key"
 msgstr ""
 
-#: ../../mod/settings.php:558 ../../mod/settings.php:584
+#: ../../mod/settings.php:559 ../../mod/settings.php:585
 #: ../../addon/statusnet/statusnet.php:554
 msgid "Consumer Secret"
 msgstr ""
 
-#: ../../mod/settings.php:559 ../../mod/settings.php:585
+#: ../../mod/settings.php:560 ../../mod/settings.php:586
 msgid "Redirect"
 msgstr ""
 
-#: ../../mod/settings.php:560 ../../mod/settings.php:586
+#: ../../mod/settings.php:561 ../../mod/settings.php:587
 msgid "Icon url"
 msgstr ""
 
-#: ../../mod/settings.php:571
+#: ../../mod/settings.php:572
 msgid "You can't edit this application."
 msgstr ""
 
-#: ../../mod/settings.php:614
+#: ../../mod/settings.php:615
 msgid "Connected Apps"
 msgstr ""
 
-#: ../../mod/settings.php:618
+#: ../../mod/settings.php:619
 msgid "Client key starts with"
 msgstr ""
 
-#: ../../mod/settings.php:619
+#: ../../mod/settings.php:620
 msgid "No name"
 msgstr ""
 
-#: ../../mod/settings.php:620
+#: ../../mod/settings.php:621
 msgid "Remove authorization"
 msgstr ""
 
-#: ../../mod/settings.php:631
+#: ../../mod/settings.php:632
 msgid "No Plugin settings configured"
 msgstr ""
 
-#: ../../mod/settings.php:639 ../../addon/widgets/widgets.php:123
+#: ../../mod/settings.php:640 ../../addon/widgets/widgets.php:123
 msgid "Plugin Settings"
 msgstr ""
 
-#: ../../mod/settings.php:651 ../../mod/settings.php:652
+#: ../../mod/settings.php:652 ../../mod/settings.php:653
 #, php-format
 msgid "Built-in support for %s connectivity is %s"
 msgstr ""
 
-#: ../../mod/settings.php:651 ../../mod/settings.php:652
+#: ../../mod/settings.php:652 ../../mod/settings.php:653
 msgid "enabled"
 msgstr ""
 
-#: ../../mod/settings.php:651 ../../mod/settings.php:652
+#: ../../mod/settings.php:652 ../../mod/settings.php:653
 msgid "disabled"
 msgstr ""
 
-#: ../../mod/settings.php:652
+#: ../../mod/settings.php:653
 msgid "StatusNet"
 msgstr ""
 
-#: ../../mod/settings.php:682
+#: ../../mod/settings.php:683
 msgid "Connector Settings"
 msgstr ""
 
-#: ../../mod/settings.php:687
+#: ../../mod/settings.php:688
 msgid "Email/Mailbox Setup"
 msgstr ""
 
-#: ../../mod/settings.php:688
+#: ../../mod/settings.php:689
 msgid ""
 "If you wish to communicate with email contacts using this service "
 "(optional), please specify how to connect to your mailbox."
 msgstr ""
 
-#: ../../mod/settings.php:689
+#: ../../mod/settings.php:690
 msgid "Last successful email check:"
 msgstr ""
 
-#: ../../mod/settings.php:690
+#: ../../mod/settings.php:691
 msgid "Email access is disabled on this site."
 msgstr ""
 
-#: ../../mod/settings.php:691
+#: ../../mod/settings.php:692
 msgid "IMAP server name:"
 msgstr ""
 
-#: ../../mod/settings.php:692
+#: ../../mod/settings.php:693
 msgid "IMAP port:"
 msgstr ""
 
-#: ../../mod/settings.php:693
+#: ../../mod/settings.php:694
 msgid "Security:"
 msgstr ""
 
-#: ../../mod/settings.php:693 ../../mod/settings.php:698
+#: ../../mod/settings.php:694 ../../mod/settings.php:699
 msgid "None"
 msgstr ""
 
-#: ../../mod/settings.php:694
+#: ../../mod/settings.php:695
 msgid "Email login name:"
 msgstr ""
 
-#: ../../mod/settings.php:695
+#: ../../mod/settings.php:696
 msgid "Email password:"
 msgstr ""
 
-#: ../../mod/settings.php:696
+#: ../../mod/settings.php:697
 msgid "Reply-to address:"
 msgstr ""
 
-#: ../../mod/settings.php:697
+#: ../../mod/settings.php:698
 msgid "Send public posts to all email contacts:"
 msgstr ""
 
-#: ../../mod/settings.php:698
+#: ../../mod/settings.php:699
 msgid "Action after import:"
 msgstr ""
 
-#: ../../mod/settings.php:698
+#: ../../mod/settings.php:699
 msgid "Mark as seen"
 msgstr ""
 
-#: ../../mod/settings.php:698
+#: ../../mod/settings.php:699
 msgid "Move to folder"
 msgstr ""
 
-#: ../../mod/settings.php:699
+#: ../../mod/settings.php:700
 msgid "Move to folder:"
 msgstr ""
 
-#: ../../mod/settings.php:759
+#: ../../mod/settings.php:760
 msgid "Display Settings"
 msgstr ""
 
-#: ../../mod/settings.php:765
+#: ../../mod/settings.php:766
 msgid "Display Theme:"
 msgstr ""
 
-#: ../../mod/settings.php:766
+#: ../../mod/settings.php:767
 msgid "Update browser every xx seconds"
 msgstr ""
 
-#: ../../mod/settings.php:766
+#: ../../mod/settings.php:767
 msgid "Minimum of 10 seconds, no maximum"
 msgstr ""
 
-#: ../../mod/settings.php:767
+#: ../../mod/settings.php:768
 msgid "Number of items to display on the network page:"
 msgstr ""
 
-#: ../../mod/settings.php:767
+#: ../../mod/settings.php:768
 msgid "Maximum of 100 items"
 msgstr ""
 
-#: ../../mod/settings.php:768
+#: ../../mod/settings.php:769
 msgid "Don't show emoticons"
 msgstr ""
 
-#: ../../mod/settings.php:836 ../../mod/admin.php:180 ../../mod/admin.php:634
-msgid "Normal Account"
+#: ../../mod/settings.php:840
+msgid "Normal Account Page"
 msgstr ""
 
-#: ../../mod/settings.php:837
+#: ../../mod/settings.php:841
 msgid "This account is a normal personal profile"
 msgstr ""
 
-#: ../../mod/settings.php:840 ../../mod/admin.php:181 ../../mod/admin.php:635
-msgid "Soapbox Account"
+#: ../../mod/settings.php:844
+msgid "Soapbox Page"
 msgstr ""
 
-#: ../../mod/settings.php:841
+#: ../../mod/settings.php:845
 msgid "Automatically approve all connection/friend requests as read-only fans"
 msgstr ""
 
-#: ../../mod/settings.php:844 ../../mod/admin.php:182 ../../mod/admin.php:636
-msgid "Community/Celebrity Account"
+#: ../../mod/settings.php:848
+msgid "Community Forum/Celebrity Account"
 msgstr ""
 
-#: ../../mod/settings.php:845
+#: ../../mod/settings.php:849
 msgid "Automatically approve all connection/friend requests as read-write fans"
 msgstr ""
 
-#: ../../mod/settings.php:848 ../../mod/admin.php:183 ../../mod/admin.php:637
-msgid "Automatic Friend Account"
+#: ../../mod/settings.php:852
+msgid "Automatic Friend Page"
 msgstr ""
 
-#: ../../mod/settings.php:849
+#: ../../mod/settings.php:853
 msgid "Automatically approve all connection/friend requests as friends"
 msgstr ""
 
-#: ../../mod/settings.php:852
-msgid "Private Forum"
+#: ../../mod/settings.php:856
+msgid "Private Forum [Experimental]"
 msgstr ""
 
-#: ../../mod/settings.php:853
-msgid "Private forum - approved members only [Experimental]"
+#: ../../mod/settings.php:857
+msgid "Private forum - approved members only"
 msgstr ""
 
-#: ../../mod/settings.php:866
+#: ../../mod/settings.php:869
 msgid "OpenID:"
 msgstr ""
 
-#: ../../mod/settings.php:866
+#: ../../mod/settings.php:869
 msgid "(Optional) Allow this OpenID to login to this account."
 msgstr ""
 
-#: ../../mod/settings.php:876
+#: ../../mod/settings.php:879
 msgid "Publish your default profile in your local site directory?"
 msgstr ""
 
-#: ../../mod/settings.php:882
+#: ../../mod/settings.php:885
 msgid "Publish your default profile in the global social directory?"
 msgstr ""
 
-#: ../../mod/settings.php:890
+#: ../../mod/settings.php:893
 msgid "Hide your contact/friend list from viewers of your default profile?"
 msgstr ""
 
-#: ../../mod/settings.php:894
+#: ../../mod/settings.php:897
 msgid "Hide your profile details from unknown viewers?"
 msgstr ""
 
-#: ../../mod/settings.php:899
+#: ../../mod/settings.php:902
 msgid "Allow friends to post to your profile page?"
 msgstr ""
 
-#: ../../mod/settings.php:905
+#: ../../mod/settings.php:908
 msgid "Allow friends to tag your posts?"
 msgstr ""
 
-#: ../../mod/settings.php:911
+#: ../../mod/settings.php:914
 msgid "Allow us to suggest you as a potential friend to new members?"
 msgstr ""
 
-#: ../../mod/settings.php:917
+#: ../../mod/settings.php:920
 msgid "Permit unknown people to send you private mail?"
 msgstr ""
 
-#: ../../mod/settings.php:928
+#: ../../mod/settings.php:931
 msgid "Profile is <strong>not published</strong>."
 msgstr ""
 
-#: ../../mod/settings.php:934 ../../mod/profile_photo.php:211
+#: ../../mod/settings.php:937 ../../mod/profile_photo.php:211
 msgid "or"
 msgstr ""
 
-#: ../../mod/settings.php:939
+#: ../../mod/settings.php:942
 msgid "Your Identity Address is"
 msgstr ""
 
-#: ../../mod/settings.php:950
+#: ../../mod/settings.php:953
 msgid "Automatically expire posts after this many days:"
 msgstr ""
 
-#: ../../mod/settings.php:950
+#: ../../mod/settings.php:953
 msgid "If empty, posts will not expire. Expired posts will be deleted"
 msgstr ""
 
-#: ../../mod/settings.php:951
+#: ../../mod/settings.php:954
 msgid "Advanced expiration settings"
 msgstr ""
 
-#: ../../mod/settings.php:952
+#: ../../mod/settings.php:955
 msgid "Advanced Expiration"
 msgstr ""
 
-#: ../../mod/settings.php:953
+#: ../../mod/settings.php:956
 msgid "Expire posts:"
 msgstr ""
 
-#: ../../mod/settings.php:954
+#: ../../mod/settings.php:957
 msgid "Expire personal notes:"
 msgstr ""
 
-#: ../../mod/settings.php:955
+#: ../../mod/settings.php:958
 msgid "Expire starred posts:"
 msgstr ""
 
-#: ../../mod/settings.php:956
+#: ../../mod/settings.php:959
 msgid "Expire photos:"
 msgstr ""
 
-#: ../../mod/settings.php:963
+#: ../../mod/settings.php:960
+msgid "Only expire posts by others:"
+msgstr ""
+
+#: ../../mod/settings.php:967
 msgid "Account Settings"
 msgstr ""
 
-#: ../../mod/settings.php:971
+#: ../../mod/settings.php:975
 msgid "Password Settings"
 msgstr ""
 
-#: ../../mod/settings.php:972
+#: ../../mod/settings.php:976
 msgid "New Password:"
 msgstr ""
 
-#: ../../mod/settings.php:973
+#: ../../mod/settings.php:977
 msgid "Confirm:"
 msgstr ""
 
-#: ../../mod/settings.php:973
+#: ../../mod/settings.php:977
 msgid "Leave password fields blank unless changing"
 msgstr ""
 
-#: ../../mod/settings.php:977
+#: ../../mod/settings.php:981
 msgid "Basic Settings"
 msgstr ""
 
-#: ../../mod/settings.php:978 ../../include/profile_advanced.php:15
+#: ../../mod/settings.php:982 ../../include/profile_advanced.php:15
 msgid "Full Name:"
 msgstr ""
 
-#: ../../mod/settings.php:979
+#: ../../mod/settings.php:983
 msgid "Email Address:"
 msgstr ""
 
-#: ../../mod/settings.php:980
+#: ../../mod/settings.php:984
 msgid "Your Timezone:"
 msgstr ""
 
-#: ../../mod/settings.php:981
+#: ../../mod/settings.php:985
 msgid "Default Post Location:"
 msgstr ""
 
-#: ../../mod/settings.php:982
+#: ../../mod/settings.php:986
 msgid "Use Browser Location:"
 msgstr ""
 
-#: ../../mod/settings.php:985
+#: ../../mod/settings.php:989
 msgid "Security and Privacy Settings"
 msgstr ""
 
-#: ../../mod/settings.php:987
+#: ../../mod/settings.php:991
 msgid "Maximum Friend Requests/Day:"
 msgstr ""
 
-#: ../../mod/settings.php:987 ../../mod/settings.php:1006
+#: ../../mod/settings.php:991 ../../mod/settings.php:1010
 msgid "(to prevent spam abuse)"
 msgstr ""
 
-#: ../../mod/settings.php:988
+#: ../../mod/settings.php:992
 msgid "Default Post Permissions"
 msgstr ""
 
-#: ../../mod/settings.php:989
+#: ../../mod/settings.php:993
 msgid "(click to open/close)"
 msgstr ""
 
-#: ../../mod/settings.php:1006
+#: ../../mod/settings.php:1010
 msgid "Maximum private messages per day from unknown people:"
 msgstr ""
 
-#: ../../mod/settings.php:1009
+#: ../../mod/settings.php:1013
 msgid "Notification Settings"
 msgstr ""
 
-#: ../../mod/settings.php:1010
+#: ../../mod/settings.php:1014
 msgid "By default post a status message when:"
 msgstr ""
 
-#: ../../mod/settings.php:1011
+#: ../../mod/settings.php:1015
 msgid "accepting a friend request"
 msgstr ""
 
-#: ../../mod/settings.php:1012
+#: ../../mod/settings.php:1016
 msgid "joining a forum/community"
 msgstr ""
 
-#: ../../mod/settings.php:1013
+#: ../../mod/settings.php:1017
 msgid "making an <em>interesting</em> profile change"
 msgstr ""
 
-#: ../../mod/settings.php:1014
+#: ../../mod/settings.php:1018
 msgid "Send a notification email when:"
 msgstr ""
 
-#: ../../mod/settings.php:1015
+#: ../../mod/settings.php:1019
 msgid "You receive an introduction"
 msgstr ""
 
-#: ../../mod/settings.php:1016
+#: ../../mod/settings.php:1020
 msgid "Your introductions are confirmed"
 msgstr ""
 
-#: ../../mod/settings.php:1017
+#: ../../mod/settings.php:1021
 msgid "Someone writes on your profile wall"
 msgstr ""
 
-#: ../../mod/settings.php:1018
+#: ../../mod/settings.php:1022
 msgid "Someone writes a followup comment"
 msgstr ""
 
-#: ../../mod/settings.php:1019
+#: ../../mod/settings.php:1023
 msgid "You receive a private message"
 msgstr ""
 
-#: ../../mod/settings.php:1020
+#: ../../mod/settings.php:1024
 msgid "You receive a friend suggestion"
 msgstr ""
 
-#: ../../mod/settings.php:1021
+#: ../../mod/settings.php:1025
 msgid "You are tagged in a post"
 msgstr ""
 
-#: ../../mod/settings.php:1024
-msgid "Advanced Page Settings"
+#: ../../mod/settings.php:1028
+msgid "Advanced Account/Page Type Settings"
+msgstr ""
+
+#: ../../mod/settings.php:1029
+msgid "Change the behaviour of this account for special situations"
 msgstr ""
 
 #: ../../mod/manage.php:90
@@ -2633,7 +2647,7 @@ msgstr ""
 msgid "Profile Visibility Editor"
 msgstr ""
 
-#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:123
+#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128
 #: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:74
 #: ../../include/nav.php:50 ../../boot.php:1505
 msgid "Profile"
@@ -2723,91 +2737,95 @@ msgstr ""
 msgid "An error occurred creating your default profile. Please try again."
 msgstr ""
 
-#: ../../mod/register.php:365 ../../mod/regmod.php:52
+#: ../../mod/register.php:297 ../../include/profile_selectors.php:42
+msgid "Friends"
+msgstr ""
+
+#: ../../mod/register.php:370 ../../mod/regmod.php:52
 #, php-format
 msgid "Registration details for %s"
 msgstr ""
 
-#: ../../mod/register.php:373
+#: ../../mod/register.php:378
 msgid ""
 "Registration successful. Please check your email for further instructions."
 msgstr ""
 
-#: ../../mod/register.php:377
+#: ../../mod/register.php:382
 msgid "Failed to send email message. Here is the message that failed."
 msgstr ""
 
-#: ../../mod/register.php:382
+#: ../../mod/register.php:387
 msgid "Your registration can not be processed."
 msgstr ""
 
-#: ../../mod/register.php:419
+#: ../../mod/register.php:424
 #, php-format
 msgid "Registration request at %s"
 msgstr ""
 
-#: ../../mod/register.php:428
+#: ../../mod/register.php:433
 msgid "Your registration is pending approval by the site owner."
 msgstr ""
 
-#: ../../mod/register.php:466
+#: ../../mod/register.php:471
 msgid ""
 "This site has exceeded the number of allowed daily account registrations. "
 "Please try again tomorrow."
 msgstr ""
 
-#: ../../mod/register.php:492
+#: ../../mod/register.php:497
 msgid ""
 "You may (optionally) fill in this form via OpenID by supplying your OpenID "
 "and clicking 'Register'."
 msgstr ""
 
-#: ../../mod/register.php:493
+#: ../../mod/register.php:498
 msgid ""
 "If you are not familiar with OpenID, please leave that field blank and fill "
 "in the rest of the items."
 msgstr ""
 
-#: ../../mod/register.php:494
+#: ../../mod/register.php:499
 msgid "Your OpenID (optional): "
 msgstr ""
 
-#: ../../mod/register.php:508
+#: ../../mod/register.php:513
 msgid "Include your profile in member directory?"
 msgstr ""
 
-#: ../../mod/register.php:528
+#: ../../mod/register.php:533
 msgid "Membership on this site is by invitation only."
 msgstr ""
 
-#: ../../mod/register.php:529
+#: ../../mod/register.php:534
 msgid "Your invitation ID: "
 msgstr ""
 
-#: ../../mod/register.php:532 ../../mod/admin.php:418
+#: ../../mod/register.php:537 ../../mod/admin.php:418
 msgid "Registration"
 msgstr ""
 
-#: ../../mod/register.php:540
+#: ../../mod/register.php:545
 msgid "Your Full Name (e.g. Joe Smith): "
 msgstr ""
 
-#: ../../mod/register.php:541
+#: ../../mod/register.php:546
 msgid "Your Email Address: "
 msgstr ""
 
-#: ../../mod/register.php:542
+#: ../../mod/register.php:547
 msgid ""
 "Choose a profile nickname. This must begin with a text character. Your "
 "profile address on this site will then be '<strong>nickname@$sitename</"
 "strong>'."
 msgstr ""
 
-#: ../../mod/register.php:543
+#: ../../mod/register.php:548
 msgid "Choose a nickname: "
 msgstr ""
 
-#: ../../mod/register.php:546 ../../include/nav.php:81 ../../boot.php:792
+#: ../../mod/register.php:551 ../../include/nav.php:81 ../../boot.php:792
 msgid "Register"
 msgstr ""
 
@@ -2819,8 +2837,8 @@ msgstr ""
 #: ../../addon/facebook/facebook.php:1572
 #: ../../addon/communityhome/communityhome.php:158
 #: ../../addon/communityhome/communityhome.php:167
-#: ../../view/theme/diabook/theme.php:560
-#: ../../view/theme/diabook/theme.php:569 ../../include/diaspora.php:1662
+#: ../../view/theme/diabook/theme.php:565
+#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1662
 #: ../../include/conversation.php:48 ../../include/conversation.php:57
 #: ../../include/conversation.php:121 ../../include/conversation.php:130
 msgid "status"
@@ -2828,7 +2846,7 @@ msgstr ""
 
 #: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1576
 #: ../../addon/communityhome/communityhome.php:172
-#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1678
+#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1678
 #: ../../include/conversation.php:65
 #, php-format
 msgid "%1$s likes %2$s's %3$s"
@@ -2841,7 +2859,7 @@ msgstr ""
 
 #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:156
 #: ../../mod/admin.php:697 ../../mod/admin.php:896 ../../mod/display.php:37
-#: ../../mod/display.php:142 ../../include/items.php:3168
+#: ../../mod/display.php:142 ../../include/items.php:3179
 msgid "Item not found."
 msgstr ""
 
@@ -2849,7 +2867,7 @@ msgstr ""
 msgid "Access denied."
 msgstr ""
 
-#: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:125
+#: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:130
 #: ../../include/nav.php:51 ../../boot.php:1511
 msgid "Photos"
 msgstr ""
@@ -2885,28 +2903,28 @@ msgstr ""
 msgid "Wall Photos"
 msgstr ""
 
-#: ../../mod/item.php:788
+#: ../../mod/item.php:800
 msgid "System error. Post not saved."
 msgstr ""
 
-#: ../../mod/item.php:813
+#: ../../mod/item.php:825
 #, php-format
 msgid ""
 "This message was sent to you by %s, a member of the Friendica social network."
 msgstr ""
 
-#: ../../mod/item.php:815
+#: ../../mod/item.php:827
 #, php-format
 msgid "You may visit them online at %s"
 msgstr ""
 
-#: ../../mod/item.php:816
+#: ../../mod/item.php:828
 msgid ""
 "Please contact the sender by replying to this post if you do not wish to "
 "receive these messages."
 msgstr ""
 
-#: ../../mod/item.php:818
+#: ../../mod/item.php:830
 #, php-format
 msgid "%s posted an update."
 msgstr ""
@@ -3103,6 +3121,22 @@ msgstr ""
 msgid "User registrations waiting for confirmation"
 msgstr ""
 
+#: ../../mod/admin.php:180 ../../mod/admin.php:634
+msgid "Normal Account"
+msgstr ""
+
+#: ../../mod/admin.php:181 ../../mod/admin.php:635
+msgid "Soapbox Account"
+msgstr ""
+
+#: ../../mod/admin.php:182 ../../mod/admin.php:636
+msgid "Community/Celebrity Account"
+msgstr ""
+
+#: ../../mod/admin.php:183 ../../mod/admin.php:637
+msgid "Automatic Friend Account"
+msgstr ""
+
 #: ../../mod/admin.php:202
 msgid "Message queues"
 msgstr ""
@@ -4119,7 +4153,7 @@ msgstr ""
 msgid "No entries."
 msgstr ""
 
-#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:621
+#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:626
 #: ../../include/contact_widgets.php:34
 msgid "Friend Suggestions"
 msgstr ""
@@ -4134,7 +4168,7 @@ msgstr ""
 msgid "Ignore/Hide"
 msgstr ""
 
-#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:619
+#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:624
 msgid "Global Directory"
 msgstr ""
 
@@ -4244,83 +4278,83 @@ msgid ""
 "has already been approved."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:235
+#: ../../mod/dfrn_confirm.php:237
 msgid "Response from remote site was not understood."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:244
+#: ../../mod/dfrn_confirm.php:246
 msgid "Unexpected response from remote site: "
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:252
+#: ../../mod/dfrn_confirm.php:254
 msgid "Confirmation completed successfully."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:254 ../../mod/dfrn_confirm.php:268
-#: ../../mod/dfrn_confirm.php:275
+#: ../../mod/dfrn_confirm.php:256 ../../mod/dfrn_confirm.php:270
+#: ../../mod/dfrn_confirm.php:277
 msgid "Remote site reported: "
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:266
+#: ../../mod/dfrn_confirm.php:268
 msgid "Temporary failure. Please wait and try again."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:273
+#: ../../mod/dfrn_confirm.php:275
 msgid "Introduction failed or was revoked."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:418
+#: ../../mod/dfrn_confirm.php:420
 msgid "Unable to set contact photo."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:475 ../../include/diaspora.php:507
+#: ../../mod/dfrn_confirm.php:477 ../../include/diaspora.php:507
 #: ../../include/conversation.php:101
 #, php-format
 msgid "%1$s is now friends with %2$s"
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:557
+#: ../../mod/dfrn_confirm.php:562
 #, php-format
 msgid "No user record found for '%s' "
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:567
+#: ../../mod/dfrn_confirm.php:572
 msgid "Our site encryption key is apparently messed up."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:578
+#: ../../mod/dfrn_confirm.php:583
 msgid "Empty site URL was provided or URL could not be decrypted by us."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:599
+#: ../../mod/dfrn_confirm.php:604
 msgid "Contact record was not found for you on our site."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:613
+#: ../../mod/dfrn_confirm.php:618
 #, php-format
 msgid "Site public key not available in contact record for URL %s."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:633
+#: ../../mod/dfrn_confirm.php:638
 msgid ""
 "The ID provided by your system is a duplicate on our system. It should work "
 "if you try again."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:644
+#: ../../mod/dfrn_confirm.php:649
 msgid "Unable to set your contact credentials on our system."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:709
+#: ../../mod/dfrn_confirm.php:716
 msgid "Unable to update your contact profile details on our system"
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:743
+#: ../../mod/dfrn_confirm.php:750
 #, php-format
 msgid "Connection accepted at %s"
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:792
+#: ../../mod/dfrn_confirm.php:799
 #, php-format
 msgid "%1$s has joined %2$s"
 msgstr ""
@@ -4719,7 +4753,7 @@ msgid "Latest likes"
 msgstr ""
 
 #: ../../addon/communityhome/communityhome.php:155
-#: ../../view/theme/diabook/theme.php:557 ../../include/text.php:1309
+#: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1313
 #: ../../include/conversation.php:45 ../../include/conversation.php:118
 msgid "event"
 msgstr ""
@@ -5681,153 +5715,153 @@ msgstr ""
 msgid "Color scheme"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:122 ../../include/nav.php:49
+#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:49
 #: ../../include/nav.php:115
 msgid "Your posts and conversations"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:123 ../../include/nav.php:50
+#: ../../view/theme/diabook/theme.php:128 ../../include/nav.php:50
 msgid "Your profile page"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:124
+#: ../../view/theme/diabook/theme.php:129
 msgid "Your contacts"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:125 ../../include/nav.php:51
+#: ../../view/theme/diabook/theme.php:130 ../../include/nav.php:51
 msgid "Your photos"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:126 ../../include/nav.php:52
+#: ../../view/theme/diabook/theme.php:131 ../../include/nav.php:52
 msgid "Your events"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:53
+#: ../../view/theme/diabook/theme.php:132 ../../include/nav.php:53
 msgid "Personal notes"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:53
+#: ../../view/theme/diabook/theme.php:132 ../../include/nav.php:53
 msgid "Your personal photos"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:129
-#: ../../view/theme/diabook/theme.php:638
-#: ../../view/theme/diabook/theme.php:742
+#: ../../view/theme/diabook/theme.php:134
+#: ../../view/theme/diabook/theme.php:643
+#: ../../view/theme/diabook/theme.php:747
 #: ../../view/theme/diabook/config.php:201
 msgid "Community Pages"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:485
-#: ../../view/theme/diabook/theme.php:744
+#: ../../view/theme/diabook/theme.php:490
+#: ../../view/theme/diabook/theme.php:749
 #: ../../view/theme/diabook/config.php:203
 msgid "Community Profiles"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:506
-#: ../../view/theme/diabook/theme.php:749
+#: ../../view/theme/diabook/theme.php:511
+#: ../../view/theme/diabook/theme.php:754
 #: ../../view/theme/diabook/config.php:208
 msgid "Last users"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:535
-#: ../../view/theme/diabook/theme.php:751
+#: ../../view/theme/diabook/theme.php:540
+#: ../../view/theme/diabook/theme.php:756
 #: ../../view/theme/diabook/config.php:210
 msgid "Last likes"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:580
-#: ../../view/theme/diabook/theme.php:750
+#: ../../view/theme/diabook/theme.php:585
+#: ../../view/theme/diabook/theme.php:755
 #: ../../view/theme/diabook/config.php:209
 msgid "Last photos"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:617
-#: ../../view/theme/diabook/theme.php:747
+#: ../../view/theme/diabook/theme.php:622
+#: ../../view/theme/diabook/theme.php:752
 #: ../../view/theme/diabook/config.php:206
 msgid "Find Friends"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:618
+#: ../../view/theme/diabook/theme.php:623
 msgid "Local Directory"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:620 ../../include/contact_widgets.php:35
+#: ../../view/theme/diabook/theme.php:625 ../../include/contact_widgets.php:35
 msgid "Similar Interests"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:622 ../../include/contact_widgets.php:37
+#: ../../view/theme/diabook/theme.php:627 ../../include/contact_widgets.php:37
 msgid "Invite Friends"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:673
-#: ../../view/theme/diabook/theme.php:743
+#: ../../view/theme/diabook/theme.php:678
+#: ../../view/theme/diabook/theme.php:748
 #: ../../view/theme/diabook/config.php:202
 msgid "Earth Layers"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:678
+#: ../../view/theme/diabook/theme.php:683
 msgid "Set zoomfactor for Earth Layers"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:679
+#: ../../view/theme/diabook/theme.php:684
 #: ../../view/theme/diabook/config.php:199
 msgid "Set longitude (X) for Earth Layers"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:680
+#: ../../view/theme/diabook/theme.php:685
 #: ../../view/theme/diabook/config.php:200
 msgid "Set latitude (Y) for Earth Layers"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:693
-#: ../../view/theme/diabook/theme.php:745
+#: ../../view/theme/diabook/theme.php:698
+#: ../../view/theme/diabook/theme.php:750
 #: ../../view/theme/diabook/config.php:204
 msgid "Help or @NewHere ?"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:700
-#: ../../view/theme/diabook/theme.php:746
+#: ../../view/theme/diabook/theme.php:705
+#: ../../view/theme/diabook/theme.php:751
 #: ../../view/theme/diabook/config.php:205
 msgid "Connect Services"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:707
-#: ../../view/theme/diabook/theme.php:748
+#: ../../view/theme/diabook/theme.php:712
+#: ../../view/theme/diabook/theme.php:753
 msgid "Last Tweets"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:710
+#: ../../view/theme/diabook/theme.php:715
 #: ../../view/theme/diabook/config.php:197
 msgid "Set twitter search term"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:730
-#: ../../view/theme/diabook/theme.php:731
-#: ../../view/theme/diabook/theme.php:732
-#: ../../view/theme/diabook/theme.php:733
-#: ../../view/theme/diabook/theme.php:734
 #: ../../view/theme/diabook/theme.php:735
 #: ../../view/theme/diabook/theme.php:736
 #: ../../view/theme/diabook/theme.php:737
 #: ../../view/theme/diabook/theme.php:738
-#: ../../view/theme/diabook/theme.php:739 ../../include/acl_selectors.php:288
+#: ../../view/theme/diabook/theme.php:739
+#: ../../view/theme/diabook/theme.php:740
+#: ../../view/theme/diabook/theme.php:741
+#: ../../view/theme/diabook/theme.php:742
+#: ../../view/theme/diabook/theme.php:743
+#: ../../view/theme/diabook/theme.php:744 ../../include/acl_selectors.php:288
 msgid "don't show"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:730
-#: ../../view/theme/diabook/theme.php:731
-#: ../../view/theme/diabook/theme.php:732
-#: ../../view/theme/diabook/theme.php:733
-#: ../../view/theme/diabook/theme.php:734
 #: ../../view/theme/diabook/theme.php:735
 #: ../../view/theme/diabook/theme.php:736
 #: ../../view/theme/diabook/theme.php:737
 #: ../../view/theme/diabook/theme.php:738
-#: ../../view/theme/diabook/theme.php:739 ../../include/acl_selectors.php:287
+#: ../../view/theme/diabook/theme.php:739
+#: ../../view/theme/diabook/theme.php:740
+#: ../../view/theme/diabook/theme.php:741
+#: ../../view/theme/diabook/theme.php:742
+#: ../../view/theme/diabook/theme.php:743
+#: ../../view/theme/diabook/theme.php:744 ../../include/acl_selectors.php:287
 msgid "show"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:740
+#: ../../view/theme/diabook/theme.php:745
 msgid "Show/hide boxes at right-hand column:"
 msgstr ""
 
@@ -5881,7 +5915,7 @@ msgid "j F"
 msgstr ""
 
 #: ../../include/profile_advanced.php:30 ../../include/datetime.php:448
-#: ../../include/items.php:1419
+#: ../../include/items.php:1423
 msgid "Birthday:"
 msgstr ""
 
@@ -6161,10 +6195,6 @@ msgstr ""
 msgid "Sex Addict"
 msgstr ""
 
-#: ../../include/profile_selectors.php:42
-msgid "Friends"
-msgstr ""
-
 #: ../../include/profile_selectors.php:42
 msgid "Friends/Benefits"
 msgstr ""
@@ -6293,127 +6323,127 @@ msgid_plural "%d Contacts"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Monday"
 msgstr ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Tuesday"
 msgstr ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Wednesday"
 msgstr ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Thursday"
 msgstr ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Friday"
 msgstr ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Saturday"
 msgstr ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Sunday"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "January"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "February"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "March"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "April"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "May"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "June"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "July"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "August"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "September"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "October"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "November"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "December"
 msgstr ""
 
-#: ../../include/text.php:920
+#: ../../include/text.php:924
 msgid "bytes"
 msgstr ""
 
-#: ../../include/text.php:940 ../../include/text.php:955
+#: ../../include/text.php:944 ../../include/text.php:959
 msgid "remove"
 msgstr ""
 
-#: ../../include/text.php:940 ../../include/text.php:955
+#: ../../include/text.php:944 ../../include/text.php:959
 msgid "[remove]"
 msgstr ""
 
-#: ../../include/text.php:943
+#: ../../include/text.php:947
 msgid "Categories:"
 msgstr ""
 
-#: ../../include/text.php:958
+#: ../../include/text.php:962
 msgid "Filed under:"
 msgstr ""
 
-#: ../../include/text.php:974 ../../include/text.php:986
+#: ../../include/text.php:978 ../../include/text.php:990
 msgid "Click to open/close"
 msgstr ""
 
-#: ../../include/text.php:1091
+#: ../../include/text.php:1095
 msgid "default"
 msgstr ""
 
-#: ../../include/text.php:1103
+#: ../../include/text.php:1107
 msgid "Select an alternate language"
 msgstr ""
 
-#: ../../include/text.php:1313
+#: ../../include/text.php:1317
 msgid "activity"
 msgstr ""
 
-#: ../../include/text.php:1315
+#: ../../include/text.php:1319
 msgid "comment"
 msgstr ""
 
-#: ../../include/text.php:1316
+#: ../../include/text.php:1320
 msgid "post"
 msgstr ""
 
-#: ../../include/text.php:1471
+#: ../../include/text.php:1475
 msgid "Item filed"
 msgstr ""
 
@@ -6948,11 +6978,11 @@ msgstr ""
 msgid "Please visit %s to approve or reject the suggestion."
 msgstr ""
 
-#: ../../include/items.php:2736
+#: ../../include/items.php:2740
 msgid "A new person is sharing with you at "
 msgstr ""
 
-#: ../../include/items.php:2736
+#: ../../include/items.php:2740
 msgid "You have a new follower at "
 msgstr ""
 
index 58e9233aa7ec148c843bc3f2e23105df861d462f..6c916323ce8c3ab295b1b006ec1f0e22b5ef4770 100644 (file)
@@ -11,6 +11,10 @@ $please
 <input type="hidden" name="localconfirm" value="1" />
 $aes_allow
 
+<label id="dfrn-request-homecoming-hide-label" for="dfrn-request-homecoming-hide">$hidethem</label>
+<input type="checkbox" name="hidden-contact" value="1" {{ if $hidechecked }}checked="checked" {{ endif }} />
+
+
 <div id="dfrn-request-homecoming-submit-wrapper" >
 <input id="dfrn-request-homecoming-submit" type="submit" name="submit" value="$submit" />
 </div>
index 924fc47ac4075954e052f2a364572705809f6be8..c9022a1c1498b1bdc261f04a1b3d237f2b3bc998 100644 (file)
@@ -1,7 +1,5 @@
        {{inc field_radio.tpl with $field=$page_normal }}{{endinc}}
-       {{inc field_radio.tpl with $field=$page_soapbox }}{{endinc}}
        {{inc field_radio.tpl with $field=$page_community }}{{endinc}}
-       {{inc field_radio.tpl with $field=$page_freelove }}{{endinc}}
-       {{ if $experimental }}
        {{inc field_radio.tpl with $field=$page_prvgroup }}{{endinc}}
-       {{ endif }}
\ No newline at end of file
+       {{inc field_radio.tpl with $field=$page_soapbox }}{{endinc}}
+       {{inc field_radio.tpl with $field=$page_freelove }}{{endinc}}
index d61af072f70bca195cb70b556226086336851233..d7ef2121082fdf4c4b6e23aa66ffe6b77f9395d9 100644 (file)
@@ -104,15 +104,16 @@ $group_select
 
 
 <h3 class="settings-heading">$h_not</h3>
+<div id="settings-notifications">
 
-<strong>$activity_options</strong>
+<div id="settings-activity-desc">$activity_options</div>
 
 {{inc field_checkbox.tpl with $field=$post_newfriend }}{{endinc}}
 {{inc field_checkbox.tpl with $field=$post_joingroup }}{{endinc}}
 {{inc field_checkbox.tpl with $field=$post_profilechange }}{{endinc}}
 
 
-<div id="settings-notify-desc"><strong>$lbl_not </strong></div>
+<div id="settings-notify-desc">$lbl_not</div>
 
 <div class="group">
 {{inc field_intcheckbox.tpl with $field=$notify1 }}{{endinc}}
@@ -124,6 +125,7 @@ $group_select
 {{inc field_intcheckbox.tpl with $field=$notify7 }}{{endinc}}
 </div>
 
+</div>
 
 <div class="settings-submit-wrapper" >
 <input type="submit" name="submit" class="settings-submit" value="$submit" />
@@ -131,6 +133,7 @@ $group_select
 
 
 <h3 class="settings-heading">$h_advn</h3>
+<div id="settings-pagetype-desc">$h_descadvn</div>
 
 $pagetype
 
index 07eba1edb042242fb0d85b8218130eb80659bda3..5854ccc02ac71c5826962bbb8f3428c2870f7215 100644 (file)
@@ -80,6 +80,7 @@ blockquote {
 .heart {
        color: #FF0000;
        font-size: 100%;
+       margin-right: 5px;
 }
 
 
@@ -716,7 +717,17 @@ input#dfrn-url {
 #settings-community {
        float: left;
 }
-
+#settings-notifications label {
+       margin-left: 20px;
+}
+#settings-notify-desc, #settings-activity-desc {
+       font-weight: bold;
+       margin-bottom: 15px;
+}
+#settings-pagetype-desc {
+       color: #666666;
+       margin-bottom: 15px;
+}
 
 #profile-in-dir-yes-label,
 #profile-in-dir-no-label,