Merge branch 'master' of https://github.com/friendica/friendica into threaded_items

Conflicts:
	include/conversation.php
This commit is contained in:
Domovoy 2012-09-10 09:19:08 +02:00
commit bb68461c6d
123 changed files with 9903 additions and 2946 deletions

2
.gitignore vendored
View file

@ -21,3 +21,5 @@ report/
.buildpath
.externalToolBuilders
.settings
view/theme/smoothly

View file

@ -15,6 +15,16 @@ Deny from all
# Also place auth information into REMOTE_USER for sites running
# in CGI mode.
# If you have troubles or use VirtualDocumentRoot
# uncomment this and set it to the path where your friendica installation is
# i.e.:
# Friendica url: http://some.example.com
# RewriteBase /
# Friendica url: http://some.example.com/friendica
# RewriteBase /friendica/
#
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]

View file

@ -11,7 +11,7 @@ require_once('include/cache.php');
require_once('library/Mobile_Detect/Mobile_Detect.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_VERSION', '3.0.1449' );
define ( 'FRIENDICA_VERSION', '3.0.1461' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1154 );
@ -472,6 +472,7 @@ if(! class_exists('App')) {
$this->argc = count($this->argv);
if((array_key_exists('0',$this->argv)) && strlen($this->argv[0])) {
$this->module = str_replace(".", "_", $this->argv[0]);
$this->module = str_replace("-", "_", $this->module);
}
else {
$this->argc = 1;
@ -479,16 +480,6 @@ if(! class_exists('App')) {
$this->module = 'home';
}
/**
* Special handling for the webfinger/lrdd host XRD file
*/
if($this->cmd === '.well-known/host-meta') {
$this->argc = 1;
$this->argv = array('hostxrd');
$this->module = 'hostxrd';
}
/**
* See if there is any page number information, and initialise
* pagination
@ -1034,11 +1025,29 @@ if(! function_exists('get_max_import_size')) {
if(! function_exists('profile_load')) {
function profile_load(&$a, $nickname, $profile = 0) {
if(remote_user()) {
$r = q("SELECT `profile-id` FROM `contact` WHERE `id` = %d LIMIT 1",
intval($_SESSION['visitor_id']));
if(count($r))
$profile = $r[0]['profile-id'];
$user = q("select uid from user where nickname = '%s' limit 1",
dbesc($nickname)
);
if(! ($user && count($user))) {
logger('profile error: ' . $a->query_string, LOGGER_DEBUG);
notice( t('Requested account is not available.') . EOL );
$a->error = 404;
return;
}
if(remote_user() && count($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $visitor) {
if($visitor['uid'] == $user[0]['uid']) {
$r = q("SELECT `profile-id` FROM `contact` WHERE `id` = %d LIMIT 1",
intval($visitor['cid'])
);
if(count($r))
$profile = $r[0]['profile-id'];
break;
}
}
}
$r = null;
@ -1079,9 +1088,12 @@ if(! function_exists('profile_load')) {
$a->profile = $r[0];
$a->profile['mobile-theme'] = get_pconfig($profile_uid, 'system', 'mobile_theme');
$a->page['title'] = $a->profile['name'] . " @ " . $a->config['sitename'];
$_SESSION['theme'] = $a->profile['theme'];
$_SESSION['mobile-theme'] = $a->profile['mobile-theme'];
/**
* load/reload current theme info
@ -1153,8 +1165,14 @@ if(! function_exists('profile_sidebar')) {
// don't show connect link to authenticated visitors either
if((remote_user()) && ($_SESSION['visitor_visiting'] == $profile['uid']))
$connect = False;
if(remote_user() && count($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $visitor) {
if($visitor['uid'] == $profile['uid']) {
$connect = false;
break;
}
}
}
if(get_my_url() && $profile['unkmail'])
$wallmessage = t('Message');
@ -1477,7 +1495,7 @@ if(! function_exists('proc_run')) {
$cmdline = implode($args," ");
if(get_config('system','proc_windows'))
proc_close(proc_open('start /b ' . $cmdline,array(),$foo));
proc_close(proc_open('cmd /c start /b ' . $cmdline,array(),$foo));
else
proc_close(proc_open($cmdline." &",array(),$foo));
}
@ -1495,6 +1513,12 @@ if(! function_exists('current_theme')) {
if($is_mobile) {
$system_theme = ((isset($a->config['system']['mobile-theme'])) ? $a->config['system']['mobile-theme'] : '');
$theme_name = ((isset($_SESSION) && x($_SESSION,'mobile-theme')) ? $_SESSION['mobile-theme'] : $system_theme);
if($theme_name === '---') {
// user has selected to have the mobile theme be the same as the normal one
$system_theme = '';
$theme_name = '';
}
}
if(!$is_mobile || ($system_theme === '' && $theme_name === '')) {
$system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : '');

View file

@ -295,7 +295,11 @@ class Photo {
if( (! function_exists('exif_read_data')) || ($this->getType() !== 'image/jpeg') )
return;
$exif = exif_read_data($filename);
$exif = @exif_read_data($filename);
if(! $exif)
return;
$ort = $exif['Orientation'];
switch($ort)

View file

@ -563,9 +563,10 @@ function probe_url($url, $mode = PROBE_NORMAL) {
else
$poll = $tapi . '?screen_name=' . $tid;
$profile = 'http://twitter.com/#!/' . $tid;
$vcard['photo'] = 'https://api.twitter.com/1/users/profile_image/' . $tid;
//$vcard['photo'] = 'https://api.twitter.com/1/users/profile_image/' . $tid;
$vcard['photo'] = 'https://api.twitter.com/1/users/profile_image?screen_name=' . $tid . '&size=bigger';
$vcard['nick'] = $tid;
$vcard['fn'] = $tid . '@twitter';
$vcard['fn'] = $tid;
}
if($lastfm) {

View file

@ -10,14 +10,13 @@ function nuke_session() {
unset($_SESSION['administrator']);
unset($_SESSION['cid']);
unset($_SESSION['theme']);
unset($_SESSION['mobile-theme']);
unset($_SESSION['page_flags']);
unset($_SESSION['submanage']);
unset($_SESSION['my_url']);
unset($_SESSION['my_address']);
unset($_SESSION['addr']);
unset($_SESSION['return_url']);
unset($_SESSION['theme']);
unset($_SESSION['page_flags']);
}

View file

@ -68,7 +68,7 @@ function get_config($family, $key, $instore = false) {
);
if(count($ret)) {
// manage array value
$val = (preg_match("|^a:[0-9]+:{.*}$|", $ret[0]['v'])?unserialize( $ret[0]['v']):$ret[0]['v']);
$val = (preg_match("|^a:[0-9]+:{.*}$|s", $ret[0]['v'])?unserialize( $ret[0]['v']):$ret[0]['v']);
$a->config[$family][$key] = $val;
return $val;
}
@ -162,7 +162,7 @@ function get_pconfig($uid,$family, $key, $instore = false) {
);
if(count($ret)) {
$val = (preg_match("|^a:[0-9]+:{.*}$|", $ret[0]['v'])?unserialize( $ret[0]['v']):$ret[0]['v']);
$val = (preg_match("|^a:[0-9]+:{.*}$|s", $ret[0]['v'])?unserialize( $ret[0]['v']):$ret[0]['v']);
$a->config[$uid][$family][$key] = $val;
return $val;
}

View file

@ -142,9 +142,16 @@ function common_friends_visitor_widget($profile_uid) {
$cid = $zcid = 0;
if(can_write_wall($a,$profile_uid))
$cid = remote_user();
else {
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $visitor) {
if($visitor['uid'] == $profile_uid) {
$cid = $visitor['cid'];
break;
}
}
}
if(! $cid) {
if(get_my_url()) {
$r = q("select id from contact where nurl = '%s' and uid = %d limit 1",
dbesc(normalise_link(get_my_url())),

View file

@ -9,82 +9,82 @@ require_once("include/bbcode.php");
if(! function_exists('item_extract_images')) {
function item_extract_images($body) {
$saved_image = array();
$orig_body = $body;
$new_body = '';
$saved_image = array();
$orig_body = $body;
$new_body = '';
$cnt = 0;
$img_start = strpos($orig_body, '[img');
$img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
$img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false);
while(($img_st_close !== false) && ($img_end !== false)) {
$cnt = 0;
$img_start = strpos($orig_body, '[img');
$img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
$img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false);
while(($img_st_close !== false) && ($img_end !== false)) {
$img_st_close++; // make it point to AFTER the closing bracket
$img_end += $img_start;
$img_st_close++; // make it point to AFTER the closing bracket
$img_end += $img_start;
if(! strcmp(substr($orig_body, $img_start + $img_st_close, 5), 'data:')) {
// This is an embedded image
if(! strcmp(substr($orig_body, $img_start + $img_st_close, 5), 'data:')) {
// This is an embedded image
$saved_image[$cnt] = substr($orig_body, $img_start + $img_st_close, $img_end - ($img_start + $img_st_close));
$new_body = $new_body . substr($orig_body, 0, $img_start) . '[!#saved_image' . $cnt . '#!]';
$saved_image[$cnt] = substr($orig_body, $img_start + $img_st_close, $img_end - ($img_start + $img_st_close));
$new_body = $new_body . substr($orig_body, 0, $img_start) . '[!#saved_image' . $cnt . '#!]';
$cnt++;
}
else
$new_body = $new_body . substr($orig_body, 0, $img_end + strlen('[/img]'));
$cnt++;
}
else
$new_body = $new_body . substr($orig_body, 0, $img_end + strlen('[/img]'));
$orig_body = substr($orig_body, $img_end + strlen('[/img]'));
$orig_body = substr($orig_body, $img_end + strlen('[/img]'));
if($orig_body === false) // in case the body ends on a closing image tag
$orig_body = '';
if($orig_body === false) // in case the body ends on a closing image tag
$orig_body = '';
$img_start = strpos($orig_body, '[img');
$img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
$img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false);
}
$img_start = strpos($orig_body, '[img');
$img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
$img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false);
}
$new_body = $new_body . $orig_body;
$new_body = $new_body . $orig_body;
return array('body' => $new_body, 'images' => $saved_image);
return array('body' => $new_body, 'images' => $saved_image);
}}
if(! function_exists('item_redir_and_replace_images')) {
function item_redir_and_replace_images($body, $images, $cid) {
$origbody = $body;
$newbody = '';
$origbody = $body;
$newbody = '';
$cnt = 1;
$pos = get_bb_tag_pos($origbody, 'url', 1);
while($pos !== false && $cnt < 1000) {
$cnt = 1;
$pos = get_bb_tag_pos($origbody, 'url', 1);
while($pos !== false && $cnt < 1000) {
$search = '/\[url\=(.*?)\]\[!#saved_image([0-9]*)#!\]\[\/url\]' . '/is';
$replace = '[url=' . z_path() . '/redir/' . $cid
. '?f=1&url=' . '$1' . '][!#saved_image' . '$2' .'#!][/url]';
$search = '/\[url\=(.*?)\]\[!#saved_image([0-9]*)#!\]\[\/url\]' . '/is';
$replace = '[url=' . z_path() . '/redir/' . $cid
. '?f=1&url=' . '$1' . '][!#saved_image' . '$2' .'#!][/url]';
$newbody .= substr($origbody, 0, $pos['start']['open']);
$subject = substr($origbody, $pos['start']['open'], $pos['end']['close'] - $pos['start']['open']);
$origbody = substr($origbody, $pos['end']['close']);
if($origbody === false)
$origbody = '';
$newbody .= substr($origbody, 0, $pos['start']['open']);
$subject = substr($origbody, $pos['start']['open'], $pos['end']['close'] - $pos['start']['open']);
$origbody = substr($origbody, $pos['end']['close']);
if($origbody === false)
$origbody = '';
$subject = preg_replace($search, $replace, $subject);
$newbody .= $subject;
$subject = preg_replace($search, $replace, $subject);
$newbody .= $subject;
$cnt++;
$pos = get_bb_tag_pos($origbody, 'url', 1);
}
$newbody .= $origbody;
$cnt++;
$pos = get_bb_tag_pos($origbody, 'url', 1);
}
$newbody .= $origbody;
$cnt = 0;
foreach($images as $image) {
// We're depending on the property of 'foreach' (specified on the PHP website) that
// it loops over the array starting from the first element and going sequentially
// to the last element
$newbody = str_replace('[!#saved_image' . $cnt . '#!]', '[img]' . $image . '[/img]', $newbody);
$cnt++;
}
return $newbody;
$cnt = 0;
foreach($images as $image) {
// We're depending on the property of 'foreach' (specified on the PHP website) that
// it loops over the array starting from the first element and going sequentially
// to the last element
$newbody = str_replace('[!#saved_image' . $cnt . '#!]', '[img]' . $image . '[/img]', $newbody);
$cnt++;
}
return $newbody;
}}
@ -94,231 +94,231 @@ function item_redir_and_replace_images($body, $images, $cid) {
*/
function localize_item(&$item){
$extracted = item_extract_images($item['body']);
if($extracted['images'])
$item['body'] = item_redir_and_replace_images($extracted['body'], $extracted['images'], $item['contact-id']);
$extracted = item_extract_images($item['body']);
if($extracted['images'])
$item['body'] = item_redir_and_replace_images($extracted['body'], $extracted['images'], $item['contact-id']);
$xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
if ($item['verb']=== ACTIVITY_LIKE || $item['verb']=== ACTIVITY_DISLIKE){
$xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
if ($item['verb']=== ACTIVITY_LIKE || $item['verb']=== ACTIVITY_DISLIKE){
$r = q("SELECT * from `item`,`contact` WHERE
`item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';",
dbesc($item['parent-uri']));
if(count($r)==0) return;
$obj=$r[0];
$author = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]';
$objauthor = '[url=' . $obj['author-link'] . ']' . $obj['author-name'] . '[/url]';
switch($obj['verb']){
case ACTIVITY_POST:
switch ($obj['object-type']){
case ACTIVITY_OBJ_EVENT:
$post_type = t('event');
break;
default:
$post_type = t('status');
}
break;
default:
if($obj['resource-id']){
$post_type = t('photo');
$m=array(); preg_match("/\[url=([^]]*)\]/", $obj['body'], $m);
$rr['plink'] = $m[1];
} else {
$post_type = t('status');
}
}
$plink = '[url=' . $obj['plink'] . ']' . $post_type . '[/url]';
switch($item['verb']){
case ACTIVITY_LIKE :
$bodyverb = t('%1$s likes %2$s\'s %3$s');
break;
case ACTIVITY_DISLIKE:
$bodyverb = t('%1$s doesn\'t like %2$s\'s %3$s');
break;
}
$item['body'] = sprintf($bodyverb, $author, $objauthor, $plink);
}
if ($item['verb']=== ACTIVITY_FRIEND){
$r = q("SELECT * from `item`,`contact` WHERE
`item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';",
dbesc($item['parent-uri']));
if(count($r)==0) return;
$obj=$r[0];
if ($item['object-type']=="" || $item['object-type']!== ACTIVITY_OBJ_PERSON) return;
$author = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]';
$objauthor = '[url=' . $obj['author-link'] . ']' . $obj['author-name'] . '[/url]';
$Aname = $item['author-name'];
$Alink = $item['author-link'];
$xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
$obj = parse_xml_string($xmlhead.$item['object']);
$links = parse_xml_string($xmlhead."<links>".unxmlify($obj->link)."</links>");
$Bname = $obj->title;
$Blink = ""; $Bphoto = "";
foreach ($links->link as $l){
$atts = $l->attributes();
switch($atts['rel']){
case "alternate": $Blink = $atts['href'];
case "photo": $Bphoto = $atts['href'];
}
}
$A = '[url=' . zrl($Alink) . ']' . $Aname . '[/url]';
$B = '[url=' . zrl($Blink) . ']' . $Bname . '[/url]';
if ($Bphoto!="") $Bphoto = '[url=' . zrl($Blink) . '][img]' . $Bphoto . '[/img][/url]';
switch($obj['verb']){
case ACTIVITY_POST:
switch ($obj['object-type']){
case ACTIVITY_OBJ_EVENT:
$post_type = t('event');
break;
default:
$post_type = t('status');
}
break;
default:
if($obj['resource-id']){
$post_type = t('photo');
$m=array(); preg_match("/\[url=([^]]*)\]/", $obj['body'], $m);
$rr['plink'] = $m[1];
} else {
$post_type = t('status');
}
}
$item['body'] = sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$Bphoto;
$plink = '[url=' . $obj['plink'] . ']' . $post_type . '[/url]';
}
if (stristr($item['verb'],ACTIVITY_POKE)) {
$verb = urldecode(substr($item['verb'],strpos($item['verb'],'#')+1));
if(! $verb)
return;
if ($item['object-type']=="" || $item['object-type']!== ACTIVITY_OBJ_PERSON) return;
switch($item['verb']){
case ACTIVITY_LIKE :
$bodyverb = t('%1$s likes %2$s\'s %3$s');
break;
case ACTIVITY_DISLIKE:
$bodyverb = t('%1$s doesn\'t like %2$s\'s %3$s');
break;
}
$item['body'] = sprintf($bodyverb, $author, $objauthor, $plink);
$Aname = $item['author-name'];
$Alink = $item['author-link'];
$xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
$obj = parse_xml_string($xmlhead.$item['object']);
$links = parse_xml_string($xmlhead."<links>".unxmlify($obj->link)."</links>");
$Bname = $obj->title;
$Blink = ""; $Bphoto = "";
foreach ($links->link as $l){
$atts = $l->attributes();
switch($atts['rel']){
case "alternate": $Blink = $atts['href'];
case "photo": $Bphoto = $atts['href'];
}
}
$A = '[url=' . zrl($Alink) . ']' . $Aname . '[/url]';
$B = '[url=' . zrl($Blink) . ']' . $Bname . '[/url]';
if ($Bphoto!="") $Bphoto = '[url=' . zrl($Blink) . '][img=80x80]' . $Bphoto . '[/img][/url]';
}
if ($item['verb']=== ACTIVITY_FRIEND){
// we can't have a translation string with three positions but no distinguishable text
// So here is the translate string.
if ($item['object-type']=="" || $item['object-type']!== ACTIVITY_OBJ_PERSON) return;
$txt = t('%1$s poked %2$s');
$Aname = $item['author-name'];
$Alink = $item['author-link'];
// now translate the verb
$xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
$txt = str_replace( t('poked'), t($verb), $txt);
$obj = parse_xml_string($xmlhead.$item['object']);
$links = parse_xml_string($xmlhead."<links>".unxmlify($obj->link)."</links>");
// then do the sprintf on the translation string
$Bname = $obj->title;
$Blink = ""; $Bphoto = "";
foreach ($links->link as $l){
$atts = $l->attributes();
switch($atts['rel']){
case "alternate": $Blink = $atts['href'];
case "photo": $Bphoto = $atts['href'];
}
$item['body'] = sprintf($txt, $A, $B). "\n\n\n" . $Bphoto;
}
}
if (stristr($item['verb'],ACTIVITY_MOOD)) {
$verb = urldecode(substr($item['verb'],strpos($item['verb'],'#')+1));
if(! $verb)
return;
$A = '[url=' . zrl($Alink) . ']' . $Aname . '[/url]';
$B = '[url=' . zrl($Blink) . ']' . $Bname . '[/url]';
if ($Bphoto!="") $Bphoto = '[url=' . zrl($Blink) . '][img]' . $Bphoto . '[/img][/url]';
$Aname = $item['author-name'];
$Alink = $item['author-link'];
$A = '[url=' . zrl($Alink) . ']' . $Aname . '[/url]';
$txt = t('%1$s is currently %2$s');
$item['body'] = sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$Bphoto;
$item['body'] = sprintf($txt, $A, t($verb));
}
}
if (stristr($item['verb'],ACTIVITY_POKE)) {
$verb = urldecode(substr($item['verb'],strpos($item['verb'],'#')+1));
if(! $verb)
return;
if ($item['object-type']=="" || $item['object-type']!== ACTIVITY_OBJ_PERSON) return;
$Aname = $item['author-name'];
$Alink = $item['author-link'];
$xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
$obj = parse_xml_string($xmlhead.$item['object']);
$links = parse_xml_string($xmlhead."<links>".unxmlify($obj->link)."</links>");
$Bname = $obj->title;
$Blink = ""; $Bphoto = "";
foreach ($links->link as $l){
$atts = $l->attributes();
switch($atts['rel']){
case "alternate": $Blink = $atts['href'];
case "photo": $Bphoto = $atts['href'];
}
}
$A = '[url=' . zrl($Alink) . ']' . $Aname . '[/url]';
$B = '[url=' . zrl($Blink) . ']' . $Bname . '[/url]';
if ($Bphoto!="") $Bphoto = '[url=' . zrl($Blink) . '][img=80x80]' . $Bphoto . '[/img][/url]';
// we can't have a translation string with three positions but no distinguishable text
// So here is the translate string.
$txt = t('%1$s poked %2$s');
// now translate the verb
$txt = str_replace( t('poked'), t($verb), $txt);
// then do the sprintf on the translation string
$item['body'] = sprintf($txt, $A, $B). "\n\n\n" . $Bphoto;
}
if (stristr($item['verb'],ACTIVITY_MOOD)) {
$verb = urldecode(substr($item['verb'],strpos($item['verb'],'#')+1));
if(! $verb)
return;
$Aname = $item['author-name'];
$Alink = $item['author-link'];
$A = '[url=' . zrl($Alink) . ']' . $Aname . '[/url]';
$txt = t('%1$s is currently %2$s');
$item['body'] = sprintf($txt, $A, t($verb));
}
if ($item['verb']===ACTIVITY_TAG){
$r = q("SELECT * from `item`,`contact` WHERE
`item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';",
dbesc($item['parent-uri']));
if(count($r)==0) return;
$obj=$r[0];
$author = '[url=' . zrl($item['author-link']) . ']' . $item['author-name'] . '[/url]';
$objauthor = '[url=' . zrl($obj['author-link']) . ']' . $obj['author-name'] . '[/url]';
switch($obj['verb']){
case ACTIVITY_POST:
switch ($obj['object-type']){
case ACTIVITY_OBJ_EVENT:
$post_type = t('event');
break;
default:
$post_type = t('status');
}
break;
default:
if($obj['resource-id']){
$post_type = t('photo');
$m=array(); preg_match("/\[url=([^]]*)\]/", $obj['body'], $m);
$rr['plink'] = $m[1];
} else {
$post_type = t('status');
}
}
$plink = '[url=' . $obj['plink'] . ']' . $post_type . '[/url]';
$parsedobj = parse_xml_string($xmlhead.$item['object']);
$tag = sprintf('#[url=%s]%s[/url]', $parsedobj->id, $parsedobj->content);
$item['body'] = sprintf( t('%1$s tagged %2$s\'s %3$s with %4$s'), $author, $objauthor, $plink, $tag );
}
if ($item['verb']=== ACTIVITY_FAVORITE){
$r = q("SELECT * from `item`,`contact` WHERE
`item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';",
dbesc($item['parent-uri']));
if(count($r)==0) return;
$obj=$r[0];
if ($item['object-type']== "")
return;
$author = '[url=' . zrl($item['author-link']) . ']' . $item['author-name'] . '[/url]';
$objauthor = '[url=' . zrl($obj['author-link']) . ']' . $obj['author-name'] . '[/url]';
$Aname = $item['author-name'];
$Alink = $item['author-link'];
$xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
$obj = parse_xml_string($xmlhead.$item['object']);
if(strlen($obj->id)) {
$r = q("select * from item where uri = '%s' and uid = %d limit 1",
dbesc($obj->id),
intval($item['uid'])
);
if(count($r) && $r[0]['plink']) {
$target = $r[0];
$Bname = $target['author-name'];
$Blink = $target['author-link'];
$A = '[url=' . zrl($Alink) . ']' . $Aname . '[/url]';
$B = '[url=' . zrl($Blink) . ']' . $Bname . '[/url]';
$P = '[url=' . $target['plink'] . ']' . t('post/item') . '[/url]';
$item['body'] = sprintf( t('%1$s marked %2$s\'s %3$s as favorite'), $A, $B, $P)."\n";
switch($obj['verb']){
case ACTIVITY_POST:
switch ($obj['object-type']){
case ACTIVITY_OBJ_EVENT:
$post_type = t('event');
break;
default:
$post_type = t('status');
}
break;
default:
if($obj['resource-id']){
$post_type = t('photo');
$m=array(); preg_match("/\[url=([^]]*)\]/", $obj['body'], $m);
$rr['plink'] = $m[1];
} else {
$post_type = t('status');
}
}
$plink = '[url=' . $obj['plink'] . ']' . $post_type . '[/url]';
}
}
}
$matches = null;
if(preg_match_all('/@\[url=(.*?)\]/is',$item['body'],$matches,PREG_SET_ORDER)) {
foreach($matches as $mtch) {
if(! strpos($mtch[1],'zrl='))
$item['body'] = str_replace($mtch[0],'@[url=' . zrl($mtch[1]). ']',$item['body']);
}
}
$parsedobj = parse_xml_string($xmlhead.$item['object']);
// add zrl's to public images
$photo_pattern = "/\[url=(.*?)\/photos\/(.*?)\/image\/(.*?)\]\[img(.*?)\]h(.*?)\[\/img\]\[\/url\]/is";
if(preg_match($photo_pattern,$item['body'])) {
$photo_replace = '[url=' . zrl('$1' . '/photos/' . '$2' . '/image/' . '$3' ,true) . '][img' . '$4' . ']h' . '$5' . '[/img][/url]';
$item['body'] = bb_tag_preg_replace($photo_pattern, $photo_replace, 'url', $item['body']);
}
$tag = sprintf('#[url=%s]%s[/url]', $parsedobj->id, $parsedobj->content);
$item['body'] = sprintf( t('%1$s tagged %2$s\'s %3$s with %4$s'), $author, $objauthor, $plink, $tag );
// add sparkle links to appropriate permalinks
}
if ($item['verb']=== ACTIVITY_FAVORITE){
$x = stristr($item['plink'],'/display/');
if($x) {
$sparkle = false;
$y = best_link_url($item,$sparkle,true);
if(strstr($y,'/redir/'))
$item['plink'] = $y . '?f=&url=' . $item['plink'];
}
if ($item['object-type']== "")
return;
$Aname = $item['author-name'];
$Alink = $item['author-link'];
$xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
$obj = parse_xml_string($xmlhead.$item['object']);
if(strlen($obj->id)) {
$r = q("select * from item where uri = '%s' and uid = %d limit 1",
dbesc($obj->id),
intval($item['uid'])
);
if(count($r) && $r[0]['plink']) {
$target = $r[0];
$Bname = $target['author-name'];
$Blink = $target['author-link'];
$A = '[url=' . zrl($Alink) . ']' . $Aname . '[/url]';
$B = '[url=' . zrl($Blink) . ']' . $Bname . '[/url]';
$P = '[url=' . $target['plink'] . ']' . t('post/item') . '[/url]';
$item['body'] = sprintf( t('%1$s marked %2$s\'s %3$s as favorite'), $A, $B, $P)."\n";
}
}
}
$matches = null;
if(preg_match_all('/@\[url=(.*?)\]/is',$item['body'],$matches,PREG_SET_ORDER)) {
foreach($matches as $mtch) {
if(! strpos($mtch[1],'zrl='))
$item['body'] = str_replace($mtch[0],'@[url=' . zrl($mtch[1]). ']',$item['body']);
}
}
// add zrl's to public images
$photo_pattern = "/\[url=(.*?)\/photos\/(.*?)\/image\/(.*?)\]\[img(.*?)\]h(.*?)\[\/img\]\[\/url\]/is";
if(preg_match($photo_pattern,$item['body'])) {
$photo_replace = '[url=' . zrl('$1' . '/photos/' . '$2' . '/image/' . '$3' ,true) . '][img' . '$4' . ']h' . '$5' . '[/img][/url]';
$item['body'] = bb_tag_preg_replace($photo_pattern, $photo_replace, 'url', $item['body']);
}
// add sparkle links to appropriate permalinks
$x = stristr($item['plink'],'/display/');
if($x) {
$sparkle = false;
$y = best_link_url($item,$sparkle,true);
if(strstr($y,'/redir/'))
$item['plink'] = $y . '?f=&url=' . $item['plink'];
}
@ -328,353 +328,373 @@ function localize_item(&$item){
* Count the total of comments on this item and its desendants
*/
function count_descendants($item) {
$total = count($item['children']);
$total = count($item['children']);
if($total > 0) {
foreach($item['children'] as $child) {
if($child['verb'] === ACTIVITY_LIKE || $child['verb'] === ACTIVITY_DISLIKE) {
$total --;
}
$total += count_descendants($child);
}
}
if($total > 0) {
foreach($item['children'] as $child) {
if($child['verb'] === ACTIVITY_LIKE || $child['verb'] === ACTIVITY_DISLIKE) {
$total --;
}
$total += count_descendants($child);
}
}
return $total;
return $total;
}
/**
* Recursively prepare a thread for HTML
*/
function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $profile_owner, $alike, $dlike, $thread_level=1) {
$result = array();
function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $profile_owner, $alike, $dlike, $previewing, $thread_level=1) {
$result = array();
$wall_template = 'wall_thread.tpl';
$wallwall_template = 'wallwall_thread.tpl';
$items_seen = 0;
$nb_items = count($items);
$total_children = $nb_items;
foreach($items as $item) {
if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
// Don't count it as a visible item
$nb_items--;
$total_children --;
}
if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) {
$nb_items --;
$total_children --;
$wall_template = 'wall_thread.tpl';
$wallwall_template = 'wallwall_thread.tpl';
$items_seen = 0;
$nb_items = count($items);
}
}
$total_children = $nb_items;
foreach($items as $item) {
// prevent private email reply to public conversation from leaking.
if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
continue;
}
foreach($items as $item) {
if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
// Don't count it as a visible item
$nb_items--;
$total_children --;
}
if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) {
$nb_items --;
$total_children --;
if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) {
continue;
}
$items_seen++;
$comment = '';
$template = $wall_template;
$commentww = '';
$sparkle = '';
$owner_url = $owner_photo = $owner_name = '';
$buttons = '';
$dropping = false;
$star = false;
$isstarred = "unstarred";
$photo = $item['photo'];
$thumb = $item['thumb'];
$indent = '';
$osparkle = '';
$lastcollapsed = false;
$firstcollapsed = false;
$total_children += count_descendants($item);
}
}
$toplevelpost = (($item['id'] == $item['parent']) ? true : false);
$item_writeable = (($item['writable'] || $item['self']) ? true : false);
$show_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false);
$lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
|| strlen($item['deny_cid']) || strlen($item['deny_gid']))))
? t('Private Message')
: false);
$redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $item['cid'] ;
$shareable = ((($profile_owner == local_user()) && ($item['private'] != 1)) ? true : false);
if(local_user() && link_compare($a->contact['url'],$item['author-link']))
$edpost = array($a->get_baseurl($ssl_state)."/editpost/".$item['id'], t("Edit"));
else
$edpost = false;
if((intval($item['contact-id']) && $item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
$dropping = true;
foreach($items as $item) {
// prevent private email reply to public conversation from leaking.
if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
continue;
}
$drop = array(
'dropping' => $dropping,
'select' => t('Select'),
'delete' => t('Delete'),
);
$filer = (($profile_owner == local_user()) ? t("save to folder") : false);
if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) {
continue;
}
$diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true);
$profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']);
if($item['author-link'] && (! $item['author-name']))
$profile_name = $item['author-link'];
$items_seen++;
$sp = false;
$profile_link = best_link_url($item,$sp);
if($profile_link === 'mailbox')
$profile_link = '';
if($sp)
$sparkle = ' sparkle';
else
$profile_link = zrl($profile_link);
$comment = '';
$template = $wall_template;
$commentww = '';
$sparkle = '';
$owner_url = $owner_photo = $owner_name = '';
$buttons = '';
$dropping = false;
$star = false;
$isstarred = "unstarred";
$photo = $item['photo'];
$thumb = $item['thumb'];
$indent = '';
$osparkle = '';
$visiting = false;
$lastcollapsed = false;
$firstcollapsed = false;
$total_children += count_descendants($item);
$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
if(($normalised != 'mailbox') && (x($a->contacts,$normalised)))
$profile_avatar = $a->contacts[$normalised]['thumb'];
else
$profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->get_cached_avatar_image($thumb));
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
call_hooks('render_location',$locate);
$location = ((strlen($locate['html'])) ? $locate['html'] : render_location_google($locate));
$tags=array();
foreach(explode(',',$item['tag']) as $tag){
$tag = trim($tag);
if ($tag!="") $tags[] = bbcode($tag);
}
$like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : '');
$dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : '');
if($toplevelpost) {
if((! $item['self']) && ($mode !== 'profile')) {
if($item['wall']) {
// On the network page, I am the owner. On the display page it will be the profile owner.
// This will have been stored in $a->page_contact by our calling page.
// Put this person as the wall owner of the wall-to-wall notice.
$owner_url = zrl($a->page_contact['url']);
$owner_photo = $a->page_contact['thumb'];
$owner_name = $a->page_contact['name'];
$template = $wallwall_template;
$commentww = 'ww';
}
else if($item['owner-link']) {
$owner_linkmatch = (($item['owner-link']) && link_compare($item['owner-link'],$item['author-link']));
$alias_linkmatch = (($item['alias']) && link_compare($item['alias'],$item['author-link']));
$owner_namematch = (($item['owner-name']) && $item['owner-name'] == $item['author-name']);
if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) {
// The author url doesn't match the owner (typically the contact)
// and also doesn't match the contact alias.
// The name match is a hack to catch several weird cases where URLs are
// all over the park. It can be tricked, but this prevents you from
// seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn
// well that it's the same Bob Smith.
// But it could be somebody else with the same name. It just isn't highly likely.
$owner_url = $item['owner-link'];
$owner_photo = $item['owner-avatar'];
$owner_name = $item['owner-name'];
$template = $wallwall_template;
$commentww = 'ww';
// If it is our contact, use a friendly redirect link
if((link_compare($item['owner-link'],$item['url']))
&& ($item['network'] === NETWORK_DFRN)) {
$owner_url = $redirect_url;
$osparkle = ' sparkle';
}
else
$owner_url = zrl($owner_url);
}
}
}
if($profile_owner == local_user()) {
$isstarred = (($item['starred']) ? "starred" : "unstarred");
$star = array(
'do' => t("add star"),
'undo' => t("remove star"),
'toggle' => t("toggle star status"),
'classdo' => (($item['starred']) ? "hidden" : ""),
'classundo' => (($item['starred']) ? "" : "hidden"),
'starred' => t('starred'),
'tagger' => t("add tag"),
'classtagger' => "",
);
}
} else {
$indent = 'comment';
// Collapse comments
if(($nb_items > 2) || ($thread_level > 2)) {
if($items_seen == 1) {
$firstcollapsed = true;
}
if($thread_level > 2) {
if($items_seen == $nb_items)
$lastcollapsed = true;
}
else if($items_seen == ($nb_items - 2)) {
$lastcollapsed = true;
}
}
}
if(intval(get_config('system','thread_allow')) && $a->theme_thread_allow) {
$comments_threaded = true;
}
else {
$comments_threaded = false;
}
if($page_writeable) {
$buttons = array(
'like' => array( t("I like this \x28toggle\x29"), t("like")),
'dislike' => array( t("I don't like this \x28toggle\x29"), t("dislike")),
);
if ($shareable) $buttons['share'] = array( t('Share this'), t('share'));
$toplevelpost = (($item['id'] == $item['parent']) ? true : false);
if($show_comment_box) {
$qc = $qcomment = null;
if($item['uid'] == local_user())
$dropping = true;
elseif(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $visitor) {
if($visitor['cid'] == $item['contact-id']) {
$dropping = true;
$visiting = true;
break;
}
}
}
if(in_array('qcomment',$a->plugins)) {
$qc = ((local_user()) ? get_pconfig(local_user(),'qcomment','words') : null);
$qcomment = (($qc) ? explode("\n",$qc) : null);
}
$comment = replace_macros($cmnt_tpl,array(
'$return_path' => '',
'$threaded' => $comments_threaded,
'$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''),
'$type' => (($mode === 'profile') ? 'wall-comment' : 'net-comment'),
'$id' => $item['item_id'],
'$parent' => $item['item_id'],
'$qcomment' => $qcomment,
'$profile_uid' => $profile_owner,
'$mylink' => $a->contact['url'],
'$mytitle' => t('This is you'),
'$myphoto' => $a->contact['thumb'],
'$comment' => t('Comment'),
'$submit' => t('Submit'),
'$edbold' => t('Bold'),
'$editalic' => t('Italic'),
'$eduline' => t('Underline'),
'$edquote' => t('Quote'),
'$edcode' => t('Code'),
'$edimg' => t('Image'),
'$edurl' => t('Link'),
'$edvideo' => t('Video'),
'$preview' => t('Preview'),
'$indent' => $indent,
'$sourceapp' => t($a->sourcename),
'$ww' => (($mode === 'network') ? $commentww : '')
));
}
}
$item_writeable = (($item['writable'] || $item['self']) ? true : false);
if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
$indent .= ' shiny';
// This will allow us to comment on wall-to-wall items owned by our friends
// and community forums even if somebody else wrote the post.
localize_item($item);
if($visiting && $mode == 'profile')
$item_writeable = true;
$body = prepare_body($item,true);
$show_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false);
$lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
|| strlen($item['deny_cid']) || strlen($item['deny_gid']))))
? t('Private Message')
: false);
$redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $item['cid'] ;
$shareable = ((($profile_owner == local_user()) && ($item['private'] != 1)) ? true : false);
if(local_user() && link_compare($a->contact['url'],$item['author-link']))
$edpost = array($a->get_baseurl($ssl_state)."/editpost/".$item['id'], t("Edit"));
else
$edpost = false;
$tmp_item = array(
// collapse comments in template. I don't like this much...
'comment_firstcollapsed' => $firstcollapsed,
'comment_lastcollapsed' => $lastcollapsed,
// template to use to render item (wall, walltowall, search)
'template' => $template,
'type' => implode("",array_slice(explode("/",$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'), $owner_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']),
'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'),
$drop = array(
'dropping' => $dropping,
'select' => t('Select'),
'delete' => t('Delete'),
);
'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,
'filer' => $filer,
'drop' => $drop,
'vote' => $buttons,
'like' => $like,
'dislike' => $dislike,
'comment' => $comment,
'previewing' => $previewing,
'wait' => t('Please wait'),
'thread_level' => $thread_level,
);
$filer = (($profile_owner == local_user()) ? t("save to folder") : false);
$arr = array('item' => $item, 'output' => $tmp_item);
call_hooks('display_item', $arr);
$diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true);
$profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']);
if($item['author-link'] && (! $item['author-name']))
$profile_name = $item['author-link'];
$item_result = $arr['output'];
if($firstcollapsed) {
$item_result['num_comments'] = sprintf( tt('%d comment','%d comments',$total_children),$total_children );
$item_result['hide_text'] = t('show more');
}
$sp = false;
$profile_link = best_link_url($item,$sp);
if($profile_link === 'mailbox')
$profile_link = '';
if($sp)
$sparkle = ' sparkle';
else
$profile_link = zrl($profile_link);
$item_result['children'] = array();
if(count($item['children'])) {
$item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $page_writeable, $mode, $profile_owner, $alike, $dlike, ($thread_level + 1));
}
$item_result['private'] = $item['private'];
$item_result['toplevel'] = ($toplevelpost ? 'toplevel_item' : '');
$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
if(($normalised != 'mailbox') && (x($a->contacts,$normalised)))
$profile_avatar = $a->contacts[$normalised]['thumb'];
else
$profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->get_cached_avatar_image($thumb));
/*
* I don't like this very much...
*/
if(get_config('system','thread_allow') && $a->theme_thread_allow) {
$item_result['flatten'] = false;
$item_result['threaded'] = true;
}
else {
$item_result['flatten'] = true;
$item_result['threaded'] = false;
if(!$toplevelpost) {
$item_result['comment'] = false;
}
}
$result[] = $item_result;
}
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
call_hooks('render_location',$locate);
$location = ((strlen($locate['html'])) ? $locate['html'] : render_location_google($locate));
return $result;
$tags=array();
foreach(explode(',',$item['tag']) as $tag){
$tag = trim($tag);
if ($tag!="") $tags[] = bbcode($tag);
}
$like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : '');
$dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : '');
if($toplevelpost) {
if((! $item['self']) && ($mode !== 'profile')) {
if($item['wall']) {
// On the network page, I am the owner. On the display page it will be the profile owner.
// This will have been stored in $a->page_contact by our calling page.
// Put this person as the wall owner of the wall-to-wall notice.
$owner_url = zrl($a->page_contact['url']);
$owner_photo = $a->page_contact['thumb'];
$owner_name = $a->page_contact['name'];
$template = $wallwall_template;
$commentww = 'ww';
}
else if($item['owner-link']) {
$owner_linkmatch = (($item['owner-link']) && link_compare($item['owner-link'],$item['author-link']));
$alias_linkmatch = (($item['alias']) && link_compare($item['alias'],$item['author-link']));
$owner_namematch = (($item['owner-name']) && $item['owner-name'] == $item['author-name']);
if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) {
// The author url doesn't match the owner (typically the contact)
// and also doesn't match the contact alias.
// The name match is a hack to catch several weird cases where URLs are
// all over the park. It can be tricked, but this prevents you from
// seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn
// well that it's the same Bob Smith.
// But it could be somebody else with the same name. It just isn't highly likely.
$owner_url = $item['owner-link'];
$owner_photo = $item['owner-avatar'];
$owner_name = $item['owner-name'];
$template = $wallwall_template;
$commentww = 'ww';
// If it is our contact, use a friendly redirect link
if((link_compare($item['owner-link'],$item['url']))
&& ($item['network'] === NETWORK_DFRN)) {
$owner_url = $redirect_url;
$osparkle = ' sparkle';
}
else
$owner_url = zrl($owner_url);
}
}
}
if($profile_owner == local_user()) {
$isstarred = (($item['starred']) ? "starred" : "unstarred");
$star = array(
'do' => t("add star"),
'undo' => t("remove star"),
'toggle' => t("toggle star status"),
'classdo' => (($item['starred']) ? "hidden" : ""),
'classundo' => (($item['starred']) ? "" : "hidden"),
'starred' => t('starred'),
'tagger' => t("add tag"),
'classtagger' => "",
);
}
} else {
$indent = 'comment';
// Collapse comments
if(($nb_items > 2) || ($thread_level > 2)) {
if($items_seen == 1) {
$firstcollapsed = true;
}
if($thread_level > 2) {
if($items_seen == $nb_items)
$lastcollapsed = true;
}
else if($items_seen == ($nb_items - 2)) {
$lastcollapsed = true;
}
}
}
if(intval(get_config('system','thread_allow')) && $a->theme_thread_allow) {
$comments_threaded = true;
}
else {
$comments_threaded = false;
}
if($page_writeable) {
$buttons = array(
'like' => array( t("I like this \x28toggle\x29"), t("like")),
'dislike' => array( t("I don't like this \x28toggle\x29"), t("dislike")),
);
if ($shareable) $buttons['share'] = array( t('Share this'), t('share'));
if($show_comment_box) {
$qc = $qcomment = null;
if(in_array('qcomment',$a->plugins)) {
$qc = ((local_user()) ? get_pconfig(local_user(),'qcomment','words') : null);
$qcomment = (($qc) ? explode("\n",$qc) : null);
}
$comment = replace_macros($cmnt_tpl,array(
'$return_path' => '',
'$threaded' => $comments_threaded,
'$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''),
'$type' => (($mode === 'profile') ? 'wall-comment' : 'net-comment'),
'$id' => $item['item_id'],
'$parent' => $item['item_id'],
'$qcomment' => $qcomment,
'$profile_uid' => $profile_owner,
'$mylink' => $a->contact['url'],
'$mytitle' => t('This is you'),
'$myphoto' => $a->contact['thumb'],
'$comment' => t('Comment'),
'$submit' => t('Submit'),
'$edbold' => t('Bold'),
'$editalic' => t('Italic'),
'$eduline' => t('Underline'),
'$edquote' => t('Quote'),
'$edcode' => t('Code'),
'$edimg' => t('Image'),
'$edurl' => t('Link'),
'$edvideo' => t('Video'),
'$preview' => t('Preview'),
'$indent' => $indent,
'$sourceapp' => t($a->sourcename),
'$ww' => (($mode === 'network') ? $commentww : '')
));
}
}
if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
$indent .= ' shiny';
localize_item($item);
$body = prepare_body($item,true);
$tmp_item = array(
// collapse comments in template. I don't like this much...
'comment_firstcollapsed' => $firstcollapsed,
'comment_lastcollapsed' => $lastcollapsed,
// template to use to render item (wall, walltowall, search)
'template' => $template,
'type' => implode("",array_slice(explode("/",$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'), $owner_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']),
'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'),
'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,
'filer' => $filer,
'drop' => $drop,
'vote' => $buttons,
'like' => $like,
'dislike' => $dislike,
'comment' => $comment,
'previewing' => $previewing,
'wait' => t('Please wait'),
'thread_level' => $thread_level,
);
$arr = array('item' => $item, 'output' => $tmp_item);
call_hooks('display_item', $arr);
$item_result = $arr['output'];
if($firstcollapsed) {
$item_result['num_comments'] = sprintf( tt('%d comment','%d comments',$total_children),$total_children );
$item_result['hide_text'] = t('show more');
}
$item_result['children'] = array();
if(count($item['children'])) {
$item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $page_writeable, $mode, $profile_owner, $alike, $dlike, $previewing, ($thread_level + 1));
}
$item_result['private'] = $item['private'];
$item_result['toplevel'] = ($toplevelpost ? 'toplevel_item' : '');
/*
* I don't like this very much...
*/
if(get_config('system','thread_allow') && $a->theme_thread_allow) {
$item_result['flatten'] = false;
$item_result['threaded'] = true;
}
else {
$item_result['flatten'] = true;
$item_result['threaded'] = false;
if(!$toplevelpost) {
$item_result['comment'] = false;
}
}
$result[] = $item_result;
}
return $result;
}
/**
@ -683,7 +703,7 @@ function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $pr
* - Sequential or unthreaded ("New Item View" or search results)
* - conversation view
* The $mode parameter decides between the various renderings and also
* figures out how to determine page owner and other contextual items
* figures out how to determine page owner and other contextual items
* that are based on unique features of the calling module.
*
*/
@ -692,388 +712,388 @@ if(!function_exists('conversation')) {
function conversation(&$a, $items, $mode, $update, $preview = false) {
require_once('bbcode.php');
require_once('bbcode.php');
$ssl_state = ((local_user()) ? true : false);
$ssl_state = ((local_user()) ? true : false);
$profile_owner = 0;
$page_writeable = false;
$profile_owner = 0;
$page_writeable = false;
$previewing = (($preview) ? ' preview ' : '');
$previewing = (($preview) ? ' preview ' : '');
if($mode === 'network') {
$profile_owner = local_user();
$page_writeable = true;
}
if($mode === 'network') {
$profile_owner = local_user();
$page_writeable = true;
}
if($mode === 'profile') {
$profile_owner = $a->profile['profile_uid'];
$page_writeable = can_write_wall($a,$profile_owner);
}
if($mode === 'profile') {
$profile_owner = $a->profile['profile_uid'];
$page_writeable = can_write_wall($a,$profile_owner);
}
if($mode === 'notes') {
$profile_owner = local_user();
$page_writeable = true;
}
if($mode === 'notes') {
$profile_owner = local_user();
$page_writeable = true;
}
if($mode === 'display') {
$profile_owner = $a->profile['uid'];
$page_writeable = can_write_wall($a,$profile_owner);
}
if($mode === 'display') {
$profile_owner = $a->profile['uid'];
$page_writeable = can_write_wall($a,$profile_owner);
}
if($mode === 'community') {
$profile_owner = 0;
$page_writeable = false;
}
if($mode === 'community') {
$profile_owner = 0;
$page_writeable = false;
}
$page_dropping = ((local_user() && local_user() == $profile_owner) ? true : false);
$page_dropping = ((local_user() && local_user() == $profile_owner) ? true : false);
if($update)
$return_url = $_SESSION['return_url'];
else
$return_url = $_SESSION['return_url'] = $a->query_string;
if($update)
$return_url = $_SESSION['return_url'];
else
$return_url = $_SESSION['return_url'] = $a->query_string;
load_contact_links(local_user());
load_contact_links(local_user());
$cb = array('items' => $items, 'mode' => $mode, 'update' => $update, 'preview' => $preview);
call_hooks('conversation_start',$cb);
$cb = array('items' => $items, 'mode' => $mode, 'update' => $update, 'preview' => $preview);
call_hooks('conversation_start',$cb);
$items = $cb['items'];
$items = $cb['items'];
$cmnt_tpl = get_markup_template('comment_item.tpl');
$tpl = 'wall_item.tpl';
$wallwall = 'wallwall_item.tpl';
$hide_comments_tpl = get_markup_template('hide_comments.tpl');
$cmnt_tpl = get_markup_template('comment_item.tpl');
$tpl = 'wall_item.tpl';
$wallwall = 'wallwall_item.tpl';
$hide_comments_tpl = get_markup_template('hide_comments.tpl');
$alike = array();
$dlike = array();
// array with html for each thread (parent+comments)
$threads = array();
$threadsid = -1;
$alike = array();
$dlike = array();
$page_template = get_markup_template("conversation.tpl");
if($items && count($items)) {
if($mode === 'network-new' || $mode === 'search' || $mode === 'community') {
// array with html for each thread (parent+comments)
$threads = array();
$threadsid = -1;
// "New Item View" on network page or search page results
// - just loop through the items and format them minimally for display
$page_template = get_markup_template("conversation.tpl");
//$tpl = get_markup_template('search_item.tpl');
$tpl = 'search_item.tpl';
if($items && count($items)) {
foreach($items as $item) {
$threadsid++;
if($mode === 'network-new' || $mode === 'search' || $mode === 'community') {
$comment = '';
$owner_url = '';
$owner_photo = '';
$owner_name = '';
$sparkle = '';
// "New Item View" on network page or search page results
// - just loop through the items and format them minimally for display
if($mode === 'search' || $mode === 'community') {
if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE)))
&& ($item['id'] != $item['parent']))
continue;
$nickname = $item['nickname'];
}
else
$nickname = $a->user['nickname'];
// prevent private email from leaking.
if($item['network'] === NETWORK_MAIL && local_user() != $item['uid'])
continue;
$profile_name = ((strlen($item['author-name'])) ? $item['author-name'] : $item['name']);
if($item['author-link'] && (! $item['author-name']))
$profile_name = $item['author-link'];
//$tpl = get_markup_template('search_item.tpl');
$tpl = 'search_item.tpl';
foreach($items as $item) {
$threadsid++;
$comment = '';
$owner_url = '';
$owner_photo = '';
$owner_name = '';
$sparkle = '';
if($mode === 'search' || $mode === 'community') {
if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE)))
&& ($item['id'] != $item['parent']))
continue;
$nickname = $item['nickname'];
}
else
$nickname = $a->user['nickname'];
// prevent private email from leaking.
if($item['network'] === NETWORK_MAIL && local_user() != $item['uid'])
continue;
$profile_name = ((strlen($item['author-name'])) ? $item['author-name'] : $item['name']);
if($item['author-link'] && (! $item['author-name']))
$profile_name = $item['author-link'];
$sp = false;
$profile_link = best_link_url($item,$sp);
if($profile_link === 'mailbox')
$profile_link = '';
if($sp)
$sparkle = ' sparkle';
else
$profile_link = zrl($profile_link);
$sp = false;
$profile_link = best_link_url($item,$sp);
if($profile_link === 'mailbox')
$profile_link = '';
if($sp)
$sparkle = ' sparkle';
else
$profile_link = zrl($profile_link);
$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
$profile_avatar = $a->contacts[$normalised]['thumb'];
else
$profile_avatar = ((strlen($item['author-avatar'])) ? $a->get_cached_avatar_image($item['author-avatar']) : $item['thumb']);
$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
$profile_avatar = $a->contacts[$normalised]['thumb'];
else
$profile_avatar = ((strlen($item['author-avatar'])) ? $a->get_cached_avatar_image($item['author-avatar']) : $item['thumb']);
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
call_hooks('render_location',$locate);
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
call_hooks('render_location',$locate);
$location = ((strlen($locate['html'])) ? $locate['html'] : render_location_google($locate));
$location = ((strlen($locate['html'])) ? $locate['html'] : render_location_google($locate));
localize_item($item);
if($mode === 'network-new')
$dropping = true;
else
$dropping = false;
localize_item($item);
if($mode === 'network-new')
$dropping = true;
else
$dropping = false;
$drop = array(
'dropping' => $dropping,
'select' => t('Select'),
'delete' => t('Delete'),
);
$drop = array(
'dropping' => $dropping,
'select' => t('Select'),
'delete' => t('Delete'),
);
$star = false;
$isstarred = "unstarred";
$lock = false;
$likebuttons = false;
$shareable = false;
$star = false;
$isstarred = "unstarred";
$body = prepare_body($item,true);
//$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)),
'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'),
'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])),
'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($ssl_state) . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))),
'previewing' => $previewing,
'wait' => t('Please wait'),
'thread_level' => 1,
);
$lock = false;
$likebuttons = false;
$shareable = false;
$arr = array('item' => $item, 'output' => $tmp_item);
call_hooks('display_item', $arr);
$body = prepare_body($item,true);
$threads[$threadsid]['id'] = $item['item_id'];
$threads[$threadsid]['items'] = array($arr['output']);
//$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)),
'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'),
'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])),
'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($ssl_state) . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))),
'previewing' => $previewing,
'wait' => t('Please wait'),
'thread_level' => 1,
);
}
$arr = array('item' => $item, 'output' => $tmp_item);
call_hooks('display_item', $arr);
}
else
{
// Normal View
$page_template = get_markup_template("threaded_conversation.tpl");
$threads[$threadsid]['id'] = $item['item_id'];
$threads[$threadsid]['items'] = array($arr['output']);
require_once('object/Conversation.php');
require_once('object/Item.php');
}
$conv = new Conversation($mode);
}
else
{
// Normal View
$page_template = get_markup_template("threaded_conversation.tpl");
// get all the topmost parents
// this shouldn't be needed, as we should have only them in our array
// But for now, this array respects the old style, just in case
require_once('object/Conversation.php');
require_once('object/Item.php');
$threads = array();
foreach($items as $item) {
$conv = new Conversation($mode);
// Can we put this after the visibility check?
like_puller($a,$item,$alike,'like');
like_puller($a,$item,$dlike,'dislike');
// get all the topmost parents
// this shouldn't be needed, as we should have only them in our array
// But for now, this array respects the old style, just in case
// Only add what is visible
if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
continue;
}
if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) {
continue;
}
$threads = array();
foreach($items as $item) {
if($item['id'] == $item['parent']) {
$item_object = new Item($item);
$conv->add_thread($item_object);
}
}
// Can we put this after the visibility check?
like_puller($a,$item,$alike,'like');
like_puller($a,$item,$dlike,'dislike');
$threads = $conv->get_template_data($alike, $dlike);
if(!$threads) {
logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG);
$threads = array();
}
}
}
$o = replace_macros($page_template, array(
'$baseurl' => $a->get_baseurl($ssl_state),
'$mode' => $mode,
'$user' => $a->user,
'$threads' => $threads,
'$dropping' => ($page_dropping?t('Delete Selected Items'):False),
));
// Only add what is visible
if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
continue;
}
if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) {
continue;
}
return $o;
if($item['id'] == $item['parent']) {
$item_object = new Item($item);
$conv->add_thread($item_object);
}
}
$threads = $conv->get_template_data($alike, $dlike);
if(!$threads) {
logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG);
$threads = array();
}
}
}
$o = replace_macros($page_template, array(
'$baseurl' => $a->get_baseurl($ssl_state),
'$mode' => $mode,
'$user' => $a->user,
'$threads' => $threads,
'$dropping' => ($page_dropping?t('Delete Selected Items'):False),
));
return $o;
}}
function best_link_url($item,&$sparkle,$ssl_state = false) {
$a = get_app();
$a = get_app();
$best_url = '';
$sparkle = false;
$best_url = '';
$sparkle = false;
$clean_url = normalise_link($item['author-link']);
$clean_url = normalise_link($item['author-link']);
if((local_user()) && (local_user() == $item['uid'])) {
if(isset($a->contacts) && x($a->contacts,$clean_url)) {
if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) {
$best_url = $a->get_baseurl($ssl_state) . '/redir/' . $a->contacts[$clean_url]['id'];
$sparkle = true;
}
else
$best_url = $a->contacts[$clean_url]['url'];
}
}
if(! $best_url) {
if(strlen($item['author-link']))
$best_url = $item['author-link'];
else
$best_url = $item['url'];
}
if((local_user()) && (local_user() == $item['uid'])) {
if(isset($a->contacts) && x($a->contacts,$clean_url)) {
if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) {
$best_url = $a->get_baseurl($ssl_state) . '/redir/' . $a->contacts[$clean_url]['id'];
$sparkle = true;
}
else
$best_url = $a->contacts[$clean_url]['url'];
}
}
if(! $best_url) {
if(strlen($item['author-link']))
$best_url = $item['author-link'];
else
$best_url = $item['url'];
}
return $best_url;
return $best_url;
}
if(! function_exists('item_photo_menu')){
function item_photo_menu($item){
$a = get_app();
$a = get_app();
$ssl_state = false;
$ssl_state = false;
if(local_user()) {
$ssl_state = true;
if(! count($a->contacts))
load_contact_links(local_user());
}
$poke_link="";
$contact_url="";
$pm_url="";
$status_link="";
$photos_link="";
$posts_link="";
if(local_user()) {
$ssl_state = true;
if(! count($a->contacts))
load_contact_links(local_user());
}
$poke_link="";
$contact_url="";
$pm_url="";
$status_link="";
$photos_link="";
$posts_link="";
$sparkle = false;
$sparkle = false;
$profile_link = best_link_url($item,$sparkle,$ssl_state);
if($profile_link === 'mailbox')
$profile_link = '';
if($profile_link === 'mailbox')
$profile_link = '';
if($sparkle) {
$cid = intval(basename($profile_link));
$status_link = $profile_link . "?url=status";
$photos_link = $profile_link . "?url=photos";
$profile_link = $profile_link . "?url=profile";
$pm_url = $a->get_baseurl($ssl_state) . '/message/new/' . $cid;
$zurl = '';
}
else {
$profile_link = zrl($profile_link);
if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) {
$cid = $item['contact-id'];
}
else {
$cid = 0;
}
}
if(($cid) && (! $item['self'])) {
$poke_link = $a->get_baseurl($ssl_state) . '/poke/?f=&c=' . $cid;
$contact_url = $a->get_baseurl($ssl_state) . '/contacts/' . $cid;
$posts_link = $a->get_baseurl($ssl_state) . '/network/?cid=' . $cid;
if($sparkle) {
$cid = intval(basename($profile_link));
$status_link = $profile_link . "?url=status";
$photos_link = $profile_link . "?url=photos";
$profile_link = $profile_link . "?url=profile";
$pm_url = $a->get_baseurl($ssl_state) . '/message/new/' . $cid;
$zurl = '';
}
else {
$profile_link = zrl($profile_link);
if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) {
$cid = $item['contact-id'];
}
else {
$cid = 0;
}
}
if(($cid) && (! $item['self'])) {
$poke_link = $a->get_baseurl($ssl_state) . '/poke/?f=&c=' . $cid;
$contact_url = $a->get_baseurl($ssl_state) . '/contacts/' . $cid;
$posts_link = $a->get_baseurl($ssl_state) . '/network/?cid=' . $cid;
$clean_url = normalise_link($item['author-link']);
$clean_url = normalise_link($item['author-link']);
if((local_user()) && (local_user() == $item['uid'])) {
if(isset($a->contacts) && x($a->contacts,$clean_url)) {
if($a->contacts[$clean_url]['network'] === NETWORK_DIASPORA) {
$pm_url = $a->get_baseurl($ssl_state) . '/message/new/' . $cid;
}
}
}
if((local_user()) && (local_user() == $item['uid'])) {
if(isset($a->contacts) && x($a->contacts,$clean_url)) {
if($a->contacts[$clean_url]['network'] === NETWORK_DIASPORA) {
$pm_url = $a->get_baseurl($ssl_state) . '/message/new/' . $cid;
}
}
}
}
}
$menu = Array(
t("View Status") => $status_link,
t("View Profile") => $profile_link,
t("View Photos") => $photos_link,
t("Network Posts") => $posts_link,
t("Edit Contact") => $contact_url,
t("Send PM") => $pm_url,
t("Poke") => $poke_link
);
$args = array('item' => $item, 'menu' => $menu);
call_hooks('item_photo_menu', $args);
$menu = Array(
t("View Status") => $status_link,
t("View Profile") => $profile_link,
t("View Photos") => $photos_link,
t("Network Posts") => $posts_link,
t("Edit Contact") => $contact_url,
t("Send PM") => $pm_url,
t("Poke") => $poke_link
);
$menu = $args['menu'];
$o = "";
foreach($menu as $k=>$v){
if ($v!="") $o .= "<li><a href=\"$v\">$k</a></li>\n";
}
return $o;
$args = array('item' => $item, 'menu' => $menu);
call_hooks('item_photo_menu', $args);
$menu = $args['menu'];
$o = "";
foreach($menu as $k=>$v){
if ($v!="") $o .= "<li><a href=\"$v\">$k</a></li>\n";
}
return $o;
}}
if(! function_exists('like_puller')) {
function like_puller($a,$item,&$arr,$mode) {
$url = '';
$sparkle = '';
$verb = (($mode === 'like') ? ACTIVITY_LIKE : ACTIVITY_DISLIKE);
$url = '';
$sparkle = '';
$verb = (($mode === 'like') ? ACTIVITY_LIKE : ACTIVITY_DISLIKE);
if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) {
$url = $item['author-link'];
if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === 'dfrn') && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) {
$url = $a->get_baseurl(true) . '/redir/' . $item['contact-id'];
$sparkle = ' class="sparkle" ';
}
else
$url = zrl($url);
if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) {
$url = $item['author-link'];
if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === 'dfrn') && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) {
$url = $a->get_baseurl(true) . '/redir/' . $item['contact-id'];
$sparkle = ' class="sparkle" ';
}
else
$url = zrl($url);
if(! $item['thr-parent'])
$item['thr-parent'] = $item['parent-uri'];
if(! $item['thr-parent'])
$item['thr-parent'] = $item['parent-uri'];
if(! ((isset($arr[$item['thr-parent'] . '-l'])) && (is_array($arr[$item['thr-parent'] . '-l']))))
$arr[$item['thr-parent'] . '-l'] = array();
if(! isset($arr[$item['thr-parent']]))
$arr[$item['thr-parent']] = 1;
else
$arr[$item['thr-parent']] ++;
$arr[$item['thr-parent'] . '-l'][] = '<a href="'. $url . '"'. $sparkle .'>' . $item['author-name'] . '</a>';
}
return;
if(! ((isset($arr[$item['thr-parent'] . '-l'])) && (is_array($arr[$item['thr-parent'] . '-l']))))
$arr[$item['thr-parent'] . '-l'] = array();
if(! isset($arr[$item['thr-parent']]))
$arr[$item['thr-parent']] = 1;
else
$arr[$item['thr-parent']] ++;
$arr[$item['thr-parent'] . '-l'][] = '<a href="'. $url . '"'. $sparkle .'>' . $item['author-name'] . '</a>';
}
return;
}}
// Format the like/dislike text for a profile item
@ -1085,286 +1105,286 @@ function like_puller($a,$item,&$arr,$mode) {
if(! function_exists('format_like')) {
function format_like($cnt,$arr,$type,$id) {
$o = '';
if($cnt == 1)
$o .= (($type === 'like') ? sprintf( t('%s likes this.'), $arr[0]) : sprintf( t('%s doesn\'t like this.'), $arr[0])) . EOL ;
else {
$spanatts = 'class="fakelink" onclick="openClose(\'' . $type . 'list-' . $id . '\');"';
$o .= (($type === 'like') ?
sprintf( t('<span %1$s>%2$d people</span> like this.'), $spanatts, $cnt)
:
sprintf( t('<span %1$s>%2$d people</span> don\'t like this.'), $spanatts, $cnt) );
$o .= EOL ;
$total = count($arr);
if($total >= MAX_LIKERS)
$arr = array_slice($arr, 0, MAX_LIKERS - 1);
if($total < MAX_LIKERS)
$arr[count($arr)-1] = t('and') . ' ' . $arr[count($arr)-1];
$str = implode(', ', $arr);
if($total >= MAX_LIKERS)
$str .= sprintf( t(', and %d other people'), $total - MAX_LIKERS );
$str = (($type === 'like') ? sprintf( t('%s like this.'), $str) : sprintf( t('%s don\'t like this.'), $str));
$o .= "\t" . '<div id="' . $type . 'list-' . $id . '" style="display: none;" >' . $str . '</div>';
}
return $o;
$o = '';
if($cnt == 1)
$o .= (($type === 'like') ? sprintf( t('%s likes this.'), $arr[0]) : sprintf( t('%s doesn\'t like this.'), $arr[0])) . EOL ;
else {
$spanatts = 'class="fakelink" onclick="openClose(\'' . $type . 'list-' . $id . '\');"';
$o .= (($type === 'like') ?
sprintf( t('<span %1$s>%2$d people</span> like this.'), $spanatts, $cnt)
:
sprintf( t('<span %1$s>%2$d people</span> don\'t like this.'), $spanatts, $cnt) );
$o .= EOL ;
$total = count($arr);
if($total >= MAX_LIKERS)
$arr = array_slice($arr, 0, MAX_LIKERS - 1);
if($total < MAX_LIKERS)
$arr[count($arr)-1] = t('and') . ' ' . $arr[count($arr)-1];
$str = implode(', ', $arr);
if($total >= MAX_LIKERS)
$str .= sprintf( t(', and %d other people'), $total - MAX_LIKERS );
$str = (($type === 'like') ? sprintf( t('%s like this.'), $str) : sprintf( t('%s don\'t like this.'), $str));
$o .= "\t" . '<div id="' . $type . 'list-' . $id . '" style="display: none;" >' . $str . '</div>';
}
return $o;
}}
function status_editor($a,$x, $notes_cid = 0, $popup=false) {
$o = '';
$geotag = (($x['allow_location']) ? get_markup_template('jot_geotag.tpl') : '');
$o = '';
$plaintext = false;
if(local_user() && intval(get_pconfig(local_user(),'system','plaintext')))
$plaintext = true;
$geotag = (($x['allow_location']) ? get_markup_template('jot_geotag.tpl') : '');
$tpl = get_markup_template('jot-header.tpl');
$a->page['htmlhead'] .= replace_macros($tpl, array(
'$newpost' => 'true',
'$baseurl' => $a->get_baseurl(true),
'$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$geotag' => $geotag,
'$nickname' => $x['nickname'],
'$ispublic' => t('Visible to <strong>everybody</strong>'),
'$linkurl' => t('Please enter a link URL:'),
'$vidurl' => t("Please enter a video link/URL:"),
'$audurl' => t("Please enter an audio link/URL:"),
'$term' => t('Tag term:'),
'$fileas' => t('Save to Folder:'),
'$whereareu' => t('Where are you right now?')
));
$plaintext = false;
if(local_user() && intval(get_pconfig(local_user(),'system','plaintext')))
$plaintext = true;
$tpl = get_markup_template('jot-header.tpl');
$a->page['htmlhead'] .= replace_macros($tpl, array(
'$newpost' => 'true',
'$baseurl' => $a->get_baseurl(true),
'$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$geotag' => $geotag,
'$nickname' => $x['nickname'],
'$ispublic' => t('Visible to <strong>everybody</strong>'),
'$linkurl' => t('Please enter a link URL:'),
'$vidurl' => t("Please enter a video link/URL:"),
'$audurl' => t("Please enter an audio link/URL:"),
'$term' => t('Tag term:'),
'$fileas' => t('Save to Folder:'),
'$whereareu' => t('Where are you right now?')
));
$tpl = get_markup_template('jot-end.tpl');
$a->page['end'] .= replace_macros($tpl, array(
'$newpost' => 'true',
'$baseurl' => $a->get_baseurl(true),
'$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$geotag' => $geotag,
'$nickname' => $x['nickname'],
'$ispublic' => t('Visible to <strong>everybody</strong>'),
'$linkurl' => t('Please enter a link URL:'),
'$vidurl' => t("Please enter a video link/URL:"),
'$audurl' => t("Please enter an audio link/URL:"),
'$term' => t('Tag term:'),
'$fileas' => t('Save to Folder:'),
'$whereareu' => t('Where are you right now?')
));
$tpl = get_markup_template('jot-end.tpl');
$a->page['end'] .= replace_macros($tpl, array(
'$newpost' => 'true',
'$baseurl' => $a->get_baseurl(true),
'$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$geotag' => $geotag,
'$nickname' => $x['nickname'],
'$ispublic' => t('Visible to <strong>everybody</strong>'),
'$linkurl' => t('Please enter a link URL:'),
'$vidurl' => t("Please enter a video link/URL:"),
'$audurl' => t("Please enter an audio link/URL:"),
'$term' => t('Tag term:'),
'$fileas' => t('Save to Folder:'),
'$whereareu' => t('Where are you right now?')
));
$tpl = get_markup_template("jot.tpl");
$jotplugins = '';
$jotnets = '';
$tpl = get_markup_template("jot.tpl");
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
$jotplugins = '';
$jotnets = '';
$mail_enabled = false;
$pubmail_enabled = false;
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
if(($x['is_owner']) && (! $mail_disabled)) {
$r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1",
intval(local_user())
);
if(count($r)) {
$mail_enabled = true;
if(intval($r[0]['pubmail']))
$pubmail_enabled = true;
}
}
$mail_enabled = false;
$pubmail_enabled = false;
if($mail_enabled) {
$selected = (($pubmail_enabled) ? ' checked="checked" ' : '');
$jotnets .= '<div class="profile-jot-net"><input type="checkbox" name="pubmail_enable"' . $selected . ' value="1" /> ' . t("Post to Email") . '</div>';
}
if(($x['is_owner']) && (! $mail_disabled)) {
$r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1",
intval(local_user())
);
if(count($r)) {
$mail_enabled = true;
if(intval($r[0]['pubmail']))
$pubmail_enabled = true;
}
}
call_hooks('jot_tool', $jotplugins);
call_hooks('jot_networks', $jotnets);
if($mail_enabled) {
$selected = (($pubmail_enabled) ? ' checked="checked" ' : '');
$jotnets .= '<div class="profile-jot-net"><input type="checkbox" name="pubmail_enable"' . $selected . ' value="1" /> ' . t("Post to Email") . '</div>';
}
if($notes_cid)
$jotnets .= '<input type="hidden" name="contact_allow[]" value="' . $notes_cid .'" />';
call_hooks('jot_tool', $jotplugins);
call_hooks('jot_networks', $jotnets);
$tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
if($notes_cid)
$jotnets .= '<input type="hidden" name="contact_allow[]" value="' . $notes_cid .'" />';
$o .= replace_macros($tpl,array(
'$return_path' => $a->query_string,
'$action' => $a->get_baseurl(true) . '/item',
'$share' => (x($x,'button') ? $x['button'] : t('Share')),
'$upload' => t('Upload photo'),
'$shortupload' => t('upload photo'),
'$attach' => t('Attach file'),
'$shortattach' => t('attach file'),
'$weblink' => t('Insert web link'),
'$shortweblink' => t('web link'),
'$video' => t('Insert video link'),
'$shortvideo' => t('video link'),
'$audio' => t('Insert audio link'),
'$shortaudio' => t('audio link'),
'$setloc' => t('Set your location'),
'$shortsetloc' => t('set location'),
'$noloc' => t('Clear browser location'),
'$shortnoloc' => t('clear location'),
'$title' => "",
'$placeholdertitle' => t('Set title'),
'$category' => "",
'$placeholdercategory' => t('Categories (comma-separated list)'),
'$wait' => t('Please wait'),
'$permset' => t('Permission settings'),
'$shortpermset' => t('permissions'),
'$ptyp' => (($notes_cid) ? 'note' : 'wall'),
'$content' => '',
'$post_id' => '',
'$baseurl' => $a->get_baseurl(true),
'$defloc' => $x['default_location'],
'$visitor' => $x['visitor'],
'$pvisit' => (($notes_cid) ? 'none' : $x['visitor']),
'$emailcc' => t('CC: email addresses'),
'$public' => t('Public post'),
'$jotnets' => $jotnets,
'$emtitle' => t('Example: bob@example.com, mary@example.com'),
'$lockstate' => $x['lockstate'],
'$acl' => $x['acl'],
'$bang' => $x['bang'],
'$profile_uid' => $x['profile_uid'],
'$preview' => t('Preview'),
'$sourceapp' => t($a->sourcename),
));
$tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
$o .= replace_macros($tpl,array(
'$return_path' => $a->query_string,
'$action' => $a->get_baseurl(true) . '/item',
'$share' => (x($x,'button') ? $x['button'] : t('Share')),
'$upload' => t('Upload photo'),
'$shortupload' => t('upload photo'),
'$attach' => t('Attach file'),
'$shortattach' => t('attach file'),
'$weblink' => t('Insert web link'),
'$shortweblink' => t('web link'),
'$video' => t('Insert video link'),
'$shortvideo' => t('video link'),
'$audio' => t('Insert audio link'),
'$shortaudio' => t('audio link'),
'$setloc' => t('Set your location'),
'$shortsetloc' => t('set location'),
'$noloc' => t('Clear browser location'),
'$shortnoloc' => t('clear location'),
'$title' => "",
'$placeholdertitle' => t('Set title'),
'$category' => "",
'$placeholdercategory' => t('Categories (comma-separated list)'),
'$wait' => t('Please wait'),
'$permset' => t('Permission settings'),
'$shortpermset' => t('permissions'),
'$ptyp' => (($notes_cid) ? 'note' : 'wall'),
'$content' => '',
'$post_id' => '',
'$baseurl' => $a->get_baseurl(true),
'$defloc' => $x['default_location'],
'$visitor' => $x['visitor'],
'$pvisit' => (($notes_cid) ? 'none' : $x['visitor']),
'$emailcc' => t('CC: email addresses'),
'$public' => t('Public post'),
'$jotnets' => $jotnets,
'$emtitle' => t('Example: bob@example.com, mary@example.com'),
'$lockstate' => $x['lockstate'],
'$acl' => $x['acl'],
'$bang' => $x['bang'],
'$profile_uid' => $x['profile_uid'],
'$preview' => t('Preview'),
'$sourceapp' => t($a->sourcename),
));
if ($popup==true){
$o = '<div id="jot-popup" style="display: none;">'.$o.'</div>';
}
if ($popup==true){
$o = '<div id="jot-popup" style="display: none;">'.$o.'</div>';
return $o;
}
return $o;
}
function get_item_children($arr, $parent) {
$children = array();
foreach($arr as $item) {
if($item['id'] != $item['parent']) {
if(get_config('system','thread_allow')) {
// Fallback to parent-uri if thr-parent is not set
$thr_parent = $item['thr-parent'];
if($thr_parent == '')
$thr_parent = $item['parent-uri'];
if($thr_parent == $parent['uri']) {
$item['children'] = get_item_children($arr, $item);
$children[] = $item;
}
}
else if($item['parent'] == $parent['id']) {
$children[] = $item;
}
}
}
return $children;
$children = array();
foreach($arr as $item) {
if($item['id'] != $item['parent']) {
if(get_config('system','thread_allow')) {
// Fallback to parent-uri if thr-parent is not set
$thr_parent = $item['thr-parent'];
if($thr_parent == '')
$thr_parent = $item['parent-uri'];
if($thr_parent == $parent['uri']) {
$item['children'] = get_item_children($arr, $item);
$children[] = $item;
}
}
else if($item['parent'] == $parent['id']) {
$children[] = $item;
}
}
}
return $children;
}
function sort_item_children($items) {
$result = $items;
usort($result,'sort_thr_created_rev');
foreach($result as $k => $i) {
if(count($result[$k]['children'])) {
$result[$k]['children'] = sort_item_children($result[$k]['children']);
}
}
return $result;
$result = $items;
usort($result,'sort_thr_created_rev');
foreach($result as $k => $i) {
if(count($result[$k]['children'])) {
$result[$k]['children'] = sort_item_children($result[$k]['children']);
}
}
return $result;
}
function add_children_to_list($children, &$arr) {
foreach($children as $y) {
$arr[] = $y;
if(count($y['children']))
add_children_to_list($y['children'], $arr);
}
foreach($children as $y) {
$arr[] = $y;
if(count($y['children']))
add_children_to_list($y['children'], $arr);
}
}
function conv_sort($arr,$order) {
if((!(is_array($arr) && count($arr))))
return array();
if((!(is_array($arr) && count($arr))))
return array();
$parents = array();
$children = array();
$parents = array();
$children = array();
foreach($arr as $x)
if($x['id'] == $x['parent'])
$parents[] = $x;
foreach($arr as $x)
if($x['id'] == $x['parent'])
$parents[] = $x;
if(stristr($order,'created'))
usort($parents,'sort_thr_created');
elseif(stristr($order,'commented'))
usort($parents,'sort_thr_commented');
if(stristr($order,'created'))
usort($parents,'sort_thr_created');
elseif(stristr($order,'commented'))
usort($parents,'sort_thr_commented');
if(count($parents))
foreach($parents as $i=>$_x)
$parents[$i]['children'] = get_item_children($arr, $_x);
if(count($parents))
foreach($parents as $i=>$_x)
$parents[$i]['children'] = get_item_children($arr, $_x);
/*foreach($arr as $x) {
if($x['id'] != $x['parent']) {
$p = find_thread_parent_index($parents,$x);
if($p !== false)
$parents[$p]['children'][] = $x;
}
}*/
if(count($parents)) {
foreach($parents as $k => $v) {
if(count($parents[$k]['children'])) {
$parents[$k]['children'] = sort_item_children($parents[$k]['children']);
/*$y = $parents[$k]['children'];
usort($y,'sort_thr_created_rev');
$parents[$k]['children'] = $y;*/
}
}
}
/*foreach($arr as $x) {
if($x['id'] != $x['parent']) {
$p = find_thread_parent_index($parents,$x);
if($p !== false)
$parents[$p]['children'][] = $x;
}
}*/
if(count($parents)) {
foreach($parents as $k => $v) {
if(count($parents[$k]['children'])) {
$parents[$k]['children'] = sort_item_children($parents[$k]['children']);
/*$y = $parents[$k]['children'];
usort($y,'sort_thr_created_rev');
$parents[$k]['children'] = $y;*/
}
}
}
$ret = array();
if(count($parents)) {
foreach($parents as $x) {
$ret[] = $x;
if(count($x['children']))
add_children_to_list($x['children'], $ret);
/*foreach($x['children'] as $y)
$ret[] = $y;*/
}
}
$ret = array();
if(count($parents)) {
foreach($parents as $x) {
$ret[] = $x;
if(count($x['children']))
add_children_to_list($x['children'], $ret);
/*foreach($x['children'] as $y)
$ret[] = $y;*/
}
}
return $ret;
return $ret;
}
function sort_thr_created($a,$b) {
return strcmp($b['created'],$a['created']);
return strcmp($b['created'],$a['created']);
}
function sort_thr_created_rev($a,$b) {
return strcmp($a['created'],$b['created']);
return strcmp($a['created'],$b['created']);
}
function sort_thr_commented($a,$b) {
return strcmp($b['commented'],$a['commented']);
return strcmp($b['commented'],$a['commented']);
}
function find_thread_parent_index($arr,$x) {
foreach($arr as $k => $v)
if($v['id'] == $x['parent'])
return $k;
return false;
foreach($arr as $k => $v)
if($v['id'] == $x['parent'])
return $k;
return false;
}
function render_location_google($item) {
$location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
$coord = (($item['coord']) ? '<a target="map" title="' . $item['coord'] . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
if($coord) {
if($location)
$location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
else
$location = '<span class="smalltext">' . $coord . '</span>';
}
return $location;
$location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
$coord = (($item['coord']) ? '<a target="map" title="' . $item['coord'] . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
if($coord) {
if($location)
$location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
else
$location = '<span class="smalltext">' . $coord . '</span>';
}
return $location;
}

View file

@ -78,7 +78,7 @@ class dba {
$this->error = '';
if ($a->config["system"]["db_log"] != "")
if(x($a->config,'system') && x($a->config['system'],'db_log'))
$stamp1 = microtime(true);
if($this->mysqli)
@ -86,7 +86,7 @@ class dba {
else
$result = @mysql_query($sql,$this->db);
if ($a->config["system"]["db_log"] != "") {
if(x($a->config,'system') && x($a->config['system'],'db_log')) {
$stamp2 = microtime(true);
$duration = round($stamp2-$stamp1, 3);
if ($duration > $a->config["system"]["db_loglimit"]) {

View file

@ -328,8 +328,9 @@ function delivery_run($argv, $argc){
dbesc($nickname)
);
if(count($x)) {
if($owner['page-flags'] == PAGE_COMMUNITY && ! $x[0]['writable']) {
if($x && count($x)) {
$write_flag = ((($x[0]['rel']) && ($x[0]['rel'] != CONTACT_IS_SHARING)) ? true : false);
if((($owner['page-flags'] == PAGE_COMMUNITY) || ($write_flag)) && (! $x[0]['writable'])) {
q("update contact set writable = 1 where id = %d limit 1",
intval($x[0]['id'])
);

View file

@ -2122,8 +2122,11 @@ function local_delivery($importer,$data) {
$rawtags = $feed->get_feed_tags( NAMESPACE_DFRN, 'owner');
if(! $rawtags)
$rawtags = $feed->get_feed_tags( SIMPLEPIE_NAMESPACE_ATOM_10, 'author');
// Fallback should not be needed here. If it isn't DFRN it won't have DFRN updated tags
// if(! $rawtags)
// $rawtags = $feed->get_feed_tags( SIMPLEPIE_NAMESPACE_ATOM_10, 'author');
if($rawtags) {
$elems = $rawtags[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10];
if($elems['name'][0]['attribs'][NAMESPACE_DFRN]['updated']) {
@ -3712,9 +3715,21 @@ function drop_item($id,$interactive = true) {
$owner = $item['uid'];
$cid = 0;
// check if logged in user is either the author or owner of this item
if((local_user() == $item['uid']) || (remote_user() == $item['contact-id']) || (! $interactive)) {
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $visitor) {
if($visitor['uid'] == $item['uid'] && $visitor['cid'] == $item['contact-id']) {
$cid = $visitor['cid'];
break;
}
}
}
if((local_user() == $item['uid']) || ($cid) || (! $interactive)) {
logger('delete item: ' . $item['id'], LOGGER_DEBUG);
// delete the item

View file

@ -295,7 +295,7 @@ function notifier_run($argv, $argc){
// a delivery fork. private groups (forum_mode == 2) do not uplink
if((intval($parent['forum_mode']) == 1) && (! $top_level) && ($cmd !== 'uplink')) {
proc_run('php','include/notifier','uplink',$item_id);
proc_run('php','include/notifier.php','uplink',$item_id);
}
$conversants = array();
@ -580,9 +580,9 @@ function notifier_run($argv, $argc){
dbesc($nickname)
);
if(count($x)) {
if($owner['page-flags'] == PAGE_COMMUNITY && ! $x[0]['writable']) {
if($x && count($x)) {
$write_flag = ((($x[0]['rel']) && ($x[0]['rel'] != CONTACT_IS_SHARING)) ? true : false);
if((($owner['page-flags'] == PAGE_COMMUNITY) || ($write_flag)) && (! $x[0]['writable'])) {
q("update contact set writable = 1 where id = %d limit 1",
intval($x[0]['id'])
);

View file

@ -145,6 +145,7 @@ class FKOAuth1 extends OAuthServer {
}
$_SESSION['uid'] = $record['uid'];
$_SESSION['theme'] = $record['theme'];
$_SESSION['mobile-theme'] = get_pconfig($record['uid'], 'system', 'mobile_theme');
$_SESSION['authenticated'] = 1;
$_SESSION['page_flags'] = $record['page-flags'];
$_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $record['nickname'];

View file

@ -8,7 +8,10 @@ function uninstall_plugin($plugin){
q("DELETE FROM `addon` WHERE `name` = '%s' ",
dbesc($plugin)
);
// define THISPLUGIN, make life easy to plugin devs :-)
define("THISPLUGIN", 'addon/' . $plugin . '/' . $plugin . '.php');
@include_once('addon/' . $plugin . '/' . $plugin . '.php');
if(function_exists($plugin . '_uninstall')) {
$func = $plugin . '_uninstall';
@ -18,9 +21,11 @@ function uninstall_plugin($plugin){
if (! function_exists('install_plugin')){
function install_plugin($plugin) {
// silently fail if plugin was removed
// define THISPLUGIN, make life easy to plugin devs :-)
define("THISPLUGIN", 'addon/' . $plugin . '/' . $plugin . '.php');
if(! file_exists('addon/' . $plugin . '/' . $plugin . '.php'))
return false;
logger("Addons: installing " . $plugin);
@ -77,7 +82,10 @@ function reload_plugins() {
$pl = trim($pl);
$fname = 'addon/' . $pl . '/' . $pl . '.php';
// define THISPLUGIN, make life easy to plugin devs :-)
define("THISPLUGIN", $fname);
if(file_exists($fname)) {
$t = @filemtime($fname);
foreach($installed as $i) {
@ -163,6 +171,8 @@ function call_hooks($name, &$data = null) {
if((is_array($a->hooks)) && (array_key_exists($name,$a->hooks))) {
foreach($a->hooks[$name] as $hook) {
// define THISPLUGIN, make life easy to plugin devs :-)
define("THISPLUGIN", $hook[0]);
@include_once($hook[0]);
if(function_exists($hook[1])) {
$func = $hook[1];

View file

@ -6,6 +6,7 @@ function authenticate_success($user_record, $login_initial = false, $interactive
$_SESSION['uid'] = $user_record['uid'];
$_SESSION['theme'] = $user_record['theme'];
$_SESSION['mobile-theme'] = get_pconfig($user_record['uid'], 'system', 'mobile_theme');
$_SESSION['authenticated'] = 1;
$_SESSION['page_flags'] = $user_record['page-flags'];
$_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $user_record['nickname'];
@ -120,12 +121,26 @@ function can_write_wall(&$a,$owner) {
elseif($verified === 1)
return false;
else {
$cid = 0;
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $visitor) {
if($visitor['uid'] == $owner) {
$cid = $visitor['cid'];
break;
}
}
}
if(! $cid)
return false;
$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",
intval($owner),
intval(remote_user()),
intval($cid),
intval(CONTACT_IS_SHARING),
intval(CONTACT_IS_FRIEND),
intval(PAGE_COMMUNITY)

View file

@ -1005,7 +1005,7 @@ function prepare_body($item,$attach = false) {
}
$title = ((strlen(trim($mtch[4]))) ? escape_tags(trim($mtch[4])) : escape_tags($mtch[1]));
$title .= ' ' . $mtch[2] . ' ' . t('bytes');
if((local_user() == $item['uid']) && $item['contact-id'] != $a->contact['id'])
if((local_user() == $item['uid']) && ($item['contact-id'] != $a->contact['id']) && ($item['network'] == NETWORK_DFRN))
$the_url = $a->get_baseurl() . '/redir/' . $item['contact-id'] . '?f=1&url=' . $mtch[1];
else
$the_url = $mtch[1];

View file

@ -17,7 +17,7 @@ var gArCountryInfo;
var gArStateInfo;
// NOTE:
// Some editors may exhibit problems viewing 2803 characters...
var sCountryString = "|Afghanistan|Albania|Algeria|American Samoa|Angola|Anguilla|Antartica|Antigua and Barbuda|Argentina|Armenia|Aruba|Ashmore and Cartier Island|Australia|Austria|Azerbaijan|Bahamas|Bahrain|Bangladesh|Barbados|Belarus|Belgium|Belize|Benin|Bermuda|Bhutan|Bolivia|Bosnia and Herzegovina|Botswana|Brazil|British Virgin Islands|Brunei|Bulgaria|Burkina Faso|Burma|Burundi|Cambodia|Cameroon|Canada|Cape Verde|Cayman Islands|Central African Republic|Chad|Chile|China|Christmas Island|Clipperton Island|Cocos (Keeling) Islands|Colombia|Comoros|Congo, Democratic Republic of the|Congo, Republic of the|Cook Islands|Costa Rica|Cote d'Ivoire|Croatia|Cuba|Cyprus|Czech Republic|Denmark|Djibouti|Dominica|Dominican Republic|Ecuador|Egypt|El Salvador|Equatorial Guinea|Eritrea|Estonia|Ethiopia|Europa Island|Falkland Islands (Islas Malvinas)|Faroe Islands|Fiji|Finland|France|French Guiana|French Polynesia|French Southern and Antarctic Lands|Gabon|Gambia, The|Gaza Strip|Georgia|Germany|Ghana|Gibraltar|Glorioso Islands|Greece|Greenland|Grenada|Guadeloupe|Guam|Guatemala|Guernsey|Guinea|Guinea-Bissau|Guyana|Haiti|Heard Island and McDonald Islands|Holy See (Vatican City)|Honduras|Hong Kong|Howland Island|Hungary|Iceland|India|Indonesia|Iran|Iraq|Ireland|Ireland, Northern|Israel|Italy|Jamaica|Jan Mayen|Japan|Jarvis Island|Jersey|Johnston Atoll|Jordan|Juan de Nova Island|Kazakhstan|Kenya|Kiribati|Korea, North|Korea, South|Kuwait|Kyrgyzstan|Laos|Latvia|Lebanon|Lesotho|Liberia|Libya|Liechtenstein|Lithuania|Luxembourg|Macau|Macedonia, Former Yugoslav Republic of|Madagascar|Malawi|Malaysia|Maldives|Mali|Malta|Man, Isle of|Marshall Islands|Martinique|Mauritania|Mauritius|Mayotte|Mexico|Micronesia, Federated States of|Midway Islands|Moldova|Monaco|Mongolia|Montserrat|Morocco|Mozambique|Namibia|Nauru|Nepal|Netherlands|Netherlands Antilles|New Caledonia|New Zealand|Nicaragua|Niger|Nigeria|Niue|Norfolk Island|Northern Mariana Islands|Norway|Oman|Pakistan|Palau|Panama|Papua New Guinea|Paraguay|Peru|Philippines|Pitcaim Islands|Poland|Portugal|Puerto Rico|Qatar|Reunion|Romainia|Russia|Rwanda|Saint Helena|Saint Kitts and Nevis|Saint Lucia|Saint Pierre and Miquelon|Saint Vincent and the Grenadines|Samoa|San Marino|Sao Tome and Principe|Saudi Arabia|Scotland|Senegal|Seychelles|Sierra Leone|Singapore|Slovakia|Slovenia|Solomon Islands|Somalia|South Africa|South Georgia and South Sandwich Islands|Spain|Spratly Islands|Sri Lanka|Sudan|Suriname|Svalbard|Swaziland|Sweden|Switzerland|Syria|Taiwan|Tajikistan|Tanzania|Thailand|Tobago|Toga|Tokelau|Tonga|Trinidad|Tunisia|Turkey|Turkmenistan|Tuvalu|Uganda|Ukraine|United Arab Emirates|United Kingdom|Uruguay|USA|Uzbekistan|Vanuatu|Venezuela|Vietnam|Virgin Islands|Wales|Wallis and Futuna|West Bank|Western Sahara|Yemen|Yugoslavia|Zambia|Zimbabwe|Friendicaland"
var sCountryString = "|Afghanistan|Albania|Algeria|American Samoa|Angola|Anguilla|Antartica|Antigua and Barbuda|Argentina|Armenia|Aruba|Ashmore and Cartier Island|Australia|Austria|Azerbaijan|Bahamas|Bahrain|Bangladesh|Barbados|Belarus|Belgium|Belize|Benin|Bermuda|Bhutan|Bolivia|Bosnia and Herzegovina|Botswana|Brazil|British Virgin Islands|Brunei|Bulgaria|Burkina Faso|Burma|Burundi|Cambodia|Cameroon|Canada|Cape Verde|Cayman Islands|Central African Republic|Chad|Chile|China|Christmas Island|Clipperton Island|Cocos (Keeling) Islands|Colombia|Comoros|Congo, Democratic Republic of the|Congo, Republic of the|Cook Islands|Costa Rica|Cote d'Ivoire|Croatia|Cuba|Cyprus|Czech Republic|Denmark|Djibouti|Dominica|Dominican Republic|Ecuador|Egypt|El Salvador|Equatorial Guinea|Eritrea|Estonia|Ethiopia|Europa Island|Falkland Islands (Islas Malvinas)|Faroe Islands|Fiji|Finland|France|French Guiana|French Polynesia|French Southern and Antarctic Lands|Gabon|Gambia, The|Gaza Strip|Georgia|Germany|Ghana|Gibraltar|Glorioso Islands|Greece|Greenland|Grenada|Guadeloupe|Guam|Guatemala|Guernsey|Guinea|Guinea-Bissau|Guyana|Haiti|Heard Island and McDonald Islands|Holy See (Vatican City)|Honduras|Hong Kong|Howland Island|Hungary|Iceland|India|Indonesia|Iran|Iraq|Ireland|Ireland, Northern|Israel|Italy|Jamaica|Jan Mayen|Japan|Jarvis Island|Jersey|Johnston Atoll|Jordan|Juan de Nova Island|Kazakhstan|Kenya|Kiribati|Korea, North|Korea, South|Kuwait|Kyrgyzstan|Laos|Latvia|Lebanon|Lesotho|Liberia|Libya|Liechtenstein|Lithuania|Luxembourg|Macau|Macedonia, Former Yugoslav Republic of|Madagascar|Malawi|Malaysia|Maldives|Mali|Malta|Man, Isle of|Marshall Islands|Martinique|Mauritania|Mauritius|Mayotte|Mexico|Micronesia, Federated States of|Midway Islands|Moldova|Monaco|Mongolia|Montserrat|Morocco|Mozambique|Namibia|Nauru|Nepal|Netherlands|Netherlands Antilles|New Caledonia|New Zealand|Nicaragua|Niger|Nigeria|Niue|Norfolk Island|Northern Mariana Islands|Norway|Oman|Pakistan|Palau|Panama|Papua New Guinea|Paraguay|Peru|Philippines|Pitcaim Islands|Poland|Portugal|Puerto Rico|Qatar|Reunion|Romania|Russia|Rwanda|Saint Helena|Saint Kitts and Nevis|Saint Lucia|Saint Pierre and Miquelon|Saint Vincent and the Grenadines|Samoa|San Marino|Sao Tome and Principe|Saudi Arabia|Scotland|Senegal|Seychelles|Sierra Leone|Singapore|Slovakia|Slovenia|Solomon Islands|Somalia|South Africa|South Georgia and South Sandwich Islands|Spain|Spratly Islands|Sri Lanka|Sudan|Suriname|Svalbard|Swaziland|Sweden|Switzerland|Syria|Taiwan|Tajikistan|Tanzania|Thailand|Tobago|Toga|Tokelau|Tonga|Trinidad|Tunisia|Turkey|Turkmenistan|Tuvalu|Uganda|Ukraine|United Arab Emirates|United Kingdom|Uruguay|USA|Uzbekistan|Vanuatu|Venezuela|Vietnam|Virgin Islands|Wales|Wallis and Futuna|West Bank|Western Sahara|Yemen|Yugoslavia|Zambia|Zimbabwe|Friendicaland"
var aStates = new Array();
aStates[0]="";

14
mod/_well_known.php Normal file
View file

@ -0,0 +1,14 @@
<?php
require_once("hostxrd.php");
function _well_known_init(&$a){
if ($a->argc > 1) {
switch($a->argv[1]) {
case "host-meta":
hostxrd_init($a);
break;
}
}
http_status_exit(404);
killme();
}

View file

@ -329,11 +329,11 @@ function admin_page_site_post(&$a){
}
set_config('system','language', $language);
set_config('system','theme', $theme);
if ( $theme_mobile === '---' ) {
del_config('system','mobile-theme');
} else {
set_config('system','mobile-theme', $theme_mobile);
}
if ( $theme_mobile === '---' ) {
del_config('system','mobile-theme');
} else {
set_config('system','mobile-theme', $theme_mobile);
}
set_config('system','maximagesize', $maximagesize);
set_config('system','max_image_length', $maximagelength);
set_config('system','jpeg_quality', $jpegimagequality);
@ -399,16 +399,18 @@ function admin_page_site(&$a) {
/* Installed themes */
$theme_choices = array();
$theme_choices_mobile = array();
$theme_choices_mobile["---"] = t("Don't apply a special theme for mobile devices.");
$theme_choices_mobile["---"] = t("No special theme for mobile devices");
$files = glob('view/theme/*');
if($files) {
foreach($files as $file) {
$f = basename($file);
$theme_name = ((file_exists($file . '/experimental')) ? sprintf("%s - \x28Experimental\x29", $f) : $f);
$theme_choices[$f] = $theme_name;
if (file_exists($file . '/mobile')) {
$theme_choices_mobile[$f] = $theme_name;
}
if (file_exists($file . '/mobile')) {
$theme_choices_mobile[$f] = $theme_name;
}
else {
$theme_choices[$f] = $theme_name;
}
}
}

View file

@ -1,8 +1,10 @@
<?php
function community_init(&$a) {
if(! local_user())
if(! local_user()) {
unset($_SESSION['theme']);
unset($_SESSION['mobile-theme']);
}
}

View file

@ -28,28 +28,35 @@ function contacts_init(&$a) {
if($contact_id) {
$a->data['contact'] = $r[0];
$o .= '<div class="vcard">';
$o .= '<div class="fn">' . $a->data['contact']['name'] . '</div>';
$o .= '<div id="profile-photo-wrapper"><img class="photo" style="width: 175px; height: 175px;" src="' . $a->data['contact']['photo'] . '" alt="' . $a->data['contact']['name'] . '" /></div>';
$o .= '</div>';
$a->page['aside'] .= $o;
$vcard_widget = replace_macros(get_markup_template("vcard-widget.tpl"),array(
'$name' => $a->data['contact']['name'],
'$photo' => $a->data['contact']['photo']
));
$follow_widget = '';
}
else
$a->page['aside'] .= follow_widget();
else {
$vcard_widget = '';
$follow_widget = follow_widget();
}
$a->page['aside'] .= group_side('contacts','group',false,0,$contact_id);
$groups_widget .= group_side('contacts','group',false,0,$contact_id);
$findpeople_widget .= findpeople_widget();
$networks_widget .= networks_widget('contacts',$_GET['nets']);
$a->page['aside'] .= replace_macros(get_markup_template("contacts-widget-sidebar.tpl"),array(
'$vcard_widget' => $vcard_widget,
'$follow_widget' => $follow_widget,
'$groups_widget' => $groups_widget,
'$findpeople_widget' => $findpeople_widget,
'$networks_widget' => $networks_widget
));
$a->page['aside'] .= findpeople_widget();
$a->page['aside'] .= networks_widget('contacts',$_GET['nets']);
$base = $a->get_baseurl();
$tpl = get_markup_template("contacts-head.tpl");
$a->page['htmlhead'] .= replace_macros($tpl,array(
'$baseurl' => $a->get_baseurl(true),
'$base' => $base
));
$tpl = get_markup_template("contacts-end.tpl");
$a->page['end'] .= replace_macros($tpl,array(
'$baseurl' => $a->get_baseurl(true),

View file

@ -87,6 +87,11 @@ function dfrn_poll_init(&$a) {
if((int) $xml->status == 1) {
$_SESSION['authenticated'] = 1;
if(! x($_SESSION,'remote'))
$_SESSION['remote'] = array();
$_SESSION['remote'][] = array('cid' => $r[0]['id'],'uid' => $r[0]['uid'],'url' => $r[0]['url']);
$_SESSION['visitor_id'] = $r[0]['id'];
$_SESSION['visitor_home'] = $r[0]['url'];
$_SESSION['visitor_handle'] = $r[0]['addr'];
@ -516,6 +521,9 @@ function dfrn_poll_content(&$a) {
if(((int) $xml->status == 0) && ($xml->challenge == $hash) && ($xml->sec == $sec)) {
$_SESSION['authenticated'] = 1;
if(! x($_SESSION,'remote'))
$_SESSION['remote'] = array();
$_SESSION['remote'][] = array('cid' => $r[0]['id'],'uid' => $r[0]['uid'],'url' => $r[0]['url']);
$_SESSION['visitor_id'] = $r[0]['id'];
$_SESSION['visitor_home'] = $r[0]['url'];
$_SESSION['visitor_visiting'] = $r[0]['uid'];

View file

@ -756,8 +756,10 @@ function dfrn_request_content(&$a) {
*/
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
notice( t('Public access denied.') . EOL);
return;
if(! get_config('system','local_block')) {
notice( t('Public access denied.') . EOL);
return;
}
}

View file

@ -9,8 +9,10 @@ function directory_init(&$a) {
$a->page['aside'] .= findpeople_widget();
}
else
else {
unset($_SESSION['theme']);
unset($_SESSION['mobile-theme']);
}
}

View file

@ -35,8 +35,18 @@ function display_content(&$a) {
$contact = null;
$remote_contact = false;
if(remote_user()) {
$contact_id = $_SESSION['visitor_id'];
$contact_id = 0;
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $v) {
if($v['uid'] == $a->profile['uid']) {
$contact_id = $v['cid'];
break;
}
}
}
if($contact_id) {
$groups = init_groups_visitor($contact_id);
$r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($contact_id),

View file

@ -22,6 +22,8 @@ function home_content(&$a) {
if(x($_SESSION,'theme'))
unset($_SESSION['theme']);
if(x($_SESSION,'mobile-theme'))
unset($_SESSION['mobile-theme']);
$o .= '<h1>' . ((x($a->config,'sitename')) ? sprintf( t("Welcome to %s") ,$a->config['sitename']) : "" ) . '</h1>';
if(file_exists('home.html'))

View file

@ -466,7 +466,6 @@ function load_database_rem($v, $i){
function load_database($db) {
$str = file_get_contents('database.sql');
// $str = array_reduce(explode("\n", $str),"load_database_rem","");
$arr = explode(';',$str);
$errors = false;
foreach($arr as $a) {
@ -488,7 +487,7 @@ function what_next() {
."<p>".t('IMPORTANT: You will need to [manually] setup a scheduled task for the poller.')
.t('Please see the file "INSTALL.txt".')
."</p><p>"
.t("Go to your new Firendica node <a href='$baseurl/register'>registration page</a> and register as new user. Remember to use the same email you have entered as administrator email. This will allow you to enter the site admin panel.")
.t("Go to your new Friendica node <a href='$baseurl/register'>registration page</a> and register as new user. Remember to use the same email you have entered as administrator email. This will allow you to enter the site admin panel.")
."</p>";
}

View file

@ -306,6 +306,7 @@ function item_post(&$a) {
$author = null;
$self = false;
$contact_id = 0;
if((local_user()) && (local_user() == $profile_uid)) {
$self = true;
@ -314,9 +315,19 @@ function item_post(&$a) {
);
}
elseif(remote_user()) {
$r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1",
intval(remote_user())
);
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $v) {
if($v['uid'] == $profile_uid) {
$contact_id = $v['cid'];
break;
}
}
}
if($contact_id) {
$r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1",
intval($contact_id)
);
}
}
if(count($r)) {
@ -608,7 +619,7 @@ function item_post(&$a) {
if($preview) {
require_once('include/conversation.php');
$o = conversation($a,array(array_merge($contact_record,$datarray)),'search', false);
$o = conversation($a,array(array_merge($contact_record,$datarray)),'search', false, true);
logger('preview: ' . $o);
echo json_encode(array('preview' => $o));
killme();

View file

@ -3,8 +3,11 @@
function login_content(&$a) {
if(x($_SESSION,'theme'))
unset($_SESSION['theme']);
if(x($_SESSION,'mobile-theme'))
unset($_SESSION['mobile-theme']);
if(local_user())
goaway(z_root());
return login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true);
}
}

View file

@ -63,6 +63,7 @@ function manage_post(&$a) {
unset($_SESSION['administrator']);
unset($_SESSION['cid']);
unset($_SESSION['theme']);
unset($_SESSION['mobile-theme']);
unset($_SESSION['page_flags']);
unset($_SESSION['return_url']);
if(x($_SESSION,'submanage'))

View file

@ -36,6 +36,9 @@ function completeurl($url, $scheme) {
if ($schemearr["port"] != "")
$complete .= ":".$schemearr["port"];
if(strpos($urlarr['path'],'/') !== 0)
$complete .= '/';
$complete .= $urlarr["path"];
if ($urlarr["query"] != "")
@ -149,17 +152,17 @@ function parseurl_getsiteinfo($url) {
}
if ($siteinfo["image"] == "") {
$list = $xpath->query("//img[@src]");
foreach ($list as $node) {
$attr = array();
if ($node->attributes->length)
foreach ($node->attributes as $attribute)
$attr[$attribute->name] = $attribute->value;
$list = $xpath->query("//img[@src]");
foreach ($list as $node) {
$attr = array();
if ($node->attributes->length)
foreach ($node->attributes as $attribute)
$attr[$attribute->name] = $attribute->value;
$src = completeurl($attr["src"], $url);
$photodata = getimagesize($src);
$photodata = @getimagesize($src);
if (($photodata[0] > 150) and ($photodata[1] > 150)) {
if (($photodata) && ($photodata[0] > 150) and ($photodata[1] > 150)) {
if ($photodata[0] > 300) {
$photodata[1] = round($photodata[1] * (300 / $photodata[0]));
$photodata[0] = 300;
@ -173,15 +176,15 @@ function parseurl_getsiteinfo($url) {
"height"=>$photodata[1]);
}
}
} else {
}
} else {
$src = completeurl($siteinfo["image"], $url);
unset($siteinfo["image"]);
$photodata = getimagesize($src);
$photodata = @getimagesize($src);
if (($photodata[0] > 10) and ($photodata[1] > 10))
if (($photodata) && ($photodata[0] > 10) and ($photodata[1] > 10))
$siteinfo["images"][] = array("src"=>$src,
"width"=>$photodata[0],
"height"=>$photodata[1]);

View file

@ -101,13 +101,25 @@ function photos_post(&$a) {
$can_post = true;
else {
if($community_page && remote_user()) {
$r = q("SELECT `uid` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `id` = %d AND `uid` = %d LIMIT 1",
intval(remote_user()),
intval($page_owner_uid)
);
if(count($r)) {
$can_post = true;
$visitor = remote_user();
$cid = 0;
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $v) {
if($v['uid'] == $page_owner_uid) {
$cid = $v['cid'];
break;
}
}
}
if($cid) {
$r = q("SELECT `uid` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `id` = %d AND `uid` = %d LIMIT 1",
intval($cid),
intval($page_owner_uid)
);
if(count($r)) {
$can_post = true;
$visitor = $cid;
}
}
}
}
@ -871,6 +883,7 @@ function photos_content(&$a) {
$visitor = 0;
$contact = null;
$remote_contact = false;
$contact_id = 0;
$owner_uid = $a->data['user']['uid'];
@ -880,15 +893,26 @@ function photos_content(&$a) {
$can_post = true;
else {
if($community_page && remote_user()) {
$r = q("SELECT `uid` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `id` = %d AND `uid` = %d LIMIT 1",
intval(remote_user()),
intval($owner_uid)
);
if(count($r)) {
$can_post = true;
$contact = $r[0];
$remote_contact = true;
$visitor = remote_user();
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $v) {
if($v['uid'] == $owner_uid) {
$contact_id = $v['cid'];
break;
}
}
}
if($contact_id) {
$r = q("SELECT `uid` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `id` = %d AND `uid` = %d LIMIT 1",
intval($contact_id),
intval($owner_uid)
);
if(count($r)) {
$can_post = true;
$contact = $r[0];
$remote_contact = true;
$visitor = $cid;
}
}
}
}
@ -896,15 +920,25 @@ function photos_content(&$a) {
// perhaps they're visiting - but not a community page, so they wouldn't have write access
if(remote_user() && (! $visitor)) {
$contact_id = $_SESSION['visitor_id'];
$groups = init_groups_visitor($contact_id);
$r = q("SELECT * FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `id` = %d AND `uid` = %d LIMIT 1",
intval(remote_user()),
intval($owner_uid)
);
if(count($r)) {
$contact = $r[0];
$remote_contact = true;
$contact_id = 0;
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $v) {
if($v['uid'] == $owner_uid) {
$contact_id = $v['cid'];
break;
}
}
}
if($contact_id) {
$groups = init_groups_visitor($contact_id);
$r = q("SELECT * FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `id` = %d AND `uid` = %d LIMIT 1",
intval($contact_id),
intval($owner_uid)
);
if(count($r)) {
$contact = $r[0];
$remote_contact = true;
}
}
}
@ -1020,8 +1054,13 @@ function photos_content(&$a) {
$a->set_pager_itemspage(20);
}
if($_GET['order'] === 'posted')
$order = 'ASC';
else
$order = 'DESC';
$r = q("SELECT `resource-id`, `id`, `filename`, type, max(`scale`) AS `scale`, `desc` FROM `photo` WHERE `uid` = %d AND `album` = '%s'
AND `scale` <= 4 $sql_extra GROUP BY `resource-id` ORDER BY `created` DESC LIMIT %d , %d",
AND `scale` <= 4 $sql_extra GROUP BY `resource-id` ORDER BY `created` $order LIMIT %d , %d",
intval($owner_uid),
dbesc($album),
intval($a->pager['start']),
@ -1055,10 +1094,17 @@ function photos_content(&$a) {
}
}
if($_GET['order'] === 'posted')
$o .= '<div class="photos-upload-link" ><a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '" >' . t('Show Newest First') . '</a></div>';
else
$o .= '<div class="photos-upload-link" ><a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '?f=&order=posted" >' . t('Show Oldest First') . '</a></div>';
if($can_post) {
$o .= '<div class="photos-upload-link" ><a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/upload/' . bin2hex($album) . '" >' . t('Upload New Photos') . '</a></div>';
}
$tpl = get_markup_template('photo_album.tpl');
if(count($r))
$twist = 'rotright';
@ -1073,7 +1119,8 @@ function photos_content(&$a) {
$o .= replace_macros($tpl,array(
'$id' => $rr['id'],
'$twist' => ' ' . $twist . rand(2,4),
'$photolink' => $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $rr['resource-id'],
'$photolink' => $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $rr['resource-id']
. (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''),
'$phototitle' => t('View Photo'),
'$imgsrc' => $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['scale'] . '.' .$ext,
'$imgalt' => template_escape($rr['filename']),
@ -1118,8 +1165,14 @@ function photos_content(&$a) {
$prevlink = '';
$nextlink = '';
if($_GET['order'] === 'posted')
$order = 'ASC';
else
$order = 'DESC';
$prvnxt = q("SELECT `resource-id` FROM `photo` WHERE `album` = '%s' AND `uid` = %d AND `scale` = 0
$sql_extra ORDER BY `created` DESC ",
$sql_extra ORDER BY `created` $order ",
dbesc($ph[0]['album']),
intval($owner_uid)
);
@ -1137,8 +1190,8 @@ function photos_content(&$a) {
}
}
$edit_suffix = ((($cmd === 'edit') && ($can_post)) ? '/edit' : '');
$prevlink = $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$prv]['resource-id'] . $edit_suffix;
$nextlink = $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$nxt]['resource-id'] . $edit_suffix;
$prevlink = $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$prv]['resource-id'] . $edit_suffix . (($_GET['order'] === 'posted') ? '?f=&order=posted' : '');
$nextlink = $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$nxt]['resource-id'] . $edit_suffix . (($_GET['order'] === 'posted') ? '?f=&order=posted' : '');
}
@ -1422,7 +1475,7 @@ function photos_content(&$a) {
$drop = '';
if(($item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
if(($item['contact-id'] == $contact_id) || ($item['uid'] == local_user()))
$drop = replace_macros(get_markup_template('photo_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));

View file

@ -116,8 +116,18 @@ function profile_content(&$a, $update = 0) {
$contact = null;
$remote_contact = false;
if(remote_user()) {
$contact_id = $_SESSION['visitor_id'];
$contact_id = 0;
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $v) {
if($v['uid'] == $a->profile['profile_uid']) {
$contact_id = $v['cid'];
break;
}
}
}
if($contact_id) {
$groups = init_groups_visitor($contact_id);
$r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($contact_id),

View file

@ -193,6 +193,8 @@ function register_content(&$a) {
if(x($_SESSION,'theme'))
unset($_SESSION['theme']);
if(x($_SESSION,'mobile-theme'))
unset($_SESSION['mobile-theme']);
$username = ((x($_POST,'username')) ? $_POST['username'] : ((x($_GET,'username')) ? $_GET['username'] : ''));

View file

@ -50,8 +50,10 @@ function search_init(&$a) {
$a->page['aside'] .= search_saved_searches();
}
else
else {
unset($_SESSION['theme']);
unset($_SESSION['mobile-theme']);
}

View file

@ -236,17 +236,22 @@ function settings_post(&$a) {
check_form_security_token_redirectOnErr('/settings/display', 'settings_display');
$theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : $a->user['theme']);
$mobile_theme = ((x($_POST,'mobile_theme')) ? notags(trim($_POST['mobile_theme'])) : '');
$nosmile = ((x($_POST,'nosmile')) ? intval($_POST['nosmile']) : 0);
$browser_update = ((x($_POST,'browser_update')) ? intval($_POST['browser_update']) : 0);
$browser_update = $browser_update * 1000;
if($browser_update < 10000)
$browser_update = 40000;
$browser_update = 10000;
$itemspage_network = ((x($_POST,'itemspage_network')) ? intval($_POST['itemspage_network']) : 40);
if($itemspage_network > 100)
$itemspage_network = 40;
$itemspage_network = 100;
if($mobile_theme !== '') {
set_pconfig(local_user(),'system','mobile_theme',$mobile_theme);
}
set_pconfig(local_user(),'system','update_interval', $browser_update);
set_pconfig(local_user(),'system','itemspage_network', $itemspage_network);
set_pconfig(local_user(),'system','no_smilies',$nosmile);
@ -497,10 +502,11 @@ function settings_post(&$a) {
require_once('include/profile_update.php');
profile_change();
$_SESSION['theme'] = $theme;
//$_SESSION['theme'] = $theme;
if($email_changed && $a->config['register_policy'] == REGISTER_VERIFY) {
// FIXME - set to un-verified, blocked and redirect to logout
// Why? Are we verifying people or email addresses?
}
@ -704,6 +710,9 @@ function settings_content(&$a) {
$default_theme = get_config('system','theme');
if(! $default_theme)
$default_theme = 'default';
$default_mobile_theme = get_config('system','mobile-theme');
if(! $mobile_default_theme)
$mobile_default_theme = 'none';
$allowed_themes_str = get_config('system','allowed_themes');
$allowed_themes_raw = explode(',',$allowed_themes_str);
@ -715,19 +724,27 @@ function settings_content(&$a) {
$themes = array();
$mobile_themes = array("---" => t('No special theme for mobile devices'));
$files = glob('view/theme/*');
if($allowed_themes) {
foreach($allowed_themes as $th) {
$f = $th;
$is_experimental = file_exists('view/theme/' . $th . '/experimental');
$unsupported = file_exists('view/theme/' . $th . '/unsupported');
$is_mobile = file_exists('view/theme/' . $th . '/mobile');
if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){
$theme_name = (($is_experimental) ? sprintf("%s - \x28Experimental\x29", $f) : $f);
$themes[$f]=$theme_name;
if($is_mobile) {
$mobile_themes[$f]=$theme_name;
}
else {
$themes[$f]=$theme_name;
}
}
}
}
$theme_selected = (!x($_SESSION,'theme')? $default_theme : $_SESSION['theme']);
$mobile_theme_selected = (!x($_SESSION,'mobile-theme')? $default_mobile_theme : $_SESSION['mobile-theme']);
$browser_update = intval(get_pconfig(local_user(), 'system','update_interval'));
$browser_update = (($browser_update == 0) ? 40 : $browser_update / 1000); // default if not set: 40 seconds
@ -753,7 +770,8 @@ function settings_content(&$a) {
'$baseurl' => $a->get_baseurl(true),
'$uid' => local_user(),
'$theme' => array('theme', t('Display Theme:'), $theme_selected, '', $themes),
'$theme' => array('theme', t('Display Theme:'), $theme_selected, '', $themes, true),
'$mobile_theme' => array('mobile_theme', t('Mobile Theme:'), $mobile_theme_selected, '', $mobile_themes, false),
'$ajaxint' => array('browser_update', t("Update browser every xx seconds"), $browser_update, t('Minimum of 10 seconds, no maximum')),
'$itemspage_network' => array('itemspage_network', t("Number of items to display per page:"), $itemspage_network, t('Maximum of 100 items')),
'$nosmile' => array('nosmile', t("Don't show emoticons"), $nosmile, ''),

View file

@ -47,17 +47,9 @@ function tagger_content(&$a) {
if(local_user() != $owner_uid)
return;
if(remote_user()) {
$r = q("select * from contact where id = %d AND `uid` = %d limit 1",
intval(remote_user()),
intval($item['uid'])
);
}
else {
$r = q("select * from contact where self = 1 and uid = %d limit 1",
intval(local_user())
);
}
$r = q("select * from contact where self = 1 and uid = %d limit 1",
intval(local_user())
);
if(count($r))
$contact = $r[0];
else {

View file

@ -29,17 +29,28 @@ function wall_attach_post(&$a) {
$can_post = true;
else {
if($community_page && remote_user()) {
$r = q("SELECT `uid` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `id` = %d AND `uid` = %d LIMIT 1",
intval(remote_user()),
intval($page_owner_uid)
);
if(count($r)) {
$can_post = true;
$visitor = remote_user();
$cid = 0;
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $v) {
if($v['uid'] == $page_owner_uid) {
$cid = $v['cid'];
break;
}
}
}
if($cid) {
$r = q("SELECT `uid` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `id` = %d AND `uid` = %d LIMIT 1",
intval($cid),
intval($page_owner_uid)
);
if(count($r)) {
$can_post = true;
$visitor = $cid;
}
}
}
}
if(! $can_post) {
notice( t('Permission denied.') . EOL );
killme();

View file

@ -37,14 +37,25 @@ function wall_upload_post(&$a) {
$can_post = true;
else {
if($community_page && remote_user()) {
$r = q("SELECT `uid` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `id` = %d AND `uid` = %d LIMIT 1",
intval(remote_user()),
intval($page_owner_uid)
);
if(count($r)) {
$can_post = true;
$visitor = remote_user();
$default_cid = $visitor;
$cid = 0;
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $v) {
if($v['uid'] == $page_owner_uid) {
$cid = $v['cid'];
break;
}
}
}
if($cid) {
$r = q("SELECT `uid` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `id` = %d AND `uid` = %d LIMIT 1",
intval($cid),
intval($page_owner_uid)
);
if(count($r)) {
$can_post = true;
$visitor = $cid;
}
}
}
}

View file

@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: 3.0.1449\n"
"Project-Id-Version: 3.0.1461\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-08-28 10:00-0700\n"
"POT-Creation-Date: 2012-09-09 10:00-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -34,13 +34,13 @@ msgstr ""
msgid "Contact update failed."
msgstr ""
#: ../../mod/crepair.php:115 ../../mod/wall_attach.php:44
#: ../../mod/crepair.php:115 ../../mod/wall_attach.php:55
#: ../../mod/fsuggest.php:78 ../../mod/events.php:140 ../../mod/api.php:26
#: ../../mod/api.php:31 ../../mod/photos.php:116 ../../mod/photos.php:938
#: ../../mod/api.php:31 ../../mod/photos.php:128 ../../mod/photos.php:972
#: ../../mod/editpost.php:10 ../../mod/install.php:151 ../../mod/poke.php:135
#: ../../mod/notifications.php:66 ../../mod/contacts.php:139
#: ../../mod/settings.php:86 ../../mod/settings.php:519
#: ../../mod/settings.php:524 ../../mod/manage.php:86 ../../mod/network.php:6
#: ../../mod/notifications.php:66 ../../mod/contacts.php:146
#: ../../mod/settings.php:86 ../../mod/settings.php:525
#: ../../mod/settings.php:530 ../../mod/manage.php:87 ../../mod/network.php:6
#: ../../mod/notes.php:20 ../../mod/wallmessage.php:9
#: ../../mod/wallmessage.php:33 ../../mod/wallmessage.php:79
#: ../../mod/wallmessage.php:103 ../../mod/attach.php:33
@ -51,13 +51,13 @@ msgstr ""
#: ../../mod/profile_photo.php:153 ../../mod/profile_photo.php:166
#: ../../mod/message.php:38 ../../mod/message.php:168
#: ../../mod/allfriends.php:9 ../../mod/nogroup.php:25
#: ../../mod/wall_upload.php:53 ../../mod/follow.php:9
#: ../../mod/display.php:131 ../../mod/profiles.php:7
#: ../../mod/wall_upload.php:64 ../../mod/follow.php:9
#: ../../mod/display.php:141 ../../mod/profiles.php:7
#: ../../mod/profiles.php:413 ../../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:510
#: ../../addon/facebook/facebook.php:516
#: ../../addon/dav/friendica/layout.fnk.php:354 ../../include/items.php:3819
#: ../../addon/dav/friendica/layout.fnk.php:354 ../../include/items.php:3834
#: ../../index.php:315
msgid "Permission denied."
msgstr ""
@ -87,8 +87,8 @@ msgstr ""
msgid "Return to contact editor"
msgstr ""
#: ../../mod/crepair.php:148 ../../mod/settings.php:539
#: ../../mod/settings.php:565 ../../mod/admin.php:679 ../../mod/admin.php:688
#: ../../mod/crepair.php:148 ../../mod/settings.php:545
#: ../../mod/settings.php:571 ../../mod/admin.php:690 ../../mod/admin.php:699
msgid "Name"
msgstr ""
@ -125,18 +125,19 @@ msgid "New photo from this URL"
msgstr ""
#: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107
#: ../../mod/events.php:439 ../../mod/photos.php:971 ../../mod/photos.php:1042
#: ../../mod/photos.php:1285 ../../mod/photos.php:1325
#: ../../mod/photos.php:1366 ../../mod/photos.php:1398
#: ../../mod/install.php:246 ../../mod/install.php:284
#: ../../mod/localtime.php:45 ../../mod/poke.php:199 ../../mod/content.php:691
#: ../../mod/contacts.php:341 ../../mod/settings.php:537
#: ../../mod/settings.php:691 ../../mod/settings.php:752
#: ../../mod/settings.php:958 ../../mod/group.php:85 ../../mod/mood.php:137
#: ../../mod/message.php:294 ../../mod/message.php:478 ../../mod/admin.php:435
#: ../../mod/admin.php:676 ../../mod/admin.php:812 ../../mod/admin.php:1011
#: ../../mod/admin.php:1098 ../../mod/profiles.php:583
#: ../../mod/invite.php:119 ../../addon/fromgplus/fromgplus.php:40
#: ../../mod/events.php:439 ../../mod/photos.php:1005
#: ../../mod/photos.php:1081 ../../mod/photos.php:1338
#: ../../mod/photos.php:1378 ../../mod/photos.php:1419
#: ../../mod/photos.php:1451 ../../mod/install.php:246
#: ../../mod/install.php:284 ../../mod/localtime.php:45 ../../mod/poke.php:199
#: ../../mod/content.php:691 ../../mod/contacts.php:348
#: ../../mod/settings.php:543 ../../mod/settings.php:697
#: ../../mod/settings.php:769 ../../mod/settings.php:976
#: ../../mod/group.php:85 ../../mod/mood.php:137 ../../mod/message.php:294
#: ../../mod/message.php:480 ../../mod/admin.php:443 ../../mod/admin.php:687
#: ../../mod/admin.php:823 ../../mod/admin.php:1022 ../../mod/admin.php:1109
#: ../../mod/profiles.php:583 ../../mod/invite.php:119
#: ../../addon/fromgplus/fromgplus.php:40
#: ../../addon/facebook/facebook.php:619
#: ../../addon/snautofollow/snautofollow.php:64 ../../addon/bg/bg.php:90
#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93
@ -174,7 +175,7 @@ msgstr ""
#: ../../view/theme/diabook/theme.php:757
#: ../../view/theme/diabook/config.php:190
#: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70
#: ../../include/conversation.php:560
#: ../../include/conversation.php:591
msgid "Submit"
msgstr ""
@ -195,12 +196,12 @@ msgstr ""
msgid "Page not found."
msgstr ""
#: ../../mod/wall_attach.php:58
#: ../../mod/wall_attach.php:69
#, php-format
msgid "File exceeds size limit of %d"
msgstr ""
#: ../../mod/wall_attach.php:99 ../../mod/wall_attach.php:110
#: ../../mod/wall_attach.php:110 ../../mod/wall_attach.php:121
msgid "File upload failed."
msgstr ""
@ -234,7 +235,7 @@ msgid "link to source"
msgstr ""
#: ../../mod/events.php:331 ../../view/theme/diabook/theme.php:131
#: ../../include/nav.php:52 ../../boot.php:1659
#: ../../include/nav.php:52 ../../boot.php:1683
msgid "Events"
msgstr ""
@ -288,9 +289,9 @@ msgstr ""
msgid "Description:"
msgstr ""
#: ../../mod/events.php:432 ../../mod/directory.php:132
#: ../../include/event.php:40 ../../include/bb2diaspora.php:455
#: ../../boot.php:1208
#: ../../mod/events.php:432 ../../mod/directory.php:134
#: ../../include/event.php:40 ../../include/bb2diaspora.php:412
#: ../../boot.php:1226
msgid "Location:"
msgstr ""
@ -303,8 +304,8 @@ msgid "Share this event"
msgstr ""
#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
#: ../../mod/dfrn_request.php:845 ../../mod/settings.php:538
#: ../../mod/settings.php:564 ../../addon/js_upload/js_upload.php:45
#: ../../mod/dfrn_request.php:847 ../../mod/settings.php:544
#: ../../mod/settings.php:570 ../../addon/js_upload/js_upload.php:45
msgid "Cancel"
msgstr ""
@ -325,7 +326,7 @@ msgstr ""
msgid "Remove"
msgstr ""
#: ../../mod/dfrn_poll.php:94 ../../mod/dfrn_poll.php:522
#: ../../mod/dfrn_poll.php:99 ../../mod/dfrn_poll.php:530
#, php-format
msgid "%s welcomes %s"
msgstr ""
@ -348,43 +349,43 @@ msgid ""
"and/or create new posts for you?"
msgstr ""
#: ../../mod/api.php:105 ../../mod/dfrn_request.php:833
#: ../../mod/settings.php:874 ../../mod/settings.php:880
#: ../../mod/settings.php:888 ../../mod/settings.php:892
#: ../../mod/settings.php:897 ../../mod/settings.php:903
#: ../../mod/settings.php:909 ../../mod/settings.php:915
#: ../../mod/settings.php:945 ../../mod/settings.php:946
#: ../../mod/settings.php:947 ../../mod/settings.php:948
#: ../../mod/settings.php:949 ../../mod/register.php:234
#: ../../mod/api.php:105 ../../mod/dfrn_request.php:835
#: ../../mod/settings.php:892 ../../mod/settings.php:898
#: ../../mod/settings.php:906 ../../mod/settings.php:910
#: ../../mod/settings.php:915 ../../mod/settings.php:921
#: ../../mod/settings.php:927 ../../mod/settings.php:933
#: ../../mod/settings.php:963 ../../mod/settings.php:964
#: ../../mod/settings.php:965 ../../mod/settings.php:966
#: ../../mod/settings.php:967 ../../mod/register.php:236
#: ../../mod/profiles.php:563
msgid "Yes"
msgstr ""
#: ../../mod/api.php:106 ../../mod/dfrn_request.php:834
#: ../../mod/settings.php:874 ../../mod/settings.php:880
#: ../../mod/settings.php:888 ../../mod/settings.php:892
#: ../../mod/settings.php:897 ../../mod/settings.php:903
#: ../../mod/settings.php:909 ../../mod/settings.php:915
#: ../../mod/settings.php:945 ../../mod/settings.php:946
#: ../../mod/settings.php:947 ../../mod/settings.php:948
#: ../../mod/settings.php:949 ../../mod/register.php:235
#: ../../mod/api.php:106 ../../mod/dfrn_request.php:836
#: ../../mod/settings.php:892 ../../mod/settings.php:898
#: ../../mod/settings.php:906 ../../mod/settings.php:910
#: ../../mod/settings.php:915 ../../mod/settings.php:921
#: ../../mod/settings.php:927 ../../mod/settings.php:933
#: ../../mod/settings.php:963 ../../mod/settings.php:964
#: ../../mod/settings.php:965 ../../mod/settings.php:966
#: ../../mod/settings.php:967 ../../mod/register.php:237
#: ../../mod/profiles.php:564
msgid "No"
msgstr ""
#: ../../mod/photos.php:46 ../../boot.php:1652
#: ../../mod/photos.php:46 ../../boot.php:1676
msgid "Photo Albums"
msgstr ""
#: ../../mod/photos.php:54 ../../mod/photos.php:137 ../../mod/photos.php:952
#: ../../mod/photos.php:1034 ../../mod/photos.php:1049
#: ../../mod/photos.php:1477 ../../mod/photos.php:1489
#: ../../mod/photos.php:54 ../../mod/photos.php:149 ../../mod/photos.php:986
#: ../../mod/photos.php:1073 ../../mod/photos.php:1088
#: ../../mod/photos.php:1530 ../../mod/photos.php:1542
#: ../../addon/communityhome/communityhome.php:110
#: ../../view/theme/diabook/theme.php:598
msgid "Contact Photos"
msgstr ""
#: ../../mod/photos.php:61 ../../mod/photos.php:1059 ../../mod/photos.php:1527
#: ../../mod/photos.php:61 ../../mod/photos.php:1104 ../../mod/photos.php:1580
msgid "Upload New Photos"
msgstr ""
@ -392,246 +393,254 @@ msgstr ""
msgid "everybody"
msgstr ""
#: ../../mod/photos.php:126
#: ../../mod/photos.php:138
msgid "Contact information unavailable"
msgstr ""
#: ../../mod/photos.php:137 ../../mod/photos.php:641 ../../mod/photos.php:1034
#: ../../mod/photos.php:1049 ../../mod/profile_photo.php:60
#: ../../mod/photos.php:149 ../../mod/photos.php:653 ../../mod/photos.php:1073
#: ../../mod/photos.php:1088 ../../mod/profile_photo.php:60
#: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74
#: ../../mod/profile_photo.php:177 ../../mod/profile_photo.php:261
#: ../../mod/profile_photo.php:270
#: ../../addon/communityhome/communityhome.php:111
#: ../../view/theme/diabook/theme.php:599 ../../include/user.php:304
#: ../../include/user.php:311 ../../include/user.php:318
#: ../../view/theme/diabook/theme.php:599 ../../include/user.php:318
#: ../../include/user.php:325 ../../include/user.php:332
msgid "Profile Photos"
msgstr ""
#: ../../mod/photos.php:147
#: ../../mod/photos.php:159
msgid "Album not found."
msgstr ""
#: ../../mod/photos.php:165 ../../mod/photos.php:1043
#: ../../mod/photos.php:177 ../../mod/photos.php:1082
msgid "Delete Album"
msgstr ""
#: ../../mod/photos.php:228 ../../mod/photos.php:1286
#: ../../mod/photos.php:240 ../../mod/photos.php:1339
msgid "Delete Photo"
msgstr ""
#: ../../mod/photos.php:572
#: ../../mod/photos.php:584
msgid "was tagged in a"
msgstr ""
#: ../../mod/photos.php:572 ../../mod/like.php:145 ../../mod/tagger.php:70
#: ../../mod/photos.php:584 ../../mod/like.php:145 ../../mod/tagger.php:62
#: ../../addon/communityhome/communityhome.php:163
#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1399
#: ../../include/diaspora.php:1824 ../../include/conversation.php:114
#: ../../include/conversation.php:244
#: ../../include/diaspora.php:1824 ../../include/conversation.php:125
#: ../../include/conversation.php:255
msgid "photo"
msgstr ""
#: ../../mod/photos.php:572
#: ../../mod/photos.php:584
msgid "by"
msgstr ""
#: ../../mod/photos.php:677 ../../addon/js_upload/js_upload.php:315
#: ../../mod/photos.php:689 ../../addon/js_upload/js_upload.php:315
msgid "Image exceeds size limit of "
msgstr ""
#: ../../mod/photos.php:685
#: ../../mod/photos.php:697
msgid "Image file is empty."
msgstr ""
#: ../../mod/photos.php:717 ../../mod/profile_photo.php:126
#: ../../mod/wall_upload.php:99
#: ../../mod/photos.php:729 ../../mod/profile_photo.php:126
#: ../../mod/wall_upload.php:110
msgid "Unable to process image."
msgstr ""
#: ../../mod/photos.php:744 ../../mod/profile_photo.php:266
#: ../../mod/wall_upload.php:125
#: ../../mod/photos.php:756 ../../mod/profile_photo.php:266
#: ../../mod/wall_upload.php:136
msgid "Image upload failed."
msgstr ""
#: ../../mod/photos.php:830 ../../mod/community.php:16
#: ../../mod/dfrn_request.php:759 ../../mod/viewcontacts.php:17
#: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29
#: ../../mod/photos.php:842 ../../mod/community.php:18
#: ../../mod/dfrn_request.php:760 ../../mod/viewcontacts.php:17
#: ../../mod/display.php:7 ../../mod/search.php:73 ../../mod/directory.php:31
msgid "Public access denied."
msgstr ""
#: ../../mod/photos.php:840
#: ../../mod/photos.php:852
msgid "No photos selected"
msgstr ""
#: ../../mod/photos.php:919
#: ../../mod/photos.php:953
msgid "Access to this item is restricted."
msgstr ""
#: ../../mod/photos.php:981
#: ../../mod/photos.php:1015
#, php-format
msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
msgstr ""
#: ../../mod/photos.php:984
#: ../../mod/photos.php:1018
#, php-format
msgid "You have used %1$.2f Mbytes of photo storage."
msgstr ""
#: ../../mod/photos.php:990
#: ../../mod/photos.php:1024
msgid "Upload Photos"
msgstr ""
#: ../../mod/photos.php:994 ../../mod/photos.php:1038
#: ../../mod/photos.php:1028 ../../mod/photos.php:1077
msgid "New album name: "
msgstr ""
#: ../../mod/photos.php:995
#: ../../mod/photos.php:1029
msgid "or existing album name: "
msgstr ""
#: ../../mod/photos.php:996
#: ../../mod/photos.php:1030
msgid "Do not show a status post for this upload"
msgstr ""
#: ../../mod/photos.php:998 ../../mod/photos.php:1281
#: ../../mod/photos.php:1032 ../../mod/photos.php:1334
msgid "Permissions"
msgstr ""
#: ../../mod/photos.php:1053
#: ../../mod/photos.php:1092
msgid "Edit Album"
msgstr ""
#: ../../mod/photos.php:1077 ../../mod/photos.php:1510
#: ../../mod/photos.php:1098
msgid "Show Newest First"
msgstr ""
#: ../../mod/photos.php:1100
msgid "Show Oldest First"
msgstr ""
#: ../../mod/photos.php:1124 ../../mod/photos.php:1563
msgid "View Photo"
msgstr ""
#: ../../mod/photos.php:1112
#: ../../mod/photos.php:1159
msgid "Permission denied. Access to this item may be restricted."
msgstr ""
#: ../../mod/photos.php:1114
#: ../../mod/photos.php:1161
msgid "Photo not available"
msgstr ""
#: ../../mod/photos.php:1164
#: ../../mod/photos.php:1217
msgid "View photo"
msgstr ""
#: ../../mod/photos.php:1164
#: ../../mod/photos.php:1217
msgid "Edit photo"
msgstr ""
#: ../../mod/photos.php:1165
#: ../../mod/photos.php:1218
msgid "Use as profile photo"
msgstr ""
#: ../../mod/photos.php:1171 ../../mod/content.php:601
#: ../../include/conversation.php:395
#: ../../mod/photos.php:1224 ../../mod/content.php:601
#: ../../include/conversation.php:428
msgid "Private Message"
msgstr ""
#: ../../mod/photos.php:1190
#: ../../mod/photos.php:1243
msgid "View Full Size"
msgstr ""
#: ../../mod/photos.php:1258
#: ../../mod/photos.php:1311
msgid "Tags: "
msgstr ""
#: ../../mod/photos.php:1261
#: ../../mod/photos.php:1314
msgid "[Remove any tag]"
msgstr ""
#: ../../mod/photos.php:1271
#: ../../mod/photos.php:1324
msgid "Rotate CW (right)"
msgstr ""
#: ../../mod/photos.php:1272
#: ../../mod/photos.php:1325
msgid "Rotate CCW (left)"
msgstr ""
#: ../../mod/photos.php:1274
#: ../../mod/photos.php:1327
msgid "New album name"
msgstr ""
#: ../../mod/photos.php:1277
#: ../../mod/photos.php:1330
msgid "Caption"
msgstr ""
#: ../../mod/photos.php:1279
#: ../../mod/photos.php:1332
msgid "Add a Tag"
msgstr ""
#: ../../mod/photos.php:1283
#: ../../mod/photos.php:1336
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
msgstr ""
#: ../../mod/photos.php:1303 ../../mod/content.php:665
#: ../../include/conversation.php:534
#: ../../mod/photos.php:1356 ../../mod/content.php:665
#: ../../include/conversation.php:565
msgid "I like this (toggle)"
msgstr ""
#: ../../mod/photos.php:1304 ../../mod/content.php:666
#: ../../include/conversation.php:535
#: ../../mod/photos.php:1357 ../../mod/content.php:666
#: ../../include/conversation.php:566
msgid "I don't like this (toggle)"
msgstr ""
#: ../../mod/photos.php:1305 ../../include/conversation.php:1164
#: ../../mod/photos.php:1358 ../../include/conversation.php:1195
msgid "Share"
msgstr ""
#: ../../mod/photos.php:1306 ../../mod/editpost.php:112
#: ../../mod/photos.php:1359 ../../mod/editpost.php:112
#: ../../mod/content.php:482 ../../mod/content.php:843
#: ../../mod/wallmessage.php:152 ../../mod/message.php:293
#: ../../mod/message.php:479 ../../include/conversation.php:628
#: ../../include/conversation.php:860 ../../include/conversation.php:1183
#: ../../mod/message.php:481 ../../include/conversation.php:659
#: ../../include/conversation.php:891 ../../include/conversation.php:1214
msgid "Please wait"
msgstr ""
#: ../../mod/photos.php:1322 ../../mod/photos.php:1363
#: ../../mod/photos.php:1395 ../../mod/content.php:688
#: ../../include/conversation.php:557
#: ../../mod/photos.php:1375 ../../mod/photos.php:1416
#: ../../mod/photos.php:1448 ../../mod/content.php:688
#: ../../include/conversation.php:588
msgid "This is you"
msgstr ""
#: ../../mod/photos.php:1324 ../../mod/photos.php:1365
#: ../../mod/photos.php:1397 ../../mod/content.php:690
#: ../../include/conversation.php:559 ../../boot.php:583
#: ../../mod/photos.php:1377 ../../mod/photos.php:1418
#: ../../mod/photos.php:1450 ../../mod/content.php:690
#: ../../include/conversation.php:590 ../../boot.php:574
msgid "Comment"
msgstr ""
#: ../../mod/photos.php:1326 ../../mod/editpost.php:133
#: ../../mod/content.php:700 ../../include/conversation.php:569
#: ../../include/conversation.php:1201
#: ../../mod/photos.php:1379 ../../mod/editpost.php:133
#: ../../mod/content.php:700 ../../include/conversation.php:600
#: ../../include/conversation.php:1232
msgid "Preview"
msgstr ""
#: ../../mod/photos.php:1426 ../../mod/content.php:439
#: ../../mod/content.php:721 ../../mod/settings.php:600
#: ../../mod/settings.php:689 ../../mod/group.php:168 ../../mod/admin.php:683
#: ../../include/conversation.php:409 ../../include/conversation.php:816
#: ../../mod/photos.php:1479 ../../mod/content.php:439
#: ../../mod/content.php:721 ../../mod/settings.php:606
#: ../../mod/settings.php:695 ../../mod/group.php:168 ../../mod/admin.php:694
#: ../../include/conversation.php:440 ../../include/conversation.php:847
msgid "Delete"
msgstr ""
#: ../../mod/photos.php:1516
#: ../../mod/photos.php:1569
msgid "View Album"
msgstr ""
#: ../../mod/photos.php:1525
#: ../../mod/photos.php:1578
msgid "Recent Photos"
msgstr ""
#: ../../mod/community.php:21
#: ../../mod/community.php:23
msgid "Not available."
msgstr ""
#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:133
#: ../../mod/community.php:32 ../../view/theme/diabook/theme.php:133
#: ../../include/nav.php:101
msgid "Community"
msgstr ""
#: ../../mod/community.php:61 ../../mod/community.php:86
#: ../../mod/search.php:146 ../../mod/search.php:172
#: ../../mod/community.php:63 ../../mod/community.php:88
#: ../../mod/search.php:148 ../../mod/search.php:174
msgid "No results."
msgstr ""
@ -675,28 +684,28 @@ msgstr ""
msgid "Edit post"
msgstr ""
#: ../../mod/editpost.php:88 ../../include/conversation.php:1150
#: ../../mod/editpost.php:88 ../../include/conversation.php:1181
msgid "Post to Email"
msgstr ""
#: ../../mod/editpost.php:103 ../../mod/content.php:708
#: ../../mod/settings.php:599 ../../include/conversation.php:400
#: ../../mod/settings.php:605 ../../include/conversation.php:433
msgid "Edit"
msgstr ""
#: ../../mod/editpost.php:104 ../../mod/wallmessage.php:150
#: ../../mod/message.php:291 ../../mod/message.php:476
#: ../../include/conversation.php:1165
#: ../../mod/message.php:291 ../../mod/message.php:478
#: ../../include/conversation.php:1196
msgid "Upload photo"
msgstr ""
#: ../../mod/editpost.php:105 ../../include/conversation.php:1167
#: ../../mod/editpost.php:105 ../../include/conversation.php:1198
msgid "Attach file"
msgstr ""
#: ../../mod/editpost.php:106 ../../mod/wallmessage.php:151
#: ../../mod/message.php:292 ../../mod/message.php:477
#: ../../include/conversation.php:1169
#: ../../mod/message.php:292 ../../mod/message.php:479
#: ../../include/conversation.php:1200
msgid "Insert web link"
msgstr ""
@ -712,35 +721,35 @@ msgstr ""
msgid "Insert Vorbis [.ogg] audio"
msgstr ""
#: ../../mod/editpost.php:110 ../../include/conversation.php:1175
#: ../../mod/editpost.php:110 ../../include/conversation.php:1206
msgid "Set your location"
msgstr ""
#: ../../mod/editpost.php:111 ../../include/conversation.php:1177
#: ../../mod/editpost.php:111 ../../include/conversation.php:1208
msgid "Clear browser location"
msgstr ""
#: ../../mod/editpost.php:113 ../../include/conversation.php:1184
#: ../../mod/editpost.php:113 ../../include/conversation.php:1215
msgid "Permission settings"
msgstr ""
#: ../../mod/editpost.php:121 ../../include/conversation.php:1193
#: ../../mod/editpost.php:121 ../../include/conversation.php:1224
msgid "CC: email addresses"
msgstr ""
#: ../../mod/editpost.php:122 ../../include/conversation.php:1194
#: ../../mod/editpost.php:122 ../../include/conversation.php:1225
msgid "Public post"
msgstr ""
#: ../../mod/editpost.php:125 ../../include/conversation.php:1180
#: ../../mod/editpost.php:125 ../../include/conversation.php:1211
msgid "Set title"
msgstr ""
#: ../../mod/editpost.php:127 ../../include/conversation.php:1182
#: ../../mod/editpost.php:127 ../../include/conversation.php:1213
msgid "Categories (comma-separated list)"
msgstr ""
#: ../../mod/editpost.php:128 ../../include/conversation.php:1196
#: ../../mod/editpost.php:128 ../../include/conversation.php:1227
msgid "Example: bob@example.com, mary@example.com"
msgstr ""
@ -825,7 +834,7 @@ msgstr ""
msgid "Disallowed profile URL."
msgstr ""
#: ../../mod/dfrn_request.php:570 ../../mod/contacts.php:116
#: ../../mod/dfrn_request.php:570 ../../mod/contacts.php:123
msgid "Failed to update contact record."
msgstr ""
@ -861,75 +870,75 @@ msgstr ""
msgid "Confirm"
msgstr ""
#: ../../mod/dfrn_request.php:715 ../../include/items.php:3210
#: ../../mod/dfrn_request.php:715 ../../include/items.php:3213
msgid "[Name Withheld]"
msgstr ""
#: ../../mod/dfrn_request.php:808
#: ../../mod/dfrn_request.php:810
msgid ""
"Please enter your 'Identity Address' from one of the following supported "
"communications networks:"
msgstr ""
#: ../../mod/dfrn_request.php:824
#: ../../mod/dfrn_request.php:826
msgid "<strike>Connect as an email follower</strike> (Coming soon)"
msgstr ""
#: ../../mod/dfrn_request.php:826
#: ../../mod/dfrn_request.php:828
msgid ""
"If you are not yet a member of the free social web, <a href=\"http://dir."
"friendica.com/siteinfo\">follow this link to find a public Friendica site "
"and join us today</a>."
msgstr ""
#: ../../mod/dfrn_request.php:829
#: ../../mod/dfrn_request.php:831
msgid "Friend/Connection Request"
msgstr ""
#: ../../mod/dfrn_request.php:830
#: ../../mod/dfrn_request.php:832
msgid ""
"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
"testuser@identi.ca"
msgstr ""
#: ../../mod/dfrn_request.php:831
#: ../../mod/dfrn_request.php:833
msgid "Please answer the following:"
msgstr ""
#: ../../mod/dfrn_request.php:832
#: ../../mod/dfrn_request.php:834
#, php-format
msgid "Does %s know you?"
msgstr ""
#: ../../mod/dfrn_request.php:835
#: ../../mod/dfrn_request.php:837
msgid "Add a personal note:"
msgstr ""
#: ../../mod/dfrn_request.php:837 ../../include/contact_selectors.php:76
#: ../../mod/dfrn_request.php:839 ../../include/contact_selectors.php:76
msgid "Friendica"
msgstr ""
#: ../../mod/dfrn_request.php:838
#: ../../mod/dfrn_request.php:840
msgid "StatusNet/Federated Social Web"
msgstr ""
#: ../../mod/dfrn_request.php:839 ../../mod/settings.php:634
#: ../../mod/dfrn_request.php:841 ../../mod/settings.php:640
#: ../../include/contact_selectors.php:80
msgid "Diaspora"
msgstr ""
#: ../../mod/dfrn_request.php:840
#: ../../mod/dfrn_request.php:842
#, php-format
msgid ""
" - please do not use this form. Instead, enter %s into your Diaspora search "
"bar."
msgstr ""
#: ../../mod/dfrn_request.php:841
#: ../../mod/dfrn_request.php:843
msgid "Your Identity Address:"
msgstr ""
#: ../../mod/dfrn_request.php:844
#: ../../mod/dfrn_request.php:846
msgid "Submit Request"
msgstr ""
@ -956,7 +965,7 @@ msgid ""
msgstr ""
#: ../../mod/install.php:139 ../../mod/install.php:204
#: ../../mod/install.php:489
#: ../../mod/install.php:488
msgid "Please see the file \"INSTALL.txt\"."
msgstr ""
@ -1173,21 +1182,21 @@ msgid ""
"server root."
msgstr ""
#: ../../mod/install.php:476
#: ../../mod/install.php:475
msgid "Errors encountered creating database tables."
msgstr ""
#: ../../mod/install.php:487
#: ../../mod/install.php:486
msgid "<h1>What next</h1>"
msgstr ""
#: ../../mod/install.php:488
#: ../../mod/install.php:487
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
msgstr ""
#: ../../mod/localtime.php:12 ../../include/event.php:11
#: ../../include/bb2diaspora.php:433
#: ../../include/bb2diaspora.php:390
msgid "l F d, Y \\@ g:i A"
msgstr ""
@ -1253,7 +1262,7 @@ msgid "is interested in:"
msgstr ""
#: ../../mod/match.php:58 ../../mod/suggest.php:59
#: ../../include/contact_widgets.php:9 ../../boot.php:1152
#: ../../include/contact_widgets.php:9 ../../boot.php:1164
msgid "Connect"
msgstr ""
@ -1282,28 +1291,28 @@ msgid "Group: "
msgstr ""
#: ../../mod/content.php:438 ../../mod/content.php:720
#: ../../include/conversation.php:408 ../../include/conversation.php:815
#: ../../include/conversation.php:439 ../../include/conversation.php:846
msgid "Select"
msgstr ""
#: ../../mod/content.php:455 ../../mod/content.php:813
#: ../../mod/content.php:814 ../../include/conversation.php:596
#: ../../include/conversation.php:597 ../../include/conversation.php:832
#: ../../mod/content.php:814 ../../include/conversation.php:627
#: ../../include/conversation.php:628 ../../include/conversation.php:863
#, php-format
msgid "View %s's profile @ %s"
msgstr ""
#: ../../mod/content.php:465 ../../mod/content.php:825
#: ../../include/conversation.php:610 ../../include/conversation.php:843
#: ../../include/conversation.php:641 ../../include/conversation.php:874
#, php-format
msgid "%s from %s"
msgstr ""
#: ../../mod/content.php:480 ../../include/conversation.php:858
#: ../../mod/content.php:480 ../../include/conversation.php:889
msgid "View in context"
msgstr ""
#: ../../mod/content.php:586 ../../include/conversation.php:637
#: ../../mod/content.php:586 ../../include/conversation.php:668
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
@ -1312,96 +1321,96 @@ msgstr[1] ""
#: ../../mod/content.php:587 ../../addon/page/page.php:76
#: ../../addon/page/page.php:110 ../../addon/showmore/showmore.php:119
#: ../../include/contact_widgets.php:188 ../../include/conversation.php:638
#: ../../boot.php:584
#: ../../include/contact_widgets.php:195 ../../include/conversation.php:669
#: ../../boot.php:575
msgid "show more"
msgstr ""
#: ../../mod/content.php:665 ../../include/conversation.php:534
#: ../../mod/content.php:665 ../../include/conversation.php:565
msgid "like"
msgstr ""
#: ../../mod/content.php:666 ../../include/conversation.php:535
#: ../../mod/content.php:666 ../../include/conversation.php:566
msgid "dislike"
msgstr ""
#: ../../mod/content.php:668 ../../include/conversation.php:537
#: ../../mod/content.php:668 ../../include/conversation.php:568
msgid "Share this"
msgstr ""
#: ../../mod/content.php:668 ../../include/conversation.php:537
#: ../../mod/content.php:668 ../../include/conversation.php:568
msgid "share"
msgstr ""
#: ../../mod/content.php:692 ../../include/conversation.php:561
#: ../../mod/content.php:692 ../../include/conversation.php:592
msgid "Bold"
msgstr ""
#: ../../mod/content.php:693 ../../include/conversation.php:562
#: ../../mod/content.php:693 ../../include/conversation.php:593
msgid "Italic"
msgstr ""
#: ../../mod/content.php:694 ../../include/conversation.php:563
#: ../../mod/content.php:694 ../../include/conversation.php:594
msgid "Underline"
msgstr ""
#: ../../mod/content.php:695 ../../include/conversation.php:564
#: ../../mod/content.php:695 ../../include/conversation.php:595
msgid "Quote"
msgstr ""
#: ../../mod/content.php:696 ../../include/conversation.php:565
#: ../../mod/content.php:696 ../../include/conversation.php:596
msgid "Code"
msgstr ""
#: ../../mod/content.php:697 ../../include/conversation.php:566
#: ../../mod/content.php:697 ../../include/conversation.php:597
msgid "Image"
msgstr ""
#: ../../mod/content.php:698 ../../include/conversation.php:567
#: ../../mod/content.php:698 ../../include/conversation.php:598
msgid "Link"
msgstr ""
#: ../../mod/content.php:699 ../../include/conversation.php:568
#: ../../mod/content.php:699 ../../include/conversation.php:599
msgid "Video"
msgstr ""
#: ../../mod/content.php:733 ../../include/conversation.php:498
#: ../../mod/content.php:733 ../../include/conversation.php:529
msgid "add star"
msgstr ""
#: ../../mod/content.php:734 ../../include/conversation.php:499
#: ../../mod/content.php:734 ../../include/conversation.php:530
msgid "remove star"
msgstr ""
#: ../../mod/content.php:735 ../../include/conversation.php:500
#: ../../mod/content.php:735 ../../include/conversation.php:531
msgid "toggle star status"
msgstr ""
#: ../../mod/content.php:738 ../../include/conversation.php:503
#: ../../mod/content.php:738 ../../include/conversation.php:534
msgid "starred"
msgstr ""
#: ../../mod/content.php:739 ../../include/conversation.php:504
#: ../../mod/content.php:739 ../../include/conversation.php:535
msgid "add tag"
msgstr ""
#: ../../mod/content.php:743 ../../include/conversation.php:412
#: ../../mod/content.php:743 ../../include/conversation.php:443
msgid "save to folder"
msgstr ""
#: ../../mod/content.php:815 ../../include/conversation.php:598
#: ../../mod/content.php:815 ../../include/conversation.php:629
msgid "to"
msgstr ""
#: ../../mod/content.php:816 ../../include/conversation.php:599
#: ../../mod/content.php:816 ../../include/conversation.php:630
msgid "Wall-to-Wall"
msgstr ""
#: ../../mod/content.php:817 ../../include/conversation.php:600
#: ../../mod/content.php:817 ../../include/conversation.php:631
msgid "via Wall-To-Wall:"
msgstr ""
#: ../../mod/home.php:26 ../../addon/communityhome/communityhome.php:179
#: ../../mod/home.php:28 ../../addon/communityhome/communityhome.php:179
#, php-format
msgid "Welcome to %s"
msgstr ""
@ -1416,8 +1425,8 @@ msgid "Discard"
msgstr ""
#: ../../mod/notifications.php:51 ../../mod/notifications.php:160
#: ../../mod/notifications.php:206 ../../mod/contacts.php:314
#: ../../mod/contacts.php:368
#: ../../mod/notifications.php:206 ../../mod/contacts.php:321
#: ../../mod/contacts.php:375
msgid "Ignore"
msgstr ""
@ -1469,7 +1478,7 @@ msgid "suggested by %s"
msgstr ""
#: ../../mod/notifications.php:153 ../../mod/notifications.php:200
#: ../../mod/contacts.php:374
#: ../../mod/contacts.php:381
msgid "Hide this contact from others"
msgstr ""
@ -1482,7 +1491,7 @@ msgid "if applicable"
msgstr ""
#: ../../mod/notifications.php:157 ../../mod/notifications.php:204
#: ../../mod/admin.php:681
#: ../../mod/admin.php:692
msgid "Approve"
msgstr ""
@ -1591,307 +1600,307 @@ msgstr ""
msgid "Home Notifications"
msgstr ""
#: ../../mod/contacts.php:77 ../../mod/contacts.php:157
#: ../../mod/contacts.php:84 ../../mod/contacts.php:164
msgid "Could not access contact record."
msgstr ""
#: ../../mod/contacts.php:91
#: ../../mod/contacts.php:98
msgid "Could not locate selected profile."
msgstr ""
#: ../../mod/contacts.php:114
#: ../../mod/contacts.php:121
msgid "Contact updated."
msgstr ""
#: ../../mod/contacts.php:179
#: ../../mod/contacts.php:186
msgid "Contact has been blocked"
msgstr ""
#: ../../mod/contacts.php:179
#: ../../mod/contacts.php:186
msgid "Contact has been unblocked"
msgstr ""
#: ../../mod/contacts.php:193
#: ../../mod/contacts.php:200
msgid "Contact has been ignored"
msgstr ""
#: ../../mod/contacts.php:193
#: ../../mod/contacts.php:200
msgid "Contact has been unignored"
msgstr ""
#: ../../mod/contacts.php:209
#: ../../mod/contacts.php:216
msgid "Contact has been archived"
msgstr ""
#: ../../mod/contacts.php:209
#: ../../mod/contacts.php:216
msgid "Contact has been unarchived"
msgstr ""
#: ../../mod/contacts.php:222
#: ../../mod/contacts.php:229
msgid "Contact has been removed."
msgstr ""
#: ../../mod/contacts.php:256
#: ../../mod/contacts.php:263
#, php-format
msgid "You are mutual friends with %s"
msgstr ""
#: ../../mod/contacts.php:260
#: ../../mod/contacts.php:267
#, php-format
msgid "You are sharing with %s"
msgstr ""
#: ../../mod/contacts.php:265
#: ../../mod/contacts.php:272
#, php-format
msgid "%s is sharing with you"
msgstr ""
#: ../../mod/contacts.php:282
#: ../../mod/contacts.php:289
msgid "Private communications are not available for this contact."
msgstr ""
#: ../../mod/contacts.php:285
#: ../../mod/contacts.php:292
msgid "Never"
msgstr ""
#: ../../mod/contacts.php:289
#: ../../mod/contacts.php:296
msgid "(Update was successful)"
msgstr ""
#: ../../mod/contacts.php:289
#: ../../mod/contacts.php:296
msgid "(Update was not successful)"
msgstr ""
#: ../../mod/contacts.php:291
#: ../../mod/contacts.php:298
msgid "Suggest friends"
msgstr ""
#: ../../mod/contacts.php:295
#: ../../mod/contacts.php:302
#, php-format
msgid "Network type: %s"
msgstr ""
#: ../../mod/contacts.php:298 ../../include/contact_widgets.php:183
#: ../../mod/contacts.php:305 ../../include/contact_widgets.php:190
#, php-format
msgid "%d contact in common"
msgid_plural "%d contacts in common"
msgstr[0] ""
msgstr[1] ""
#: ../../mod/contacts.php:303
#: ../../mod/contacts.php:310
msgid "View all contacts"
msgstr ""
#: ../../mod/contacts.php:308 ../../mod/contacts.php:367
#: ../../mod/admin.php:685
#: ../../mod/contacts.php:315 ../../mod/contacts.php:374
#: ../../mod/admin.php:696
msgid "Unblock"
msgstr ""
#: ../../mod/contacts.php:308 ../../mod/contacts.php:367
#: ../../mod/admin.php:684
#: ../../mod/contacts.php:315 ../../mod/contacts.php:374
#: ../../mod/admin.php:695
msgid "Block"
msgstr ""
#: ../../mod/contacts.php:311
#: ../../mod/contacts.php:318
msgid "Toggle Blocked status"
msgstr ""
#: ../../mod/contacts.php:314 ../../mod/contacts.php:368
#: ../../mod/contacts.php:321 ../../mod/contacts.php:375
msgid "Unignore"
msgstr ""
#: ../../mod/contacts.php:317
#: ../../mod/contacts.php:324
msgid "Toggle Ignored status"
msgstr ""
#: ../../mod/contacts.php:321
#: ../../mod/contacts.php:328
msgid "Unarchive"
msgstr ""
#: ../../mod/contacts.php:321
#: ../../mod/contacts.php:328
msgid "Archive"
msgstr ""
#: ../../mod/contacts.php:324
#: ../../mod/contacts.php:331
msgid "Toggle Archive status"
msgstr ""
#: ../../mod/contacts.php:327
#: ../../mod/contacts.php:334
msgid "Repair"
msgstr ""
#: ../../mod/contacts.php:330
#: ../../mod/contacts.php:337
msgid "Advanced Contact Settings"
msgstr ""
#: ../../mod/contacts.php:336
#: ../../mod/contacts.php:343
msgid "Communications lost with this contact!"
msgstr ""
#: ../../mod/contacts.php:339
#: ../../mod/contacts.php:346
msgid "Contact Editor"
msgstr ""
#: ../../mod/contacts.php:342
#: ../../mod/contacts.php:349
msgid "Profile Visibility"
msgstr ""
#: ../../mod/contacts.php:343
#: ../../mod/contacts.php:350
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr ""
#: ../../mod/contacts.php:344
#: ../../mod/contacts.php:351
msgid "Contact Information / Notes"
msgstr ""
#: ../../mod/contacts.php:345
#: ../../mod/contacts.php:352
msgid "Edit contact notes"
msgstr ""
#: ../../mod/contacts.php:350 ../../mod/contacts.php:542
#: ../../mod/contacts.php:357 ../../mod/contacts.php:549
#: ../../mod/viewcontacts.php:62 ../../mod/nogroup.php:40
#, php-format
msgid "Visit %s's profile [%s]"
msgstr ""
#: ../../mod/contacts.php:351
#: ../../mod/contacts.php:358
msgid "Block/Unblock contact"
msgstr ""
#: ../../mod/contacts.php:352
#: ../../mod/contacts.php:359
msgid "Ignore contact"
msgstr ""
#: ../../mod/contacts.php:353
#: ../../mod/contacts.php:360
msgid "Repair URL settings"
msgstr ""
#: ../../mod/contacts.php:354
#: ../../mod/contacts.php:361
msgid "View conversations"
msgstr ""
#: ../../mod/contacts.php:356
#: ../../mod/contacts.php:363
msgid "Delete contact"
msgstr ""
#: ../../mod/contacts.php:360
#: ../../mod/contacts.php:367
msgid "Last update:"
msgstr ""
#: ../../mod/contacts.php:362
#: ../../mod/contacts.php:369
msgid "Update public posts"
msgstr ""
#: ../../mod/contacts.php:364 ../../mod/admin.php:1156
#: ../../mod/contacts.php:371 ../../mod/admin.php:1167
msgid "Update now"
msgstr ""
#: ../../mod/contacts.php:371
#: ../../mod/contacts.php:378
msgid "Currently blocked"
msgstr ""
#: ../../mod/contacts.php:372
#: ../../mod/contacts.php:379
msgid "Currently ignored"
msgstr ""
#: ../../mod/contacts.php:373
#: ../../mod/contacts.php:380
msgid "Currently archived"
msgstr ""
#: ../../mod/contacts.php:374
#: ../../mod/contacts.php:381
msgid ""
"Replies/likes to your public posts <strong>may</strong> still be visible"
msgstr ""
#: ../../mod/contacts.php:427
#: ../../mod/contacts.php:434
msgid "Suggestions"
msgstr ""
#: ../../mod/contacts.php:430
#: ../../mod/contacts.php:437
msgid "Suggest potential friends"
msgstr ""
#: ../../mod/contacts.php:433 ../../mod/group.php:191
#: ../../mod/contacts.php:440 ../../mod/group.php:191
msgid "All Contacts"
msgstr ""
#: ../../mod/contacts.php:436
#: ../../mod/contacts.php:443
msgid "Show all contacts"
msgstr ""
#: ../../mod/contacts.php:439
#: ../../mod/contacts.php:446
msgid "Unblocked"
msgstr ""
#: ../../mod/contacts.php:442
#: ../../mod/contacts.php:449
msgid "Only show unblocked contacts"
msgstr ""
#: ../../mod/contacts.php:446
#: ../../mod/contacts.php:453
msgid "Blocked"
msgstr ""
#: ../../mod/contacts.php:449
#: ../../mod/contacts.php:456
msgid "Only show blocked contacts"
msgstr ""
#: ../../mod/contacts.php:453
#: ../../mod/contacts.php:460
msgid "Ignored"
msgstr ""
#: ../../mod/contacts.php:456
#: ../../mod/contacts.php:463
msgid "Only show ignored contacts"
msgstr ""
#: ../../mod/contacts.php:460
#: ../../mod/contacts.php:467
msgid "Archived"
msgstr ""
#: ../../mod/contacts.php:463
#: ../../mod/contacts.php:470
msgid "Only show archived contacts"
msgstr ""
#: ../../mod/contacts.php:467
#: ../../mod/contacts.php:474
msgid "Hidden"
msgstr ""
#: ../../mod/contacts.php:470
#: ../../mod/contacts.php:477
msgid "Only show hidden contacts"
msgstr ""
#: ../../mod/contacts.php:518
#: ../../mod/contacts.php:525
msgid "Mutual Friendship"
msgstr ""
#: ../../mod/contacts.php:522
#: ../../mod/contacts.php:529
msgid "is a fan of yours"
msgstr ""
#: ../../mod/contacts.php:526
#: ../../mod/contacts.php:533
msgid "you are a fan of"
msgstr ""
#: ../../mod/contacts.php:543 ../../mod/nogroup.php:41
#: ../../mod/contacts.php:550 ../../mod/nogroup.php:41
msgid "Edit contact"
msgstr ""
#: ../../mod/contacts.php:564 ../../view/theme/diabook/theme.php:129
#: ../../mod/contacts.php:571 ../../view/theme/diabook/theme.php:129
#: ../../include/nav.php:139
msgid "Contacts"
msgstr ""
#: ../../mod/contacts.php:568
#: ../../mod/contacts.php:575
msgid "Search your contacts"
msgstr ""
#: ../../mod/contacts.php:569 ../../mod/directory.php:57
#: ../../mod/contacts.php:576 ../../mod/directory.php:59
msgid "Finding: "
msgstr ""
#: ../../mod/contacts.php:570 ../../mod/directory.php:59
#: ../../mod/contacts.php:577 ../../mod/directory.php:61
#: ../../include/contact_widgets.php:33
msgid "Find"
msgstr ""
@ -1915,8 +1924,8 @@ msgstr ""
#: ../../addon/facebook/facebook.php:702
#: ../../addon/facebook/facebook.php:1200
#: ../../addon/public_server/public_server.php:62
#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:3219
#: ../../boot.php:797
#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:3222
#: ../../boot.php:788
msgid "Administrator"
msgstr ""
@ -1926,7 +1935,7 @@ msgid ""
"Password reset failed."
msgstr ""
#: ../../mod/lostpass.php:83 ../../boot.php:934
#: ../../mod/lostpass.php:83 ../../boot.php:925
msgid "Password Reset"
msgstr ""
@ -1998,7 +2007,8 @@ msgstr ""
msgid "Remove account"
msgstr ""
#: ../../mod/settings.php:69 ../../mod/admin.php:771 ../../mod/admin.php:976
#: ../../mod/settings.php:69 ../../mod/newmember.php:22
#: ../../mod/admin.php:782 ../../mod/admin.php:987
#: ../../addon/dav/friendica/layout.fnk.php:225
#: ../../addon/mathjax/mathjax.php:36 ../../view/theme/diabook/theme.php:643
#: ../../view/theme/diabook/theme.php:773 ../../include/nav.php:137
@ -2009,7 +2019,7 @@ msgstr ""
msgid "Missing some important data!"
msgstr ""
#: ../../mod/settings.php:116 ../../mod/settings.php:563
#: ../../mod/settings.php:116 ../../mod/settings.php:569
msgid "Update"
msgstr ""
@ -2021,47 +2031,47 @@ msgstr ""
msgid "Email settings updated."
msgstr ""
#: ../../mod/settings.php:285
#: ../../mod/settings.php:290
msgid "Passwords do not match. Password unchanged."
msgstr ""
#: ../../mod/settings.php:290
#: ../../mod/settings.php:295
msgid "Empty passwords are not allowed. Password unchanged."
msgstr ""
#: ../../mod/settings.php:301
#: ../../mod/settings.php:306
msgid "Password changed."
msgstr ""
#: ../../mod/settings.php:303
#: ../../mod/settings.php:308
msgid "Password update failed. Please try again."
msgstr ""
#: ../../mod/settings.php:368
#: ../../mod/settings.php:373
msgid " Please use a shorter name."
msgstr ""
#: ../../mod/settings.php:370
#: ../../mod/settings.php:375
msgid " Name too short."
msgstr ""
#: ../../mod/settings.php:376
#: ../../mod/settings.php:381
msgid " Not valid email."
msgstr ""
#: ../../mod/settings.php:378
#: ../../mod/settings.php:383
msgid " Cannot change to that email."
msgstr ""
#: ../../mod/settings.php:432
#: ../../mod/settings.php:437
msgid "Private forum has no privacy permissions. Using default privacy group."
msgstr ""
#: ../../mod/settings.php:436
#: ../../mod/settings.php:441
msgid "Private forum has no privacy permissions and no default privacy group."
msgstr ""
#: ../../mod/settings.php:466 ../../addon/facebook/facebook.php:495
#: ../../mod/settings.php:471 ../../addon/facebook/facebook.php:495
#: ../../addon/impressum/impressum.php:77
#: ../../addon/openstreetmap/openstreetmap.php:80
#: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105
@ -2069,444 +2079,452 @@ msgstr ""
msgid "Settings updated."
msgstr ""
#: ../../mod/settings.php:536 ../../mod/settings.php:562
#: ../../mod/settings.php:598
#: ../../mod/settings.php:542 ../../mod/settings.php:568
#: ../../mod/settings.php:604
msgid "Add application"
msgstr ""
#: ../../mod/settings.php:540 ../../mod/settings.php:566
#: ../../mod/settings.php:546 ../../mod/settings.php:572
#: ../../addon/statusnet/statusnet.php:570
msgid "Consumer Key"
msgstr ""
#: ../../mod/settings.php:541 ../../mod/settings.php:567
#: ../../mod/settings.php:547 ../../mod/settings.php:573
#: ../../addon/statusnet/statusnet.php:569
msgid "Consumer Secret"
msgstr ""
#: ../../mod/settings.php:542 ../../mod/settings.php:568
#: ../../mod/settings.php:548 ../../mod/settings.php:574
msgid "Redirect"
msgstr ""
#: ../../mod/settings.php:543 ../../mod/settings.php:569
#: ../../mod/settings.php:549 ../../mod/settings.php:575
msgid "Icon url"
msgstr ""
#: ../../mod/settings.php:554
#: ../../mod/settings.php:560
msgid "You can't edit this application."
msgstr ""
#: ../../mod/settings.php:597
#: ../../mod/settings.php:603
msgid "Connected Apps"
msgstr ""
#: ../../mod/settings.php:601
#: ../../mod/settings.php:607
msgid "Client key starts with"
msgstr ""
#: ../../mod/settings.php:602
#: ../../mod/settings.php:608
msgid "No name"
msgstr ""
#: ../../mod/settings.php:603
#: ../../mod/settings.php:609
msgid "Remove authorization"
msgstr ""
#: ../../mod/settings.php:614
#: ../../mod/settings.php:620
msgid "No Plugin settings configured"
msgstr ""
#: ../../mod/settings.php:622 ../../addon/widgets/widgets.php:123
#: ../../mod/settings.php:628 ../../addon/widgets/widgets.php:123
msgid "Plugin Settings"
msgstr ""
#: ../../mod/settings.php:634 ../../mod/settings.php:635
#: ../../mod/settings.php:640 ../../mod/settings.php:641
#, php-format
msgid "Built-in support for %s connectivity is %s"
msgstr ""
#: ../../mod/settings.php:634 ../../mod/settings.php:635
#: ../../mod/settings.php:640 ../../mod/settings.php:641
msgid "enabled"
msgstr ""
#: ../../mod/settings.php:634 ../../mod/settings.php:635
#: ../../mod/settings.php:640 ../../mod/settings.php:641
msgid "disabled"
msgstr ""
#: ../../mod/settings.php:635
#: ../../mod/settings.php:641
msgid "StatusNet"
msgstr ""
#: ../../mod/settings.php:667
#: ../../mod/settings.php:673
msgid "Email access is disabled on this site."
msgstr ""
#: ../../mod/settings.php:673
#: ../../mod/settings.php:679
msgid "Connector Settings"
msgstr ""
#: ../../mod/settings.php:678
#: ../../mod/settings.php:684
msgid "Email/Mailbox Setup"
msgstr ""
#: ../../mod/settings.php:679
#: ../../mod/settings.php:685
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:680
#: ../../mod/settings.php:686
msgid "Last successful email check:"
msgstr ""
#: ../../mod/settings.php:682
#: ../../mod/settings.php:688
msgid "IMAP server name:"
msgstr ""
#: ../../mod/settings.php:683
#: ../../mod/settings.php:689
msgid "IMAP port:"
msgstr ""
#: ../../mod/settings.php:684
#: ../../mod/settings.php:690
msgid "Security:"
msgstr ""
#: ../../mod/settings.php:684 ../../mod/settings.php:689
#: ../../mod/settings.php:690 ../../mod/settings.php:695
#: ../../addon/dav/common/wdcal_edit.inc.php:191
msgid "None"
msgstr ""
#: ../../mod/settings.php:685
#: ../../mod/settings.php:691
msgid "Email login name:"
msgstr ""
#: ../../mod/settings.php:686
#: ../../mod/settings.php:692
msgid "Email password:"
msgstr ""
#: ../../mod/settings.php:687
#: ../../mod/settings.php:693
msgid "Reply-to address:"
msgstr ""
#: ../../mod/settings.php:688
#: ../../mod/settings.php:694
msgid "Send public posts to all email contacts:"
msgstr ""
#: ../../mod/settings.php:689
#: ../../mod/settings.php:695
msgid "Action after import:"
msgstr ""
#: ../../mod/settings.php:689
#: ../../mod/settings.php:695
msgid "Mark as seen"
msgstr ""
#: ../../mod/settings.php:689
#: ../../mod/settings.php:695
msgid "Move to folder"
msgstr ""
#: ../../mod/settings.php:690
#: ../../mod/settings.php:696
msgid "Move to folder:"
msgstr ""
#: ../../mod/settings.php:750
#: ../../mod/settings.php:727 ../../mod/admin.php:402
msgid "No special theme for mobile devices"
msgstr ""
#: ../../mod/settings.php:767
msgid "Display Settings"
msgstr ""
#: ../../mod/settings.php:756 ../../mod/settings.php:766
#: ../../mod/settings.php:773 ../../mod/settings.php:784
msgid "Display Theme:"
msgstr ""
#: ../../mod/settings.php:757
#: ../../mod/settings.php:774
msgid "Mobile Theme:"
msgstr ""
#: ../../mod/settings.php:775
msgid "Update browser every xx seconds"
msgstr ""
#: ../../mod/settings.php:757
#: ../../mod/settings.php:775
msgid "Minimum of 10 seconds, no maximum"
msgstr ""
#: ../../mod/settings.php:758
msgid "Number of items to display on the network page:"
#: ../../mod/settings.php:776
msgid "Number of items to display per page:"
msgstr ""
#: ../../mod/settings.php:758
#: ../../mod/settings.php:776
msgid "Maximum of 100 items"
msgstr ""
#: ../../mod/settings.php:759
#: ../../mod/settings.php:777
msgid "Don't show emoticons"
msgstr ""
#: ../../mod/settings.php:835
#: ../../mod/settings.php:853
msgid "Normal Account Page"
msgstr ""
#: ../../mod/settings.php:836
#: ../../mod/settings.php:854
msgid "This account is a normal personal profile"
msgstr ""
#: ../../mod/settings.php:839
#: ../../mod/settings.php:857
msgid "Soapbox Page"
msgstr ""
#: ../../mod/settings.php:840
#: ../../mod/settings.php:858
msgid "Automatically approve all connection/friend requests as read-only fans"
msgstr ""
#: ../../mod/settings.php:843
#: ../../mod/settings.php:861
msgid "Community Forum/Celebrity Account"
msgstr ""
#: ../../mod/settings.php:844
#: ../../mod/settings.php:862
msgid "Automatically approve all connection/friend requests as read-write fans"
msgstr ""
#: ../../mod/settings.php:847
#: ../../mod/settings.php:865
msgid "Automatic Friend Page"
msgstr ""
#: ../../mod/settings.php:848
#: ../../mod/settings.php:866
msgid "Automatically approve all connection/friend requests as friends"
msgstr ""
#: ../../mod/settings.php:851
#: ../../mod/settings.php:869
msgid "Private Forum [Experimental]"
msgstr ""
#: ../../mod/settings.php:852
#: ../../mod/settings.php:870
msgid "Private forum - approved members only"
msgstr ""
#: ../../mod/settings.php:864
#: ../../mod/settings.php:882
msgid "OpenID:"
msgstr ""
#: ../../mod/settings.php:864
#: ../../mod/settings.php:882
msgid "(Optional) Allow this OpenID to login to this account."
msgstr ""
#: ../../mod/settings.php:874
#: ../../mod/settings.php:892
msgid "Publish your default profile in your local site directory?"
msgstr ""
#: ../../mod/settings.php:880
#: ../../mod/settings.php:898
msgid "Publish your default profile in the global social directory?"
msgstr ""
#: ../../mod/settings.php:888
#: ../../mod/settings.php:906
msgid "Hide your contact/friend list from viewers of your default profile?"
msgstr ""
#: ../../mod/settings.php:892
#: ../../mod/settings.php:910
msgid "Hide your profile details from unknown viewers?"
msgstr ""
#: ../../mod/settings.php:897
#: ../../mod/settings.php:915
msgid "Allow friends to post to your profile page?"
msgstr ""
#: ../../mod/settings.php:903
#: ../../mod/settings.php:921
msgid "Allow friends to tag your posts?"
msgstr ""
#: ../../mod/settings.php:909
#: ../../mod/settings.php:927
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr ""
#: ../../mod/settings.php:915
#: ../../mod/settings.php:933
msgid "Permit unknown people to send you private mail?"
msgstr ""
#: ../../mod/settings.php:923
#: ../../mod/settings.php:941
msgid "Profile is <strong>not published</strong>."
msgstr ""
#: ../../mod/settings.php:926 ../../mod/profile_photo.php:214
#: ../../mod/settings.php:944 ../../mod/profile_photo.php:214
msgid "or"
msgstr ""
#: ../../mod/settings.php:931
#: ../../mod/settings.php:949
msgid "Your Identity Address is"
msgstr ""
#: ../../mod/settings.php:942
#: ../../mod/settings.php:960
msgid "Automatically expire posts after this many days:"
msgstr ""
#: ../../mod/settings.php:942
#: ../../mod/settings.php:960
msgid "If empty, posts will not expire. Expired posts will be deleted"
msgstr ""
#: ../../mod/settings.php:943
#: ../../mod/settings.php:961
msgid "Advanced expiration settings"
msgstr ""
#: ../../mod/settings.php:944
#: ../../mod/settings.php:962
msgid "Advanced Expiration"
msgstr ""
#: ../../mod/settings.php:945
#: ../../mod/settings.php:963
msgid "Expire posts:"
msgstr ""
#: ../../mod/settings.php:946
#: ../../mod/settings.php:964
msgid "Expire personal notes:"
msgstr ""
#: ../../mod/settings.php:947
#: ../../mod/settings.php:965
msgid "Expire starred posts:"
msgstr ""
#: ../../mod/settings.php:948
#: ../../mod/settings.php:966
msgid "Expire photos:"
msgstr ""
#: ../../mod/settings.php:949
#: ../../mod/settings.php:967
msgid "Only expire posts by others:"
msgstr ""
#: ../../mod/settings.php:956
#: ../../mod/settings.php:974
msgid "Account Settings"
msgstr ""
#: ../../mod/settings.php:964
#: ../../mod/settings.php:982
msgid "Password Settings"
msgstr ""
#: ../../mod/settings.php:965
#: ../../mod/settings.php:983
msgid "New Password:"
msgstr ""
#: ../../mod/settings.php:966
#: ../../mod/settings.php:984
msgid "Confirm:"
msgstr ""
#: ../../mod/settings.php:966
#: ../../mod/settings.php:984
msgid "Leave password fields blank unless changing"
msgstr ""
#: ../../mod/settings.php:970
#: ../../mod/settings.php:988
msgid "Basic Settings"
msgstr ""
#: ../../mod/settings.php:971 ../../include/profile_advanced.php:15
#: ../../mod/settings.php:989 ../../include/profile_advanced.php:15
msgid "Full Name:"
msgstr ""
#: ../../mod/settings.php:972
#: ../../mod/settings.php:990
msgid "Email Address:"
msgstr ""
#: ../../mod/settings.php:973
#: ../../mod/settings.php:991
msgid "Your Timezone:"
msgstr ""
#: ../../mod/settings.php:974
#: ../../mod/settings.php:992
msgid "Default Post Location:"
msgstr ""
#: ../../mod/settings.php:975
#: ../../mod/settings.php:993
msgid "Use Browser Location:"
msgstr ""
#: ../../mod/settings.php:978
#: ../../mod/settings.php:996
msgid "Security and Privacy Settings"
msgstr ""
#: ../../mod/settings.php:980
#: ../../mod/settings.php:998
msgid "Maximum Friend Requests/Day:"
msgstr ""
#: ../../mod/settings.php:980 ../../mod/settings.php:999
#: ../../mod/settings.php:998 ../../mod/settings.php:1017
msgid "(to prevent spam abuse)"
msgstr ""
#: ../../mod/settings.php:981
#: ../../mod/settings.php:999
msgid "Default Post Permissions"
msgstr ""
#: ../../mod/settings.php:982
#: ../../mod/settings.php:1000
msgid "(click to open/close)"
msgstr ""
#: ../../mod/settings.php:999
#: ../../mod/settings.php:1017
msgid "Maximum private messages per day from unknown people:"
msgstr ""
#: ../../mod/settings.php:1002
#: ../../mod/settings.php:1020
msgid "Notification Settings"
msgstr ""
#: ../../mod/settings.php:1003
#: ../../mod/settings.php:1021
msgid "By default post a status message when:"
msgstr ""
#: ../../mod/settings.php:1004
#: ../../mod/settings.php:1022
msgid "accepting a friend request"
msgstr ""
#: ../../mod/settings.php:1005
#: ../../mod/settings.php:1023
msgid "joining a forum/community"
msgstr ""
#: ../../mod/settings.php:1006
#: ../../mod/settings.php:1024
msgid "making an <em>interesting</em> profile change"
msgstr ""
#: ../../mod/settings.php:1007
#: ../../mod/settings.php:1025
msgid "Send a notification email when:"
msgstr ""
#: ../../mod/settings.php:1008
#: ../../mod/settings.php:1026
msgid "You receive an introduction"
msgstr ""
#: ../../mod/settings.php:1009
#: ../../mod/settings.php:1027
msgid "Your introductions are confirmed"
msgstr ""
#: ../../mod/settings.php:1010
#: ../../mod/settings.php:1028
msgid "Someone writes on your profile wall"
msgstr ""
#: ../../mod/settings.php:1011
#: ../../mod/settings.php:1029
msgid "Someone writes a followup comment"
msgstr ""
#: ../../mod/settings.php:1012
#: ../../mod/settings.php:1030
msgid "You receive a private message"
msgstr ""
#: ../../mod/settings.php:1013
#: ../../mod/settings.php:1031
msgid "You receive a friend suggestion"
msgstr ""
#: ../../mod/settings.php:1014
#: ../../mod/settings.php:1032
msgid "You are tagged in a post"
msgstr ""
#: ../../mod/settings.php:1015
#: ../../mod/settings.php:1033
msgid "You are poked/prodded/etc. in a post"
msgstr ""
#: ../../mod/settings.php:1018
#: ../../mod/settings.php:1036
msgid "Advanced Account/Page Type Settings"
msgstr ""
#: ../../mod/settings.php:1019
#: ../../mod/settings.php:1037
msgid "Change the behaviour of this account for special situations"
msgstr ""
#: ../../mod/manage.php:90
#: ../../mod/manage.php:91
msgid "Manage Identities and/or Pages"
msgstr ""
#: ../../mod/manage.php:93
#: ../../mod/manage.php:94
msgid ""
"Toggle between different identities or community/group pages which share "
"your account details or which you have been granted \"manage\" permissions"
msgstr ""
#: ../../mod/manage.php:95
#: ../../mod/manage.php:96
msgid "Select an identity to manage: "
msgstr ""
@ -2594,7 +2612,7 @@ msgstr ""
msgid "Invalid contact."
msgstr ""
#: ../../mod/notes.php:44 ../../boot.php:1666
#: ../../mod/notes.php:44 ../../boot.php:1690
msgid "Personal Notes"
msgstr ""
@ -2637,7 +2655,7 @@ msgstr ""
#: ../../mod/wallmessage.php:123 ../../mod/wallmessage.php:131
#: ../../mod/message.php:242 ../../mod/message.php:250
#: ../../include/conversation.php:1101 ../../include/conversation.php:1118
#: ../../include/conversation.php:1132 ../../include/conversation.php:1149
msgid "Please enter a link URL:"
msgstr ""
@ -2653,17 +2671,17 @@ msgid ""
msgstr ""
#: ../../mod/wallmessage.php:140 ../../mod/message.php:279
#: ../../mod/message.php:467
#: ../../mod/message.php:469
msgid "To:"
msgstr ""
#: ../../mod/wallmessage.php:141 ../../mod/message.php:284
#: ../../mod/message.php:469
#: ../../mod/message.php:471
msgid "Subject:"
msgstr ""
#: ../../mod/wallmessage.php:147 ../../mod/message.php:288
#: ../../mod/message.php:472 ../../mod/invite.php:113
#: ../../mod/message.php:474 ../../mod/invite.php:113
msgid "Your message:"
msgstr ""
@ -2683,21 +2701,33 @@ msgid ""
"registration and then will quietly disappear."
msgstr ""
#: ../../mod/newmember.php:16
#: ../../mod/newmember.php:14
msgid "Getting Started"
msgstr ""
#: ../../mod/newmember.php:18
msgid "Friendica Walk-Through"
msgstr ""
#: ../../mod/newmember.php:18
msgid ""
"On your <em>Quick Start</em> page - find a brief introduction to your "
"profile and network tabs, make some new connections, and find some groups to "
"join."
msgstr ""
#: ../../mod/newmember.php:18
#: ../../mod/newmember.php:26
msgid "Go to Your Settings"
msgstr ""
#: ../../mod/newmember.php:26
msgid ""
"On your <em>Settings</em> page - change your initial password. Also make a "
"note of your Identity Address. This looks just like an email address - and "
"will be useful in making friends on the free social web."
msgstr ""
#: ../../mod/newmember.php:20
#: ../../mod/newmember.php:28
msgid ""
"Review the other settings, particularly the privacy settings. An unpublished "
"directory listing is like having an unlisted phone number. In general, you "
@ -2705,61 +2735,106 @@ msgid ""
"potential friends know exactly how to find you."
msgstr ""
#: ../../mod/newmember.php:22
#: ../../mod/newmember.php:32 ../../mod/profperm.php:103
#: ../../view/theme/diabook/theme.php:128 ../../include/profile_advanced.php:7
#: ../../include/profile_advanced.php:84 ../../include/nav.php:50
#: ../../boot.php:1666
msgid "Profile"
msgstr ""
#: ../../mod/newmember.php:36 ../../mod/profile_photo.php:211
msgid "Upload Profile Photo"
msgstr ""
#: ../../mod/newmember.php:36
msgid ""
"Upload a profile photo if you have not done so already. Studies have shown "
"that people with real photos of themselves are ten times more likely to make "
"friends than people who do not."
msgstr ""
#: ../../mod/newmember.php:25
msgid ""
"Authorise the Facebook Connector if you currently have a Facebook account "
"and we will (optionally) import all your Facebook friends and conversations."
#: ../../mod/newmember.php:38
msgid "Edit Your Profile"
msgstr ""
#: ../../mod/newmember.php:27
msgid ""
"<em>If</em> this is your own personal server, installing the Facebook addon "
"may ease your transition to the free social web."
msgstr ""
#: ../../mod/newmember.php:32
msgid ""
"Enter your email access information on your Connector Settings page if you "
"wish to import and interact with friends or mailing lists from your email "
"INBOX"
msgstr ""
#: ../../mod/newmember.php:34
#: ../../mod/newmember.php:38
msgid ""
"Edit your <strong>default</strong> profile to your liking. Review the "
"settings for hiding your list of friends and hiding the profile from unknown "
"visitors."
msgstr ""
#: ../../mod/newmember.php:36
#: ../../mod/newmember.php:40
msgid "Profile Keywords"
msgstr ""
#: ../../mod/newmember.php:40
msgid ""
"Set some public keywords for your default profile which describe your "
"interests. We may be able to find other people with similar interests and "
"suggest friendships."
msgstr ""
#: ../../mod/newmember.php:38
#: ../../mod/newmember.php:44
msgid "Connecting"
msgstr ""
#: ../../mod/newmember.php:49 ../../mod/newmember.php:51
#: ../../addon/facebook/facebook.php:728
#: ../../include/contact_selectors.php:81
msgid "Facebook"
msgstr ""
#: ../../mod/newmember.php:49
msgid ""
"Authorise the Facebook Connector if you currently have a Facebook account "
"and we will (optionally) import all your Facebook friends and conversations."
msgstr ""
#: ../../mod/newmember.php:51
msgid ""
"<em>If</em> this is your own personal server, installing the Facebook addon "
"may ease your transition to the free social web."
msgstr ""
#: ../../mod/newmember.php:56
msgid "Importing Emails"
msgstr ""
#: ../../mod/newmember.php:56
msgid ""
"Enter your email access information on your Connector Settings page if you "
"wish to import and interact with friends or mailing lists from your email "
"INBOX"
msgstr ""
#: ../../mod/newmember.php:58
msgid "Go to Your Contacts Page"
msgstr ""
#: ../../mod/newmember.php:58
msgid ""
"Your Contacts page is your gateway to managing friendships and connecting "
"with friends on other networks. Typically you enter their address or site "
"URL in the <em>Add New Contact</em> dialog."
msgstr ""
#: ../../mod/newmember.php:40
#: ../../mod/newmember.php:60
msgid "Go to Your Site's Directory"
msgstr ""
#: ../../mod/newmember.php:60
msgid ""
"The Directory page lets you find other people in this network or other "
"federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
"their profile page. Provide your own Identity Address if requested."
msgstr ""
#: ../../mod/newmember.php:42
#: ../../mod/newmember.php:62
msgid "Finding New People"
msgstr ""
#: ../../mod/newmember.php:62
msgid ""
"On the side panel of the Contacts page are several tools to find new "
"friends. We can match people by interest, look up people by name or "
@ -2768,14 +2843,41 @@ msgid ""
"hours."
msgstr ""
#: ../../mod/newmember.php:44
#: ../../mod/newmember.php:66 ../../include/group.php:239
msgid "Groups"
msgstr ""
#: ../../mod/newmember.php:70
msgid "Group Your Contacts"
msgstr ""
#: ../../mod/newmember.php:70
msgid ""
"Once you have made some friends, organize them into private conversation "
"groups from the sidebar of your Contacts page and then you can interact with "
"each group privately on your Network page."
msgstr ""
#: ../../mod/newmember.php:46
#: ../../mod/newmember.php:73
msgid "Why Aren't My Posts Public?"
msgstr ""
#: ../../mod/newmember.php:73
msgid ""
"Friendica respects your privacy. By default, your posts will only show up to "
"people you've added as friends. For more information, see the help section "
"from the link above."
msgstr ""
#: ../../mod/newmember.php:78
msgid "Getting Help"
msgstr ""
#: ../../mod/newmember.php:82
msgid "Go to the Help Section"
msgstr ""
#: ../../mod/newmember.php:82
msgid ""
"Our <strong>help</strong> pages may be consulted for detail on other program "
"features and resources."
@ -2845,12 +2947,6 @@ msgstr ""
msgid "Profile Visibility Editor"
msgstr ""
#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128
#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:84
#: ../../include/nav.php:50 ../../boot.php:1642
msgid "Profile"
msgstr ""
#: ../../mod/profperm.php:114
msgid "Visible To"
msgstr ""
@ -2900,58 +2996,58 @@ msgid ""
"Please try again tomorrow."
msgstr ""
#: ../../mod/register.php:215
#: ../../mod/register.php:217
msgid ""
"You may (optionally) fill in this form via OpenID by supplying your OpenID "
"and clicking 'Register'."
msgstr ""
#: ../../mod/register.php:216
#: ../../mod/register.php:218
msgid ""
"If you are not familiar with OpenID, please leave that field blank and fill "
"in the rest of the items."
msgstr ""
#: ../../mod/register.php:217
#: ../../mod/register.php:219
msgid "Your OpenID (optional): "
msgstr ""
#: ../../mod/register.php:231
#: ../../mod/register.php:233
msgid "Include your profile in member directory?"
msgstr ""
#: ../../mod/register.php:251
#: ../../mod/register.php:253
msgid "Membership on this site is by invitation only."
msgstr ""
#: ../../mod/register.php:252
#: ../../mod/register.php:254
msgid "Your invitation ID: "
msgstr ""
#: ../../mod/register.php:255 ../../mod/admin.php:436
#: ../../mod/register.php:257 ../../mod/admin.php:444
msgid "Registration"
msgstr ""
#: ../../mod/register.php:263
#: ../../mod/register.php:265
msgid "Your Full Name (e.g. Joe Smith): "
msgstr ""
#: ../../mod/register.php:264
#: ../../mod/register.php:266
msgid "Your Email Address: "
msgstr ""
#: ../../mod/register.php:265
#: ../../mod/register.php:267
msgid ""
"Choose a profile nickname. This must begin with a text character. Your "
"profile address on this site will then be '<strong>nickname@$sitename</"
"strong>'."
msgstr ""
#: ../../mod/register.php:266
#: ../../mod/register.php:268
msgid "Choose a nickname: "
msgstr ""
#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:896
#: ../../mod/register.php:271 ../../include/nav.php:81 ../../boot.php:887
msgid "Register"
msgstr ""
@ -2959,33 +3055,33 @@ msgstr ""
msgid "People Search"
msgstr ""
#: ../../mod/like.php:145 ../../mod/like.php:298 ../../mod/tagger.php:70
#: ../../mod/like.php:145 ../../mod/like.php:298 ../../mod/tagger.php:62
#: ../../addon/facebook/facebook.php:1594
#: ../../addon/communityhome/communityhome.php:158
#: ../../addon/communityhome/communityhome.php:167
#: ../../view/theme/diabook/theme.php:565
#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1824
#: ../../include/conversation.php:109 ../../include/conversation.php:118
#: ../../include/conversation.php:239 ../../include/conversation.php:248
#: ../../include/conversation.php:120 ../../include/conversation.php:129
#: ../../include/conversation.php:250 ../../include/conversation.php:259
msgid "status"
msgstr ""
#: ../../mod/like.php:162 ../../addon/facebook/facebook.php:1598
#: ../../addon/communityhome/communityhome.php:172
#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1840
#: ../../include/conversation.php:126
#: ../../include/conversation.php:137
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr ""
#: ../../mod/like.php:164 ../../include/conversation.php:129
#: ../../mod/like.php:164 ../../include/conversation.php:140
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr ""
#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159
#: ../../mod/admin.php:720 ../../mod/admin.php:919 ../../mod/display.php:29
#: ../../mod/display.php:135 ../../include/items.php:3697
#: ../../mod/admin.php:731 ../../mod/admin.php:930 ../../mod/display.php:29
#: ../../mod/display.php:145 ../../include/items.php:3700
msgid "Item not found."
msgstr ""
@ -2994,7 +3090,7 @@ msgid "Access denied."
msgstr ""
#: ../../mod/fbrowser.php:25 ../../view/theme/diabook/theme.php:130
#: ../../include/nav.php:51 ../../boot.php:1649
#: ../../include/nav.php:51 ../../boot.php:1673
msgid "Photos"
msgstr ""
@ -3023,39 +3119,39 @@ msgstr ""
msgid "Empty post discarded."
msgstr ""
#: ../../mod/item.php:396 ../../mod/wall_upload.php:122
#: ../../mod/wall_upload.php:131 ../../mod/wall_upload.php:138
#: ../../mod/item.php:407 ../../mod/wall_upload.php:133
#: ../../mod/wall_upload.php:142 ../../mod/wall_upload.php:149
#: ../../include/message.php:144
msgid "Wall Photos"
msgstr ""
#: ../../mod/item.php:809
#: ../../mod/item.php:820
msgid "System error. Post not saved."
msgstr ""
#: ../../mod/item.php:834
#: ../../mod/item.php:845
#, php-format
msgid ""
"This message was sent to you by %s, a member of the Friendica social network."
msgstr ""
#: ../../mod/item.php:836
#: ../../mod/item.php:847
#, php-format
msgid "You may visit them online at %s"
msgstr ""
#: ../../mod/item.php:837
#: ../../mod/item.php:848
msgid ""
"Please contact the sender by replying to this post if you do not wish to "
"receive these messages."
msgstr ""
#: ../../mod/item.php:839
#: ../../mod/item.php:850
#, php-format
msgid "%s posted an update."
msgstr ""
#: ../../mod/mood.php:62 ../../include/conversation.php:217
#: ../../mod/mood.php:62 ../../include/conversation.php:228
#, php-format
msgid "%1$s is currently %2$s"
msgstr ""
@ -3088,7 +3184,7 @@ msgstr ""
msgid "Unable to process image"
msgstr ""
#: ../../mod/profile_photo.php:117 ../../mod/wall_upload.php:77
#: ../../mod/profile_photo.php:117 ../../mod/wall_upload.php:88
#, php-format
msgid "Image exceeds size limit of %d"
msgstr ""
@ -3097,10 +3193,6 @@ msgstr ""
msgid "Upload File:"
msgstr ""
#: ../../mod/profile_photo.php:211
msgid "Upload Profile Photo"
msgstr ""
#: ../../mod/profile_photo.php:212
#: ../../addon/dav/friendica/layout.fnk.php:152
msgid "Upload"
@ -3183,7 +3275,7 @@ msgstr ""
msgid "%s and You"
msgstr ""
#: ../../mod/message.php:350 ../../mod/message.php:460
#: ../../mod/message.php:350 ../../mod/message.php:462
msgid "Delete conversation"
msgstr ""
@ -3191,28 +3283,28 @@ msgstr ""
msgid "D, d M Y - g:i A"
msgstr ""
#: ../../mod/message.php:355
#: ../../mod/message.php:356
#, php-format
msgid "%d message"
msgid_plural "%d messages"
msgstr[0] ""
msgstr[1] ""
#: ../../mod/message.php:390
#: ../../mod/message.php:391
msgid "Message not available."
msgstr ""
#: ../../mod/message.php:443
#: ../../mod/message.php:444
msgid "Delete message"
msgstr ""
#: ../../mod/message.php:462
#: ../../mod/message.php:464
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr ""
#: ../../mod/message.php:466
#: ../../mod/message.php:468
msgid "Send Reply"
msgstr ""
@ -3229,19 +3321,19 @@ msgstr ""
msgid "Theme settings updated."
msgstr ""
#: ../../mod/admin.php:96 ../../mod/admin.php:434
#: ../../mod/admin.php:96 ../../mod/admin.php:442
msgid "Site"
msgstr ""
#: ../../mod/admin.php:97 ../../mod/admin.php:675 ../../mod/admin.php:687
#: ../../mod/admin.php:97 ../../mod/admin.php:686 ../../mod/admin.php:698
msgid "Users"
msgstr ""
#: ../../mod/admin.php:98 ../../mod/admin.php:769 ../../mod/admin.php:811
#: ../../mod/admin.php:98 ../../mod/admin.php:780 ../../mod/admin.php:822
msgid "Plugins"
msgstr ""
#: ../../mod/admin.php:99 ../../mod/admin.php:974 ../../mod/admin.php:1010
#: ../../mod/admin.php:99 ../../mod/admin.php:985 ../../mod/admin.php:1021
msgid "Themes"
msgstr ""
@ -3249,7 +3341,7 @@ msgstr ""
msgid "DB updates"
msgstr ""
#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1097
#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1108
msgid "Logs"
msgstr ""
@ -3265,19 +3357,19 @@ msgstr ""
msgid "User registrations waiting for confirmation"
msgstr ""
#: ../../mod/admin.php:183 ../../mod/admin.php:657
#: ../../mod/admin.php:183 ../../mod/admin.php:668
msgid "Normal Account"
msgstr ""
#: ../../mod/admin.php:184 ../../mod/admin.php:658
#: ../../mod/admin.php:184 ../../mod/admin.php:669
msgid "Soapbox Account"
msgstr ""
#: ../../mod/admin.php:185 ../../mod/admin.php:659
#: ../../mod/admin.php:185 ../../mod/admin.php:670
msgid "Community/Celebrity Account"
msgstr ""
#: ../../mod/admin.php:186 ../../mod/admin.php:660
#: ../../mod/admin.php:186 ../../mod/admin.php:671
msgid "Automatic Friend Account"
msgstr ""
@ -3293,9 +3385,9 @@ msgstr ""
msgid "Message queues"
msgstr ""
#: ../../mod/admin.php:212 ../../mod/admin.php:433 ../../mod/admin.php:674
#: ../../mod/admin.php:768 ../../mod/admin.php:810 ../../mod/admin.php:973
#: ../../mod/admin.php:1009 ../../mod/admin.php:1096
#: ../../mod/admin.php:212 ../../mod/admin.php:441 ../../mod/admin.php:685
#: ../../mod/admin.php:779 ../../mod/admin.php:821 ../../mod/admin.php:984
#: ../../mod/admin.php:1020 ../../mod/admin.php:1107
msgid "Administration"
msgstr ""
@ -3319,535 +3411,561 @@ msgstr ""
msgid "Active plugins"
msgstr ""
#: ../../mod/admin.php:367
#: ../../mod/admin.php:373
msgid "Site settings updated."
msgstr ""
#: ../../mod/admin.php:396
msgid "Don't apply a special theme for mobile devices."
msgstr ""
#: ../../mod/admin.php:420
#: ../../mod/admin.php:428
msgid "Closed"
msgstr ""
#: ../../mod/admin.php:421
#: ../../mod/admin.php:429
msgid "Requires approval"
msgstr ""
#: ../../mod/admin.php:422
#: ../../mod/admin.php:430
msgid "Open"
msgstr ""
#: ../../mod/admin.php:426
#: ../../mod/admin.php:434
msgid "No SSL policy, links will track page SSL state"
msgstr ""
#: ../../mod/admin.php:427
#: ../../mod/admin.php:435
msgid "Force all links to use SSL"
msgstr ""
#: ../../mod/admin.php:428
#: ../../mod/admin.php:436
msgid "Self-signed certificate, use SSL for local links only (discouraged)"
msgstr ""
#: ../../mod/admin.php:437
#: ../../mod/admin.php:445
msgid "File upload"
msgstr ""
#: ../../mod/admin.php:438
#: ../../mod/admin.php:446
msgid "Policies"
msgstr ""
#: ../../mod/admin.php:439
#: ../../mod/admin.php:447
msgid "Advanced"
msgstr ""
#: ../../mod/admin.php:443 ../../addon/statusnet/statusnet.php:567
#: ../../mod/admin.php:451 ../../addon/statusnet/statusnet.php:567
msgid "Site name"
msgstr ""
#: ../../mod/admin.php:444
#: ../../mod/admin.php:452
msgid "Banner/Logo"
msgstr ""
#: ../../mod/admin.php:445
#: ../../mod/admin.php:453
msgid "System language"
msgstr ""
#: ../../mod/admin.php:446
#: ../../mod/admin.php:454
msgid "System theme"
msgstr ""
#: ../../mod/admin.php:446
#: ../../mod/admin.php:454
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr ""
#: ../../mod/admin.php:447
#: ../../mod/admin.php:455
msgid "Mobile system theme"
msgstr ""
#: ../../mod/admin.php:447
#: ../../mod/admin.php:455
msgid "Theme for mobile devices"
msgstr ""
#: ../../mod/admin.php:448
#: ../../mod/admin.php:456
msgid "SSL link policy"
msgstr ""
#: ../../mod/admin.php:448
#: ../../mod/admin.php:456
msgid "Determines whether generated links should be forced to use SSL"
msgstr ""
#: ../../mod/admin.php:449
#: ../../mod/admin.php:457
msgid "Maximum image size"
msgstr ""
#: ../../mod/admin.php:449
#: ../../mod/admin.php:457
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr ""
#: ../../mod/admin.php:451
#: ../../mod/admin.php:458
msgid "Maximum image length"
msgstr ""
#: ../../mod/admin.php:458
msgid ""
"Maximum length in pixels of the longest side of uploaded images. Default is -"
"1, which means no limits."
msgstr ""
#: ../../mod/admin.php:459
msgid "JPEG image quality"
msgstr ""
#: ../../mod/admin.php:459
msgid ""
"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
"100, which is full quality."
msgstr ""
#: ../../mod/admin.php:461
msgid "Register policy"
msgstr ""
#: ../../mod/admin.php:452
#: ../../mod/admin.php:462
msgid "Register text"
msgstr ""
#: ../../mod/admin.php:452
#: ../../mod/admin.php:462
msgid "Will be displayed prominently on the registration page."
msgstr ""
#: ../../mod/admin.php:453
#: ../../mod/admin.php:463
msgid "Accounts abandoned after x days"
msgstr ""
#: ../../mod/admin.php:453
#: ../../mod/admin.php:463
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr ""
#: ../../mod/admin.php:454
#: ../../mod/admin.php:464
msgid "Allowed friend domains"
msgstr ""
#: ../../mod/admin.php:454
#: ../../mod/admin.php:464
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:455
#: ../../mod/admin.php:465
msgid "Allowed email domains"
msgstr ""
#: ../../mod/admin.php:455
#: ../../mod/admin.php:465
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:456
#: ../../mod/admin.php:466
msgid "Block public"
msgstr ""
#: ../../mod/admin.php:456
#: ../../mod/admin.php:466
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:457
#: ../../mod/admin.php:467
msgid "Force publish"
msgstr ""
#: ../../mod/admin.php:457
#: ../../mod/admin.php:467
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr ""
#: ../../mod/admin.php:458
#: ../../mod/admin.php:468
msgid "Global directory update URL"
msgstr ""
#: ../../mod/admin.php:458
#: ../../mod/admin.php:468
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:459
#: ../../mod/admin.php:469
msgid "Allow threaded items"
msgstr ""
#: ../../mod/admin.php:459
#: ../../mod/admin.php:469
msgid "Allow infinite level threading for items on this site."
msgstr ""
#: ../../mod/admin.php:461
#: ../../mod/admin.php:470
msgid "No default permissions for new users"
msgstr ""
#: ../../mod/admin.php:470
msgid ""
"New users will have no private permissions set for their posts by default, "
"making their posts public until they change it."
msgstr ""
#: ../../mod/admin.php:472
msgid "Block multiple registrations"
msgstr ""
#: ../../mod/admin.php:461
#: ../../mod/admin.php:472
msgid "Disallow users to register additional accounts for use as pages."
msgstr ""
#: ../../mod/admin.php:462
#: ../../mod/admin.php:473
msgid "OpenID support"
msgstr ""
#: ../../mod/admin.php:462
#: ../../mod/admin.php:473
msgid "OpenID support for registration and logins."
msgstr ""
#: ../../mod/admin.php:463
#: ../../mod/admin.php:474
msgid "Fullname check"
msgstr ""
#: ../../mod/admin.php:463
#: ../../mod/admin.php:474
msgid ""
"Force users to register with a space between firstname and lastname in Full "
"name, as an antispam measure"
msgstr ""
#: ../../mod/admin.php:464
#: ../../mod/admin.php:475
msgid "UTF-8 Regular expressions"
msgstr ""
#: ../../mod/admin.php:464
#: ../../mod/admin.php:475
msgid "Use PHP UTF8 regular expressions"
msgstr ""
#: ../../mod/admin.php:465
#: ../../mod/admin.php:476
msgid "Show Community Page"
msgstr ""
#: ../../mod/admin.php:465
#: ../../mod/admin.php:476
msgid ""
"Display a Community page showing all recent public postings on this site."
msgstr ""
#: ../../mod/admin.php:466
#: ../../mod/admin.php:477
msgid "Enable OStatus support"
msgstr ""
#: ../../mod/admin.php:466
#: ../../mod/admin.php:477
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:467
#: ../../mod/admin.php:478
msgid "Enable Diaspora support"
msgstr ""
#: ../../mod/admin.php:467
#: ../../mod/admin.php:478
msgid "Provide built-in Diaspora network compatibility."
msgstr ""
#: ../../mod/admin.php:468
#: ../../mod/admin.php:479
msgid "Only allow Friendica contacts"
msgstr ""
#: ../../mod/admin.php:468
#: ../../mod/admin.php:479
msgid ""
"All contacts must use Friendica protocols. All other built-in communication "
"protocols disabled."
msgstr ""
#: ../../mod/admin.php:469
#: ../../mod/admin.php:480
msgid "Verify SSL"
msgstr ""
#: ../../mod/admin.php:469
#: ../../mod/admin.php:480
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:470
#: ../../mod/admin.php:481
msgid "Proxy user"
msgstr ""
#: ../../mod/admin.php:471
#: ../../mod/admin.php:482
msgid "Proxy URL"
msgstr ""
#: ../../mod/admin.php:472
#: ../../mod/admin.php:483
msgid "Network timeout"
msgstr ""
#: ../../mod/admin.php:472
#: ../../mod/admin.php:483
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr ""
#: ../../mod/admin.php:473
#: ../../mod/admin.php:484
msgid "Delivery interval"
msgstr ""
#: ../../mod/admin.php:473
#: ../../mod/admin.php:484
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr ""
#: ../../mod/admin.php:474
#: ../../mod/admin.php:485
msgid "Poll interval"
msgstr ""
#: ../../mod/admin.php:474
#: ../../mod/admin.php:485
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr ""
#: ../../mod/admin.php:475
#: ../../mod/admin.php:486
msgid "Maximum Load Average"
msgstr ""
#: ../../mod/admin.php:475
#: ../../mod/admin.php:486
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr ""
#: ../../mod/admin.php:492
#: ../../mod/admin.php:503
msgid "Update has been marked successful"
msgstr ""
#: ../../mod/admin.php:502
#: ../../mod/admin.php:513
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr ""
#: ../../mod/admin.php:505
#: ../../mod/admin.php:516
#, php-format
msgid "Update %s was successfully applied."
msgstr ""
#: ../../mod/admin.php:509
#: ../../mod/admin.php:520
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr ""
#: ../../mod/admin.php:512
#: ../../mod/admin.php:523
#, php-format
msgid "Update function %s could not be found."
msgstr ""
#: ../../mod/admin.php:527
#: ../../mod/admin.php:538
msgid "No failed updates."
msgstr ""
#: ../../mod/admin.php:531
#: ../../mod/admin.php:542
msgid "Failed Updates"
msgstr ""
#: ../../mod/admin.php:532
#: ../../mod/admin.php:543
msgid ""
"This does not include updates prior to 1139, which did not return a status."
msgstr ""
#: ../../mod/admin.php:533
#: ../../mod/admin.php:544
msgid "Mark success (if update was manually applied)"
msgstr ""
#: ../../mod/admin.php:534
#: ../../mod/admin.php:545
msgid "Attempt to execute this update step automatically"
msgstr ""
#: ../../mod/admin.php:559
#: ../../mod/admin.php:570
#, php-format
msgid "%s user blocked/unblocked"
msgid_plural "%s users blocked/unblocked"
msgstr[0] ""
msgstr[1] ""
#: ../../mod/admin.php:566
#: ../../mod/admin.php:577
#, php-format
msgid "%s user deleted"
msgid_plural "%s users deleted"
msgstr[0] ""
msgstr[1] ""
#: ../../mod/admin.php:605
#: ../../mod/admin.php:616
#, php-format
msgid "User '%s' deleted"
msgstr ""
#: ../../mod/admin.php:613
#: ../../mod/admin.php:624
#, php-format
msgid "User '%s' unblocked"
msgstr ""
#: ../../mod/admin.php:613
#: ../../mod/admin.php:624
#, php-format
msgid "User '%s' blocked"
msgstr ""
#: ../../mod/admin.php:677
#: ../../mod/admin.php:688
msgid "select all"
msgstr ""
#: ../../mod/admin.php:678
#: ../../mod/admin.php:689
msgid "User registrations waiting for confirm"
msgstr ""
#: ../../mod/admin.php:679
#: ../../mod/admin.php:690
msgid "Request date"
msgstr ""
#: ../../mod/admin.php:679 ../../mod/admin.php:688
#: ../../mod/admin.php:690 ../../mod/admin.php:699
#: ../../include/contact_selectors.php:79
msgid "Email"
msgstr ""
#: ../../mod/admin.php:680
#: ../../mod/admin.php:691
msgid "No registrations."
msgstr ""
#: ../../mod/admin.php:682
#: ../../mod/admin.php:693
msgid "Deny"
msgstr ""
#: ../../mod/admin.php:688
#: ../../mod/admin.php:699
msgid "Register date"
msgstr ""
#: ../../mod/admin.php:688
#: ../../mod/admin.php:699
msgid "Last login"
msgstr ""
#: ../../mod/admin.php:688
#: ../../mod/admin.php:699
msgid "Last item"
msgstr ""
#: ../../mod/admin.php:688
#: ../../mod/admin.php:699
msgid "Account"
msgstr ""
#: ../../mod/admin.php:690
#: ../../mod/admin.php:701
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:691
#: ../../mod/admin.php:702
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:732
#: ../../mod/admin.php:743
#, php-format
msgid "Plugin %s disabled."
msgstr ""
#: ../../mod/admin.php:736
#: ../../mod/admin.php:747
#, php-format
msgid "Plugin %s enabled."
msgstr ""
#: ../../mod/admin.php:746 ../../mod/admin.php:944
#: ../../mod/admin.php:757 ../../mod/admin.php:955
msgid "Disable"
msgstr ""
#: ../../mod/admin.php:748 ../../mod/admin.php:946
#: ../../mod/admin.php:759 ../../mod/admin.php:957
msgid "Enable"
msgstr ""
#: ../../mod/admin.php:770 ../../mod/admin.php:975
#: ../../mod/admin.php:781 ../../mod/admin.php:986
msgid "Toggle"
msgstr ""
#: ../../mod/admin.php:778 ../../mod/admin.php:985
#: ../../mod/admin.php:789 ../../mod/admin.php:996
msgid "Author: "
msgstr ""
#: ../../mod/admin.php:779 ../../mod/admin.php:986
#: ../../mod/admin.php:790 ../../mod/admin.php:997
msgid "Maintainer: "
msgstr ""
#: ../../mod/admin.php:908
#: ../../mod/admin.php:919
msgid "No themes found."
msgstr ""
#: ../../mod/admin.php:967
#: ../../mod/admin.php:978
msgid "Screenshot"
msgstr ""
#: ../../mod/admin.php:1015
#: ../../mod/admin.php:1026
msgid "[Experimental]"
msgstr ""
#: ../../mod/admin.php:1016
#: ../../mod/admin.php:1027
msgid "[Unsupported]"
msgstr ""
#: ../../mod/admin.php:1043
#: ../../mod/admin.php:1054
msgid "Log settings updated."
msgstr ""
#: ../../mod/admin.php:1099
#: ../../mod/admin.php:1110
msgid "Clear"
msgstr ""
#: ../../mod/admin.php:1105
#: ../../mod/admin.php:1116
msgid "Debugging"
msgstr ""
#: ../../mod/admin.php:1106
#: ../../mod/admin.php:1117
msgid "Log file"
msgstr ""
#: ../../mod/admin.php:1106
#: ../../mod/admin.php:1117
msgid ""
"Must be writable by web server. Relative to your Friendica top-level "
"directory."
msgstr ""
#: ../../mod/admin.php:1107
#: ../../mod/admin.php:1118
msgid "Log level"
msgstr ""
#: ../../mod/admin.php:1157
#: ../../mod/admin.php:1168
msgid "Close"
msgstr ""
#: ../../mod/admin.php:1163
#: ../../mod/admin.php:1174
msgid "FTP Host"
msgstr ""
#: ../../mod/admin.php:1164
#: ../../mod/admin.php:1175
msgid "FTP Path"
msgstr ""
#: ../../mod/admin.php:1165
#: ../../mod/admin.php:1176
msgid "FTP User"
msgstr ""
#: ../../mod/admin.php:1166
#: ../../mod/admin.php:1177
msgid "FTP Password"
msgstr ""
#: ../../mod/profile.php:22 ../../boot.php:1065
#: ../../mod/profile.php:22 ../../boot.php:1074
msgid "Requested profile is not available."
msgstr ""
#: ../../mod/profile.php:142 ../../mod/display.php:67
#: ../../mod/profile.php:152 ../../mod/display.php:77
msgid "Access to this profile has been restricted."
msgstr ""
#: ../../mod/profile.php:167
#: ../../mod/profile.php:177
msgid "Tips for New Members"
msgstr ""
@ -3909,8 +4027,8 @@ msgid ""
"Account not found and OpenID registration is not permitted on this site."
msgstr ""
#: ../../mod/openid.php:93 ../../include/auth.php:99
#: ../../include/auth.php:162
#: ../../mod/openid.php:93 ../../include/auth.php:98
#: ../../include/auth.php:161
msgid "Login failed."
msgstr ""
@ -3930,7 +4048,7 @@ msgstr ""
msgid "link"
msgstr ""
#: ../../mod/display.php:128
#: ../../mod/display.php:138
msgid "Item has been removed."
msgstr ""
@ -3942,7 +4060,7 @@ msgstr ""
msgid "No installed applications."
msgstr ""
#: ../../mod/search.php:83 ../../include/text.php:678
#: ../../mod/search.php:85 ../../include/text.php:678
#: ../../include/text.php:679 ../../include/nav.php:91
msgid "Search"
msgstr ""
@ -4226,7 +4344,7 @@ msgid ""
"be visible to anybody using the internet."
msgstr ""
#: ../../mod/profiles.php:638 ../../mod/directory.php:109
#: ../../mod/profiles.php:638 ../../mod/directory.php:111
msgid "Age: "
msgstr ""
@ -4234,28 +4352,28 @@ msgstr ""
msgid "Edit/Manage Profiles"
msgstr ""
#: ../../mod/profiles.php:678 ../../boot.php:1174
#: ../../mod/profiles.php:678 ../../boot.php:1192
msgid "Change profile photo"
msgstr ""
#: ../../mod/profiles.php:679 ../../boot.php:1175
#: ../../mod/profiles.php:679 ../../boot.php:1193
msgid "Create New Profile"
msgstr ""
#: ../../mod/profiles.php:690 ../../boot.php:1185
#: ../../mod/profiles.php:690 ../../boot.php:1203
msgid "Profile Image"
msgstr ""
#: ../../mod/profiles.php:692 ../../boot.php:1188
#: ../../mod/profiles.php:692 ../../boot.php:1206
msgid "visible to everybody"
msgstr ""
#: ../../mod/profiles.php:693 ../../boot.php:1189
#: ../../mod/profiles.php:693 ../../boot.php:1207
msgid "Edit visibility"
msgstr ""
#: ../../mod/filer.php:29 ../../include/conversation.php:1105
#: ../../include/conversation.php:1122
#: ../../mod/filer.php:29 ../../include/conversation.php:1136
#: ../../include/conversation.php:1153
msgid "Save to Folder:"
msgstr ""
@ -4263,7 +4381,7 @@ msgstr ""
msgid "- select -"
msgstr ""
#: ../../mod/tagger.php:103 ../../include/conversation.php:256
#: ../../mod/tagger.php:95 ../../include/conversation.php:267
#, php-format
msgid "%1$s tagged %2$s's %3$s with %4$s"
msgstr ""
@ -4362,42 +4480,42 @@ msgstr ""
msgid "Ignore/Hide"
msgstr ""
#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:624
#: ../../mod/directory.php:49 ../../view/theme/diabook/theme.php:624
msgid "Global Directory"
msgstr ""
#: ../../mod/directory.php:55
#: ../../mod/directory.php:57
msgid "Find on this site"
msgstr ""
#: ../../mod/directory.php:58
#: ../../mod/directory.php:60
msgid "Site Directory"
msgstr ""
#: ../../mod/directory.php:112
#: ../../mod/directory.php:114
msgid "Gender: "
msgstr ""
#: ../../mod/directory.php:134 ../../include/profile_advanced.php:17
#: ../../boot.php:1210
#: ../../mod/directory.php:136 ../../include/profile_advanced.php:17
#: ../../boot.php:1228
msgid "Gender:"
msgstr ""
#: ../../mod/directory.php:136 ../../include/profile_advanced.php:37
#: ../../boot.php:1213
#: ../../mod/directory.php:138 ../../include/profile_advanced.php:37
#: ../../boot.php:1231
msgid "Status:"
msgstr ""
#: ../../mod/directory.php:138 ../../include/profile_advanced.php:48
#: ../../boot.php:1215
#: ../../mod/directory.php:140 ../../include/profile_advanced.php:48
#: ../../boot.php:1233
msgid "Homepage:"
msgstr ""
#: ../../mod/directory.php:140 ../../include/profile_advanced.php:58
#: ../../mod/directory.php:142 ../../include/profile_advanced.php:58
msgid "About:"
msgstr ""
#: ../../mod/directory.php:178
#: ../../mod/directory.php:180
msgid "No entries (some entries may be hidden)."
msgstr ""
@ -4521,7 +4639,7 @@ msgid "Unable to set contact photo."
msgstr ""
#: ../../mod/dfrn_confirm.php:477 ../../include/diaspora.php:608
#: ../../include/conversation.php:162
#: ../../include/conversation.php:173
#, php-format
msgid "%1$s is now friends with %2$s"
msgstr ""
@ -4680,11 +4798,6 @@ msgstr ""
msgid "Problems with Facebook Real-Time Updates"
msgstr ""
#: ../../addon/facebook/facebook.php:728
#: ../../include/contact_selectors.php:81
msgid "Facebook"
msgstr ""
#: ../../addon/facebook/facebook.php:729
msgid "Facebook Connector Settings"
msgstr ""
@ -5148,7 +5261,7 @@ msgstr ""
#: ../../addon/communityhome/communityhome.php:34
#: ../../addon/communityhome/twillingham/communityhome.php:28
#: ../../addon/communityhome/twillingham/communityhome.php:34
#: ../../include/nav.php:64 ../../boot.php:921
#: ../../include/nav.php:64 ../../boot.php:912
msgid "Login"
msgstr ""
@ -5177,7 +5290,7 @@ msgstr ""
#: ../../addon/communityhome/communityhome.php:155
#: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1397
#: ../../include/conversation.php:106 ../../include/conversation.php:236
#: ../../include/conversation.php:117 ../../include/conversation.php:247
msgid "event"
msgstr ""
@ -5617,7 +5730,7 @@ msgid "Extended calendar with CalDAV-support"
msgstr ""
#: ../../addon/dav/friendica/main.php:279
#: ../../addon/dav/friendica/main.php:280 ../../include/delivery.php:463
#: ../../addon/dav/friendica/main.php:280 ../../include/delivery.php:464
#: ../../include/enotify.php:28 ../../include/notifier.php:710
msgid "noreply"
msgstr ""
@ -7264,6 +7377,7 @@ msgid "Sex Addict"
msgstr ""
#: ../../include/profile_selectors.php:42 ../../include/user.php:278
#: ../../include/user.php:283
msgid "Friends"
msgstr ""
@ -7351,19 +7465,19 @@ msgstr ""
msgid "Ask me"
msgstr ""
#: ../../include/event.php:20 ../../include/bb2diaspora.php:439
#: ../../include/event.php:20 ../../include/bb2diaspora.php:396
msgid "Starts:"
msgstr ""
#: ../../include/event.php:30 ../../include/bb2diaspora.php:447
#: ../../include/event.php:30 ../../include/bb2diaspora.php:404
msgid "Finishes:"
msgstr ""
#: ../../include/delivery.php:456 ../../include/notifier.php:703
#: ../../include/delivery.php:457 ../../include/notifier.php:703
msgid "(no subject)"
msgstr ""
#: ../../include/Scrape.php:575
#: ../../include/Scrape.php:576
msgid " on Last.fm"
msgstr ""
@ -7406,7 +7520,7 @@ msgstr[1] ""
msgid "poke"
msgstr ""
#: ../../include/text.php:719 ../../include/conversation.php:201
#: ../../include/text.php:719 ../../include/conversation.php:212
msgid "poked"
msgstr ""
@ -7665,10 +7779,6 @@ msgstr ""
msgid "edit"
msgstr ""
#: ../../include/group.php:239
msgid "Groups"
msgstr ""
#: ../../include/group.php:240
msgid "Edit group"
msgstr ""
@ -7681,7 +7791,7 @@ msgstr ""
msgid "Contacts not in any group"
msgstr ""
#: ../../include/nav.php:46 ../../boot.php:920
#: ../../include/nav.php:46 ../../boot.php:911
msgid "Logout"
msgstr ""
@ -7689,7 +7799,7 @@ msgstr ""
msgid "End this session"
msgstr ""
#: ../../include/nav.php:49 ../../boot.php:1635
#: ../../include/nav.php:49 ../../boot.php:1659
msgid "Status"
msgstr ""
@ -7769,11 +7879,11 @@ msgstr ""
msgid "Manage other pages"
msgstr ""
#: ../../include/nav.php:138 ../../boot.php:1168
#: ../../include/nav.php:138 ../../boot.php:1186
msgid "Profiles"
msgstr ""
#: ../../include/nav.php:138 ../../boot.php:1168
#: ../../include/nav.php:138 ../../boot.php:1186
msgid "Manage/edit profiles"
msgstr ""
@ -7848,17 +7958,17 @@ msgstr ""
msgid "Categories"
msgstr ""
#: ../../include/auth.php:36
#: ../../include/auth.php:35
msgid "Logged out."
msgstr ""
#: ../../include/auth.php:115
#: ../../include/auth.php:114
msgid ""
"We encountered a problem while logging in with the OpenID you provided. "
"Please check the correct spelling of the ID."
msgstr ""
#: ../../include/auth.php:115
#: ../../include/auth.php:114
msgid "The error message was:"
msgstr ""
@ -7933,15 +8043,15 @@ msgstr ""
msgid "From: "
msgstr ""
#: ../../include/bbcode.php:102 ../../include/bbcode.php:323
#: ../../include/bbcode.php:185 ../../include/bbcode.php:406
msgid "Image/photo"
msgstr ""
#: ../../include/bbcode.php:288 ../../include/bbcode.php:308
#: ../../include/bbcode.php:371 ../../include/bbcode.php:391
msgid "$1 wrote:"
msgstr ""
#: ../../include/bbcode.php:327 ../../include/bbcode.php:328
#: ../../include/bbcode.php:410 ../../include/bbcode.php:411
msgid "Encrypted content"
msgstr ""
@ -8198,15 +8308,15 @@ msgstr ""
msgid "following"
msgstr ""
#: ../../include/items.php:3217
#: ../../include/items.php:3220
msgid "A new person is sharing with you at "
msgstr ""
#: ../../include/items.php:3217
#: ../../include/items.php:3220
msgid "You have a new follower at "
msgstr ""
#: ../../include/items.php:3886
#: ../../include/items.php:3901
msgid "Archives"
msgstr ""
@ -8278,19 +8388,19 @@ msgstr ""
msgid "An error occurred creating your default profile. Please try again."
msgstr ""
#: ../../include/security.php:21
#: ../../include/security.php:22
msgid "Welcome "
msgstr ""
#: ../../include/security.php:22
#: ../../include/security.php:23
msgid "Please upload a profile photo."
msgstr ""
#: ../../include/security.php:25
#: ../../include/security.php:26
msgid "Welcome back "
msgstr ""
#: ../../include/security.php:329
#: ../../include/security.php:344
msgid ""
"The form security token was not correct. This probably happened because the "
"form has been opened for too long (>3 hours) before submitting it."
@ -8300,256 +8410,260 @@ msgstr ""
msgid "stopped following"
msgstr ""
#: ../../include/Contact.php:220 ../../include/conversation.php:1002
#: ../../include/Contact.php:220 ../../include/conversation.php:1033
msgid "Poke"
msgstr ""
#: ../../include/Contact.php:221 ../../include/conversation.php:996
#: ../../include/Contact.php:221 ../../include/conversation.php:1027
msgid "View Status"
msgstr ""
#: ../../include/Contact.php:222 ../../include/conversation.php:997
#: ../../include/Contact.php:222 ../../include/conversation.php:1028
msgid "View Profile"
msgstr ""
#: ../../include/Contact.php:223 ../../include/conversation.php:998
#: ../../include/Contact.php:223 ../../include/conversation.php:1029
msgid "View Photos"
msgstr ""
#: ../../include/Contact.php:224 ../../include/Contact.php:237
#: ../../include/conversation.php:999
#: ../../include/conversation.php:1030
msgid "Network Posts"
msgstr ""
#: ../../include/Contact.php:225 ../../include/Contact.php:237
#: ../../include/conversation.php:1000
#: ../../include/conversation.php:1031
msgid "Edit Contact"
msgstr ""
#: ../../include/Contact.php:226 ../../include/Contact.php:237
#: ../../include/conversation.php:1001
#: ../../include/conversation.php:1032
msgid "Send PM"
msgstr ""
#: ../../include/conversation.php:197
#: ../../include/conversation.php:208
#, php-format
msgid "%1$s poked %2$s"
msgstr ""
#: ../../include/conversation.php:281
#: ../../include/conversation.php:292
msgid "post/item"
msgstr ""
#: ../../include/conversation.php:282
#: ../../include/conversation.php:293
#, php-format
msgid "%1$s marked %2$s's %3$s as favorite"
msgstr ""
#: ../../include/conversation.php:902
#: ../../include/conversation.php:933
msgid "Delete Selected Items"
msgstr ""
#: ../../include/conversation.php:1060
#: ../../include/conversation.php:1091
#, php-format
msgid "%s likes this."
msgstr ""
#: ../../include/conversation.php:1060
#: ../../include/conversation.php:1091
#, php-format
msgid "%s doesn't like this."
msgstr ""
#: ../../include/conversation.php:1064
#: ../../include/conversation.php:1095
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgstr ""
#: ../../include/conversation.php:1066
#: ../../include/conversation.php:1097
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgstr ""
#: ../../include/conversation.php:1072
#: ../../include/conversation.php:1103
msgid "and"
msgstr ""
#: ../../include/conversation.php:1075
#: ../../include/conversation.php:1106
#, php-format
msgid ", and %d other people"
msgstr ""
#: ../../include/conversation.php:1076
#: ../../include/conversation.php:1107
#, php-format
msgid "%s like this."
msgstr ""
#: ../../include/conversation.php:1076
#: ../../include/conversation.php:1107
#, php-format
msgid "%s don't like this."
msgstr ""
#: ../../include/conversation.php:1100 ../../include/conversation.php:1117
#: ../../include/conversation.php:1131 ../../include/conversation.php:1148
msgid "Visible to <strong>everybody</strong>"
msgstr ""
#: ../../include/conversation.php:1102 ../../include/conversation.php:1119
#: ../../include/conversation.php:1133 ../../include/conversation.php:1150
msgid "Please enter a video link/URL:"
msgstr ""
#: ../../include/conversation.php:1103 ../../include/conversation.php:1120
#: ../../include/conversation.php:1134 ../../include/conversation.php:1151
msgid "Please enter an audio link/URL:"
msgstr ""
#: ../../include/conversation.php:1104 ../../include/conversation.php:1121
#: ../../include/conversation.php:1135 ../../include/conversation.php:1152
msgid "Tag term:"
msgstr ""
#: ../../include/conversation.php:1106 ../../include/conversation.php:1123
#: ../../include/conversation.php:1137 ../../include/conversation.php:1154
msgid "Where are you right now?"
msgstr ""
#: ../../include/conversation.php:1166
#: ../../include/conversation.php:1197
msgid "upload photo"
msgstr ""
#: ../../include/conversation.php:1168
#: ../../include/conversation.php:1199
msgid "attach file"
msgstr ""
#: ../../include/conversation.php:1170
#: ../../include/conversation.php:1201
msgid "web link"
msgstr ""
#: ../../include/conversation.php:1171
#: ../../include/conversation.php:1202
msgid "Insert video link"
msgstr ""
#: ../../include/conversation.php:1172
#: ../../include/conversation.php:1203
msgid "video link"
msgstr ""
#: ../../include/conversation.php:1173
#: ../../include/conversation.php:1204
msgid "Insert audio link"
msgstr ""
#: ../../include/conversation.php:1174
#: ../../include/conversation.php:1205
msgid "audio link"
msgstr ""
#: ../../include/conversation.php:1176
#: ../../include/conversation.php:1207
msgid "set location"
msgstr ""
#: ../../include/conversation.php:1178
#: ../../include/conversation.php:1209
msgid "clear location"