diff --git a/.gitignore b/.gitignore
index 3dfb8a903a..6302bc1c8b 100755
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,11 @@ home.html
addon
*~
+#ignore documentation, it should be newly built
+doc/api
+
+#ignore config files from eclipse, we don't want IDE files in our repository
+.project
+.buildpath
+.externalToolBuilders
+.settings
diff --git a/view/theme/dispy/experimental b/.gitmodules
old mode 100755
new mode 100644
similarity index 100%
rename from view/theme/dispy/experimental
rename to .gitmodules
diff --git a/LICENSE b/LICENSE
index 65ec68b9c2..15c3e825b6 100755
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010, 2011 the Friendica Project
+Copyright (c) 2010-2012 the Friendica Project
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/README b/README
index e69de29bb2..d85d98aad1 100644
--- a/README
+++ b/README
@@ -0,0 +1,11 @@
+Friendica Social Communications Server
+======================================
+
+http://friendica.com
+
+Welcome to the free social web.
+
+
+Friendica is a communications platform for integrated social communications utilising decentralised communications and linkage to several indie social projects - as well as popular mainstream providers.
+
+Our mission is to free our friends and families from the clutches of data-harvesting corporations, and pave the way to a future where social communications are free and open and flow between alternate providers as easily as email does today.
\ No newline at end of file
diff --git a/boot.php b/boot.php
index 18b6f8375f..b4c6ad0ac8 100755
--- 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', '2.3.1265' );
+define ( 'FRIENDICA_VERSION', '2.3.1275' );
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
-define ( 'DB_UPDATE_VERSION', 1129 );
+define ( 'DB_UPDATE_VERSION', 1131 );
define ( 'EOL', "
\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000000..83c5300264
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/database.sql b/database.sql
index 8c74ecddfb..35c257f021 100755
--- a/database.sql
+++ b/database.sql
@@ -216,6 +216,7 @@ CREATE TABLE IF NOT EXISTS `item` (
`tag` mediumtext NOT NULL,
`attach` mediumtext NOT NULL,
`inform` mediumtext NOT NULL,
+ `file` mediumtext NOT NULL,
`location` char(255) NOT NULL,
`coord` char(255) NOT NULL,
`allow_cid` mediumtext NOT NULL,
@@ -262,6 +263,7 @@ CREATE TABLE IF NOT EXISTS `item` (
FULLTEXT KEY `title` (`title`),
FULLTEXT KEY `body` (`body`),
FULLTEXT KEY `tag` (`tag`),
+ FULLTEXT KEY `file` (`file`),
FULLTEXT KEY `allow_cid` (`allow_cid`),
FULLTEXT KEY `allow_gid` (`allow_gid`),
FULLTEXT KEY `deny_cid` (`deny_cid`),
@@ -752,14 +754,18 @@ CREATE TABLE IF NOT EXISTS `notify` (
`msg` MEDIUMTEXT NOT NULL ,
`uid` INT NOT NULL ,
`link` CHAR( 255 ) NOT NULL ,
+`parent` INT( 11 ) NOT NULL,
`seen` TINYINT( 1 ) NOT NULL DEFAULT '0',
`verb` CHAR( 255 ) NOT NULL,
`otype` CHAR( 16 ) NOT NULL,
INDEX ( `hash` ),
INDEX ( `type` ),
INDEX ( `uid` ),
+INDEX ( `link` ),
+INDEX ( `parent` ),
INDEX ( `seen` ),
-INDEX ( `date` )
+INDEX ( `date` ),
+INDEX ( `otype` )
) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `item_id` (
diff --git a/doc/Account-Basics.md b/doc/Account-Basics.md
index b5e757dbc5..164a6be462 100755
--- a/doc/Account-Basics.md
+++ b/doc/Account-Basics.md
@@ -6,7 +6,9 @@ Account Basics
**Registration**
-Not all Friendica sites allow open registration. If registration is allowed, you will see a "Register" link immediately below the login prompts on the site home page. Following this link will take you to the site Registration page.
+Not all Friendica sites allow open registration. If registration is allowed, you will see a "Register" link immediately below the login prompts on the site home page. Following this link will take you to the site registration page. The strength of our network is that lots of different sites are all completely compatible with each other. If the site you're visting doesn't allow registration, or you think you might prefer another one, you can find a list of public servers here, and find one that meets your needs.
+
+If you'd like to have your own server, you can do that too. Visit the Friendica website to download the code with setup instructions. It's a very simple install process that anybody experienced in hosting websites, or with basic Linux experience can handle easily.
*OpenID*
@@ -14,11 +16,11 @@ The first field on the Registration page is for an OpenID address. If you do not
*Your Full Name*
-Please provide your full name as you would like it to be displayed on this system.
+Please provide your full name **as you would like it to be displayed on this system**. Most people use their real name for this, but you're under no obligation to do so yourself.
*Email Address*
-Please provide a valid email address. Your email address is **never** published. We need this to send you account information and your login details. You may also occasionally receive notifications of incoming messages or items requiring your attention, but you have the ability to completely disable these from your Settings page once you have logged in.
+Please provide a valid email address. Your email address is **never** published. We need this to send you account information and your login details. You may also occasionally receive notifications of incoming messages or items requiring your attention, but you have the ability to completely disable these from your Settings page once you have logged in. This doesn't have to be your primary email address, but it does need to be a real email address. You can't get your initial password, or reset a lost password later without it. This is the only bit of personal information that has to be accurate.
*Nickname*
@@ -28,12 +30,12 @@ A nickname is used to generate web addresses for many of your personal pages, an
*Directory Publishing*
-The Registration form also allows you to choose whether or not to list your account in the online directory. This is like a "phone book" and you may choose to be unlisted. We recommend that you select 'Yes' so that other people (friends, family, etc.) will be able to find you. If you choose 'No', you will essentially be invisible and have few opportunities for interaction. Whichever you choose, this can be changed any time from your Settings page after you login.
-
+The Registration form also allows you to choose whether or not to list your account in the online directory. This is like a "phone book" and you may choose to be unlisted. We recommend that you select 'Yes' so that other people (friends, family, etc.) will be able to find you. If you choose 'No', you will essentially be invisible and have few opportunities for interaction. Whichever you choose, this can be changed any time from your Settings page after you login.
*Register*
-Once you have provided the necessary details, click the 'Register' button. An email will be sent to you providing your account login details. Some sites may require administrator approval before the registration is processed, and you will be alerted if this is the case. Please watch your email (including spam folders) for your registration approval.
+Once you have provided the necessary details, click the 'Register' button. An email will be sent to you providing your account login details. Please watch your email (including spam folders) for your registration details and initial password.
+
@@ -58,6 +60,11 @@ After your first login, please visit the 'Settings' page from the top menu bar a
A ['Tips for New Members'](newmember) link will show up on your home page for two weeks to provide some important Getting Started information.
+**Retrieving Personal Data**
+
+You can export a copy of your personal data in XML format from the "Export personal data" link at the top of your settings page.
+
+
**See Also**
* [Profiles](help/Profiles)
@@ -66,4 +73,3 @@ A ['Tips for New Members'](newmember) link will show up on your home page for tw
* [Remove Account](help/Remove-Account)
-
\ No newline at end of file
diff --git a/doc/Bugs-and-Issues.md b/doc/Bugs-and-Issues.md
index c119b99684..46abea9a3e 100755
--- a/doc/Bugs-and-Issues.md
+++ b/doc/Bugs-and-Issues.md
@@ -4,18 +4,19 @@ Bugs and Issues
* [Home](help)
-Please report any bugs/issues you encounter using our bug tracker at [[http://bugs.friendica.com]]
+If your server has a support page, you should report any bugs/issues you encounter there first. Reporting to your support page before reporting to the developers makes their job easier, as they don't have to deal with bug reports that might not have anything to do with them, and that helps us get new features faster.
-Try to provide as much information as you can about the bug (including the full text of any error messages or notices), and if possible your Friendica version.
+If you're a technical user, or your site doesn't have a support page, you'll need to use the Bug Tracker. Please perform a search to see if there's already an open bug that matches yours before submitting anything.
-Your Friendica version may be found in newer releases by visiting http://YOURFRIENDICASITE/friendica
+Try to provide as much information as you can about the bug, including the **full** text of any error messages or notices, and any steps required to replicate the problem in as much detail as possible. It's generally better to provide too much information than not enough.
-For older versions, view the HTML source of your profile page. The Friendica version is in the HTML header, 5-10 lines from the top of the page.
+See this article to learn more about submitting **good** bug reports.
-For really old versions which don't have a version number in the HTML header - please upgrade. Your bug was probably fixed a long time ago.
**Bug Sponsorship**
+If you find a bug, and it is caused by a problem in main branch (ie, is not specific to our site), you may sponsor it.
+
The bug/issue database allows you to sponsor issues. This provides an incentive for developers to work on your issue. This isn't necessary - we don't like bugs and will try to fix them. This has more importance for future development projects and feature requests.
Bug sponsorship works on the honour system. If you agree to pay $10 to fix a bug, when the fix has been checked in and verified you should send a paypal payment to the developer assigned to the bug. Don't ever think you can get away with not paying a developer for work performed. Some of these guys could hack into your credit card account if you make them mad.
diff --git a/doc/Making-Friends.md b/doc/Making-Friends.md
index 1a9c8d8981..3f1a24c8de 100755
--- a/doc/Making-Friends.md
+++ b/doc/Making-Friends.md
@@ -5,7 +5,13 @@ Making Friends
Friendship in Friendica can take on a great many different meanings. But let's keep it simple, you want to be friends with somebody. How do you do it?
-The first thing you can do is look at the Directory for somebody you would like to connect with. Visit their profile. Just beneath their profile picture will be the word 'Connect' (we're assuming this is an English language profile).
+The easiest thing to do is to join the New Here group. This group is especially for people new to the Friendica network. Simply connect to the group, post to the wall, and make new friends. You don't even have to like us - comment on a few of our posts, and other people will start to add you too.
+
+The next thing you can do is look at the Directory. The directory is split up into two parts. If you click the directory button, you will be presented with a list of all members (who chose to be listed) on your server. You'll also see a link to the Global Directory. If you click through to the global directory, you will be presented with a list of everybody who chose to be listed across all instances of Friendica. You will also see a "Show Community Forums" link, which will direct you to Groups, Forums and Fanpages. You connect to people, groups and forums in the same way, except groups and forums will automatically accept your introduction request, whereas a human will approve you manually.
+
+To connect with other Friendica user
+
+Visit their profile. Just beneath their profile picture will be the word 'Connect' (we're assuming this is an English language profile).
Click that. It will take you to a "Connect" form.
@@ -23,6 +29,7 @@ When you've submitted the connection page, it will take you back to your own sit
If you already know somebody's Identity Address, you can enter it in the "connect" box on your "Contacts" page. This will take you through a similar process.
+
**Alternate Networks**
You can also use your Identity Address or other people's Identity Addresses to become friends across networks. The list of possible networks is growing all the time. If you know (for instance) "bob" on identi.ca (a Status.Net site) you could put bob@identi.ca into your Contact page and become friends across networks. (Or you can put in the URL to Bob's identi.ca page if you wish). You can also be "partial" friends with somebody on Google Buzz by putting in their gmail address. Google Buzz does not yet support all the protocols we need for direct messaging, but you should be able to follow status updates from within Friendica. You can do the same for Twitter accounts and Diaspora accounts. In fact you can "follow" most anybody or any website that produces a syndication feed (RSS/Atom,etc.). If we can find an information stream and a name to attach to the contact, we'll try to connect with them.
diff --git a/doc/Remove-Account.md b/doc/Remove-Account.md
index f526b78a8f..ae5de2cb65 100755
--- a/doc/Remove-Account.md
+++ b/doc/Remove-Account.md
@@ -5,9 +5,20 @@ Remove Account
We don't like to see people leave Friendica, but if you need to remove your account, you should visit the URL
-http://friendica-site/removeme
+http://sitename/removeme
-with your web browser. You will need to be logged in at the time. (Replace "friendica-site" with the hostname of your Friendica server)
+with your web browser. You will need to be logged in at the time.
You will be asked for your password to confirm the request. If this matches your stored password, your account will immediately be removed. Unlike some social networks we do **not** hold onto it for a grace period in case you change your mind. Your user details, your conversations, your photos, your friends - everything; will be removed immediately and you will be logged out.
+When we expire posts we send notifications out to Friendica to remove the posts. Diaspora doesn't have a bulk delete so this step is skipped on that network - and hopefully it will be obvious that deletion doesn't work on any other networks. If you manually delete a post or a range of posts we send individual delete notifications to Friendica and Diaspora for each deleted post.
+
+Diaspora often loses these.
+
+If you delete a post but somebody else has starred it, it is still removed. Your wishes take priority.
+
+When you remove your account we physically remove all your posts and your profile and user data, etc. immediately.
+
+In order to send out a bulk remove we would need to keep your account around to do this, as we would need to prove to your friends who it is that is submitting the request. We can't do this if you don't have an account.
+
+Your friends may still see your posts if your account is gone, but there is no public place within Friendica where they can be viewed. If you had friends on Diaspora, your public posts may stick around and be visible to others from that network.
diff --git a/docblox.dist.xml b/docblox.dist.xml
new file mode 100644
index 0000000000..a2ea8e2cb7
--- /dev/null
+++ b/docblox.dist.xml
@@ -0,0 +1,13 @@
+
+
+
+ data/output
+
+
+ data/output
+
+
+ .
+
+
+
diff --git a/htconfig.php b/htconfig.php
index 01f56f2c42..f52aed2b10 100755
--- a/htconfig.php
+++ b/htconfig.php
@@ -69,7 +69,7 @@ $a->config['system']['rino_encrypt'] = true;
// allowed themes (change this from admin panel after installation)
-$a->config['system']['allowed_themes'] = 'dispy,quattro,testbubble,vier,darkbubble,darkzero,duepuntozero,greenzero,purplezero,quattro-green,slackr';
+$a->config['system']['allowed_themes'] = 'dispy,quattro,testbubble,vier,darkbubble,darkzero,duepuntozero,greenzero,purplezero,quattro-green,slackr,diabook,diabook-blue';
// default system theme
diff --git a/images/beer_mug.gif b/images/beer_mug.gif
index a047d19873..9a3e051922 100644
Binary files a/images/beer_mug.gif and b/images/beer_mug.gif differ
diff --git a/images/bug-x.gif b/images/bug-x.gif
new file mode 100644
index 0000000000..10936caa77
Binary files /dev/null and b/images/bug-x.gif differ
diff --git a/images/icons/lock.png.tmp b/images/icons/lock.png.tmp
deleted file mode 100755
index 7e58ead2eb..0000000000
Binary files a/images/icons/lock.png.tmp and /dev/null differ
diff --git a/images/smiley-Oo.gif b/images/smiley-Oo.gif
index a125d0ff20..a15d974275 100755
Binary files a/images/smiley-Oo.gif and b/images/smiley-Oo.gif differ
diff --git a/images/smiley-beard.png b/images/smiley-beard.png
new file mode 100644
index 0000000000..5d4b28463f
Binary files /dev/null and b/images/smiley-beard.png differ
diff --git a/images/smiley-brokenheart.gif b/images/smiley-brokenheart.gif
index 79ca0c31b4..971b57fd98 100755
Binary files a/images/smiley-brokenheart.gif and b/images/smiley-brokenheart.gif differ
diff --git a/images/smiley-cool.gif b/images/smiley-cool.gif
index ba90cc36fb..cee1c1aa3d 100755
Binary files a/images/smiley-cool.gif and b/images/smiley-cool.gif differ
diff --git a/images/smiley-cry.gif b/images/smiley-cry.gif
index 74d897a4f6..06e6ca2c25 100755
Binary files a/images/smiley-cry.gif and b/images/smiley-cry.gif differ
diff --git a/images/smiley-embarassed.gif b/images/smiley-embarassed.gif
index 963a96b8a7..adc12e7c51 100755
Binary files a/images/smiley-embarassed.gif and b/images/smiley-embarassed.gif differ
diff --git a/images/smiley-foot-in-mouth.gif b/images/smiley-foot-in-mouth.gif
index 16f68cc1e9..b444e5781e 100755
Binary files a/images/smiley-foot-in-mouth.gif and b/images/smiley-foot-in-mouth.gif differ
diff --git a/images/smiley-frown.gif b/images/smiley-frown.gif
index 716f55e161..9ff19850d9 100755
Binary files a/images/smiley-frown.gif and b/images/smiley-frown.gif differ
diff --git a/images/smiley-heart.gif b/images/smiley-heart.gif
index 21c0c65308..6a11e70652 100755
Binary files a/images/smiley-heart.gif and b/images/smiley-heart.gif differ
diff --git a/images/smiley-innocent.gif b/images/smiley-innocent.gif
index 334d49e0e6..9d747140ec 100755
Binary files a/images/smiley-innocent.gif and b/images/smiley-innocent.gif differ
diff --git a/images/smiley-kiss.gif b/images/smiley-kiss.gif
index 4efd549ed3..cc356611ee 100755
Binary files a/images/smiley-kiss.gif and b/images/smiley-kiss.gif differ
diff --git a/images/smiley-laughing.gif b/images/smiley-laughing.gif
index 1606c119e7..1bf29de795 100755
Binary files a/images/smiley-laughing.gif and b/images/smiley-laughing.gif differ
diff --git a/images/smiley-money-mouth.gif b/images/smiley-money-mouth.gif
index ca2451e102..1e8ccd0f3d 100755
Binary files a/images/smiley-money-mouth.gif and b/images/smiley-money-mouth.gif differ
diff --git a/images/smiley-sealed.gif b/images/smiley-sealed.gif
index b33d3cca1e..98186742d2 100755
Binary files a/images/smiley-sealed.gif and b/images/smiley-sealed.gif differ
diff --git a/images/smiley-smile.gif b/images/smiley-smile.gif
index e6a9e60d5d..b9bff40a43 100755
Binary files a/images/smiley-smile.gif and b/images/smiley-smile.gif differ
diff --git a/images/smiley-surprised.gif b/images/smiley-surprised.gif
index cb99cdd913..b074653260 100755
Binary files a/images/smiley-surprised.gif and b/images/smiley-surprised.gif differ
diff --git a/images/smiley-tongue-out.gif b/images/smiley-tongue-out.gif
index 2075dc1605..48867dc262 100755
Binary files a/images/smiley-tongue-out.gif and b/images/smiley-tongue-out.gif differ
diff --git a/images/smiley-undecided.gif b/images/smiley-undecided.gif
index bef7e25730..28029794f3 100755
Binary files a/images/smiley-undecided.gif and b/images/smiley-undecided.gif differ
diff --git a/images/smiley-whitebeard.png b/images/smiley-whitebeard.png
new file mode 100644
index 0000000000..2a1fccbb72
Binary files /dev/null and b/images/smiley-whitebeard.png differ
diff --git a/images/smiley-wink.gif b/images/smiley-wink.gif
index 9faf1aff8f..e1cefb05c9 100755
Binary files a/images/smiley-wink.gif and b/images/smiley-wink.gif differ
diff --git a/images/smiley-yell.gif b/images/smiley-yell.gif
index 648e6e8791..5296c88365 100755
Binary files a/images/smiley-yell.gif and b/images/smiley-yell.gif differ
diff --git a/images/star.png b/images/star.png
new file mode 100755
index 0000000000..0b00cb1893
Binary files /dev/null and b/images/star.png differ
diff --git a/images/star_dummy.png b/images/star_dummy.png
new file mode 100644
index 0000000000..ce11f30d4d
Binary files /dev/null and b/images/star_dummy.png differ
diff --git a/include/Scrape.php b/include/Scrape.php
index 4c4ad3cdb9..8344aa7373 100755
--- a/include/Scrape.php
+++ b/include/Scrape.php
@@ -255,6 +255,11 @@ function scrape_feed($url) {
}
}
}
+ // perhaps an RSS version 1 feed with a generic or incorrect content-type?
+ if(stristr($s,'')) {
+ $ret['feed_rss'] = $url;
+ return $ret;
+ }
}
try {
diff --git a/include/acl_selectors.php b/include/acl_selectors.php
index 6070b7db21..67d8cebdeb 100755
--- a/include/acl_selectors.php
+++ b/include/acl_selectors.php
@@ -1,6 +1,11 @@
cmd;
+ $return_url = $_SESSION['return_url'] = $a->query_string;
load_contact_links(local_user());
@@ -231,13 +229,13 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
$items = $cb['items'];
$cmnt_tpl = get_markup_template('comment_item.tpl');
- $tpl = get_markup_template('wall_item.tpl');
- $wallwall = get_markup_template('wallwall_item.tpl');
+ $tpl = 'wall_item.tpl';
+ $wallwall = 'wallwall_item.tpl';
$hide_comments_tpl = get_markup_template('hide_comments.tpl');
$alike = array();
$dlike = array();
- $o = "";
+
// array with html for each thread (parent+comments)
$threads = array();
@@ -250,7 +248,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
// "New Item View" on network page or search page results
// - just loop through the items and format them minimally for display
- $tpl = get_markup_template('search_item.tpl');
+ //$tpl = get_markup_template('search_item.tpl');
+ $tpl = 'search_item.tpl';
foreach($items as $item) {
$threadsid++;
@@ -316,43 +315,46 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
$body = prepare_body($item,true);
- $tmp_item = replace_macros($tpl,array(
- '$id' => (($preview) ? 'P0' : $item['item_id']),
- '$linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])),
- '$profile_url' => $profile_link,
- '$item_photo_menu' => item_photo_menu($item),
- '$name' => template_escape($profile_name),
- '$sparkle' => $sparkle,
- '$lock' => $lock,
- '$thumb' => $profile_avatar,
- '$title' => template_escape($item['title']),
- '$body' => template_escape($body),
- '$ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])),
- '$lock' => $lock,
- '$location' => template_escape($location),
- '$indent' => '',
- '$owner_name' => template_escape($owner_name),
- '$owner_url' => $owner_url,
- '$owner_photo' => $owner_photo,
- '$plink' => get_plink($item),
- '$edpost' => false,
- '$isstarred' => $isstarred,
- '$star' => $star,
- '$drop' => $drop,
- '$vote' => $likebuttons,
- '$like' => '',
- '$dislike' => '',
- '$comment' => '',
- '$conv' => (($preview) ? '' : array('href'=> $a->get_baseurl() . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))),
- '$previewing' => $previewing,
- '$wait' => t('Please wait'),
- ));
+ //$tmp_item = replace_macros($tpl,array(
+ $tmp_item = array(
+ 'template' => $tpl,
+ 'id' => (($preview) ? 'P0' : $item['item_id']),
+ 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])),
+ 'profile_url' => $profile_link,
+ 'item_photo_menu' => item_photo_menu($item),
+ 'name' => template_escape($profile_name),
+ 'sparkle' => $sparkle,
+ 'lock' => $lock,
+ 'thumb' => $profile_avatar,
+ 'title' => template_escape($item['title']),
+ 'body' => template_escape($body),
+ 'text' => strip_tags(template_escape($body)),
+ 'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])),
+ 'lock' => $lock,
+ 'location' => template_escape($location),
+ 'indent' => '',
+ 'owner_name' => template_escape($owner_name),
+ 'owner_url' => $owner_url,
+ 'owner_photo' => $owner_photo,
+ 'plink' => get_plink($item),
+ 'edpost' => false,
+ 'isstarred' => $isstarred,
+ 'star' => $star,
+ 'drop' => $drop,
+ 'vote' => $likebuttons,
+ 'like' => '',
+ 'dislike' => '',
+ 'comment' => '',
+ 'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl() . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))),
+ 'previewing' => $previewing,
+ 'wait' => t('Please wait'),
+ );
$arr = array('item' => $item, 'output' => $tmp_item);
call_hooks('display_item', $arr);
$threads[$threadsid]['id'] = $item['item_id'];
- $threads[$threadsid]['html'] .= $arr['output'];
+ $threads[$threadsid]['items'] = array($arr['output']);
}
@@ -386,6 +388,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
}
$comments_collapsed = false;
+ $comment_lastcollapsed = false;
+ $comment_firstcollapsed = false;
$blowhard = 0;
$blowhard_count = 0;
@@ -417,39 +421,26 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
$toplevelprivate = (($toplevelpost && $item['private']) ? true : false);
$item_writeable = (($item['writable'] || $item['self']) ? true : false);
- // DISABLED
- /*
- if($blowhard == $item['cid'] && (! $item['self']) && ($mode != 'profile') && ($mode != 'notes')) {
- $blowhard_count ++;
- if($blowhard_count == 3) {
- $o .= '
'
- . t('See more posts like this') . '
' . '';
- }
- }
- else {
- $blowhard = $item['cid'];
- if($blowhard_count >= 3)
- $o .= '
';
- $blowhard_count = 0;
- }
- // END DISABLED
- */
-
$comments_seen = 0;
$comments_collapsed = false;
+ $comment_lastcollapsed = false;
+ $comment_firstcollapsed = false;
$threadsid++;
$threads[$threadsid]['id'] = $item['item_id'];
- $threads[$threadsid]['html'] = "";
+ $threads[$threadsid]['private'] = $item['private'];
+ $threads[$threadsid]['items'] = array();
}
else {
- // prevent private email from leaking into public conversation
- if((! $toplevelpost) && (! $toplevelprivate) && ($item['private']) && ($profile_owner != local_user()))
+
+ // prevent private email reply to public conversation from leaking.
+ if($item['private'] && ! $threads[$threadsid]['private'])
continue;
+
$comments_seen ++;
+ $comment_lastcollapsed = false;
+ $comment_firstcollapsed = false;
}
$override_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false);
@@ -457,23 +448,17 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
if(($comments[$item['parent']] > 2) && ($comments_seen <= ($comments[$item['parent']] - 2)) && ($item['gravity'] == 6)) {
- if(! $comments_collapsed) {
- // IMPORTANT: the closing in the hide_comments template
- // is supplied below in code.
-
- $threads[$threadsid]['html'] .= replace_macros($hide_comments_tpl,array(
- '$id' => $item['parent'],
- '$num_comments' => sprintf( tt('%d comment','%d comments',$comments[$item['parent']]),
- $comments[$item['parent']]),
- '$display' => 'none',
- '$hide_text' => t('show more')
- ));
+ if (!$comments_collapsed){
+ $threads[$threadsid]['num_comments'] = sprintf( tt('%d comment','%d comments',$comments[$item['parent']]),$comments[$item['parent']] );
+ $threads[$threadsid]['hide_text'] = t('show more');
$comments_collapsed = true;
+ $comment_firstcollapsed = true;
}
}
if(($comments[$item['parent']] > 2) && ($comments_seen == ($comments[$item['parent']] - 1))) {
- $threads[$threadsid]['html'] .= '';
+
+ $comment_lastcollapsed = true;
}
$redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
@@ -503,7 +488,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
$template = $wallwall;
$commentww = 'ww';
}
- if((! $item['wall']) && (strlen($item['owner-link'])) && ($item['owner-link'] != $item['author-link'])) {
+ if((! $item['wall']) && (strlen($item['owner-link'])) && (! link_compare($item['owner-link'],$item['author-link']))) {
// Could be anybody.
@@ -650,63 +635,72 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
// Build the HTML
$body = prepare_body($item,true);
+ //$tmp_item = replace_macros($template,
+ $tmp_item = array(
+ // collapse comments in template. I don't like this much...
+ 'comment_firstcollapsed' => $comment_firstcollapsed,
+ 'comment_lastcollapsed' => $comment_lastcollapsed,
+ // template to use to render item (wall, walltowall, search)
+ 'template' => $template,
+
+ 'type' => implode("",array_slice(split("/",$item['verb']),-1)),
+ 'tags' => $tags,
+ 'body' => template_escape($body),
+ 'text' => strip_tags(template_escape($body)),
+ 'id' => $item['item_id'],
+ 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])),
+ 'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])),
+ 'to' => t('to'),
+ 'wall' => t('Wall-to-Wall'),
+ 'vwall' => t('via Wall-To-Wall:'),
+ 'profile_url' => $profile_link,
+ 'item_photo_menu' => item_photo_menu($item),
+ 'name' => template_escape($profile_name),
+ 'thumb' => $profile_avatar,
+ 'osparkle' => $osparkle,
+ 'sparkle' => $sparkle,
+ 'title' => template_escape($item['title']),
+ 'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])),
+ 'lock' => $lock,
+ 'location' => template_escape($location),
+ 'indent' => $indent,
+ 'owner_url' => $owner_url,
+ 'owner_photo' => $owner_photo,
+ 'owner_name' => template_escape($owner_name),
+ 'plink' => get_plink($item),
+ 'edpost' => $edpost,
+ 'isstarred' => $isstarred,
+ 'star' => $star,
+ 'drop' => $drop,
+ 'vote' => $likebuttons,
+ 'like' => $like,
+ 'dislike' => $dislike,
+ 'comment' => $comment,
+ 'previewing' => $previewing,
+ 'wait' => t('Please wait'),
- $tmp_item = replace_macros($template,array(
- '$type' => implode("",array_slice(explode("/",$item['verb']),-1)),
- '$tags' => $tags,
- '$body' => template_escape($body),
- '$id' => $item['item_id'],
- '$linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])),
- '$olinktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])),
- '$to' => t('to'),
- '$wall' => t('Wall-to-Wall'),
- '$vwall' => t('via Wall-To-Wall:'),
- '$profile_url' => $profile_link,
- '$item_photo_menu' => item_photo_menu($item),
- '$name' => template_escape($profile_name),
- '$thumb' => $profile_avatar,
- '$osparkle' => $osparkle,
- '$sparkle' => $sparkle,
- '$title' => template_escape($item['title']),
- '$ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])),
- '$lock' => $lock,
- '$location' => template_escape($location),
- '$indent' => $indent,
- '$owner_url' => $owner_url,
- '$owner_photo' => $owner_photo,
- '$owner_name' => template_escape($owner_name),
- '$plink' => get_plink($item),
- '$edpost' => $edpost,
- '$isstarred' => $isstarred,
- '$star' => $star,
- '$drop' => $drop,
- '$vote' => $likebuttons,
- '$like' => $like,
- '$dislike' => $dislike,
- '$comment' => $comment,
- '$previewing' => $previewing,
- '$wait' => t('Please wait'),
-
- ));
+ );
$arr = array('item' => $item, 'output' => $tmp_item);
call_hooks('display_item', $arr);
- $threads[$threadsid]['html'] .= $arr['output'];
+ $threads[$threadsid]['items'][] = $arr['output'];
}
}
}
-
$page_template = get_markup_template("conversation.tpl");
$o .= replace_macros($page_template, array(
+ '$baseurl' => $a->get_baseurl(),
+ '$mode' => $mode,
+ '$user' => $a->user,
'$threads' => $threads,
'$dropping' => ($dropping?t('Delete Selected Items'):False),
));
return $o;
-}
+}}
function best_link_url($item,&$sparkle) {
diff --git a/include/enotify.php b/include/enotify.php
index 76e7eb9dcc..a505f1f040 100755
--- a/include/enotify.php
+++ b/include/enotify.php
@@ -25,6 +25,9 @@ function notification($params) {
$title = $body = '';
}
+ // e.g. "your post", "David's photo", etc.
+ $possess_desc = t('%s ');
+
if($params['type'] == NOTIFY_MAIL) {
$subject = sprintf( t('[Friendica:Notify] New mail received at %s'),$sitename);
@@ -41,7 +44,32 @@ function notification($params) {
// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
$parent_id = $params['parent'];
+
+
+ // if it's a post figure out who's post it is.
+
+ $p = null;
+
+ if($params['otype'] === 'item' && $parent_id) {
+ $p = q("select * from item where id = %d and uid = %d limit 1",
+ intval($parent_id),
+ intval($params['uid'])
+ );
+ }
+
+ $possess_desc = str_replace('',item_post_type($p[0]),$possess_desc);
+
+ // "a post"
+ $dest_str = sprintf($possess_desc,'a');
+
+ // "George Bull's post"
+ if($p)
+ $dest_str = sprintf($possess_desc,sprintf( t("%s's"),$p[0]['author-name']));
+ // "your post"
+ if($p[0]['owner-name'] == $p[0]['author-name'] && $p[0]['wall'])
+ $dest_str = sprintf($possess_desc, t('your') );
+
// Some mail softwares relies on subject field for threading.
// So, we cannot have different subjects for notifications of the same thread.
// Before this we have the name of the replier on the subject rendering
@@ -49,7 +77,7 @@ function notification($params) {
$subject = sprintf( t('[Friendica:Notify] Comment to conversation #%d by %s'), $parent_id, $params['source_name']);
$preamble = sprintf( t('%s commented on an item/conversation you have been following.'), $params['source_name']);
- $epreamble = sprintf( t('%s commented in %s.'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('a watched conversation') . '[/url]');
+ $epreamble = sprintf( t('%s commented on %s.'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . $dest_str . '[/url]');
$sitelink = t('Please visit %s to view and/or reply to the conversation.');
$tsitelink = sprintf( $sitelink, $siteurl );
@@ -149,6 +177,7 @@ function notification($params) {
$datarray['date'] = datetime_convert();
$datarray['uid'] = $params['uid'];
$datarray['link'] = $itemlink;
+ $datarray['parent'] = $parent_id;
$datarray['type'] = $params['type'];
$datarray['verb'] = $params['verb'];
$datarray['otype'] = $params['otype'];
@@ -157,8 +186,8 @@ function notification($params) {
// create notification entry in DB
- $r = q("insert into notify (hash,name,url,photo,date,uid,link,type,verb,otype)
- values('%s','%s','%s','%s','%s',%d,'%s',%d,'%s','%s')",
+ $r = q("insert into notify (hash,name,url,photo,date,uid,link,parent,type,verb,otype)
+ values('%s','%s','%s','%s','%s',%d,'%s',%d,%d,'%s','%s')",
dbesc($datarray['hash']),
dbesc($datarray['name']),
dbesc($datarray['url']),
@@ -166,6 +195,7 @@ function notification($params) {
dbesc($datarray['date']),
intval($datarray['uid']),
dbesc($datarray['link']),
+ intval($datarray['parent']),
intval($datarray['type']),
dbesc($datarray['verb']),
dbesc($datarray['otype'])
diff --git a/include/html2bbcode.php b/include/html2bbcode.php
index 65920380b5..32a90d7d63 100755
--- a/include/html2bbcode.php
+++ b/include/html2bbcode.php
@@ -10,7 +10,7 @@ Originally made for the syncom project: http://wiki.piratenpartei.de/Syncom
function node2bbcode(&$doc, $oldnode, $attributes, $startbb, $endbb)
{
do {
- $done = node2bbcodesub(&$doc, $oldnode, $attributes, $startbb, $endbb);
+ $done = node2bbcodesub($doc, $oldnode, $attributes, $startbb, $endbb);
} while ($done);
}
@@ -212,7 +212,7 @@ function html2bbcode($message)
node2bbcode($doc, 'audio', array('src'=>'/(.+)/'), '[audio]$1', '[/audio]');
node2bbcode($doc, 'iframe', array('src'=>'/(.+)/'), '[iframe]$1', '[/iframe]');
- node2bbcode($doc, 'code', array(), '[code]$1', '[/code]');
+ node2bbcode($doc, 'code', array(), '[code]', '[/code]');
$message = $doc->saveHTML();
diff --git a/include/items.php b/include/items.php
index 5268dfc1d8..70c72ae165 100755
--- a/include/items.php
+++ b/include/items.php
@@ -1598,6 +1598,14 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
if((activity_match($datarray['verb'],ACTIVITY_LIKE)) || (activity_match($datarray['verb'],ACTIVITY_DISLIKE))) {
$datarray['type'] = 'activity';
$datarray['gravity'] = GRAVITY_LIKE;
+ // only one like or dislike per person
+ $r = q("select id from item where uid = %d and `contact-id` = %d and verb ='%s' and deleted = 0 limit 1",
+ intval($datarray['uid']),
+ intval($datarray['contact-id']),
+ dbesc($datarray['verb'])
+ );
+ if($r && count($r))
+ continue;
}
if(($datarray['verb'] === ACTIVITY_TAG) && ($datarray['object-type'] === ACTIVITY_OBJ_TAGTERM)) {
@@ -1750,6 +1758,18 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
$datarray['parent-uri'] = $item_id;
$datarray['uid'] = $importer['uid'];
$datarray['contact-id'] = $contact['id'];
+
+ if(! link_compare($datarray['owner-link'],$contact['url'])) {
+ // The item owner info is not our contact. It's OK and is to be expected if this is a tgroup delivery,
+ // but otherwise there's a possible data mixup on the sender's system.
+ // the tgroup delivery code called from item_store will correct it if it's a forum,
+ // but we're going to unconditionally correct it here so that the post will always be owned by our contact.
+ logger('local_delivery: Correcting item owner.', LOGGER_DEBUG);
+ $datarray['owner-name'] = $contact['name'];
+ $datarray['owner-link'] = $contact['url'];
+ $datarray['owner-avatar'] = $contact['thumb'];
+ }
+
$r = item_store($datarray);
continue;
@@ -2139,6 +2159,14 @@ function local_delivery($importer,$data) {
$datarray['type'] = 'activity';
$datarray['gravity'] = GRAVITY_LIKE;
$datarray['last-child'] = 0;
+ // only one like or dislike per person
+ $r = q("select id from item where uid = %d and `contact-id` = %d and verb ='%s' and deleted = 0 limit 1",
+ intval($datarray['uid']),
+ intval($datarray['contact-id']),
+ dbesc($datarray['verb'])
+ );
+ if($r && count($r))
+ continue;
}
if(($datarray['verb'] === ACTIVITY_TAG) && ($datarray['object-type'] === ACTIVITY_OBJ_TAGTERM)) {
@@ -2288,6 +2316,15 @@ function local_delivery($importer,$data) {
if(($datarray['verb'] == ACTIVITY_LIKE) || ($datarray['verb'] == ACTIVITY_DISLIKE)) {
$datarray['type'] = 'activity';
$datarray['gravity'] = GRAVITY_LIKE;
+ // only one like or dislike per person
+ $r = q("select id from item where uid = %d and `contact-id` = %d and verb ='%s' and deleted = 0 limit 1",
+ intval($datarray['uid']),
+ intval($datarray['contact-id']),
+ dbesc($datarray['verb'])
+ );
+ if($r && count($r))
+ continue;
+
}
if(($datarray['verb'] === ACTIVITY_TAG) && ($datarray['object-type'] === ACTIVITY_OBJ_TAGTERM)) {
@@ -2328,35 +2365,44 @@ function local_delivery($importer,$data) {
if(count($myconv)) {
$importer_url = $a->get_baseurl() . '/profile/' . $importer['nickname'];
- foreach($myconv as $conv) {
- if(! link_compare($conv['author-link'],$importer_url))
- continue;
+ // first make sure this isn't our own post coming back to us from a wall-to-wall event
+ if(! link_compare($datarray['author-link'],$importer_url)) {
- require_once('include/enotify.php');
- $conv_parent = $conv['parent'];
+ foreach($myconv as $conv) {
- notification(array(
- 'type' => NOTIFY_COMMENT,
- 'notify_flags' => $importer['notify-flags'],
- 'language' => $importer['language'],
- 'to_name' => $importer['username'],
- 'to_email' => $importer['email'],
- 'uid' => $importer['importer_uid'],
- 'item' => $datarray,
- 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id,
- 'source_name' => stripslashes($datarray['author-name']),
- 'source_link' => $datarray['author-link'],
- 'source_photo' => ((link_compare($datarray['author-link'],$importer['url']))
- ? $importer['thumb'] : $datarray['author-avatar']),
- 'verb' => ACTIVITY_POST,
- 'otype' => 'item',
- 'parent' => $conv_parent,
+ // now if we find a match, it means we're in this conversation
+
+ if(! link_compare($conv['author-link'],$importer_url))
+ continue;
- ));
+ require_once('include/enotify.php');
+
+ $conv_parent = $conv['parent'];
- break;
+ notification(array(
+ 'type' => NOTIFY_COMMENT,
+ 'notify_flags' => $importer['notify-flags'],
+ 'language' => $importer['language'],
+ 'to_name' => $importer['username'],
+ 'to_email' => $importer['email'],
+ 'uid' => $importer['importer_uid'],
+ 'item' => $datarray,
+ 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id,
+ 'source_name' => stripslashes($datarray['author-name']),
+ 'source_link' => $datarray['author-link'],
+ 'source_photo' => ((link_compare($datarray['author-link'],$importer['url']))
+ ? $importer['thumb'] : $datarray['author-avatar']),
+ 'verb' => ACTIVITY_POST,
+ 'otype' => 'item',
+ 'parent' => $conv_parent,
+
+ ));
+
+ // only send one notification
+ break;
+ }
}
}
}
@@ -2427,12 +2473,24 @@ function local_delivery($importer,$data) {
// This is my contact on another system, but it's really me.
// Turn this into a wall post.
- if($contact['remote_self'])
+ if($importer['remote_self'])
$datarray['wall'] = 1;
$datarray['parent-uri'] = $item_id;
$datarray['uid'] = $importer['importer_uid'];
$datarray['contact-id'] = $importer['id'];
+
+ if(! link_compare($datarray['owner-link'],$contact['url'])) {
+ // The item owner info is not our contact. It's OK and is to be expected if this is a tgroup delivery,
+ // but otherwise there's a possible data mixup on the sender's system.
+ // the tgroup delivery code called from item_store will correct it if it's a forum,
+ // but we're going to unconditionally correct it here so that the post will always be owned by our contact.
+ logger('local_delivery: Correcting item owner.', LOGGER_DEBUG);
+ $datarray['owner-name'] = $importer['senderName'];
+ $datarray['owner-link'] = $importer['url'];
+ $datarray['owner-avatar'] = $importer['thumb'];
+ }
+
$r = item_store($datarray);
continue;
}
diff --git a/include/nav.php b/include/nav.php
index 511ca07fc0..aadfa82fd8 100755
--- a/include/nav.php
+++ b/include/nav.php
@@ -122,6 +122,9 @@ function nav(&$a) {
}
$nav['messages'] = array('message', t('Messages'), "", t('Private mail'));
+ $nav['messages']['inbox'] = array('message', t('Inbox'), "", t('Inbox'));
+ $nav['messages']['outbox']= array('message/sent', t('Outbox'), "", t('Outbox'));
+ $nav['messages']['new'] = array('message/new', t('New Message'), "", t('New Message'));
if(is_array($a->identities) && count($a->identities) > 1) {
$nav['manage'] = array('manage', t('Manage'), "", t('Manage other pages'));
diff --git a/include/notifier.php b/include/notifier.php
index 4765cca06d..5b23406fce 100755
--- a/include/notifier.php
+++ b/include/notifier.php
@@ -201,7 +201,7 @@ function notifier_run($argv, $argc){
// by stringing togther an array of retractions and sending them onward.
- $localhost = $a->get_hostname();
+ $localhost = str_replace('www.','',$a->get_hostname());
if(strpos($localhost,':'))
$localhost = substr($localhost,0,strpos($localhost,':'));
diff --git a/include/security.php b/include/security.php
index bc2c9f0bf8..8c536b656a 100755
--- a/include/security.php
+++ b/include/security.php
@@ -108,14 +108,18 @@ function can_write_wall(&$a,$owner) {
if(remote_user()) {
- // user remembered decision and avoid a DB lookup for each and every display item
+ // use remembered decision and avoid a DB lookup for each and every display item
// DO NOT use this function if there are going to be multiple owners
+ // We have a contact-id for an authenticated remote user, this block determines if the contact
+ // belongs to this page owner, and has the necessary permissions to post content
+
if($verified === 2)
return true;
elseif($verified === 1)
return false;
else {
+
$r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` LEFT JOIN `user` on `user`.`uid` = `contact`.`uid`
WHERE `contact`.`uid` = %d AND `contact`.`id` = %d AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
AND `user`.`blockwall` = 0 AND `readonly` = 0 AND ( `contact`.`rel` IN ( %d , %d ) OR `user`.`page-flags` = %d ) LIMIT 1",
@@ -125,6 +129,7 @@ function can_write_wall(&$a,$owner) {
intval(CONTACT_IS_FRIEND),
intval(PAGE_COMMUNITY)
);
+
if(count($r)) {
$verified = 2;
return true;
@@ -197,7 +202,7 @@ function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
" AND ( allow_cid = '' OR allow_cid REGEXP '<%d>' )
AND ( deny_cid = '' OR NOT deny_cid REGEXP '<%d>' )
AND ( allow_gid = '' OR allow_gid REGEXP '%s' )
- AND ( deny_gid = '' OR NOT deny_gid REGEXP '%s')
+ AND ( deny_gid = '' OR NOT deny_gid REGEXP '%s')
",
intval($remote_user),
intval($remote_user),
@@ -207,4 +212,79 @@ function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
}
}
return $sql;
-}
\ No newline at end of file
+}
+
+
+function item_permissions_sql($owner_id,$remote_verified = false,$groups = null) {
+
+ $local_user = local_user();
+ $remote_user = remote_user();
+
+ /**
+ * Construct permissions
+ *
+ * default permissions - anonymous user
+ */
+
+ $sql = " AND allow_cid = ''
+ AND allow_gid = ''
+ AND deny_cid = ''
+ AND deny_gid = ''
+ AND private = 0
+ ";
+
+ /**
+ * Profile owner - everything is visible
+ */
+
+ if(($local_user) && ($local_user == $owner_id)) {
+ $sql = '';
+ }
+
+ /**
+ * Authenticated visitor. Unless pre-verified,
+ * check that the contact belongs to this $owner_id
+ * and load the groups the visitor belongs to.
+ * If pre-verified, the caller is expected to have already
+ * done this and passed the groups into this function.
+ */
+
+ elseif($remote_user) {
+
+ if(! $remote_verified) {
+ $r = q("SELECT id FROM contact WHERE id = %d AND uid = %d AND blocked = 0 LIMIT 1",
+ intval($remote_user),
+ intval($owner_id)
+ );
+ if(count($r)) {
+ $remote_verified = true;
+ $groups = init_groups_visitor($remote_user);
+ }
+ }
+ if($remote_verified) {
+
+ $gs = '<<>>'; // should be impossible to match
+
+ if(is_array($groups) && count($groups)) {
+ foreach($groups as $g)
+ $gs .= '|<' . intval($g) . '>';
+ }
+
+ $sql = sprintf(
+ " AND ( private = 0 OR ( private = 1 AND wall = 1 AND ( allow_cid = '' OR allow_cid REGEXP '<%d>' )
+ AND ( deny_cid = '' OR NOT deny_cid REGEXP '<%d>' )
+ AND ( allow_gid = '' OR allow_gid REGEXP '%s' )
+ AND ( deny_gid = '' OR NOT deny_gid REGEXP '%s')))
+ ",
+ intval($remote_user),
+ intval($remote_user),
+ dbesc($gs),
+ dbesc($gs)
+ );
+ }
+ }
+
+ return $sql;
+}
+
+
diff --git a/include/template_processor.php b/include/template_processor.php
index 7a4cba64e9..7f7b0b55bd 100755
--- a/include/template_processor.php
+++ b/include/template_processor.php
@@ -1,5 +1,5 @@
$v ) {
- if (is_array($v)) {
- $this->_build_replace($v, "$prefix$k.");
- } else {
- $this->search[] = $prefix . $k;
- $this->replace[] = $v;
- }
- }
- }
- }
private function _push_stack(){
- $this->stack[] = array($this->r, $this->search, $this->replace, $this->nodes);
+ $this->stack[] = array($this->r, $this->nodes);
}
private function _pop_stack(){
- list($this->r, $this->search, $this->replace, $this->nodes) = array_pop($this->stack);
+ list($this->r, $this->nodes) = array_pop($this->stack);
}
- private function _get_var($name){
- $keys = array_map('trim',explode(".",$name));
+ private function _get_var($name, $retNoKey=false){
+ $keys = array_map('trim',explode(".",$name));
+ if ($retNoKey && !array_key_exists($keys[0], $this->r)) return KEY_NOT_EXISTS;
$val = $this->r;
foreach($keys as $k) {
$val = (isset($val[$k]) ? $val[$k] : null);
@@ -121,7 +109,15 @@
* {{ inc [with $var1=$var2] }}{{ endinc }}
*/
private function _replcb_inc($args){
- list($tplfile, $newctx) = array_map('trim', explode("with",$args[2]));
+ if (strpos($args[2],"with")) {
+ list($tplfile, $newctx) = array_map('trim', explode("with",$args[2]));
+ } else {
+ $tplfile = trim($args[2]);
+ $newctx = null;
+ }
+
+ if ($tplfile[0]=="$") $tplfile = $this->_get_var($tplfile);
+
$this->_push_stack();
$r = $this->r;
if (!is_null($newctx)) {
@@ -166,40 +162,33 @@
return $s;
}
- /*
- private function _str_replace($str){
- #$this->search,$this->replace,
- $searchs = $this->search;
- foreach($searchs as $search){
- $search = "|".preg_quote($search)."(\|[a-zA-Z0-9_]*)*|";
- $m = array();
- if (preg_match_all($search, $str,$m)){
- foreach ($m[0] as $match){
- $toks = explode("|",$match);
- $val = $this->_get_var($toks[0]);
- for($k=1; $k1){
- $str = str_replace( $match, $val, $str);
- }
- }
- }
-
- }
- return str_replace($this->search,$this->replace, $str);
- }*/
+ private function var_replace($s){
+ $m = array();
+ /** regexp:
+ * \$ literal $
+ * (\[)? optional open square bracket
+ * ([a-zA-Z0-9-_]+\.?)+ var name, followed by optional
+ * dot, repeated at least 1 time
+ * (?(1)\]) if there was opened square bracket
+ * (subgrup 1), match close bracket
+ */
+ if (preg_match_all('/\$(\[)?([a-zA-Z0-9-_]+\.?)+(?(1)\])/', $s,$m)){
+
+ foreach($m[0] as $var){
+ $varn = str_replace(array("[","]"), array("",""), $var);
+ $val = $this->_get_var($varn, true);
+ if ($val!=KEY_NOT_EXISTS)
+ $s = str_replace($var, $val, $s);
+ }
+ }
+
+ return $s;
+ }
public function replace($s, $r) {
$this->r = $r;
- $this->search = array();
- $this->replace = array();
-
- $this->_build_replace($r, "");
- #$s = str_replace(array("\n","\r"),array("§n§","§r§"),$s);
$s = $this->_build_nodes($s);
$s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s);
@@ -207,12 +196,12 @@
// remove comments block
$s = preg_replace('/{#[^#]*#}/', "" , $s);
+
// replace strings recursively (limit to 10 loops)
$os = ""; $count=0;
while($os!=$s && $count<10){
$os=$s; $count++;
- //$s = $this->_str_replace($s);
- $s = str_replace($this->search, $this->replace, $s);
+ $s = $this->var_replace($s);
}
return template_unescape($s);
}
diff --git a/include/text.php b/include/text.php
old mode 100755
new mode 100644
index 1f5d4a3e12..5ad0154d7a
--- a/include/text.php
+++ b/include/text.php
@@ -14,7 +14,13 @@ if(! function_exists('replace_macros')) {
function replace_macros($s,$r) {
global $t;
- return $t->replace($s,$r);
+ //$ts = microtime();
+ $r = $t->replace($s,$r);
+ //$tt = microtime() - $ts;
+
+ //$a = get_app();
+ //$a->page['debug'] .= "$tt
\n";
+ return $r;
}}
@@ -731,7 +737,10 @@ function smilies($s, $sample = false) {
':headdesk',
'~friendika',
'~friendica',
- 'Diaspora*'
+// 'Diaspora*'
+ ':beard',
+ ':whitebeard'
+
);
$icons = array(
@@ -772,8 +781,9 @@ function smilies($s, $sample = false) {
'',
'~friendika ',
'~friendica ',
- 'Diaspora',
-
+// 'Diaspora',
+ '',
+ ''
);
$params = array('texts' => $texts, 'icons' => $icons, 'string' => $s);
@@ -786,6 +796,7 @@ function smilies($s, $sample = false) {
}
}
else {
+ $params['string'] = preg_replace_callback('/<(3+)/','preg_heart',$params['string']);
$s = str_replace($params['texts'],$params['icons'],$params['string']);
}
@@ -804,7 +815,18 @@ function smile_decode($m) {
return(str_replace($m[1],base64url_decode($m[1]),$m[0]));
}
+// expand <3333 to the correct number of hearts
+function preg_heart($x) {
+ $a = get_app();
+ if(strlen($x[1]) == 1)
+ return $x[0];
+ $t = '';
+ for($cnt = 0; $cnt < strlen($x[1]); $cnt ++)
+ $t .= '';
+ $r = str_replace($x[0],$t,$x[0]);
+ return $r;
+}
if(! function_exists('day_translate')) {
@@ -1201,3 +1223,16 @@ function reltoabs($text, $base)
return $text;
}
+function item_post_type($item) {
+ if(intval($item['event-id']))
+ return t('event');
+ if(strlen($item['resource-id']))
+ return t('photo');
+ if(strlen($item['verb']) && $item['verb'] !== ACTIVITY_POST)
+ return t('activity');
+ if($item['id'] != $item['parent'])
+ return t('comment');
+ return t('post');
+}
+
+
diff --git a/js/fk.autocomplete.js b/js/fk.autocomplete.js
index 509466bd98..69fe77e8cb 100755
--- a/js/fk.autocomplete.js
+++ b/js/fk.autocomplete.js
@@ -103,6 +103,7 @@ ACPopup.prototype._search = function(){
}
else {
txt = tinyMCE.activeEditor.getContent();
+ // alert(that.searchText + ':' + t);
newtxt = txt.replace(that.searchText,t+' ');
tinyMCE.activeEditor.setContent(newtxt);
tinyMCE.activeEditor.focus();
diff --git a/js/main.js b/js/main.js
index a5d1214cb1..c20455ad14 100755
--- a/js/main.js
+++ b/js/main.js
@@ -292,7 +292,7 @@
$('body').css('cursor', 'auto');
}
/* autocomplete @nicknames */
- $(".comment-edit-wrapper textarea").contact_autocomplete(baseurl+"/acl");
+ $(".comment-edit-form textarea").contact_autocomplete(baseurl+"/acl");
});
}
diff --git a/library/phpsec/Net/SSH1.php b/library/phpsec/Net/SSH1.php
index 6986a8450d..7220ee4023 100755
--- a/library/phpsec/Net/SSH1.php
+++ b/library/phpsec/Net/SSH1.php
@@ -730,8 +730,8 @@ class Net_SSH1 {
/**
* Reads the output of an interactive shell.
*
- * Requires PHP 4.3.0 or later due to the use of the stream_select() function. If you see stuff like
- * "[00m", you're seeing ANSI escape codes. According to
+ * Requires PHP 4.3.0 or later due to the use of the stream_select() function. If you see crap,
+ * you're seeing ANSI escape codes. According to
* {@link http://support.microsoft.com/kb/101875 How to Enable ANSI.SYS in a Command Window}, "Windows NT
* does not support ANSI escape sequences in Win32 Console applications", so if you're a Windows user,
* there's not going to be much recourse.
diff --git a/library/spam/b8/storage/storage_frndc.php b/library/spam/b8/storage/storage_frndc.php
index 7702c108b3..62909d4715 100644
--- a/library/spam/b8/storage/storage_frndc.php
+++ b/library/spam/b8/storage/storage_frndc.php
@@ -174,20 +174,44 @@ class b8_storage_frndc extends b8_storage_base
array_push($where, $token);
}
- $where = 'token IN ("' . implode('", "', $where) . '")';
+ $where = 'term IN ("' . implode('", "', $where) . '")';
}
else {
$token = dbesc($token);
- $where = 'token = "' . $token . '"';
+ $where = 'term = "' . $token . '"';
}
# ... and fetch the data
$result = q('
- SELECT *
- FROM ' . $this->config['table_name'] . '
- WHERE ' . $where . ' AND uid = ' . $uid );
+ SELECT * FROM spam WHERE ' . $where . ' AND uid = ' . $uid );
+
+
+ $returned_tokens = array();
+ if(count($result)) {
+ foreach($result as $rr)
+ $returned_tokens[] = $rr['term'];
+ }
+ $to_create = array();
+
+ if(count($tokens) > 0) {
+ foreach($tokens as $token)
+ if(! in_array($token,$returned_tokens))
+ $to_create[] = str_tolower($token);
+ }
+ if(count($to_create)) {
+ $sql = '';
+ foreach($to_create as $term) {
+ if(strlen($sql))
+ $sql .= ',';
+ $sql .= sprintf("(term,datetime,uid) values('%s','%s',%d)",
+ dbesc(str_tolower($term))
+ dbesc(datetime_convert()),
+ intval($uid)
+ );
+ q("insert into spam " . $sql);
+ }
return $result;
diff --git a/mod/admin.php b/mod/admin.php
index 0f600e3126..93714bb5f9 100755
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -145,9 +145,10 @@ function admin_page_summary(&$a) {
Array( t('Automatic Friend Account'), 0)
);
$users=0;
- foreach ($r as $u){ $accounts[$u['page-flags']][1] = $u['count']; $users+=$u['count']; }
+ foreach ($r as $u){ $accounts[$u['page-flags']][1] = $u['count']; $users+= $u['count']; }
+
+ logger('accounts: ' . print_r($accounts,true));
-
$r = q("SELECT COUNT(id) as `count` FROM `register`");
$pending = $r[0]['count'];
@@ -320,32 +321,32 @@ function admin_page_site(&$a) {
'$sitename' => array('sitename', t("Site name"), htmlentities($a->config['sitename'], ENT_QUOTES), ""),
'$banner' => array('banner', t("Banner/Logo"), $banner, ""),
'$language' => array('language', t("System language"), get_config('system','language'), "", $lang_choices),
- '$theme' => array('theme', t("System theme"), get_config('system','theme'), "Default system theme (which may be over-ridden by user profiles)", $theme_choices),
+ '$theme' => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles"), $theme_choices),
- '$maximagesize' => array('maximagesize', t("Maximum image size"), get_config('system','maximagesize'), "Maximum size in bytes of uploaded images. Default is 0, which means no limits."),
+ '$maximagesize' => array('maximagesize', t("Maximum image size"), get_config('system','maximagesize'), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")),
'$register_policy' => array('register_policy', t("Register policy"), $a->config['register_policy'], "", $register_choices),
- '$register_text' => array('register_text', t("Register text"), htmlentities($a->config['register_text'], ENT_QUOTES), "Will be displayed prominently on the registration page."),
+ '$register_text' => array('register_text', t("Register text"), htmlentities($a->config['register_text'], ENT_QUOTES), t("Will be displayed prominently on the registration page.")),
'$abandon_days' => array('abandon_days', t('Accounts abandoned after x days'), get_config('system','account_abandon_days'), t('Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit.')),
- '$allowed_sites' => array('allowed_sites', t("Allowed friend domains"), get_config('system','allowed_sites'), "Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"),
- '$allowed_email' => array('allowed_email', t("Allowed email domains"), get_config('system','allowed_email'), "Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"),
- '$block_public' => array('block_public', t("Block public"), get_config('system','block_public'), "Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."),
- '$force_publish' => array('publish_all', t("Force publish"), get_config('system','publish_all'), "Check to force all profiles on this site to be listed in the site directory."),
- '$global_directory' => array('directory_submit_url', t("Global directory update URL"), get_config('system','directory_submit_url'), "URL to update the global directory. If this is not set, the global directory is completely unavailable to the application."),
+ '$allowed_sites' => array('allowed_sites', t("Allowed friend domains"), get_config('system','allowed_sites'), t("Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains")),
+ '$allowed_email' => array('allowed_email', t("Allowed email domains"), get_config('system','allowed_email'), t("Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains")),
+ '$block_public' => array('block_public', t("Block public"), get_config('system','block_public'), t("Check to block public access to all otherwise public personal pages on this site unless you are currently logged in.")),
+ '$force_publish' => array('publish_all', t("Force publish"), get_config('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory.")),
+ '$global_directory' => array('directory_submit_url', t("Global directory update URL"), get_config('system','directory_submit_url'), t("URL to update the global directory. If this is not set, the global directory is completely unavailable to the application.")),
- '$no_multi_reg' => array('no_multi_reg', t("Block multiple registrations"), get_config('system','block_extended_register'), "Disallow users to register additional accounts for use as pages."),
- '$no_openid' => array('no_openid', t("OpenID support"), !get_config('system','no_openid'), "OpenID support for registration and logins."),
- '$no_gravatar' => array('no_gravatar', t("Gravatar support"), !get_config('system','no_gravatar'), "Search new user's photo on Gravatar."),
- '$no_regfullname' => array('no_regfullname', t("Fullname check"), !get_config('system','no_regfullname'), "Force users to register with a space between firstname and lastname in Full name, as an antispam measure"),
- '$no_utf' => array('no_utf', t("UTF-8 Regular expressions"), !get_config('system','no_utf'), "Use PHP UTF8 regular expressions"),
- '$no_community_page' => array('no_community_page', t("Show Community Page"), !get_config('system','no_community_page'), "Display a Community page showing all recent public postings on this site."),
- '$ostatus_disabled' => array('ostatus_disabled', t("Enable OStatus support"), !get_config('system','ostatus_disable'), "Provide built-in OStatus \x28identi.ca, status.net, etc.\x29 compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."),
- '$diaspora_enabled' => array('diaspora_enabled', t("Enable Diaspora support"), get_config('system','diaspora_enabled'), "Provide built-in Diaspora network compatibility."),
- '$dfrn_only' => array('dfrn_only', t('Only allow Friendica contacts'), get_config('system','dfrn_only'), "All contacts must use Friendica protocols. All other built-in communication protocols disabled."),
- '$verifyssl' => array('verifyssl', t("Verify SSL"), get_config('system','verifyssl'), "If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."),
+ '$no_multi_reg' => array('no_multi_reg', t("Block multiple registrations"), get_config('system','block_extended_register'), t("Disallow users to register additional accounts for use as pages.")),
+ '$no_openid' => array('no_openid', t("OpenID support"), !get_config('system','no_openid'), t("OpenID support for registration and logins.")),
+ '$no_gravatar' => array('no_gravatar', t("Gravatar support"), !get_config('system','no_gravatar'), t("Search new user's photo on Gravatar.")),
+ '$no_regfullname' => array('no_regfullname', t("Fullname check"), !get_config('system','no_regfullname'), t("Force users to register with a space between firstname and lastname in Full name, as an antispam measure")),
+ '$no_utf' => array('no_utf', t("UTF-8 Regular expressions"), !get_config('system','no_utf'), t("Use PHP UTF8 regular expressions")),
+ '$no_community_page' => array('no_community_page', t("Show Community Page"), !get_config('system','no_community_page'), t("Display a Community page showing all recent public postings on this site.")),
+ '$ostatus_disabled' => array('ostatus_disabled', t("Enable OStatus support"), !get_config('system','ostatus_disable'), t("Provide built-in OStatus \x28identi.ca, status.net, etc.\x29 compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed.")),
+ '$diaspora_enabled' => array('diaspora_enabled', t("Enable Diaspora support"), get_config('system','diaspora_enabled'), t("Provide built-in Diaspora network compatibility.")),
+ '$dfrn_only' => array('dfrn_only', t('Only allow Friendica contacts'), get_config('system','dfrn_only'), t("All contacts must use Friendica protocols. All other built-in communication protocols disabled.")),
+ '$verifyssl' => array('verifyssl', t("Verify SSL"), get_config('system','verifyssl'), t("If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites.")),
'$proxyuser' => array('proxyuser', t("Proxy user"), get_config('system','proxyuser'), ""),
'$proxy' => array('proxy', t("Proxy URL"), get_config('system','proxy'), ""),
- '$timeout' => array('timeout', t("Network timeout"), (x(get_config('system','curl_timeout'))?get_config('system','curl_timeout'):60), "Value is in seconds. Set to 0 for unlimited (not recommended)."),
+ '$timeout' => array('timeout', t("Network timeout"), (x(get_config('system','curl_timeout'))?get_config('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")),
));
@@ -366,7 +367,7 @@ function admin_page_users_post(&$a){
intval( $uid )
);
}
- notice( sprintf( tt("%s user blocked", "%s users blocked/unblocked", count($users)), count($users)) );
+ notice( sprintf( tt("%s user blocked/unblocked", "%s users blocked/unblocked", count($users)), count($users)) );
}
if (x($_POST,'page_users_delete')){
require_once("include/Contact.php");
@@ -428,6 +429,7 @@ function admin_page_users(&$a){
LEFT JOIN `contact` ON `register`.`uid` = `contact`.`uid`
LEFT JOIN `user` ON `register`.`uid` = `user`.`uid`;");
+
/* get users */
$total = q("SELECT count(*) as total FROM `user` where 1");
@@ -435,7 +437,8 @@ function admin_page_users(&$a){
$a->set_pager_total($total[0]['total']);
$a->set_pager_itemspage(100);
}
-
+
+
$users = q("SELECT `user` . * , `contact`.`name` , `contact`.`url` , `contact`.`micro`, `lastitem`.`lastitem_date`
FROM
(SELECT MAX(`item`.`changed`) as `lastitem_date`, `item`.`uid`
@@ -469,6 +472,7 @@ function admin_page_users(&$a){
}
$users = array_map("_setup_users", $users);
+
$t = get_markup_template("admin_users.tpl");
$o = replace_macros($t, array(
// strings //
@@ -571,6 +575,8 @@ function admin_page_plugins(&$a){
'$status' => $status,
'$action' => $action,
'$info' => get_plugin_info($plugin),
+ '$str_author' => t('Author: '),
+ '$str_maintainer' => t('Maintainer: '),
'$admin_form' => $admin_form,
'$function' => 'plugins',
@@ -744,7 +750,8 @@ function admin_page_themes(&$a){
'$info' => get_theme_info($theme),
'$function' => 'themes',
'$admin_form' => $admin_form,
-
+ '$str_author' => t('Author: '),
+ '$str_maintainer' => t('Maintainer: '),
'$readme' => $readme
));
}
diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php
index 5a24f00893..0bc3ea7df5 100644
--- a/mod/dfrn_confirm.php
+++ b/mod/dfrn_confirm.php
@@ -107,7 +107,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
*
*/
- $r = q("SELECT * FROM `contact` WHERE ( ( `issued-id` != '' AND `issued-id` = '%s' ) OR ( `id` = %d AND `id` != 0 ) ) AND `uid` = %d LIMIT 1",
+ $r = q("SELECT * FROM `contact` WHERE ( ( `issued-id` != '' AND `issued-id` = '%s' ) OR ( `id` = %d AND `id` != 0 ) ) AND `uid` = %d AND `duplex` = 0 LIMIT 1",
dbesc($dfrn_id),
intval($cid),
intval($uid)
@@ -116,6 +116,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
if(! count($r)) {
logger('dfrn_confirm: Contact not found in DB.');
notice( t('Contact not found.') . EOL );
+ notice( t('This may occasionally happen if contact was requested by both persons and it has already been approved.') . EOL );
return;
}
@@ -631,6 +632,15 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
xml_status(3,$message);
}
+ // It's possible that the other person also requested friendship.
+ // If it is a duplex relationship, ditch the issued-id if one exists.
+
+ if($duplex) {
+ $r = q("UPDATE `contact` SET `issued-id` = '' WHERE `id` = %d LIMIT 1",
+ intval($dfrn_record)
+ );
+ }
+
// We're good but now we have to scrape the profile photo and send notifications.
diff --git a/mod/display.php b/mod/display.php
index d96be4333b..f428149e83 100755
--- a/mod/display.php
+++ b/mod/display.php
@@ -74,18 +74,18 @@ function display_content(&$a) {
$x = array(
'is_owner' => true,
'allow_location' => $a->user['allow_location'],
- 'default_location' => $a->user['default_location'],
+ 'default_location' => $a->user['default-location'],
'nickname' => $a->user['nickname'],
- 'lockstate' => ((($group) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))) ? 'lock' : 'unlock'),
- 'acl' => populate_acl((($group || $cid) ? $def_acl : $a->user), $celeb),
- 'bang' => (($group || $cid) ? '!' : ''),
+ 'lockstate' => ( (is_array($a->user)) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))) ? 'lock' : 'unlock'),
+ 'acl' => populate_acl($a->user, $celeb),
+ 'bang' => '',
'visitor' => 'block',
'profile_uid' => local_user()
);
$o .= status_editor($a,$x,0,true);
- $sql_extra = permissions_sql($a->profile['uid'],$remote_contact,$groups);
+ $sql_extra = item_permissions_sql($a->profile['uid'],$remote_contact,$groups);
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
diff --git a/mod/group.php b/mod/group.php
index c896362ca2..13401ef0d9 100755
--- a/mod/group.php
+++ b/mod/group.php
@@ -76,14 +76,18 @@ function group_content(&$a) {
if($switchtotext === false)
$switchtotext = 400;
+ $tpl = get_markup_template('group_edit.tpl');
+ $context = array('$submit' => t('Submit'));
+
if(($a->argc == 2) && ($a->argv[1] === 'new')) {
- $tpl = get_markup_template('group_new.tpl');
- $o .= replace_macros($tpl,array(
- '$desc' => t('Create a group of contacts/friends.'),
- '$name' => t('Group Name: '),
- '$submit' => t('Submit')
- ));
- return $o;
+
+ return replace_macros($tpl, $context + array(
+ '$title' => t('Create a group of contacts/friends.'),
+ '$gname' => array('groupname',t('Group Name: '),$group['name'], ''),
+ '$gid' => 'new',
+ ));
+
+
}
if(($a->argc == 3) && ($a->argv[1] === 'drop')) {
@@ -156,66 +160,61 @@ function group_content(&$a) {
$celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false);
- $tpl = get_markup_template('group_edit.tpl');
- $o .= replace_macros($tpl, array(
- '$gid' => $group['id'],
- '$name' => $group['name'],
- '$drop' => $drop_txt,
- '$desc' => t('Click on a contact to add or remove.'),
+
+ $context = $context + array(
'$title' => t('Group Editor'),
- '$gname' => t('Group Name: '),
- '$submit' => t('Submit')
- ));
+ '$gname' => array('groupname',t('Group Name: '),$group['name'], ''),
+ '$gid' => $group['id'],
+ '$drop' => $drop_txt,
+ );
}
if(! isset($group))
return;
- $o .= '';
- if($change)
- $o = '';
+ $groupeditor = array(
+ 'label_members' => t('Members'),
+ 'members' => array(),
+ 'label_contacts' => t('All Contacts'),
+ 'contacts' => arraY(),
+ );
+
- $o .= '
' . t('Members') . '
';
- $o .= '
';
$textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false);
foreach($members as $member) {
if($member['url']) {
$member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;';
- $o .= micropro($member,true,'mpgroup', $textmode);
+ $groupeditor['members'][] = micropro($member,true,'mpgroup', $textmode);
}
else
group_rmv_member(local_user(),$group['name'],$member['id']);
}
- $o .= '
';
- $o .= '
';
-
- $o .= '
' . t('All Contacts') . '
';
- $o .= '
';
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0 ORDER BY `name` ASC",
+ intval(local_user())
+ );
- $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0 ORDER BY `name` ASC",
- intval(local_user())
- );
-
- if(count($r)) {
- $textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : false);
- foreach($r as $member) {
- if(! in_array($member['id'],$preselected)) {
- $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;';
- $o .= micropro($member,true,'mpall', $textmode);
- }
+ if(count($r)) {
+ $textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : false);
+ foreach($r as $member) {
+ if(! in_array($member['id'],$preselected)) {
+ $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;';
+ $groupeditor['contacts'][] = micropro($member,true,'mpall', $textmode);
}
}
+ }
- $o .= '
';
+ $context['$groupeditor'] = $groupeditor;
+ $context['$desc'] = t('Click on a contact to add or remove.');
if($change) {
- echo $o;
+ $tpl = get_markup_template('groupeditor.tpl');
+ echo replace_macros($tpl, $context);
killme();
}
- $o .= '
';
- return $o;
+
+ return replace_macros($tpl, $context);
}
diff --git a/mod/message.php b/mod/message.php
index e293d62d9d..9226a68fb1 100755
--- a/mod/message.php
+++ b/mod/message.php
@@ -129,10 +129,16 @@ function message_content(&$a) {
$o .= $header;
+ $plaintext = false;
+ if(intval(get_pconfig(local_user(),'system','plaintext')))
+ $plaintext = true;
+
+
$tpl = get_markup_template('msg-header.tpl');
$a->page['htmlhead'] .= replace_macros($tpl, array(
'$baseurl' => $a->get_baseurl(),
+ '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$nickname' => $a->user['nickname'],
'$linkurl' => t('Please enter a link URL:')
));
diff --git a/mod/network.php b/mod/network.php
index 26265f5a0f..e651802220 100755
--- a/mod/network.php
+++ b/mod/network.php
@@ -51,14 +51,14 @@ function network_init(&$a) {
function saved_searches($search) {
- $srchurl = '/network'
- . ((x($_GET,'cid')) ? '?cid=' . $_GET['cid'] : '')
- . ((x($_GET,'star')) ? '?star=' . $_GET['star'] : '')
- . ((x($_GET,'bmark')) ? '?bmark=' . $_GET['bmark'] : '')
- . ((x($_GET,'conv')) ? '?conv=' . $_GET['conv'] : '')
- . ((x($_GET,'nets')) ? '?nets=' . $_GET['nets'] : '')
- . ((x($_GET,'cmin')) ? '?cmin=' . $_GET['cmin'] : '')
- . ((x($_GET,'cmax')) ? '?cmax=' . $_GET['cmax'] : '');
+ $srchurl = '/network?f='
+ . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '')
+ . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '')
+ . ((x($_GET,'bmark')) ? '&bmark=' . $_GET['bmark'] : '')
+ . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '')
+ . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '')
+ . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '')
+ . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '');
$o = '';
@@ -164,33 +164,33 @@ function network_content(&$a, $update = 0) {
$tabs = array(
array(
'label' => t('Commented Order'),
- 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '?cid=' . $_GET['cid'] : ''),
+ 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '?f=&cid=' . $_GET['cid'] : ''),
'sel'=>$all_active,
),
array(
'label' => t('Posted Order'),
- 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . '?order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
+ 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
'sel'=>$postord_active,
),
array(
'label' => t('Personal'),
- 'url' => $a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?cid=' . $_GET['cid'] : '') . '&conv=1',
+ 'url' => $a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&conv=1',
'sel' => $conv_active,
),
array(
'label' => t('New'),
- 'url' => $a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . '/new' . ((x($_GET,'cid')) ? '/?cid=' . $_GET['cid'] : ''),
+ 'url' => $a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . '/new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''),
'sel' => $new_active,
),
array(
'label' => t('Starred'),
- 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?cid=' . $_GET['cid'] : '') . '&star=1',
+ 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1',
'sel'=>$starred_active,
),
array(
'label' => t('Bookmarks'),
- 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?cid=' . $_GET['cid'] : '') . '&bmark=1',
+ 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1',
'sel'=>$bookmarked_active,
),
// array(
@@ -256,14 +256,12 @@ function network_content(&$a, $update = 0) {
nav_set_selected('network');
- $_SESSION['return_url'] = $a->query_string;
-
$celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false);
$x = array(
'is_owner' => true,
'allow_location' => $a->user['allow_location'],
- 'default_location' => $a->user['default_location'],
+ 'default_location' => $a->user['default-location'],
'nickname' => $a->user['nickname'],
'lockstate' => ((($group) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))) ? 'lock' : 'unlock'),
'acl' => populate_acl((($group || $cid) ? $def_acl : $a->user), $celeb),
@@ -472,7 +470,7 @@ function network_content(&$a, $update = 0) {
if(count($r)) {
foreach($r as $rr)
- if(! array_key_exists($rr['item_id'],$parents_arr))
+ if(! in_array($rr['item_id'],$parents_arr))
$parents_arr[] = $rr['item_id'];
$parents_str = implode(', ', $parents_arr);
diff --git a/mod/notify.php b/mod/notify.php
index e6a7a88596..a572b15344 100644
--- a/mod/notify.php
+++ b/mod/notify.php
@@ -11,8 +11,10 @@ function notify_init(&$a) {
intval(local_user())
);
if(count($r)) {
- q("update notify set seen = 1 where id = %d and uid = %d limit 1",
- intval($a->argv[2]),
+ q("update notify set seen = 1 where ( link = '%s' or ( parent != 0 and parent = %d and otype = '%s' )) and uid = %d",
+ dbesc($r[0]['link']),
+ intval($r[0]['parent']),
+ dbesc($r[0]['otype']),
intval(local_user())
);
goaway($r[0]['link']);
diff --git a/mod/ping.php b/mod/ping.php
index 7380ff7d05..1562254b17 100644
--- a/mod/ping.php
+++ b/mod/ping.php
@@ -14,10 +14,29 @@ function ping_init(&$a) {
$firehose = intval(get_pconfig(local_user(),'system','notify_full'));
- $z = q("select * from notify where uid = %d
- order by seen asc, date desc limit 0, 50",
+ $t = q("select count(*) as total from notify where uid = %d and seen = 0",
intval(local_user())
);
+ if($t && intval($t[0]['total']) > 49) {
+ $z = q("select * from notify where uid = %d
+ and seen = 0 order by date desc limit 0, 50",
+ intval(local_user())
+ );
+ }
+ else {
+ $z1 = q("select * from notify where uid = %d
+ and seen = 0 order by date desc limit 0, 50",
+ intval(local_user())
+ );
+
+ $z2 = q("select * from notify where uid = %d
+ and seen = 1 order by date desc limit 0, %d",
+ intval(local_user()),
+ intval(50 - intval($t[0]['total']))
+ );
+ $z = array_merge($z1,$z2);
+ }
+
$tags = array();
diff --git a/mod/profile.php b/mod/profile.php
index 74e1a23020..1a701f4077 100755
--- a/mod/profile.php
+++ b/mod/profile.php
@@ -159,7 +159,7 @@ function profile_content(&$a, $update = 0) {
* Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups
*/
- $sql_extra = permissions_sql($a->profile['profile_uid'],$remote_contact,$groups);
+ $sql_extra = item_permissions_sql($a->profile['profile_uid'],$remote_contact,$groups);
if($update) {
diff --git a/mod/search.php b/mod/search.php
index fe09b671f6..386592ea19 100755
--- a/mod/search.php
+++ b/mod/search.php
@@ -127,7 +127,7 @@ function search_content(&$a) {
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
LEFT JOIN `user` ON `user`.`uid` = `item`.`uid`
WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
- AND (( `wall` = 1 AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `user`.`hidewall` = 0 )
+ AND (( `wall` = 1 AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0 )
OR `item`.`uid` = %d )
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
$search_alg
diff --git a/mod/share.php b/mod/share.php
index bba527342a..f6c025e3ce 100755
--- a/mod/share.php
+++ b/mod/share.php
@@ -16,10 +16,18 @@ function share_init(&$a) {
$o = '';
- $o .= '♲ ' . $r[0]['author-name'] . '
';
- if($r[0]['title'])
- $o .= '' . $r[0]['title'] . '
';
- $o .= bbcode($r[0]['body'], true);
- echo $o . '
';
+ if(local_user() && intval(get_pconfig(local_user(),'system','plaintext'))) {
+ $o .= '♲ [url=' . $r[0]['author-link'] . ']' . $r[0]['author-name'] . '[/url]';
+ if($r[0]['title'])
+ $o .= '[b]' . $r[0]['title'] . '[/b]' . "\n";
+ $o .= $r[0]['body'] . "\n";
+ }
+ else {
+ $o .= '♲ ' . $r[0]['author-name'] . '
';
+ if($r[0]['title'])
+ $o .= '' . $r[0]['title'] . '
';
+ $o .= bbcode($r[0]['body'], true) . '
';
+ }
+ echo $o;
killme();
}
diff --git a/update.php b/update.php
index 8ca5ef90b0..c29394b480 100755
--- 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:129 ../../mod/photos.php:865
#: ../../mod/editpost.php:10 ../../mod/install.php:171
#: ../../mod/notifications.php:62 ../../mod/contacts.php:125
-#: ../../mod/settings.php:49 ../../mod/settings.php:404
-#: ../../mod/settings.php:409 ../../mod/manage.php:86 ../../mod/network.php:6
+#: ../../mod/settings.php:49 ../../mod/settings.php:411
+#: ../../mod/settings.php:416 ../../mod/manage.php:86 ../../mod/network.php:6
#: ../../mod/notes.php:20 ../../mod/attach.php:33 ../../mod/group.php:19
#: ../../mod/viewcontacts.php:22 ../../mod/register.php:36
#: ../../mod/regmod.php:111 ../../mod/item.php:124 ../../mod/item.php:140
@@ -48,11 +48,11 @@ msgstr ""
#: ../../mod/profile_photo.php:148 ../../mod/profile_photo.php:159
#: ../../mod/message.php:9 ../../mod/message.php:46 ../../mod/allfriends.php:9
#: ../../mod/wall_upload.php:42 ../../mod/follow.php:8 ../../mod/common.php:9
-#: ../../mod/display.php:130 ../../mod/profiles.php:7
+#: ../../mod/display.php:133 ../../mod/profiles.php:7
#: ../../mod/profiles.php:229 ../../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:332
-#: ../../include/items.php:2968 ../../index.php:288
+#: ../../include/items.php:3030 ../../index.php:288
msgid "Permission denied."
msgstr ""
@@ -81,8 +81,8 @@ msgstr ""
msgid "Return to contact editor"
msgstr ""
-#: ../../mod/crepair.php:148 ../../mod/settings.php:455
-#: ../../mod/settings.php:481 ../../mod/admin.php:480 ../../mod/admin.php:489
+#: ../../mod/crepair.php:148 ../../mod/settings.php:462
+#: ../../mod/settings.php:488 ../../mod/admin.php:484 ../../mod/admin.php:493
msgid "Name"
msgstr ""
@@ -124,18 +124,18 @@ msgstr ""
#: ../../mod/photos.php:1262 ../../mod/photos.php:1293
#: ../../mod/install.php:251 ../../mod/install.php:289
#: ../../mod/localtime.php:45 ../../mod/contacts.php:319
-#: ../../mod/settings.php:453 ../../mod/settings.php:592
-#: ../../mod/settings.php:786 ../../mod/manage.php:109 ../../mod/group.php:84
-#: ../../mod/group.php:167 ../../mod/admin.php:312 ../../mod/admin.php:477
-#: ../../mod/admin.php:603 ../../mod/admin.php:769 ../../mod/admin.php:847
-#: ../../mod/profiles.php:375 ../../mod/invite.php:106
-#: ../../addon/facebook/facebook.php:411 ../../addon/yourls/yourls.php:76
+#: ../../mod/settings.php:460 ../../mod/settings.php:603
+#: ../../mod/settings.php:797 ../../mod/manage.php:109 ../../mod/group.php:80
+#: ../../mod/admin.php:313 ../../mod/admin.php:481 ../../mod/admin.php:609
+#: ../../mod/admin.php:776 ../../mod/admin.php:856 ../../mod/profiles.php:375
+#: ../../mod/invite.php:106 ../../addon/facebook/facebook.php:411
+#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:92
#: ../../addon/nsfw/nsfw.php:57
#: ../../addon/uhremotestorage/uhremotestorage.php:89
-#: ../../addon/randplace/randplace.php:179 ../../addon/drpost/drpost.php:110
-#: ../../addon/geonames/geonames.php:187 ../../addon/oembed.old/oembed.php:41
-#: ../../addon/impressum/impressum.php:69 ../../addon/blockem/blockem.php:57
-#: ../../addon/qcomment/qcomment.php:60
+#: ../../addon/randplace/randplace.php:179 ../../addon/dwpost/dwpost.php:92
+#: ../../addon/drpost/drpost.php:110 ../../addon/geonames/geonames.php:187
+#: ../../addon/oembed.old/oembed.php:41 ../../addon/impressum/impressum.php:69
+#: ../../addon/blockem/blockem.php:57 ../../addon/qcomment/qcomment.php:61
#: ../../addon/openstreetmap/openstreetmap.php:70
#: ../../addon/editplain/editplain.php:84 ../../addon/blackout/blackout.php:94
#: ../../addon/pageheader/pageheader.php:52
@@ -145,11 +145,12 @@ msgstr ""
#: ../../addon/statusnet/statusnet.php:320
#: ../../addon/statusnet/statusnet.php:345
#: ../../addon/statusnet/statusnet.php:532 ../../addon/tumblr/tumblr.php:90
-#: ../../addon/numfriends/numfriends.php:85 ../../addon/wppost/wppost.php:102
-#: ../../addon/showmore/showmore.php:48 ../../addon/piwik/piwik.php:89
-#: ../../addon/twitter/twitter.php:175 ../../addon/twitter/twitter.php:201
-#: ../../addon/twitter/twitter.php:355 ../../addon/posterous/posterous.php:90
-#: ../../include/conversation.php:542
+#: ../../addon/numfriends/numfriends.php:85 ../../addon/gnot/gnot.php:88
+#: ../../addon/wppost/wppost.php:102 ../../addon/showmore/showmore.php:48
+#: ../../addon/piwik/piwik.php:89 ../../addon/twitter/twitter.php:175
+#: ../../addon/twitter/twitter.php:201 ../../addon/twitter/twitter.php:355
+#: ../../addon/posterous/posterous.php:90
+#: ../../view/theme/quattro/theme.php:15 ../../include/conversation.php:552
msgid "Submit"
msgstr ""
@@ -203,7 +204,7 @@ msgstr ""
msgid "Edit event"
msgstr ""
-#: ../../mod/events.php:272 ../../include/text.php:964
+#: ../../mod/events.php:272 ../../include/text.php:982
msgid "link to source"
msgstr ""
@@ -257,7 +258,7 @@ msgid "Description:"
msgstr ""
#: ../../mod/events.php:395 ../../include/event.php:37
-#: ../../include/bb2diaspora.php:290 ../../boot.php:980
+#: ../../include/bb2diaspora.php:260 ../../boot.php:980
msgid "Location:"
msgstr ""
@@ -266,8 +267,8 @@ msgid "Share this event"
msgstr ""
#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
-#: ../../mod/dfrn_request.php:686 ../../mod/settings.php:454
-#: ../../mod/settings.php:480 ../../addon/js_upload/js_upload.php:45
+#: ../../mod/dfrn_request.php:686 ../../mod/settings.php:461
+#: ../../mod/settings.php:487 ../../addon/js_upload/js_upload.php:45
msgid "Cancel"
msgstr ""
@@ -311,23 +312,23 @@ msgid ""
msgstr ""
#: ../../mod/api.php:105 ../../mod/dfrn_request.php:676
-#: ../../mod/settings.php:681 ../../mod/settings.php:687
-#: ../../mod/settings.php:695 ../../mod/settings.php:699
-#: ../../mod/settings.php:704 ../../mod/settings.php:710
-#: ../../mod/settings.php:716 ../../mod/settings.php:776
-#: ../../mod/settings.php:777 ../../mod/settings.php:778
-#: ../../mod/settings.php:779 ../../mod/register.php:524
+#: ../../mod/settings.php:692 ../../mod/settings.php:698
+#: ../../mod/settings.php:706 ../../mod/settings.php:710
+#: ../../mod/settings.php:715 ../../mod/settings.php:721
+#: ../../mod/settings.php:727 ../../mod/settings.php:787
+#: ../../mod/settings.php:788 ../../mod/settings.php:789
+#: ../../mod/settings.php:790 ../../mod/register.php:524
#: ../../mod/profiles.php:357
msgid "Yes"
msgstr ""
#: ../../mod/api.php:106 ../../mod/dfrn_request.php:677
-#: ../../mod/settings.php:681 ../../mod/settings.php:687
-#: ../../mod/settings.php:695 ../../mod/settings.php:699
-#: ../../mod/settings.php:704 ../../mod/settings.php:710
-#: ../../mod/settings.php:716 ../../mod/settings.php:776
-#: ../../mod/settings.php:777 ../../mod/settings.php:778
-#: ../../mod/settings.php:779 ../../mod/register.php:525
+#: ../../mod/settings.php:692 ../../mod/settings.php:698
+#: ../../mod/settings.php:706 ../../mod/settings.php:710
+#: ../../mod/settings.php:715 ../../mod/settings.php:721
+#: ../../mod/settings.php:727 ../../mod/settings.php:787
+#: ../../mod/settings.php:788 ../../mod/settings.php:789
+#: ../../mod/settings.php:790 ../../mod/register.php:525
#: ../../mod/profiles.php:358
msgid "No"
msgstr ""
@@ -381,7 +382,7 @@ msgid "was tagged in a"
msgstr ""
#: ../../mod/photos.php:528 ../../mod/like.php:127 ../../mod/tagger.php:70
-#: ../../addon/communityhome/communityhome.php:163
+#: ../../addon/communityhome/communityhome.php:163 ../../include/text.php:1226
#: ../../include/diaspora.php:1600 ../../include/conversation.php:53
#: ../../include/conversation.php:126
msgid "photo"
@@ -471,7 +472,7 @@ msgstr ""
msgid "Use as profile photo"
msgstr ""
-#: ../../mod/photos.php:1078 ../../include/conversation.php:472
+#: ../../mod/photos.php:1078 ../../include/conversation.php:482
msgid "Private Message"
msgstr ""
@@ -503,44 +504,44 @@ msgstr ""
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
msgstr ""
-#: ../../mod/photos.php:1200 ../../include/conversation.php:519
+#: ../../mod/photos.php:1200 ../../include/conversation.php:529
msgid "I like this (toggle)"
msgstr ""
-#: ../../mod/photos.php:1201 ../../include/conversation.php:520
+#: ../../mod/photos.php:1201 ../../include/conversation.php:530
msgid "I don't like this (toggle)"
msgstr ""
-#: ../../mod/photos.php:1202 ../../include/conversation.php:914
+#: ../../mod/photos.php:1202 ../../include/conversation.php:933
msgid "Share"
msgstr ""
#: ../../mod/photos.php:1203 ../../mod/editpost.php:104
#: ../../mod/message.php:155 ../../mod/message.php:296
-#: ../../include/conversation.php:343 ../../include/conversation.php:677
-#: ../../include/conversation.php:931
+#: ../../include/conversation.php:348 ../../include/conversation.php:694
+#: ../../include/conversation.php:950
msgid "Please wait"
msgstr ""
#: ../../mod/photos.php:1219 ../../mod/photos.php:1259
-#: ../../mod/photos.php:1290 ../../include/conversation.php:539
+#: ../../mod/photos.php:1290 ../../include/conversation.php:549
msgid "This is you"
msgstr ""
#: ../../mod/photos.php:1221 ../../mod/photos.php:1261
-#: ../../mod/photos.php:1292 ../../include/conversation.php:541
+#: ../../mod/photos.php:1292 ../../include/conversation.php:551
#: ../../boot.php:447
msgid "Comment"
msgstr ""
#: ../../mod/photos.php:1223 ../../mod/editpost.php:123
-#: ../../include/conversation.php:543 ../../include/conversation.php:949
+#: ../../include/conversation.php:553 ../../include/conversation.php:968
msgid "Preview"
msgstr ""
-#: ../../mod/photos.php:1320 ../../mod/settings.php:513
-#: ../../mod/group.php:154 ../../mod/admin.php:484
-#: ../../include/conversation.php:302 ../../include/conversation.php:563
+#: ../../mod/photos.php:1320 ../../mod/settings.php:520
+#: ../../mod/settings.php:601 ../../mod/group.php:158 ../../mod/admin.php:488
+#: ../../include/conversation.php:304 ../../include/conversation.php:573
msgid "Delete"
msgstr ""
@@ -604,26 +605,26 @@ msgstr ""
msgid "Edit post"
msgstr ""
-#: ../../mod/editpost.php:80 ../../include/conversation.php:900
+#: ../../mod/editpost.php:80 ../../include/conversation.php:919
msgid "Post to Email"
msgstr ""
-#: ../../mod/editpost.php:95 ../../mod/settings.php:512
-#: ../../include/conversation.php:550
+#: ../../mod/editpost.php:95 ../../mod/settings.php:519
+#: ../../include/conversation.php:560
msgid "Edit"
msgstr ""
#: ../../mod/editpost.php:96 ../../mod/message.php:153
-#: ../../mod/message.php:294 ../../include/conversation.php:915
+#: ../../mod/message.php:294 ../../include/conversation.php:934
msgid "Upload photo"
msgstr ""
-#: ../../mod/editpost.php:97 ../../include/conversation.php:917
+#: ../../mod/editpost.php:97 ../../include/conversation.php:936
msgid "Attach file"
msgstr ""
#: ../../mod/editpost.php:98 ../../mod/message.php:154
-#: ../../mod/message.php:295 ../../include/conversation.php:919
+#: ../../mod/message.php:295 ../../include/conversation.php:938
msgid "Insert web link"
msgstr ""
@@ -639,31 +640,31 @@ msgstr ""
msgid "Insert Vorbis [.ogg] audio"
msgstr ""
-#: ../../mod/editpost.php:102 ../../include/conversation.php:925
+#: ../../mod/editpost.php:102 ../../include/conversation.php:944
msgid "Set your location"
msgstr ""
-#: ../../mod/editpost.php:103 ../../include/conversation.php:927
+#: ../../mod/editpost.php:103 ../../include/conversation.php:946
msgid "Clear browser location"
msgstr ""
-#: ../../mod/editpost.php:105 ../../include/conversation.php:932
+#: ../../mod/editpost.php:105 ../../include/conversation.php:951
msgid "Permission settings"
msgstr ""
-#: ../../mod/editpost.php:113 ../../include/conversation.php:941
+#: ../../mod/editpost.php:113 ../../include/conversation.php:960
msgid "CC: email addresses"
msgstr ""
-#: ../../mod/editpost.php:114 ../../include/conversation.php:942
+#: ../../mod/editpost.php:114 ../../include/conversation.php:961
msgid "Public post"
msgstr ""
-#: ../../mod/editpost.php:117 ../../include/conversation.php:930
+#: ../../mod/editpost.php:117 ../../include/conversation.php:949
msgid "Set title"
msgstr ""
-#: ../../mod/editpost.php:118 ../../include/conversation.php:944
+#: ../../mod/editpost.php:118 ../../include/conversation.php:963
msgid "Example: bob@example.com, mary@example.com"
msgstr ""
@@ -772,7 +773,7 @@ msgstr ""
msgid "Confirm"
msgstr ""
-#: ../../mod/dfrn_request.php:582 ../../include/items.php:2504
+#: ../../mod/dfrn_request.php:582 ../../include/items.php:2566
msgid "[Name Withheld]"
msgstr ""
@@ -820,7 +821,7 @@ msgstr ""
msgid "StatusNet/Federated Social Web"
msgstr ""
-#: ../../mod/dfrn_request.php:682 ../../mod/settings.php:548
+#: ../../mod/dfrn_request.php:682 ../../mod/settings.php:555
#: ../../include/contact_selectors.php:80
msgid "Diaspora"
msgstr ""
@@ -1082,7 +1083,7 @@ msgid "Errors encountered creating database tables."
msgstr ""
#: ../../mod/localtime.php:12 ../../include/event.php:11
-#: ../../include/bb2diaspora.php:268
+#: ../../include/bb2diaspora.php:238
msgid "l F d, Y \\@ g:i A"
msgstr ""
@@ -1225,7 +1226,7 @@ msgid "if applicable"
msgstr ""
#: ../../mod/notifications.php:153 ../../mod/notifications.php:200
-#: ../../mod/admin.php:482
+#: ../../mod/admin.php:486
msgid "Approve"
msgstr ""
@@ -1310,11 +1311,11 @@ msgstr ""
msgid "Network Notifications"
msgstr ""
-#: ../../mod/notifications.php:324 ../../mod/notify.php:59
+#: ../../mod/notifications.php:324 ../../mod/notify.php:61
msgid "No more system notifications."
msgstr ""
-#: ../../mod/notifications.php:328 ../../mod/notify.php:63
+#: ../../mod/notifications.php:328 ../../mod/notify.php:65
msgid "System Notifications"
msgstr ""
@@ -1422,12 +1423,12 @@ msgid "View all contacts"
msgstr ""
#: ../../mod/contacts.php:297 ../../mod/contacts.php:344
-#: ../../mod/admin.php:486
+#: ../../mod/admin.php:490
msgid "Unblock"
msgstr ""
#: ../../mod/contacts.php:297 ../../mod/contacts.php:344
-#: ../../mod/admin.php:485
+#: ../../mod/admin.php:489
msgid "Block"
msgstr ""
@@ -1496,7 +1497,7 @@ msgstr ""
msgid "Update public posts"
msgstr ""
-#: ../../mod/contacts.php:341 ../../mod/admin.php:896
+#: ../../mod/contacts.php:341 ../../mod/admin.php:905
msgid "Update now"
msgstr ""
@@ -1513,7 +1514,7 @@ msgid ""
"Replies/likes to your public posts may still be visible"
msgstr ""
-#: ../../mod/contacts.php:399 ../../mod/group.php:194
+#: ../../mod/contacts.php:399 ../../mod/group.php:179
msgid "All Contacts"
msgstr ""
@@ -1546,23 +1547,23 @@ msgid "you are a fan of"
msgstr ""
#: ../../mod/contacts.php:498 ../../include/Contact.php:135
-#: ../../include/conversation.php:773
+#: ../../include/conversation.php:792
msgid "Edit contact"
msgstr ""
-#: ../../mod/contacts.php:518 ../../include/nav.php:132
+#: ../../mod/contacts.php:519 ../../include/nav.php:132
msgid "Contacts"
msgstr ""
-#: ../../mod/contacts.php:522
+#: ../../mod/contacts.php:523
msgid "Search your contacts"
msgstr ""
-#: ../../mod/contacts.php:523 ../../mod/directory.php:67
+#: ../../mod/contacts.php:524 ../../mod/directory.php:67
msgid "Finding: "
msgstr ""
-#: ../../mod/contacts.php:524 ../../mod/directory.php:69
+#: ../../mod/contacts.php:525 ../../mod/directory.php:69
#: ../../include/contact_widgets.php:34
msgid "Find"
msgstr ""
@@ -1582,8 +1583,8 @@ msgstr ""
#: ../../mod/lostpass.php:44 ../../mod/lostpass.php:106
#: ../../mod/register.php:380 ../../mod/register.php:434
-#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:716
-#: ../../include/items.php:2513
+#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:726
+#: ../../include/items.php:2575
msgid "Administrator"
msgstr ""
@@ -1637,428 +1638,444 @@ msgstr ""
msgid "Reset"
msgstr ""
-#: ../../mod/settings.php:70
+#: ../../mod/settings.php:72
msgid "Missing some important data!"
msgstr ""
-#: ../../mod/settings.php:73 ../../mod/settings.php:479 ../../mod/admin.php:75
+#: ../../mod/settings.php:75 ../../mod/settings.php:486 ../../mod/admin.php:75
msgid "Update"
msgstr ""
-#: ../../mod/settings.php:168
+#: ../../mod/settings.php:175
msgid "Failed to connect with email account using the settings provided."
msgstr ""
-#: ../../mod/settings.php:173
+#: ../../mod/settings.php:180
msgid "Email settings updated."
msgstr ""
-#: ../../mod/settings.php:191
+#: ../../mod/settings.php:198
msgid "Passwords do not match. Password unchanged."
msgstr ""
-#: ../../mod/settings.php:196
+#: ../../mod/settings.php:203
msgid "Empty passwords are not allowed. Password unchanged."
msgstr ""
-#: ../../mod/settings.php:207
+#: ../../mod/settings.php:214
msgid "Password changed."
msgstr ""
-#: ../../mod/settings.php:209
+#: ../../mod/settings.php:216
msgid "Password update failed. Please try again."
msgstr ""
-#: ../../mod/settings.php:273
+#: ../../mod/settings.php:280
msgid " Please use a shorter name."
msgstr ""
-#: ../../mod/settings.php:275
+#: ../../mod/settings.php:282
msgid " Name too short."
msgstr ""
-#: ../../mod/settings.php:281
+#: ../../mod/settings.php:288
msgid " Not valid email."
msgstr ""
-#: ../../mod/settings.php:283
+#: ../../mod/settings.php:290
msgid " Cannot change to that email."
msgstr ""
-#: ../../mod/settings.php:351 ../../addon/facebook/facebook.php:321
+#: ../../mod/settings.php:358 ../../addon/facebook/facebook.php:321
#: ../../addon/impressum/impressum.php:64
#: ../../addon/openstreetmap/openstreetmap.php:80
#: ../../addon/piwik/piwik.php:105 ../../addon/twitter/twitter.php:350
msgid "Settings updated."
msgstr ""
-#: ../../mod/settings.php:415 ../../include/nav.php:130
+#: ../../mod/settings.php:422 ../../include/nav.php:130
msgid "Account settings"
msgstr ""
-#: ../../mod/settings.php:420
+#: ../../mod/settings.php:427
msgid "Connector settings"
msgstr ""
-#: ../../mod/settings.php:425
+#: ../../mod/settings.php:432
msgid "Plugin settings"
msgstr ""
-#: ../../mod/settings.php:430
+#: ../../mod/settings.php:437
msgid "Connections"
msgstr ""
-#: ../../mod/settings.php:435
+#: ../../mod/settings.php:442
msgid "Export personal data"
msgstr ""
-#: ../../mod/settings.php:452 ../../mod/settings.php:478
-#: ../../mod/settings.php:511
+#: ../../mod/settings.php:459 ../../mod/settings.php:485
+#: ../../mod/settings.php:518
msgid "Add application"
msgstr ""
-#: ../../mod/settings.php:456 ../../mod/settings.php:482
+#: ../../mod/settings.php:463 ../../mod/settings.php:489
#: ../../addon/statusnet/statusnet.php:526
msgid "Consumer Key"
msgstr ""
-#: ../../mod/settings.php:457 ../../mod/settings.php:483
+#: ../../mod/settings.php:464 ../../mod/settings.php:490
#: ../../addon/statusnet/statusnet.php:525
msgid "Consumer Secret"
msgstr ""
-#: ../../mod/settings.php:458 ../../mod/settings.php:484
+#: ../../mod/settings.php:465 ../../mod/settings.php:491
msgid "Redirect"
msgstr ""
-#: ../../mod/settings.php:459 ../../mod/settings.php:485
+#: ../../mod/settings.php:466 ../../mod/settings.php:492
msgid "Icon url"
msgstr ""
-#: ../../mod/settings.php:470
+#: ../../mod/settings.php:477
msgid "You can't edit this application."
msgstr ""
-#: ../../mod/settings.php:510
+#: ../../mod/settings.php:517
msgid "Connected Apps"
msgstr ""
-#: ../../mod/settings.php:514
+#: ../../mod/settings.php:521
msgid "Client key starts with"
msgstr ""
-#: ../../mod/settings.php:515
+#: ../../mod/settings.php:522
msgid "No name"
msgstr ""
-#: ../../mod/settings.php:516
+#: ../../mod/settings.php:523
msgid "Remove authorization"
msgstr ""
-#: ../../mod/settings.php:528
+#: ../../mod/settings.php:535
msgid "No Plugin settings configured"
msgstr ""
-#: ../../mod/settings.php:535 ../../addon/widgets/widgets.php:122
+#: ../../mod/settings.php:542 ../../addon/widgets/widgets.php:122
msgid "Plugin Settings"
msgstr ""
-#: ../../mod/settings.php:548 ../../mod/settings.php:549
+#: ../../mod/settings.php:555 ../../mod/settings.php:556
#, php-format
msgid "Built-in support for %s connectivity is %s"
msgstr ""
-#: ../../mod/settings.php:548 ../../mod/settings.php:549
+#: ../../mod/settings.php:555 ../../mod/settings.php:556
msgid "enabled"
msgstr ""
-#: ../../mod/settings.php:548 ../../mod/settings.php:549
+#: ../../mod/settings.php:555 ../../mod/settings.php:556
msgid "disabled"
msgstr ""
-#: ../../mod/settings.php:549
+#: ../../mod/settings.php:556
msgid "StatusNet"
msgstr ""
-#: ../../mod/settings.php:575
+#: ../../mod/settings.php:584
msgid "Connector Settings"
msgstr ""
-#: ../../mod/settings.php:581
+#: ../../mod/settings.php:590
msgid "Email/Mailbox Setup"
msgstr ""
-#: ../../mod/settings.php:582
+#: ../../mod/settings.php:591
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:583
+#: ../../mod/settings.php:592
msgid "Last successful email check:"
msgstr ""
-#: ../../mod/settings.php:584
+#: ../../mod/settings.php:593
msgid "Email access is disabled on this site."
msgstr ""
-#: ../../mod/settings.php:585
+#: ../../mod/settings.php:594
msgid "IMAP server name:"
msgstr ""
-#: ../../mod/settings.php:586
+#: ../../mod/settings.php:595
msgid "IMAP port:"
msgstr ""
-#: ../../mod/settings.php:587
+#: ../../mod/settings.php:596
msgid "Security:"
msgstr ""
-#: ../../mod/settings.php:587
+#: ../../mod/settings.php:596 ../../mod/settings.php:601
msgid "None"
msgstr ""
-#: ../../mod/settings.php:588
+#: ../../mod/settings.php:597
msgid "Email login name:"
msgstr ""
-#: ../../mod/settings.php:589
+#: ../../mod/settings.php:598
msgid "Email password:"
msgstr ""
-#: ../../mod/settings.php:590
+#: ../../mod/settings.php:599
msgid "Reply-to address:"
msgstr ""
-#: ../../mod/settings.php:591
+#: ../../mod/settings.php:600
msgid "Send public posts to all email contacts:"
msgstr ""
-#: ../../mod/settings.php:648 ../../mod/admin.php:142 ../../mod/admin.php:459
+#: ../../mod/settings.php:601
+msgid "Action after import:"
+msgstr ""
+
+#: ../../mod/settings.php:601
+msgid "Mark as seen"
+msgstr ""
+
+#: ../../mod/settings.php:601
+msgid "Move to folder"
+msgstr ""
+
+#: ../../mod/settings.php:602
+msgid "Move to folder:"
+msgstr ""
+
+#: ../../mod/settings.php:659 ../../mod/admin.php:142 ../../mod/admin.php:462
msgid "Normal Account"
msgstr ""
-#: ../../mod/settings.php:649
+#: ../../mod/settings.php:660
msgid "This account is a normal personal profile"
msgstr ""
-#: ../../mod/settings.php:652 ../../mod/admin.php:143 ../../mod/admin.php:460
+#: ../../mod/settings.php:663 ../../mod/admin.php:143 ../../mod/admin.php:463
msgid "Soapbox Account"
msgstr ""
-#: ../../mod/settings.php:653
+#: ../../mod/settings.php:664
msgid "Automatically approve all connection/friend requests as read-only fans"
msgstr ""
-#: ../../mod/settings.php:656 ../../mod/admin.php:144 ../../mod/admin.php:461
+#: ../../mod/settings.php:667 ../../mod/admin.php:144 ../../mod/admin.php:464
msgid "Community/Celebrity Account"
msgstr ""
-#: ../../mod/settings.php:657
+#: ../../mod/settings.php:668
msgid "Automatically approve all connection/friend requests as read-write fans"
msgstr ""
-#: ../../mod/settings.php:660 ../../mod/admin.php:145 ../../mod/admin.php:462
+#: ../../mod/settings.php:671 ../../mod/admin.php:145 ../../mod/admin.php:465
msgid "Automatic Friend Account"
msgstr ""
-#: ../../mod/settings.php:661
+#: ../../mod/settings.php:672
msgid "Automatically approve all connection/friend requests as friends"
msgstr ""
-#: ../../mod/settings.php:671
+#: ../../mod/settings.php:682
msgid "OpenID:"
msgstr ""
-#: ../../mod/settings.php:671
+#: ../../mod/settings.php:682
msgid "(Optional) Allow this OpenID to login to this account."
msgstr ""
-#: ../../mod/settings.php:681
+#: ../../mod/settings.php:692
msgid "Publish your default profile in your local site directory?"
msgstr ""
-#: ../../mod/settings.php:687
+#: ../../mod/settings.php:698
msgid "Publish your default profile in the global social directory?"
msgstr ""
-#: ../../mod/settings.php:695
+#: ../../mod/settings.php:706
msgid "Hide your contact/friend list from viewers of your default profile?"
msgstr ""
-#: ../../mod/settings.php:699
+#: ../../mod/settings.php:710
msgid "Hide your profile details from unknown viewers?"
msgstr ""
-#: ../../mod/settings.php:704
+#: ../../mod/settings.php:715
msgid "Allow friends to post to your profile page?"
msgstr ""
-#: ../../mod/settings.php:710
+#: ../../mod/settings.php:721
msgid "Allow friends to tag your posts?"
msgstr ""
-#: ../../mod/settings.php:716
+#: ../../mod/settings.php:727
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr ""
-#: ../../mod/settings.php:725
+#: ../../mod/settings.php:736
msgid "Profile is not published."
msgstr ""
-#: ../../mod/settings.php:757 ../../mod/profile_photo.php:206
+#: ../../mod/settings.php:768 ../../mod/profile_photo.php:206
msgid "or"
msgstr ""
-#: ../../mod/settings.php:762
+#: ../../mod/settings.php:773
msgid "Your Identity Address is"
msgstr ""
-#: ../../mod/settings.php:773
+#: ../../mod/settings.php:784
msgid "Automatically expire posts after this many days:"
msgstr ""
-#: ../../mod/settings.php:773
+#: ../../mod/settings.php:784
msgid "If empty, posts will not expire. Expired posts will be deleted"
msgstr ""
-#: ../../mod/settings.php:774
+#: ../../mod/settings.php:785
msgid "Advanced expiration settings"
msgstr ""
-#: ../../mod/settings.php:775
+#: ../../mod/settings.php:786
msgid "Advanced Expiration"
msgstr ""
-#: ../../mod/settings.php:776
+#: ../../mod/settings.php:787
msgid "Expire posts:"
msgstr ""
-#: ../../mod/settings.php:777
+#: ../../mod/settings.php:788
msgid "Expire personal notes:"
msgstr ""
-#: ../../mod/settings.php:778
+#: ../../mod/settings.php:789
msgid "Expire starred posts:"
msgstr ""
-#: ../../mod/settings.php:779
+#: ../../mod/settings.php:790
msgid "Expire photos:"
msgstr ""
-#: ../../mod/settings.php:784
+#: ../../mod/settings.php:795
msgid "Account Settings"
msgstr ""
-#: ../../mod/settings.php:792
+#: ../../mod/settings.php:803
msgid "Password Settings"
msgstr ""
-#: ../../mod/settings.php:793
+#: ../../mod/settings.php:804
msgid "New Password:"
msgstr ""
-#: ../../mod/settings.php:794
+#: ../../mod/settings.php:805
msgid "Confirm:"
msgstr ""
-#: ../../mod/settings.php:794
+#: ../../mod/settings.php:805
msgid "Leave password fields blank unless changing"
msgstr ""
-#: ../../mod/settings.php:798
+#: ../../mod/settings.php:809
msgid "Basic Settings"
msgstr ""
-#: ../../mod/settings.php:799 ../../include/profile_advanced.php:15
+#: ../../mod/settings.php:810 ../../include/profile_advanced.php:15
msgid "Full Name:"
msgstr ""
-#: ../../mod/settings.php:800
+#: ../../mod/settings.php:811
msgid "Email Address:"
msgstr ""
-#: ../../mod/settings.php:801
+#: ../../mod/settings.php:812
msgid "Your Timezone:"
msgstr ""
-#: ../../mod/settings.php:802
+#: ../../mod/settings.php:813
msgid "Default Post Location:"
msgstr ""
-#: ../../mod/settings.php:803
+#: ../../mod/settings.php:814
msgid "Use Browser Location:"
msgstr ""
-#: ../../mod/settings.php:804
+#: ../../mod/settings.php:815
msgid "Display Theme:"
msgstr ""
-#: ../../mod/settings.php:805
+#: ../../mod/settings.php:816
msgid "Update browser every xx seconds"
msgstr ""
-#: ../../mod/settings.php:805
+#: ../../mod/settings.php:816
msgid "Minimum of 10 seconds, no maximum"
msgstr ""
-#: ../../mod/settings.php:807
+#: ../../mod/settings.php:818
msgid "Security and Privacy Settings"
msgstr ""
-#: ../../mod/settings.php:809
+#: ../../mod/settings.php:820
msgid "Maximum Friend Requests/Day:"
msgstr ""
-#: ../../mod/settings.php:809
+#: ../../mod/settings.php:820
msgid "(to prevent spam abuse)"
msgstr ""
-#: ../../mod/settings.php:810
+#: ../../mod/settings.php:821
msgid "Default Post Permissions"
msgstr ""
-#: ../../mod/settings.php:811
+#: ../../mod/settings.php:822
msgid "(click to open/close)"
msgstr ""
-#: ../../mod/settings.php:826
+#: ../../mod/settings.php:837
msgid "Notification Settings"
msgstr ""
-#: ../../mod/settings.php:827
+#: ../../mod/settings.php:838
msgid "Send a notification email when:"
msgstr ""
-#: ../../mod/settings.php:828
+#: ../../mod/settings.php:839
msgid "You receive an introduction"
msgstr ""
-#: ../../mod/settings.php:829
+#: ../../mod/settings.php:840
msgid "Your introductions are confirmed"
msgstr ""
-#: ../../mod/settings.php:830
+#: ../../mod/settings.php:841
msgid "Someone writes on your profile wall"
msgstr ""
-#: ../../mod/settings.php:831
+#: ../../mod/settings.php:842
msgid "Someone writes a followup comment"
msgstr ""
-#: ../../mod/settings.php:832
+#: ../../mod/settings.php:843
msgid "You receive a private message"
msgstr ""
-#: ../../mod/settings.php:833
+#: ../../mod/settings.php:844
msgid "You receive a friend suggestion"
msgstr ""
-#: ../../mod/settings.php:834
+#: ../../mod/settings.php:845
msgid "You are tagged in a post"
msgstr ""
-#: ../../mod/settings.php:837
+#: ../../mod/settings.php:848
msgid "Advanced Page Settings"
msgstr ""
@@ -2124,27 +2141,27 @@ msgstr[1] ""
msgid "Private messages to this group are at risk of public disclosure."
msgstr ""
-#: ../../mod/network.php:300
+#: ../../mod/network.php:298
msgid "No such group"
msgstr ""
-#: ../../mod/network.php:311
+#: ../../mod/network.php:309
msgid "Group is empty"
msgstr ""
-#: ../../mod/network.php:315
+#: ../../mod/network.php:313
msgid "Group: "
msgstr ""
-#: ../../mod/network.php:325
+#: ../../mod/network.php:323
msgid "Contact: "
msgstr ""
-#: ../../mod/network.php:327
+#: ../../mod/network.php:325
msgid "Private messages to this person are at risk of public disclosure."
msgstr ""
-#: ../../mod/network.php:332
+#: ../../mod/network.php:330
msgid "Invalid contact."
msgstr ""
@@ -2152,7 +2169,7 @@ msgstr ""
msgid "Personal Notes"
msgstr ""
-#: ../../mod/notes.php:63 ../../include/text.php:639
+#: ../../mod/notes.php:63 ../../include/text.php:645
msgid "Save"
msgstr ""
@@ -2279,7 +2296,7 @@ msgstr ""
msgid "Could not create group."
msgstr ""
-#: ../../mod/group.php:43 ../../mod/group.php:123
+#: ../../mod/group.php:43 ../../mod/group.php:127
msgid "Group not found."
msgstr ""
@@ -2291,34 +2308,34 @@ msgstr ""
msgid "Permission denied"
msgstr ""
-#: ../../mod/group.php:82
+#: ../../mod/group.php:85
msgid "Create a group of contacts/friends."
msgstr ""
-#: ../../mod/group.php:83 ../../mod/group.php:166
+#: ../../mod/group.php:86 ../../mod/group.php:166
msgid "Group Name: "
msgstr ""
-#: ../../mod/group.php:98
+#: ../../mod/group.php:102
msgid "Group removed."
msgstr ""
-#: ../../mod/group.php:100
+#: ../../mod/group.php:104
msgid "Unable to remove group."
msgstr ""
-#: ../../mod/group.php:164 ../../mod/profperm.php:105
-msgid "Click on a contact to add or remove."
-msgstr ""
-
#: ../../mod/group.php:165
msgid "Group Editor"
msgstr ""
-#: ../../mod/group.php:179
+#: ../../mod/group.php:177
msgid "Members"
msgstr ""
+#: ../../mod/group.php:209 ../../mod/profperm.php:105
+msgid "Click on a contact to add or remove."
+msgstr ""
+
#: ../../mod/profperm.php:25 ../../mod/profperm.php:55
msgid "Invalid profile identifier."
msgstr ""
@@ -2345,7 +2362,7 @@ msgstr ""
msgid "No contacts."
msgstr ""
-#: ../../mod/viewcontacts.php:73 ../../include/text.php:578
+#: ../../mod/viewcontacts.php:74 ../../include/text.php:584
msgid "View Contacts"
msgstr ""
@@ -2472,7 +2489,7 @@ msgstr ""
msgid "Your invitation ID: "
msgstr ""
-#: ../../mod/register.php:540 ../../mod/admin.php:313
+#: ../../mod/register.php:540 ../../mod/admin.php:314
msgid "Registration"
msgstr ""
@@ -2526,9 +2543,9 @@ msgid "%1$s doesn't like %2$s's %3$s"
msgstr ""
#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:127
-#: ../../mod/admin.php:518 ../../mod/admin.php:694 ../../mod/display.php:29
-#: ../../mod/display.php:134 ../../mod/viewd.php:14
-#: ../../include/items.php:2880
+#: ../../mod/admin.php:522 ../../mod/admin.php:700 ../../mod/display.php:29
+#: ../../mod/display.php:137 ../../mod/viewd.php:14
+#: ../../include/items.php:2942
msgid "Item not found."
msgstr ""
@@ -2563,28 +2580,28 @@ msgstr ""
msgid "Wall Photos"
msgstr ""
-#: ../../mod/item.php:830
+#: ../../mod/item.php:833
msgid "System error. Post not saved."
msgstr ""
-#: ../../mod/item.php:855
+#: ../../mod/item.php:858
#, php-format
msgid ""
"This message was sent to you by %s, a member of the Friendica social network."
msgstr ""
-#: ../../mod/item.php:857
+#: ../../mod/item.php:860
#, php-format
msgid "You may visit them online at %s"
msgstr ""
-#: ../../mod/item.php:858
+#: ../../mod/item.php:861
msgid ""
"Please contact the sender by replying to this post if you do not wish to "
"receive these messages."
msgstr ""
-#: ../../mod/item.php:860
+#: ../../mod/item.php:863
#, php-format
msgid "%s posted an update."
msgstr ""
@@ -2708,7 +2725,7 @@ msgstr ""
msgid "Conversation removed."
msgstr ""
-#: ../../mod/message.php:137 ../../include/conversation.php:868
+#: ../../mod/message.php:137 ../../include/conversation.php:887
msgid "Please enter a link URL:"
msgstr ""
@@ -2762,23 +2779,23 @@ msgstr ""
msgid "No friends to display."
msgstr ""
-#: ../../mod/admin.php:71 ../../mod/admin.php:311
+#: ../../mod/admin.php:71 ../../mod/admin.php:312
msgid "Site"
msgstr ""
-#: ../../mod/admin.php:72 ../../mod/admin.php:476 ../../mod/admin.php:488
+#: ../../mod/admin.php:72 ../../mod/admin.php:480 ../../mod/admin.php:492
msgid "Users"
msgstr ""
-#: ../../mod/admin.php:73 ../../mod/admin.php:565 ../../mod/admin.php:602
+#: ../../mod/admin.php:73 ../../mod/admin.php:569 ../../mod/admin.php:608
msgid "Plugins"
msgstr ""
-#: ../../mod/admin.php:74 ../../mod/admin.php:736 ../../mod/admin.php:768
+#: ../../mod/admin.php:74 ../../mod/admin.php:742 ../../mod/admin.php:775
msgid "Themes"
msgstr ""
-#: ../../mod/admin.php:89 ../../mod/admin.php:846
+#: ../../mod/admin.php:89 ../../mod/admin.php:855
msgid "Logs"
msgstr ""
@@ -2786,325 +2803,439 @@ msgstr ""
msgid "User registrations waiting for confirmation"
msgstr ""
-#: ../../mod/admin.php:160 ../../mod/admin.php:310 ../../mod/admin.php:475
-#: ../../mod/admin.php:564 ../../mod/admin.php:601 ../../mod/admin.php:735
-#: ../../mod/admin.php:767 ../../mod/admin.php:845
+#: ../../mod/admin.php:161 ../../mod/admin.php:311 ../../mod/admin.php:479
+#: ../../mod/admin.php:568 ../../mod/admin.php:607 ../../mod/admin.php:741
+#: ../../mod/admin.php:774 ../../mod/admin.php:854
msgid "Administration"
msgstr ""
-#: ../../mod/admin.php:161
+#: ../../mod/admin.php:162
msgid "Summary"
msgstr ""
-#: ../../mod/admin.php:162
+#: ../../mod/admin.php:163
msgid "Registered users"
msgstr ""
-#: ../../mod/admin.php:164
+#: ../../mod/admin.php:165
msgid "Pending registrations"
msgstr ""
-#: ../../mod/admin.php:165
+#: ../../mod/admin.php:166
msgid "Version"
msgstr ""
-#: ../../mod/admin.php:167
+#: ../../mod/admin.php:168
msgid "Active plugins"
msgstr ""
-#: ../../mod/admin.php:259
+#: ../../mod/admin.php:260
msgid "Site settings updated."
msgstr ""
-#: ../../mod/admin.php:303
+#: ../../mod/admin.php:304
msgid "Closed"
msgstr ""
-#: ../../mod/admin.php:304
+#: ../../mod/admin.php:305
msgid "Requires approval"
msgstr ""
-#: ../../mod/admin.php:305
+#: ../../mod/admin.php:306
msgid "Open"
msgstr ""
-#: ../../mod/admin.php:314
+#: ../../mod/admin.php:315
msgid "File upload"
msgstr ""
-#: ../../mod/admin.php:315
+#: ../../mod/admin.php:316
msgid "Policies"
msgstr ""
-#: ../../mod/admin.php:316
+#: ../../mod/admin.php:317
msgid "Advanced"
msgstr ""
-#: ../../mod/admin.php:320 ../../addon/statusnet/statusnet.php:523
+#: ../../mod/admin.php:321 ../../addon/statusnet/statusnet.php:523
msgid "Site name"
msgstr ""
-#: ../../mod/admin.php:321
+#: ../../mod/admin.php:322
msgid "Banner/Logo"
msgstr ""
-#: ../../mod/admin.php:322
+#: ../../mod/admin.php:323
msgid "System language"
msgstr ""
-#: ../../mod/admin.php:323
+#: ../../mod/admin.php:324
msgid "System theme"
msgstr ""
-#: ../../mod/admin.php:325
+#: ../../mod/admin.php:324
+msgid "Default system theme - may be over-ridden by user profiles"
+msgstr ""
+
+#: ../../mod/admin.php:326
msgid "Maximum image size"
msgstr ""
-#: ../../mod/admin.php:327
-msgid "Register policy"
+#: ../../mod/admin.php:326
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
msgstr ""
#: ../../mod/admin.php:328
+msgid "Register policy"
+msgstr ""
+
+#: ../../mod/admin.php:329
msgid "Register text"
msgstr ""
#: ../../mod/admin.php:329
+msgid "Will be displayed prominently on the registration page."
+msgstr ""
+
+#: ../../mod/admin.php:330
msgid "Accounts abandoned after x days"
msgstr ""
-#: ../../mod/admin.php:329
+#: ../../mod/admin.php:330
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr ""
-#: ../../mod/admin.php:330
+#: ../../mod/admin.php:331
msgid "Allowed friend domains"
msgstr ""
#: ../../mod/admin.php:331
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr ""
+
+#: ../../mod/admin.php:332
msgid "Allowed email domains"
msgstr ""
#: ../../mod/admin.php:332
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr ""
+
+#: ../../mod/admin.php:333
msgid "Block public"
msgstr ""
#: ../../mod/admin.php:333
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently logged in."
+msgstr ""
+
+#: ../../mod/admin.php:334
msgid "Force publish"
msgstr ""
#: ../../mod/admin.php:334
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr ""
+
+#: ../../mod/admin.php:335
msgid "Global directory update URL"
msgstr ""
-#: ../../mod/admin.php:336
+#: ../../mod/admin.php:335
+msgid ""
+"URL to update the global directory. If this is not set, the global directory "
+"is completely unavailable to the application."
+msgstr ""
+
+#: ../../mod/admin.php:337
msgid "Block multiple registrations"
msgstr ""
#: ../../mod/admin.php:337
+msgid "Disallow users to register additional accounts for use as pages."
+msgstr ""
+
+#: ../../mod/admin.php:338
msgid "OpenID support"
msgstr ""
#: ../../mod/admin.php:338
+msgid "OpenID support for registration and logins."
+msgstr ""
+
+#: ../../mod/admin.php:339
msgid "Gravatar support"
msgstr ""
#: ../../mod/admin.php:339
+msgid "Search new user's photo on Gravatar."
+msgstr ""
+
+#: ../../mod/admin.php:340
msgid "Fullname check"
msgstr ""
#: ../../mod/admin.php:340
+msgid ""
+"Force users to register with a space between firstname and lastname in Full "
+"name, as an antispam measure"
+msgstr ""
+
+#: ../../mod/admin.php:341
msgid "UTF-8 Regular expressions"
msgstr ""
#: ../../mod/admin.php:341
+msgid "Use PHP UTF8 regular expressions"
+msgstr ""
+
+#: ../../mod/admin.php:342
msgid "Show Community Page"
msgstr ""
#: ../../mod/admin.php:342
+msgid ""
+"Display a Community page showing all recent public postings on this site."
+msgstr ""
+
+#: ../../mod/admin.php:343
msgid "Enable OStatus support"
msgstr ""
#: ../../mod/admin.php:343
+msgid ""
+"Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All "
+"communications in OStatus are public, so privacy warnings will be "
+"occasionally displayed."
+msgstr ""
+
+#: ../../mod/admin.php:344
msgid "Enable Diaspora support"
msgstr ""
#: ../../mod/admin.php:344
+msgid "Provide built-in Diaspora network compatibility."
+msgstr ""
+
+#: ../../mod/admin.php:345
msgid "Only allow Friendica contacts"
msgstr ""
#: ../../mod/admin.php:345
+msgid ""
+"All contacts must use Friendica protocols. All other built-in communication "
+"protocols disabled."
+msgstr ""
+
+#: ../../mod/admin.php:346
msgid "Verify SSL"
msgstr ""
#: ../../mod/admin.php:346
-msgid "Proxy user"
+msgid ""
+"If you wish, you can turn on strict certificate checking. This will mean you "
+"cannot connect (at all) to self-signed SSL sites."
msgstr ""
#: ../../mod/admin.php:347
-msgid "Proxy URL"
+msgid "Proxy user"
msgstr ""
#: ../../mod/admin.php:348
+msgid "Proxy URL"
+msgstr ""
+
+#: ../../mod/admin.php:349
msgid "Network timeout"
msgstr ""
-#: ../../mod/admin.php:369
+#: ../../mod/admin.php:349
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr ""
+
+#: ../../mod/admin.php:370
#, php-format
-msgid "%s user blocked"
+msgid "%s user blocked/unblocked"
msgid_plural "%s users blocked/unblocked"
msgstr[0] ""
msgstr[1] ""
-#: ../../mod/admin.php:376
+#: ../../mod/admin.php:377
#, php-format
msgid "%s user deleted"
msgid_plural "%s users deleted"
msgstr[0] ""
msgstr[1] ""
-#: ../../mod/admin.php:410
+#: ../../mod/admin.php:411
#, php-format
msgid "User '%s' deleted"
msgstr ""
-#: ../../mod/admin.php:417
+#: ../../mod/admin.php:418
#, php-format
msgid "User '%s' unblocked"
msgstr ""
-#: ../../mod/admin.php:417
+#: ../../mod/admin.php:418
#, php-format
msgid "User '%s' blocked"
msgstr ""
-#: ../../mod/admin.php:478
+#: ../../mod/admin.php:482
msgid "select all"
msgstr ""
-#: ../../mod/admin.php:479
+#: ../../mod/admin.php:483
msgid "User registrations waiting for confirm"
msgstr ""
-#: ../../mod/admin.php:480
+#: ../../mod/admin.php:484
msgid "Request date"
msgstr ""
-#: ../../mod/admin.php:480 ../../mod/admin.php:489
+#: ../../mod/admin.php:484 ../../mod/admin.php:493
#: ../../include/contact_selectors.php:79
msgid "Email"
msgstr ""
-#: ../../mod/admin.php:481
+#: ../../mod/admin.php:485
msgid "No registrations."
msgstr ""
-#: ../../mod/admin.php:483
+#: ../../mod/admin.php:487
msgid "Deny"
msgstr ""
-#: ../../mod/admin.php:489
+#: ../../mod/admin.php:493
msgid "Register date"
msgstr ""
-#: ../../mod/admin.php:489
+#: ../../mod/admin.php:493
msgid "Last login"
msgstr ""
-#: ../../mod/admin.php:489
+#: ../../mod/admin.php:493
msgid "Last item"
msgstr ""
-#: ../../mod/admin.php:489
+#: ../../mod/admin.php:493
msgid "Account"
msgstr ""
-#: ../../mod/admin.php:491
+#: ../../mod/admin.php:495
msgid ""
"Selected users will be deleted!\\n\\nEverything these users had posted on "
"this site will be permanently deleted!\\n\\nAre you sure?"
msgstr ""
-#: ../../mod/admin.php:492
+#: ../../mod/admin.php:496
msgid ""
"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
"site will be permanently deleted!\\n\\nAre you sure?"
msgstr ""
-#: ../../mod/admin.php:528
+#: ../../mod/admin.php:532
#, php-format
msgid "Plugin %s disabled."
msgstr ""
-#: ../../mod/admin.php:532
+#: ../../mod/admin.php:536
#, php-format
msgid "Plugin %s enabled."
msgstr ""
-#: ../../mod/admin.php:542 ../../mod/admin.php:718
+#: ../../mod/admin.php:546 ../../mod/admin.php:724
msgid "Disable"
msgstr ""
-#: ../../mod/admin.php:544 ../../mod/admin.php:720
+#: ../../mod/admin.php:548 ../../mod/admin.php:726
msgid "Enable"
msgstr ""
-#: ../../mod/admin.php:566 ../../mod/admin.php:737
+#: ../../mod/admin.php:570 ../../mod/admin.php:743
msgid "Toggle"
msgstr ""
-#: ../../mod/admin.php:567 ../../mod/admin.php:738 ../../include/nav.php:130
+#: ../../mod/admin.php:571 ../../mod/admin.php:744 ../../include/nav.php:130
msgid "Settings"
msgstr ""
-#: ../../mod/admin.php:683
+#: ../../mod/admin.php:578 ../../mod/admin.php:753
+msgid "Author: "
+msgstr ""
+
+#: ../../mod/admin.php:579 ../../mod/admin.php:754
+msgid "Maintainer: "
+msgstr ""
+
+#: ../../mod/admin.php:689
msgid "No themes found."
msgstr ""
-#: ../../mod/admin.php:795
+#: ../../mod/admin.php:780
+msgid "[Experimental]"
+msgstr ""
+
+#: ../../mod/admin.php:781
+msgid "[Unsupported]"
+msgstr ""
+
+#: ../../mod/admin.php:804
msgid "Log settings updated."
msgstr ""
-#: ../../mod/admin.php:848
+#: ../../mod/admin.php:857
msgid "Clear"
msgstr ""
-#: ../../mod/admin.php:854
+#: ../../mod/admin.php:863
msgid "Debugging"
msgstr ""
-#: ../../mod/admin.php:855
+#: ../../mod/admin.php:864
msgid "Log file"
msgstr ""
-#: ../../mod/admin.php:855
+#: ../../mod/admin.php:864
msgid ""
"Must be writable by web server. Relative to your Friendica top-level "
"directory."
msgstr ""
-#: ../../mod/admin.php:856
+#: ../../mod/admin.php:865
msgid "Log level"
msgstr ""
-#: ../../mod/admin.php:897
+#: ../../mod/admin.php:906
msgid "Close"
msgstr ""
-#: ../../mod/admin.php:903
+#: ../../mod/admin.php:912
msgid "FTP Host"
msgstr ""
-#: ../../mod/admin.php:904
+#: ../../mod/admin.php:913
msgid "FTP Path"
msgstr ""
-#: ../../mod/admin.php:905
+#: ../../mod/admin.php:914
msgid "FTP User"
msgstr ""
-#: ../../mod/admin.php:906
+#: ../../mod/admin.php:915
msgid "FTP Password"
msgstr ""
@@ -3120,48 +3251,48 @@ msgstr ""
msgid "Tips for New Members"
msgstr ""
-#: ../../mod/ping.php:146
+#: ../../mod/ping.php:174
msgid "{0} wants to be your friend"
msgstr ""
-#: ../../mod/ping.php:151
+#: ../../mod/ping.php:179
msgid "{0} sent you a message"
msgstr ""
-#: ../../mod/ping.php:156
+#: ../../mod/ping.php:184
msgid "{0} requested registration"
msgstr ""
-#: ../../mod/ping.php:162
+#: ../../mod/ping.php:190
#, php-format
msgid "{0} commented %s's post"
msgstr ""
-#: ../../mod/ping.php:167
+#: ../../mod/ping.php:195
#, php-format
msgid "{0} liked %s's post"
msgstr ""
-#: ../../mod/ping.php:172
+#: ../../mod/ping.php:200
#, php-format
msgid "{0} disliked %s's post"
msgstr ""
-#: ../../mod/ping.php:177
+#: ../../mod/ping.php:205
#, php-format
msgid "{0} is now friends with %s"
msgstr ""
-#: ../../mod/ping.php:182
+#: ../../mod/ping.php:210
msgid "{0} posted"
msgstr ""
-#: ../../mod/ping.php:187
+#: ../../mod/ping.php:215
#, php-format
msgid "{0} tagged %s's post with #%s"
msgstr ""
-#: ../../mod/ping.php:193
+#: ../../mod/ping.php:221
msgid "{0} mentioned you in a post"
msgstr ""
@@ -3223,7 +3354,7 @@ msgstr ""
msgid "No friends in common."
msgstr ""
-#: ../../mod/display.php:127
+#: ../../mod/display.php:130
msgid "Item has been removed."
msgstr ""
@@ -3589,78 +3720,84 @@ msgid ""
"Once you have registered, please connect with me via my profile page at:"
msgstr ""
-#: ../../mod/dfrn_confirm.php:238
+#: ../../mod/dfrn_confirm.php:119
+msgid ""
+"This may occasionally happen if contact was requested by both persons and it "
+"has already been approved."
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:239
msgid "Response from remote site was not understood."
msgstr ""
-#: ../../mod/dfrn_confirm.php:247
+#: ../../mod/dfrn_confirm.php:248
msgid "Unexpected response from remote site: "
msgstr ""
-#: ../../mod/dfrn_confirm.php:255
+#: ../../mod/dfrn_confirm.php:256
msgid "Confirmation completed successfully."
msgstr ""
-#: ../../mod/dfrn_confirm.php:257 ../../mod/dfrn_confirm.php:271
-#: ../../mod/dfrn_confirm.php:278
+#: ../../mod/dfrn_confirm.php:258 ../../mod/dfrn_confirm.php:272
+#: ../../mod/dfrn_confirm.php:279
msgid "Remote site reported: "
msgstr ""
-#: ../../mod/dfrn_confirm.php:269
+#: ../../mod/dfrn_confirm.php:270
msgid "Temporary failure. Please wait and try again."
msgstr ""
-#: ../../mod/dfrn_confirm.php:276
+#: ../../mod/dfrn_confirm.php:277
msgid "Introduction failed or was revoked."
msgstr ""
-#: ../../mod/dfrn_confirm.php:421
+#: ../../mod/dfrn_confirm.php:422
msgid "Unable to set contact photo."
msgstr ""
-#: ../../mod/dfrn_confirm.php:473 ../../include/diaspora.php:495
+#: ../../mod/dfrn_confirm.php:474 ../../include/diaspora.php:495
#: ../../include/conversation.php:101
#, php-format
msgid "%1$s is now friends with %2$s"
msgstr ""
-#: ../../mod/dfrn_confirm.php:543
+#: ../../mod/dfrn_confirm.php:544
#, php-format
msgid "No user record found for '%s' "
msgstr ""
-#: ../../mod/dfrn_confirm.php:553
+#: ../../mod/dfrn_confirm.php:554
msgid "Our site encryption key is apparently messed up."
msgstr ""
-#: ../../mod/dfrn_confirm.php:564
+#: ../../mod/dfrn_confirm.php:565
msgid "Empty site URL was provided or URL could not be decrypted by us."
msgstr ""
-#: ../../mod/dfrn_confirm.php:585
+#: ../../mod/dfrn_confirm.php:586
msgid "Contact record was not found for you on our site."
msgstr ""
-#: ../../mod/dfrn_confirm.php:599
+#: ../../mod/dfrn_confirm.php:600
#, php-format
msgid "Site public key not available in contact record for URL %s."
msgstr ""
-#: ../../mod/dfrn_confirm.php:619
+#: ../../mod/dfrn_confirm.php:620
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:630
+#: ../../mod/dfrn_confirm.php:631
msgid "Unable to set your contact credentials on our system."
msgstr ""
-#: ../../mod/dfrn_confirm.php:684
+#: ../../mod/dfrn_confirm.php:694
msgid "Unable to update your contact profile details on our system"
msgstr ""
-#: ../../mod/dfrn_confirm.php:714
+#: ../../mod/dfrn_confirm.php:724
#, php-format
msgid "Connection accepted at %s"
msgstr ""
@@ -3773,7 +3910,7 @@ msgid "Facebook post failed. Queued for retry."
msgstr ""
#: ../../addon/facebook/facebook.php:877 ../../addon/facebook/facebook.php:886
-#: ../../include/bb2diaspora.php:132
+#: ../../include/bb2diaspora.php:102
msgid "link"
msgstr ""
@@ -3831,6 +3968,30 @@ msgstr ""
msgid "yourls Settings saved."
msgstr ""
+#: ../../addon/ljpost/ljpost.php:38
+msgid "Post to LiveJournal"
+msgstr ""
+
+#: ../../addon/ljpost/ljpost.php:69
+msgid "LiveJournal Post Settings"
+msgstr ""
+
+#: ../../addon/ljpost/ljpost.php:71
+msgid "Enable LiveJournal Post Plugin"
+msgstr ""
+
+#: ../../addon/ljpost/ljpost.php:76
+msgid "LiveJournal username"
+msgstr ""
+
+#: ../../addon/ljpost/ljpost.php:81
+msgid "LiveJournal password"
+msgstr ""
+
+#: ../../addon/ljpost/ljpost.php:86
+msgid "Post to LiveJournal by default"
+msgstr ""
+
#: ../../addon/nsfw/nsfw.php:47
msgid "\"Not Safe For Work\" Settings"
msgstr ""
@@ -3857,12 +4018,15 @@ msgid "%s - Click to open/close"
msgstr ""
#: ../../addon/communityhome/communityhome.php:28
-#: ../../addon/communityhome/communityhome.php:34 ../../include/nav.php:62
-#: ../../boot.php:710
+#: ../../addon/communityhome/communityhome.php:34
+#: ../../addon/communityhome/twillingham/communityhome.php:28
+#: ../../addon/communityhome/twillingham/communityhome.php:34
+#: ../../include/nav.php:62 ../../boot.php:710
msgid "Login"
msgstr ""
#: ../../addon/communityhome/communityhome.php:29
+#: ../../addon/communityhome/twillingham/communityhome.php:29
msgid "OpenID"
msgstr ""
@@ -3871,6 +4035,7 @@ msgid "Last users"
msgstr ""
#: ../../addon/communityhome/communityhome.php:81
+#: ../../addon/communityhome/twillingham/communityhome.php:81
msgid "Most active users"
msgstr ""
@@ -3882,11 +4047,15 @@ msgstr ""
msgid "Last likes"
msgstr ""
-#: ../../addon/communityhome/communityhome.php:155
+#: ../../addon/communityhome/communityhome.php:155 ../../include/text.php:1224
#: ../../include/conversation.php:45 ../../include/conversation.php:118
msgid "event"
msgstr ""
+#: ../../addon/communityhome/twillingham/communityhome.php:38
+msgid "Latest users"
+msgstr ""
+
#: ../../addon/uhremotestorage/uhremotestorage.php:84
#, php-format
msgid ""
@@ -3973,6 +4142,30 @@ msgstr ""
msgid "Enable Randplace Plugin"
msgstr ""
+#: ../../addon/dwpost/dwpost.php:38
+msgid "Post to Dreamwidth"
+msgstr ""
+
+#: ../../addon/dwpost/dwpost.php:69
+msgid "Dreamwidth Post Settings"
+msgstr ""
+
+#: ../../addon/dwpost/dwpost.php:71
+msgid "Enable dreamwidth Post Plugin"
+msgstr ""
+
+#: ../../addon/dwpost/dwpost.php:76
+msgid "dreamwidth username"
+msgstr ""
+
+#: ../../addon/dwpost/dwpost.php:81
+msgid "dreamwidth password"
+msgstr ""
+
+#: ../../addon/dwpost/dwpost.php:86
+msgid "Post to dreamwidth by default"
+msgstr ""
+
#: ../../addon/drpost/drpost.php:35
msgid "Post to Drupal"
msgstr ""
@@ -4151,10 +4344,16 @@ msgid "Quick Comment Settings"
msgstr ""
#: ../../addon/qcomment/qcomment.php:56
+msgid ""
+"Quick comments are found near comment boxes, sometimes hidden. Click them to "
+"provide simple replies."
+msgstr ""
+
+#: ../../addon/qcomment/qcomment.php:57
msgid "Enter quick comments, one per line"
msgstr ""
-#: ../../addon/qcomment/qcomment.php:74
+#: ../../addon/qcomment/qcomment.php:75
msgid "Quick Comment settings saved."
msgstr ""
@@ -4357,6 +4556,29 @@ msgstr ""
msgid "How many contacts to display on profile sidebar"
msgstr ""
+#: ../../addon/gnot/gnot.php:48
+msgid "Gnot settings updated."
+msgstr ""
+
+#: ../../addon/gnot/gnot.php:79
+msgid "Gnot Settings"
+msgstr ""
+
+#: ../../addon/gnot/gnot.php:81
+msgid ""
+"Allows threading of email comment notifications on Gmail and anonymising the "
+"subject line."
+msgstr ""
+
+#: ../../addon/gnot/gnot.php:82
+msgid "Enable this plugin/addon?"
+msgstr ""
+
+#: ../../addon/gnot/gnot.php:97
+#, php-format
+msgid "[Friendica:Notify] Comment to conversation #%d"
+msgstr ""
+
#: ../../addon/wppost/wppost.php:42
msgid "Post to Wordpress"
msgstr ""
@@ -4507,6 +4729,10 @@ msgstr ""
msgid "Consumer secret"
msgstr ""
+#: ../../addon/irc/irc.php:20
+msgid "irc Chatroom"
+msgstr ""
+
#: ../../addon/posterous/posterous.php:36
msgid "Post to Posterous"
msgstr ""
@@ -4531,6 +4757,22 @@ msgstr ""
msgid "Post to Posterous by default"
msgstr ""
+#: ../../view/theme/quattro/theme.php:17
+msgid "Theme settings"
+msgstr ""
+
+#: ../../view/theme/quattro/theme.php:18
+msgid "Alignment"
+msgstr ""
+
+#: ../../view/theme/quattro/theme.php:18
+msgid "Left"
+msgstr ""
+
+#: ../../view/theme/quattro/theme.php:18
+msgid "Center"
+msgstr ""
+
#: ../../include/profile_advanced.php:17 ../../boot.php:982
msgid "Gender:"
msgstr ""
@@ -4892,142 +5134,154 @@ msgstr ""
msgid "Ask me"
msgstr ""
-#: ../../include/event.php:17 ../../include/bb2diaspora.php:274
+#: ../../include/event.php:17 ../../include/bb2diaspora.php:244
msgid "Starts:"
msgstr ""
-#: ../../include/event.php:27 ../../include/bb2diaspora.php:282
+#: ../../include/event.php:27 ../../include/bb2diaspora.php:252
msgid "Finishes:"
msgstr ""
-#: ../../include/delivery.php:424 ../../include/notifier.php:637
+#: ../../include/delivery.php:425 ../../include/notifier.php:638
msgid "(no subject)"
msgstr ""
-#: ../../include/delivery.php:431 ../../include/enotify.php:16
-#: ../../include/notifier.php:644
+#: ../../include/delivery.php:432 ../../include/enotify.php:17
+#: ../../include/notifier.php:645
msgid "noreply"
msgstr ""
-#: ../../include/text.php:232
+#: ../../include/text.php:238
msgid "prev"
msgstr ""
-#: ../../include/text.php:234
+#: ../../include/text.php:240
msgid "first"
msgstr ""
-#: ../../include/text.php:263
+#: ../../include/text.php:269
msgid "last"
msgstr ""
-#: ../../include/text.php:266
+#: ../../include/text.php:272
msgid "next"
msgstr ""
-#: ../../include/text.php:557
+#: ../../include/text.php:563
msgid "No contacts"
msgstr ""
-#: ../../include/text.php:566
+#: ../../include/text.php:572
#, php-format
msgid "%d Contact"
msgid_plural "%d Contacts"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/text.php:637 ../../include/nav.php:87
+#: ../../include/text.php:643 ../../include/nav.php:87
msgid "Search"
msgstr ""
-#: ../../include/text.php:813
+#: ../../include/text.php:831
msgid "Monday"
msgstr ""
-#: ../../include/text.php:813
+#: ../../include/text.php:831
msgid "Tuesday"
msgstr ""
-#: ../../include/text.php:813
+#: ../../include/text.php:831
msgid "Wednesday"
msgstr ""
-#: ../../include/text.php:813
+#: ../../include/text.php:831
msgid "Thursday"
msgstr ""
-#: ../../include/text.php:813
+#: ../../include/text.php:831
msgid "Friday"
msgstr ""
-#: ../../include/text.php:813
+#: ../../include/text.php:831
msgid "Saturday"
msgstr ""
-#: ../../include/text.php:813
+#: ../../include/text.php:831
msgid "Sunday"
msgstr ""
-#: ../../include/text.php:817
+#: ../../include/text.php:835
msgid "January"
msgstr ""
-#: ../../include/text.php:817
+#: ../../include/text.php:835
msgid "February"
msgstr ""
-#: ../../include/text.php:817
+#: ../../include/text.php:835
msgid "March"
msgstr ""
-#: ../../include/text.php:817
+#: ../../include/text.php:835
msgid "April"
msgstr ""
-#: ../../include/text.php:817
+#: ../../include/text.php:835
msgid "May"
msgstr ""
-#: ../../include/text.php:817
+#: ../../include/text.php:835
msgid "June"
msgstr ""
-#: ../../include/text.php:817
+#: ../../include/text.php:835
msgid "July"
msgstr ""
-#: ../../include/text.php:817
+#: ../../include/text.php:835
msgid "August"
msgstr ""
-#: ../../include/text.php:817
+#: ../../include/text.php:835
msgid "September"
msgstr ""
-#: ../../include/text.php:817
+#: ../../include/text.php:835
msgid "October"
msgstr ""
-#: ../../include/text.php:817
+#: ../../include/text.php:835
msgid "November"
msgstr ""
-#: ../../include/text.php:817
+#: ../../include/text.php:835
msgid "December"
msgstr ""
-#: ../../include/text.php:887
+#: ../../include/text.php:905
msgid "bytes"
msgstr ""
-#: ../../include/text.php:982
+#: ../../include/text.php:1000
msgid "Select an alternate language"
msgstr ""
-#: ../../include/text.php:994
+#: ../../include/text.php:1012
msgid "default"
msgstr ""
+#: ../../include/text.php:1228
+msgid "activity"
+msgstr ""
+
+#: ../../include/text.php:1230
+msgid "comment"
+msgstr ""
+
+#: ../../include/text.php:1231
+msgid "post"
+msgstr ""
+
#: ../../include/diaspora.php:570
msgid "Sharing notification from Diaspora network"
msgstr ""
@@ -5041,6 +5295,10 @@ msgstr ""
msgid "[Relayed] Comment authored by %s from network %s"
msgstr ""
+#: ../../include/network.php:814
+msgid "view full size"
+msgstr ""
+
#: ../../include/oembed.php:128
msgid "Embedded content"
msgstr ""
@@ -5336,7 +5594,7 @@ msgstr ""
msgid "%1$d %2$s ago"
msgstr ""
-#: ../../include/poller.php:474
+#: ../../include/poller.php:513
msgid "From: "
msgstr ""
@@ -5357,15 +5615,15 @@ msgstr ""
msgid "[no subject]"
msgstr ""
-#: ../../include/acl_selectors.php:279
+#: ../../include/acl_selectors.php:284
msgid "Visible to everybody"
msgstr ""
-#: ../../include/acl_selectors.php:280
+#: ../../include/acl_selectors.php:285
msgid "show"
msgstr ""
-#: ../../include/acl_selectors.php:281
+#: ../../include/acl_selectors.php:286
msgid "don't show"
msgstr ""
@@ -5382,172 +5640,191 @@ msgstr ""
msgid "%s Administrator"
msgstr ""
-#: ../../include/enotify.php:28
+#: ../../include/enotify.php:29
#, php-format
-msgid "New mail received at %s"
+msgid "%s "
msgstr ""
-#: ../../include/enotify.php:30
+#: ../../include/enotify.php:33
+#, php-format
+msgid "[Friendica:Notify] New mail received at %s"
+msgstr ""
+
+#: ../../include/enotify.php:35
#, php-format
msgid "%s sent you a new private message at %s."
msgstr ""
-#: ../../include/enotify.php:31
+#: ../../include/enotify.php:36
#, php-format
msgid "%s sent you %s."
msgstr ""
-#: ../../include/enotify.php:31
+#: ../../include/enotify.php:36
msgid "a private message"
msgstr ""
-#: ../../include/enotify.php:32
+#: ../../include/enotify.php:37
#, php-format
msgid "Please visit %s to view and/or reply to your private messages."
msgstr ""
-#: ../../include/enotify.php:40
+#: ../../include/enotify.php:67
#, php-format
-msgid "%s commented on an item at %s"
+msgid "%s's"
msgstr ""
-#: ../../include/enotify.php:41
+#: ../../include/enotify.php:71
+msgid "your"
+msgstr ""
+
+#: ../../include/enotify.php:78
+#, php-format
+msgid "[Friendica:Notify] Comment to conversation #%d by %s"
+msgstr ""
+
+#: ../../include/enotify.php:79
#, php-format
msgid "%s commented on an item/conversation you have been following."
msgstr ""
-#: ../../include/enotify.php:42
+#: ../../include/enotify.php:80
#, php-format
-msgid "%s commented in %s."
+msgid "%s commented on %s."
msgstr ""
-#: ../../include/enotify.php:42
-msgid "a watched conversation"
-msgstr ""
-
-#: ../../include/enotify.php:44 ../../include/enotify.php:54
-#: ../../include/enotify.php:64 ../../include/enotify.php:74
+#: ../../include/enotify.php:82 ../../include/enotify.php:95
+#: ../../include/enotify.php:106 ../../include/enotify.php:117
#, php-format
msgid "Please visit %s to view and/or reply to the conversation."
msgstr ""
-#: ../../include/enotify.php:51
+#: ../../include/enotify.php:89
+#, php-format
+msgid "[Friendica:Notify] %s posted to your profile wall"
+msgstr ""
+
+#: ../../include/enotify.php:91
#, php-format
msgid "%s posted to your profile wall at %s"
msgstr ""
-#: ../../include/enotify.php:52
+#: ../../include/enotify.php:93
#, php-format
msgid "%s posted to %s"
msgstr ""
-#: ../../include/enotify.php:52
+#: ../../include/enotify.php:93
msgid "your profile wall."
msgstr ""
-#: ../../include/enotify.php:61
+#: ../../include/enotify.php:102
#, php-format
-msgid "%s tagged you at %s"
-msgstr ""
-
-#: ../../include/enotify.php:62
-#, php-format
-msgid "%s %s."
-msgstr ""
-
-#: ../../include/enotify.php:62
-msgid "tagged you"
-msgstr ""
-
-#: ../../include/enotify.php:71
-#, php-format
-msgid "%s tagged your post at %s"
-msgstr ""
-
-#: ../../include/enotify.php:72
-#, php-format
-msgid "%s tagged %s"
-msgstr ""
-
-#: ../../include/enotify.php:72
-msgid "your post"
-msgstr ""
-
-#: ../../include/enotify.php:81
-#, php-format
-msgid "Introduction received at %s"
-msgstr ""
-
-#: ../../include/enotify.php:82
-#, php-format
-msgid "You've received an introduction from '%s' at %s"
-msgstr ""
-
-#: ../../include/enotify.php:83
-#, php-format
-msgid "You've received %s from %s."
-msgstr ""
-
-#: ../../include/enotify.php:83
-msgid "an introduction"
-msgstr ""
-
-#: ../../include/enotify.php:84 ../../include/enotify.php:101
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr ""
-
-#: ../../include/enotify.php:86
-#, php-format
-msgid "Please visit %s to approve or reject the introduction."
-msgstr ""
-
-#: ../../include/enotify.php:93
-#, php-format
-msgid "Friend suggestion received at %s"
-msgstr ""
-
-#: ../../include/enotify.php:94
-#, php-format
-msgid "You've received a friend suggestion from '%s' at %s"
-msgstr ""
-
-#: ../../include/enotify.php:95
-#, php-format
-msgid "You've received %s for %s from %s."
-msgstr ""
-
-#: ../../include/enotify.php:96
-msgid "a friend suggestion"
-msgstr ""
-
-#: ../../include/enotify.php:99
-msgid "Name:"
-msgstr ""
-
-#: ../../include/enotify.php:100
-msgid "Photo:"
+msgid "[Friendica:Notify] %s tagged you"
msgstr ""
#: ../../include/enotify.php:103
#, php-format
+msgid "%s tagged you at %s"
+msgstr ""
+
+#: ../../include/enotify.php:104
+#, php-format
+msgid "%s %s."
+msgstr ""
+
+#: ../../include/enotify.php:104
+msgid "tagged you"
+msgstr ""
+
+#: ../../include/enotify.php:113
+#, php-format
+msgid "[Friendica:Notify] %s tagged your post"
+msgstr ""
+
+#: ../../include/enotify.php:114
+#, php-format
+msgid "%s tagged your post at %s"
+msgstr ""
+
+#: ../../include/enotify.php:115
+#, php-format
+msgid "%s tagged %s"
+msgstr ""
+
+#: ../../include/enotify.php:115
+msgid "your post"
+msgstr ""
+
+#: ../../include/enotify.php:124
+msgid "[Friendica:Notify] Introduction received"
+msgstr ""
+
+#: ../../include/enotify.php:125
+#, php-format
+msgid "You've received an introduction from '%s' at %s"
+msgstr ""
+
+#: ../../include/enotify.php:126
+#, php-format
+msgid "You've received %s from %s."
+msgstr ""
+
+#: ../../include/enotify.php:126
+msgid "an introduction"
+msgstr ""
+
+#: ../../include/enotify.php:127 ../../include/enotify.php:144
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr ""
+
+#: ../../include/enotify.php:129
+#, php-format
+msgid "Please visit %s to approve or reject the introduction."
+msgstr ""
+
+#: ../../include/enotify.php:136
+msgid "[Friendica:Notify] Friend suggestion received"
+msgstr ""
+
+#: ../../include/enotify.php:137
+#, php-format
+msgid "You've received a friend suggestion from '%s' at %s"
+msgstr ""
+
+#: ../../include/enotify.php:138
+#, php-format
+msgid "You've received %s for %s from %s."
+msgstr ""
+
+#: ../../include/enotify.php:139
+msgid "a friend suggestion"
+msgstr ""
+
+#: ../../include/enotify.php:142
+msgid "Name:"
+msgstr ""
+
+#: ../../include/enotify.php:143
+msgid "Photo:"
+msgstr ""
+
+#: ../../include/enotify.php:146
+#, php-format
msgid "Please visit %s to approve or reject the suggestion."
msgstr ""
-#: ../../include/items.php:2511
+#: ../../include/items.php:2573
msgid "A new person is sharing with you at "
msgstr ""
-#: ../../include/items.php:2511
+#: ../../include/items.php:2573
msgid "You have a new follower at "
msgstr ""
-#: ../../include/bb2diaspora.php:83
-msgid "view full size"
-msgstr ""
-
-#: ../../include/bb2diaspora.php:132 ../../include/bb2diaspora.php:142
-#: ../../include/bb2diaspora.php:143
+#: ../../include/bb2diaspora.php:102 ../../include/bb2diaspora.php:112
+#: ../../include/bb2diaspora.php:113
msgid "image/photo"
msgstr ""
@@ -5563,25 +5840,25 @@ msgstr ""
msgid "Welcome back "
msgstr ""
-#: ../../include/Contact.php:131 ../../include/conversation.php:769
+#: ../../include/Contact.php:131 ../../include/conversation.php:788
msgid "View status"
msgstr ""
-#: ../../include/Contact.php:132 ../../include/conversation.php:770
+#: ../../include/Contact.php:132 ../../include/conversation.php:789
msgid "View profile"
msgstr ""
-#: ../../include/Contact.php:133 ../../include/conversation.php:771
+#: ../../include/Contact.php:133 ../../include/conversation.php:790
msgid "View photos"
msgstr ""
#: ../../include/Contact.php:134 ../../include/Contact.php:147
-#: ../../include/conversation.php:772
+#: ../../include/conversation.php:791
msgid "View recent"
msgstr ""
#: ../../include/Contact.php:136 ../../include/Contact.php:147
-#: ../../include/conversation.php:774
+#: ../../include/conversation.php:793
msgid "Send PM"
msgstr ""
@@ -5594,188 +5871,188 @@ msgstr ""
msgid "%1$s marked %2$s's %3$s as favorite"
msgstr ""
-#: ../../include/conversation.php:301 ../../include/conversation.php:562
+#: ../../include/conversation.php:303 ../../include/conversation.php:572
msgid "Select"
msgstr ""
-#: ../../include/conversation.php:316 ../../include/conversation.php:648
-#: ../../include/conversation.php:649
+#: ../../include/conversation.php:320 ../../include/conversation.php:665
+#: ../../include/conversation.php:666
#, php-format
msgid "View %s's profile @ %s"
msgstr ""
-#: ../../include/conversation.php:325 ../../include/conversation.php:660
+#: ../../include/conversation.php:330 ../../include/conversation.php:677
#, php-format
msgid "%s from %s"
msgstr ""
-#: ../../include/conversation.php:341
+#: ../../include/conversation.php:346
msgid "View in context"
msgstr ""
-#: ../../include/conversation.php:456
+#: ../../include/conversation.php:467
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:459 ../../boot.php:448
+#: ../../include/conversation.php:468 ../../boot.php:448
msgid "show more"
msgstr ""
-#: ../../include/conversation.php:519
+#: ../../include/conversation.php:529
msgid "like"
msgstr ""
-#: ../../include/conversation.php:520
+#: ../../include/conversation.php:530
msgid "dislike"
msgstr ""
-#: ../../include/conversation.php:522
+#: ../../include/conversation.php:532
msgid "Share this"
msgstr ""
-#: ../../include/conversation.php:522
+#: ../../include/conversation.php:532
msgid "share"
msgstr ""
-#: ../../include/conversation.php:572
+#: ../../include/conversation.php:582
msgid "add star"
msgstr ""
-#: ../../include/conversation.php:573
+#: ../../include/conversation.php:583
msgid "remove star"
msgstr ""
-#: ../../include/conversation.php:574
+#: ../../include/conversation.php:584
msgid "toggle star status"
msgstr ""
-#: ../../include/conversation.php:577
+#: ../../include/conversation.php:587
msgid "starred"
msgstr ""
-#: ../../include/conversation.php:578
+#: ../../include/conversation.php:588
msgid "add tag"
msgstr ""
-#: ../../include/conversation.php:650
+#: ../../include/conversation.php:667
msgid "to"
msgstr ""
-#: ../../include/conversation.php:651
+#: ../../include/conversation.php:668
msgid "Wall-to-Wall"
msgstr ""
-#: ../../include/conversation.php:652
+#: ../../include/conversation.php:669
msgid "via Wall-To-Wall:"
msgstr ""
-#: ../../include/conversation.php:694
+#: ../../include/conversation.php:713
msgid "Delete Selected Items"
msgstr ""
-#: ../../include/conversation.php:826
+#: ../../include/conversation.php:845
#, php-format
msgid "%s likes this."
msgstr ""
-#: ../../include/conversation.php:826
+#: ../../include/conversation.php:845
#, php-format
msgid "%s doesn't like this."
msgstr ""
-#: ../../include/conversation.php:830
+#: ../../include/conversation.php:849
#, php-format
msgid "%2$d people like this."
msgstr ""
-#: ../../include/conversation.php:832
+#: ../../include/conversation.php:851
#, php-format
msgid "%2$d people don't like this."
msgstr ""
-#: ../../include/conversation.php:838
+#: ../../include/conversation.php:857
msgid "and"
msgstr ""
-#: ../../include/conversation.php:841
+#: ../../include/conversation.php:860
#, php-format
msgid ", and %d other people"
msgstr ""
-#: ../../include/conversation.php:842
+#: ../../include/conversation.php:861
#, php-format
msgid "%s like this."
msgstr ""
-#: ../../include/conversation.php:842
+#: ../../include/conversation.php:861
#, php-format
msgid "%s don't like this."
msgstr ""
-#: ../../include/conversation.php:867
+#: ../../include/conversation.php:886
msgid "Visible to everybody"
msgstr ""
-#: ../../include/conversation.php:869
+#: ../../include/conversation.php:888
msgid "Please enter a video link/URL:"
msgstr ""
-#: ../../include/conversation.php:870
+#: ../../include/conversation.php:889
msgid "Please enter an audio link/URL:"
msgstr ""
-#: ../../include/conversation.php:871
+#: ../../include/conversation.php:890
msgid "Tag term:"
msgstr ""
-#: ../../include/conversation.php:872
+#: ../../include/conversation.php:891
msgid "Where are you right now?"
msgstr ""
-#: ../../include/conversation.php:873
+#: ../../include/conversation.php:892
msgid "Enter a title for this item"
msgstr ""
-#: ../../include/conversation.php:916
+#: ../../include/conversation.php:935
msgid "upload photo"
msgstr ""
-#: ../../include/conversation.php:918
+#: ../../include/conversation.php:937
msgid "attach file"
msgstr ""
-#: ../../include/conversation.php:920
+#: ../../include/conversation.php:939
msgid "web link"
msgstr ""
-#: ../../include/conversation.php:921
+#: ../../include/conversation.php:940
msgid "Insert video link"
msgstr ""
-#: ../../include/conversation.php:922
+#: ../../include/conversation.php:941
msgid "video link"
msgstr ""
-#: ../../include/conversation.php:923
+#: ../../include/conversation.php:942
msgid "Insert audio link"
msgstr ""
-#: ../../include/conversation.php:924
+#: ../../include/conversation.php:943
msgid "audio link"
msgstr ""
-#: ../../include/conversation.php:926
+#: ../../include/conversation.php:945
msgid "set location"
msgstr ""
-#: ../../include/conversation.php:928
+#: ../../include/conversation.php:947
msgid "clear location"
msgstr ""
-#: ../../include/conversation.php:933
+#: ../../include/conversation.php:952
msgid "permissions"
msgstr ""
diff --git a/view/acl_selector.tpl b/view/acl_selector.tpl
old mode 100755
new mode 100644
index 3f8a9e7d26..655ea89807
--- a/view/acl_selector.tpl
+++ b/view/acl_selector.tpl
@@ -19,7 +19,7 @@ $(document).ready(function() {
if(typeof acl=="undefined"){
acl = new ACL(
baseurl+"/acl",
- [$allowcid,$allowgid,$denycid,$denygid]
+ [ $allowcid,$allowgid,$denycid,$denygid ]
);
}
});
diff --git a/view/admin_plugins_details.tpl b/view/admin_plugins_details.tpl
index d7147b20b9..ead356f5b9 100755
--- a/view/admin_plugins_details.tpl
+++ b/view/admin_plugins_details.tpl
@@ -4,13 +4,18 @@
$info.name - $info.version : $action
$info.description
-
+
$str_author
{{ for $info.author as $a }}
{{ if $a.link }}$a.name{{ else }}$a.name{{ endif }},
{{ endfor }}
-
+ $str_maintainer
+ {{ for $info.maintainer as $a }}
+ {{ if $a.link }}$a.name{{ else }}$a.name{{ endif }},
+ {{ endfor }}
+
+
{{ if $admin_form }}
$settings