diff --git a/boot.php b/boot.php index affa351dc6..76cf5cbbef 100644 --- 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', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index ed97cd4aa7..48900839c9 100644 --- a/database.sql +++ b/database.sql @@ -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', diff --git a/include/api.php b/include/api.php index 5697fbdbcb..5c17b35f56 100644 --- a/include/api.php +++ b/include/api.php @@ -995,8 +995,8 @@ 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) diff --git a/include/diaspora.php b/include/diaspora.php index 3f2cdf8e46..f7c2c5e8ec 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -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']; diff --git a/include/items.php b/include/items.php index 3fe977b6f7..0ed16217fa 100644 --- a/include/items.php +++ b/include/items.php @@ -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; diff --git a/include/nav.php b/include/nav.php index 2c9c643a92..909ba9b541 100644 --- a/include/nav.php +++ b/include/nav.php @@ -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'), "", ""); diff --git a/include/text.php b/include/text.php index d6a9ef5d3a..376ac473de 100644 --- a/include/text.php +++ b/include/text.php @@ -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) { ':homebrew', ':coffee', ':facepalm', + ':like', + ':dislike', '~friendika ~friendika', '~friendica ~friendica' ); diff --git a/include/user.php b/include/user.php new file mode 100644 index 0000000000..75a91b0967 --- /dev/null +++ b/include/user.php @@ -0,0 +1,325 @@ + 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 diff --git a/js/country.js b/js/country.js index 8d218bde68..c3add477f0 100644 --- a/js/country.js +++ b/js/country.js @@ -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"; aStates[251]="|Central|Copperbelt|Eastern|Luapula|Lusaka|North-Western|Northern|Southern|Western"; aStates[252]="|Bulawayo|Harare|ManicalandMashonaland Central|Mashonaland East|Mashonaland West|Masvingo|Matabeleland North|Matabeleland South|Midlands"; -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"; +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"; /* * gArCountryInfo * (0) Country name diff --git a/mod/acl.php b/mod/acl.php index 168b1f59f0..1e8898ab6f 100644 --- a/mod/acl.php +++ b/mod/acl.php @@ -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']); } } diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 564ae5ca23..76b99cbca7 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -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) ); diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 65d39d5fe1..e55da55722 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -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)) diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index b809929d7e..896fe17927 100644 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -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) ? '' : "" ), + '$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) { diff --git a/mod/item.php b/mod/item.php index df242d6f7c..497cf5daa2 100644 --- a/mod/item.php +++ b/mod/item.php @@ -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]); } diff --git a/mod/network.php b/mod/network.php index a94272a429..7c4c1ac04e 100644 --- a/mod/network.php +++ b/mod/network.php @@ -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 . ']%')) ); } diff --git a/mod/register.php b/mod/register.php index 58bba85333..b162f62beb 100644 --- a/mod/register.php +++ b/mod/register.php @@ -43,326 +43,44 @@ function register_post(&$a) { break; } - $using_invites = get_config('system','invitation_only'); - $num_invites = get_config('system','number_invites'); + require_once('include/user.php'); + $result = create_user($_POST); - $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 ); + if(! $result['success']) { + notice($result['message']); 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' ); - - // 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; - } - - $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 ); - 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 )); diff --git a/mod/search.php b/mod/search.php index d4cd9d9676..466ffc4c34 100644 --- a/mod/search.php +++ b/mod/search.php @@ -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 diff --git a/mod/settings.php b/mod/settings.php index b5214e917b..92593d7a84 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -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, diff --git a/update.php b/update.php index f25d16f9df..f94b89fd31 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ \n" "Language-Team: LANGUAGE \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 this 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 "Connect as an email follower (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, follow this link to find a public Friendica site " "and join us today." 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" -msgstr "" - -#: ../../mod/settings.php:837 -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:840 +msgid "Normal Account Page" msgstr "" #: ../../mod/settings.php:841 -msgid "Automatically approve all connection/friend requests as read-only fans" +msgid "This account is a normal personal profile" msgstr "" -#: ../../mod/settings.php:844 ../../mod/admin.php:182 ../../mod/admin.php:636 -msgid "Community/Celebrity Account" +#: ../../mod/settings.php:844 +msgid "Soapbox Page" msgstr "" #: ../../mod/settings.php:845 -msgid "Automatically approve all connection/friend requests as read-write fans" +msgid "Automatically approve all connection/friend requests as read-only fans" msgstr "" -#: ../../mod/settings.php:848 ../../mod/admin.php:183 ../../mod/admin.php:637 -msgid "Automatic Friend Account" +#: ../../mod/settings.php:848 +msgid "Community Forum/Celebrity Account" msgstr "" #: ../../mod/settings.php:849 -msgid "Automatically approve all connection/friend requests as friends" +msgid "Automatically approve all connection/friend requests as read-write fans" msgstr "" #: ../../mod/settings.php:852 -msgid "Private Forum" +msgid "Automatic Friend Page" msgstr "" #: ../../mod/settings.php:853 -msgid "Private forum - approved members only [Experimental]" +msgid "Automatically approve all connection/friend requests as friends" msgstr "" -#: ../../mod/settings.php:866 +#: ../../mod/settings.php:856 +msgid "Private Forum [Experimental]" +msgstr "" + +#: ../../mod/settings.php:857 +msgid "Private forum - approved members only" +msgstr "" + +#: ../../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 not published." 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 interesting 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 'nickname@$sitename'." 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 "" diff --git a/view/dfrn_req_confirm.tpl b/view/dfrn_req_confirm.tpl index 58e9233aa7..6c916323ce 100644 --- a/view/dfrn_req_confirm.tpl +++ b/view/dfrn_req_confirm.tpl @@ -11,6 +11,10 @@ $please $aes_allow + + + +
diff --git a/view/pagetypes.tpl b/view/pagetypes.tpl index 924fc47ac4..c9022a1c14 100644 --- a/view/pagetypes.tpl +++ b/view/pagetypes.tpl @@ -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}} diff --git a/view/settings.tpl b/view/settings.tpl index d61af072f7..d7ef212108 100644 --- a/view/settings.tpl +++ b/view/settings.tpl @@ -104,15 +104,16 @@ $group_select

$h_not

+
-$activity_options +
$activity_options
{{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}} -
$lbl_not
+
$lbl_not
{{inc field_intcheckbox.tpl with $field=$notify1 }}{{endinc}} @@ -124,6 +125,7 @@ $group_select {{inc field_intcheckbox.tpl with $field=$notify7 }}{{endinc}}
+
@@ -131,6 +133,7 @@ $group_select

$h_advn

+
$h_descadvn
$pagetype diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index 07eba1edb0..5854ccc02a 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -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,