Browse Source

Merge branch 'master' of git://github.com/friendica/friendica

pull/380/head
Vasudev Kamath 9 years ago
parent
commit
214ec91a3f
  1. 64
      boot.php
  2. 2
      htconfig.php
  3. 43
      include/Contact.php
  4. 11
      include/api.php
  5. 3
      include/bbcode.php
  6. 8
      include/conversation.php
  7. 14
      include/diaspora.php
  8. 2
      include/html2plain.php
  9. 2
      include/items.php
  10. 39
      mod/acl.php
  11. 37
      mod/contacts.php
  12. 62
      mod/dfrn_request.php
  13. 2
      mod/item.php
  14. 23
      mod/message.php
  15. 2
      mod/ping.php
  16. 30
      mod/search.php
  17. 9
      mod/settings.php
  18. 8
      mod/tagger.php
  19. 38
      mod/wall_upload.php
  20. 7
      tests/autoname_test.php
  21. 4
      tests/get_tags_test.php
  22. 818
      util/messages.po
  23. 2
      util/typo.php
  24. 10
      view/birthdays_reminder.tpl
  25. 2
      view/contact_block.tpl
  26. 28
      view/de/friend_complete_eml.tpl
  27. 28
      view/de/intro_complete_eml.tpl
  28. 1068
      view/de/messages.po
  29. 24
      view/de/passchanged_eml.tpl
  30. 53
      view/de/register_open_eml.tpl
  31. 26
      view/de/register_verify_eml.tpl
  32. 19
      view/de/request_notify_eml.tpl
  33. 95
      view/de/strings.php
  34. 14
      view/eo/follow_notify_eml.tpl
  35. 22
      view/eo/friend_complete_eml.tpl
  36. 22
      view/eo/intro_complete_eml.tpl
  37. 1133
      view/eo/messages.po
  38. 20
      view/eo/passchanged_eml.tpl
  39. 34
      view/eo/register_open_eml.tpl
  40. 25
      view/eo/register_verify_eml.tpl
  41. 17
      view/eo/request_notify_eml.tpl
  42. 41
      view/eo/strings.php
  43. 127
      view/event_head.tpl
  44. 10
      view/events_reminder.tpl
  45. 1
      view/head.tpl
  46. 127
      view/theme/cleanzero/cleanzero-green/style.css
  47. 127
      view/theme/cleanzero/cleanzero-purple/style.css
  48. 127
      view/theme/cleanzero/cleanzero/style.css
  49. 79
      view/theme/cleanzero/config.php
  50. 0
      view/theme/cleanzero/js/jquery.ae.image.resize.js
  51. 0
      view/theme/cleanzero/js/jquery.ae.image.resize.min.js
  52. 71
      view/theme/cleanzero/nav.tpl
  53. BIN
      view/theme/cleanzero/screenshot.png
  54. 127
      view/theme/cleanzero/style.css
  55. 71
      view/theme/cleanzero/style.php
  56. 114
      view/theme/cleanzero/theme.php
  57. 6
      view/theme/cleanzero/theme_settings.tpl
  58. BIN
      view/theme/darkzero-NS/editicons.png
  59. 36
      view/theme/darkzero-NS/theme.php
  60. BIN
      view/theme/darkzero/editicons.png
  61. 37
      view/theme/darkzero/theme.php
  62. 2
      view/theme/diabook/admin_site.tpl
  63. 3
      view/theme/diabook/admin_users.tpl
  64. 16
      view/theme/diabook/comment_item.tpl
  65. 88
      view/theme/diabook/diabook-aerith/admin_users.tpl
  66. 10
      view/theme/diabook/diabook-aerith/ch_directory_item.tpl
  67. 41
      view/theme/diabook/diabook-aerith/comment_item.tpl
  68. 86
      view/theme/diabook/diabook-aerith/communityhome.tpl
  69. 84
      view/theme/diabook/diabook-aerith/config.php
  70. 25
      view/theme/diabook/diabook-aerith/contact_template.tpl
  71. 11
      view/theme/diabook/diabook-aerith/directory_item.tpl
  72. 11
      view/theme/diabook/diabook-aerith/generic_links_widget.tpl
  73. 34
      view/theme/diabook/diabook-aerith/group_side.tpl
  74. 85
      view/theme/diabook/diabook-aerith/jot.tpl
  75. 22
      view/theme/diabook/diabook-aerith/js/README
  76. 46
      view/theme/diabook/diabook-aerith/js/jquery.autogrow.textarea.js
  77. 47
      view/theme/diabook/diabook-aerith/js/jquery.cookie.js
  78. 33
      view/theme/diabook/diabook-aerith/login.tpl
  79. 60
      view/theme/diabook/diabook-aerith/mail_conv.tpl
  80. 12
      view/theme/diabook/diabook-aerith/mail_display.tpl
  81. 8
      view/theme/diabook/diabook-aerith/mail_list.tpl
  82. 10
      view/theme/diabook/diabook-aerith/message_side.tpl
  83. 190
      view/theme/diabook/diabook-aerith/nav.tpl
  84. 15
      view/theme/diabook/diabook-aerith/nets.tpl
  85. 4
      view/theme/diabook/diabook-aerith/oembed_video.tpl
  86. 65
      view/theme/diabook/diabook-aerith/photo_item.tpl
  87. 35
      view/theme/diabook/diabook-aerith/photo_view.tpl
  88. 21
      view/theme/diabook/diabook-aerith/profile_side.tpl
  89. 64
      view/theme/diabook/diabook-aerith/profile_vcard.tpl
  90. 20
      view/theme/diabook/diabook-aerith/right_aside.tpl
  91. BIN
      view/theme/diabook/diabook-aerith/screenshot.png
  92. 100
      view/theme/diabook/diabook-aerith/search_item.tpl
  93. 4
      view/theme/diabook/diabook-aerith/style-network-wide.css
  94. 4
      view/theme/diabook/diabook-aerith/style-network.css
  95. 4
      view/theme/diabook/diabook-aerith/style-profile-wide.css
  96. 4
      view/theme/diabook/diabook-aerith/style-profile.css
  97. 13
      view/theme/diabook/diabook-aerith/style-wide.css
  98. 13
      view/theme/diabook/diabook-aerith/style.css
  99. 277
      view/theme/diabook/diabook-aerith/style.php
  100. 488
      view/theme/diabook/diabook-aerith/theme.php

64
boot.php

@ -9,7 +9,7 @@ require_once('include/nav.php');
require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_VERSION', '2.3.1319' );
define ( 'FRIENDICA_VERSION', '2.3.1324' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1138 );
@ -1174,11 +1174,7 @@ if(! function_exists('get_birthdays')) {
}
$classtoday = $istoday ? ' birthday-today ' : '';
if($total) {
$o .= '<div id="birthday-notice" class="birthday-notice fakelink' . $classtoday . '" onclick=openClose(\'birthday-wrapper\'); >' . t('Birthday Reminders') . ' ' . '(' . $total . ')' . '</div>';
$o .= '<div id="birthday-wrapper" style="display: none;" ><div id="birthday-title">' . t('Birthdays this week:') . '</div>';
$o .= '<div id="birthday-title-end"></div>';
foreach($r as $rr) {
foreach($r as &$rr) {
if(! strlen($rr['name']))
continue;
@ -1196,15 +1192,24 @@ if(! function_exists('get_birthdays')) {
$url = $a->get_baseurl() . '/redir/' . $rr['cid'];
}
$o .= '<div class="birthday-list" id="birthday-' . $rr['eid'] . '"><a class="birthday-link$sparkle" target="redir" href="'
. $url . '">' . $rr['name'] . '</a> '
. day_translate(datetime_convert('UTC', $a->timezone, $rr['start'], $rr['adjust'] ? $bd_format : $bd_short)) . (($today) ? ' ' . t('[today]') : '')
. '</div>' ;
$rr['link'] = $url;
$rr['title'] = $rr['name'];
$rr['date'] = day_translate(datetime_convert('UTC', $a->timezone, $rr['start'], $rr['adjust'] ? $bd_format : $bd_short)) . (($today) ? ' ' . t('[today]') : '');
$rr['startime'] = Null;
$rr['today'] = $today;
}
$o .= '</div></div>';
}
}
return $o;
$tpl = get_markup_template("birthdays_reminder.tpl");
return replace_macros($tpl, array(
'$baseurl' => $a->get_baseurl(),
'$classtoday' => $classtoday,
'$count' => $total,
'$event_reminders' => t('Birthday Reminders'),
'$event_title' => t('Birthdays this week:'),
'$events' => $r,
));
}
}
@ -1215,7 +1220,6 @@ if(! function_exists('get_events')) {
require_once('include/bbcode.php');
$a = get_app();
$o = '';
if(! local_user())
return $o;
@ -1242,18 +1246,15 @@ if(! function_exists('get_events')) {
if($strt === datetime_convert('UTC',$a->timezone,'now','Y-m-d'))
$istoday = true;
}
$classtoday = (($istoday) ? ' event-today ' : '');
$classtoday = (($istoday) ? 'event-today' : '');
$o .= '<div id="event-notice" class="birthday-notice fakelink' . $classtoday . '" onclick=openClose(\'event-wrapper\'); >' . t('Event Reminders') . ' ' . '(' . count($r) . ')' . '</div>';
$o .= '<div id="event-wrapper" style="display: none;" ><div id="event-title">' . t('Events this week:') . '</div>';
$o .= '<div id="event-title-end"></div>';
foreach($r as $rr) {
foreach($r as &$rr) {
if($rr['adjust'])
$md = datetime_convert('UTC',$a->timezone,$rr['start'],'Y/m\#\l\i\n\k\-j');
$md = datetime_convert('UTC',$a->timezone,$rr['start'],'Y/m');
else
$md = datetime_convert('UTC','UTC',$rr['start'],'Y/m\#\l\i\n\k\-j');
$md = datetime_convert('UTC','UTC',$rr['start'],'Y/m');
$md .= "/#link-".$rr['id'];
$title = substr(strip_tags(bbcode($rr['desc'])),0,32) . '... ';
if(! $title)
@ -1261,15 +1262,24 @@ if(! function_exists('get_events')) {
$strt = datetime_convert('UTC',$rr['convert'] ? $a->timezone : 'UTC',$rr['start']);
$today = ((substr($strt,0,10) === datetime_convert('UTC',$a->timezone,'now','Y-m-d')) ? true : false);
$o .= '<div class="event-list" id="event-' . $rr['eid'] . '"></a> <a href="events/' . $md . '">' . $title . '</a>'
. day_translate(datetime_convert('UTC', $rr['adjust'] ? $a->timezone : 'UTC', $rr['start'], $bd_format)) . (($today) ? ' ' . t('[today]') : '')
. '</div>' ;
$rr['link'] = $md;
$rr['title'] = $title;
$rr['date'] = day_translate(datetime_convert('UTC', $rr['adjust'] ? $a->timezone : 'UTC', $rr['start'], $bd_format)) . (($today) ? ' ' . t('[today]') : '');
$rr['startime'] = $strt;
$rr['today'] = $today;
}
$o .= '</div></div>';
}
return $o;
$tpl = get_markup_template("events_reminder.tpl");
return replace_macros($tpl, array(
'$baseurl' => $a->get_baseurl(),
'$classtoday' => $classtoday,
'$count' => count($r),
'$event_reminders' => t('Event Reminders'),
'$event_title' => t('Events this week:'),
'$events' => $r,
));
}
}

2
htconfig.php

@ -69,7 +69,7 @@ $a->config['system']['rino_encrypt'] = true;
// allowed themes (change this from admin panel after installation)
$a->config['system']['allowed_themes'] = 'dispy,quattro,testbubble,vier,darkbubble,darkzero,duepuntozero,greenzero,purplezero,quattro-green,slackr,diabook,diabook-blue';
$a->config['system']['allowed_themes'] = 'dispy,quattro,vier,darkzero,duepuntozero,greenzero,purplezero,slackr,diabook';
// default system theme

43
include/Contact.php

@ -73,6 +73,49 @@ function contact_remove($id) {
}
// sends an unfriend message. Does not remove the contact
function terminate_friendship($user,$self,$contact) {
$a = get_app();
require_once('include/datetime.php');
if($contact['network'] === NETWORK_OSTATUS) {
$slap = replace_macros(get_markup_template('follow_slap.tpl'), array(
'$name' => $user['username'],
'$profile_page' => $a->get_baseurl() . '/profile/' . $user['nickname'],
'$photo' => $self['photo'],
'$thumb' => $self['thumb'],
'$published' => datetime_convert('UTC','UTC', 'now', ATOM_TIME),
'$item_id' => 'urn:X-dfrn:' . $a->get_hostname() . ':unfollow:' . random_string(),
'$title' => '',
'$type' => 'text',
'$content' => t('stopped following'),
'$nick' => $user['nickname'],
'$verb' => 'http://ostatus.org/schema/1.0/unfollow', // ACTIVITY_UNFOLLOW,
'$ostat_follow' => '' // '<as:verb>http://ostatus.org/schema/1.0/unfollow</as:verb>' . "\r\n"
));
if((x($contact,'notify')) && (strlen($contact['notify']))) {
require_once('include/salmon.php');
slapper($user,$contact['notify'],$slap);
}
}
elseif($contact['network'] === NETWORK_DIASPORA) {
require_once('include/diaspora.php');
diaspora_unshare($user,$contact);
}
elseif($contact['network'] === NETWORK_DFRN) {
require_once('include/items.php');
dfrn_deliver($user,$contact,'placeholder', 1);
}
}
// Contact has refused to recognise us as a friend. We will start a countdown.
// If they still don't recognise us in 32 days, the relationship is over,
// and we won't waste any more time trying to communicate with them.

11
include/api.php

@ -567,8 +567,17 @@
$_REQUEST['profile_uid'] = local_user();
if(requestdata('parent'))
$_REQUEST['type'] = 'net-comment';
else
else {
$_REQUEST['type'] = 'wall';
if(x($_FILES,'media')) {
// upload the image if we have one
$_REQUEST['hush']='yeah'; //tell wall_upload function to return img info instead of echo
require_once('mod/wall_upload.php');
$media = wall_upload_post($a);
if(strlen($media)>0)
$_REQUEST['body'] .= "\n\n".$media;
}
}
// set this so that the item_post() function is quiet and doesn't redirect or emit json

3
include/bbcode.php

@ -298,6 +298,9 @@ function bbcode($Text,$preserve_nl = false) {
$Text = preg_replace_callback("/\[nobb\](.*?)\[\/nobb\]/ism", 'bb_unspacefy_and_trim',$Text);
$Text = preg_replace_callback("/\[pre\](.*?)\[\/pre\]/ism", 'bb_unspacefy_and_trim',$Text);
$Text = preg_replace('/\[\&amp\;([#a-z0-9]+)\;\]/','&$1;',$Text);
// fix any escaped ampersands that may have been converted into links
$Text = preg_replace("/\<(.*?)(src|href)=(.*?)\&amp\;(.*?)\>/ism",'<$1$2=$3&$4>',$Text);
if(strlen($saved_image))

8
include/conversation.php

@ -553,6 +553,14 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
'$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'),
'$ww' => (($mode === 'network') ? $commentww : '')
));

14
include/diaspora.php

@ -706,10 +706,10 @@ function diaspora_post($importer,$xml) {
continue;
$basetag = str_replace('_',' ',substr($tag,1));
$body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
$body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
if(strlen($str_tags))
$str_tags .= ',';
$str_tags .= '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
$str_tags .= '#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
continue;
}
}
@ -872,10 +872,10 @@ function diaspora_reshare($importer,$xml) {
$basetag = str_replace('_',' ',substr($tag,1));
$body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
$body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
if(strlen($str_tags))
$str_tags .= ',';
$str_tags .= '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
$str_tags .= '#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
continue;
}
}
@ -1113,10 +1113,10 @@ function diaspora_comment($importer,$xml,$msg) {
$basetag = str_replace('_',' ',substr($tag,1));
$body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
$body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
if(strlen($str_tags))
$str_tags .= ',';
$str_tags .= '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
$str_tags .= '#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
continue;
}
}
@ -1172,7 +1172,7 @@ function diaspora_comment($importer,$xml,$msg) {
proc_run('php','include/notifier.php','comment',$message_id);
}
$myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 ",
$myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 AND `deleted` = 0 ",
dbesc($parent_item['uri']),
intval($importer['uid'])
);

2
include/html2plain.php

@ -83,7 +83,7 @@ function collecturls($message) {
$urls = array();
foreach ($result as $treffer) {
// A list of some links that should be ignored
$list = array("/user/", "/tag/", "/group/", "/profile/", "/search?search=", "mailto:", "/u/", "/node/",
$list = array("/user/", "/tag/", "/group/", "/profile/", "/search?search=", "/search?tag=", "mailto:", "/u/", "/node/",
"//facebook.com/profile.php?id=", "//plus.google.com/");
foreach ($list as $listitem)
if (strpos($treffer[1], $listitem) !== false)

2
include/items.php

@ -2479,7 +2479,7 @@ function local_delivery($importer,$data) {
if(!x($datarray['type']) || $datarray['type'] != 'activity') {
$myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 ",
$myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 AND `deleted` = 0",
dbesc($parent_uri),
intval($importer['importer_uid'])
);

39
mod/acl.php

@ -38,6 +38,22 @@ function acl_init(&$a){
intval(local_user())
);
$contact_count = (int)$r[0]['c'];
}
elseif ($type == 'm') {
// autocomplete for Private Messages
$r = q("SELECT COUNT(`id`) AS c FROM `contact`
WHERE `uid` = %d AND `self` = 0
AND `blocked` = 0 AND `pending` = 0
AND `network` IN ('%s','%s','%s') $sql_extra2" ,
intval(local_user()),
dbesc(NETWORK_DFRN),
dbesc(NETWORK_ZOT),
dbesc(NETWORK_DIASPORA)
);
$contact_count = (int)$r[0]['c'];
} else {
$contact_count = 0;
}
@ -83,6 +99,23 @@ function acl_init(&$a){
ORDER BY `name` ASC ",
intval(local_user())
);
}
elseif($type == 'm') {
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0
AND `network` IN ('%s','%s','%s')
$sql_extra2
ORDER BY `name` ASC ",
intval(local_user()),
dbesc(NETWORK_DFRN),
dbesc(NETWORK_ZOT),
dbesc(NETWORK_DIASPORA)
);
}
else
$r = array();
if(count($r)) {
foreach($r as $g){
$contacts[] = array(
"type" => "c",
@ -93,11 +126,9 @@ function acl_init(&$a){
"link" => $g['url'],
"nick" => ($g['attag']) ? $g['attag'] : $g['nick'],
);
}
}
}
$items = array_merge($groups, $contacts);
$o = array(

37
mod/contacts.php

@ -144,7 +144,7 @@ function contacts_content(&$a) {
goaway($a->get_baseurl(true) . '/contacts');
return; // NOTREACHED
}
if($cmd === 'update') {
// pull feed and consume it, which should subscribe to the hub.
@ -184,38 +184,9 @@ function contacts_content(&$a) {
if($cmd === 'drop') {
// create an unfollow slap
if($orig_record[0]['network'] === NETWORK_OSTATUS) {
$tpl = get_markup_template('follow_slap.tpl');
$slap = replace_macros($tpl, array(
'$name' => $a->user['username'],
'$profile_page' => $a->get_baseurl() . '/profile/' . $a->user['nickname'],
'$photo' => $a->contact['photo'],
'$thumb' => $a->contact['thumb'],
'$published' => datetime_convert('UTC','UTC', 'now', ATOM_TIME),
'$item_id' => 'urn:X-dfrn:' . $a->get_hostname() . ':unfollow:' . random_string(),
'$title' => '',
'$type' => 'text',
'$content' => t('stopped following'),
'$nick' => $a->user['nickname'],
'$verb' => 'http://ostatus.org/schema/1.0/unfollow', // ACTIVITY_UNFOLLOW,
'$ostat_follow' => '' // '<as:verb>http://ostatus.org/schema/1.0/unfollow</as:verb>' . "\r\n"
));
if((x($orig_record[0],'notify')) && (strlen($orig_record[0]['notify']))) {
require_once('include/salmon.php');
slapper($a->user,$orig_record[0]['notify'],$slap);
}
}
elseif($orig_record[0]['network'] === NETWORK_DIASPORA) {
require_once('include/diaspora.php');
diaspora_unshare($a->user,$orig_record[0]);
}
elseif($orig_record[0]['network'] === NETWORK_DFRN) {
require_once('include/items.php');
dfrn_deliver($a->user,$orig_record[0],'placeholder', 1);
}
require_once('include/Contact.php');
terminate_friendship($a->user,$a->contact,$orig_record[0]);
contact_remove($orig_record[0]['id']);
info( t('Contact has been removed.') . EOL );

62
mod/dfrn_request.php

@ -314,7 +314,7 @@ function dfrn_request_post(&$a) {
if($email_follow) {
if(! strpos($url,'@')) {
if(! validate_email($url)) {
notice( t('Invalid email address.') . EOL);
return;
}
@ -346,11 +346,71 @@ function dfrn_request_post(&$a) {
}
}
$r = q("insert into contact ( uid, created, addr, name, nick, url, nurl, poll, notify, blocked, pending, network, rel )
values( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d ) ",
intval($uid),
dbesc(datetime_convert()),
dbesc($addr),
dbesc($name),
dbesc($nick),
dbesc($url),
dbesc($nurl),
dbesc($poll),
dbesc($notify),
intval($blocked),
intval($pending),
dbesc($network),
intval($rel)
);
$r = q("select id from contact where poll = '%s' and uid = %d limit 1",
dbesc($poll),
intval($uid)
);
if(count($r)) {
$contact_id = $r[0]['id'];
$photo = avatar_img($addr);
$r = q("UPDATE `contact` SET
`photo` = '%s',
`thumb` = '%s',
`micro` = '%s',
`name-date` = '%s',
`uri-date` = '%s',
`avatar-date` = '%s',
`hidden` = 0,
WHERE `id` = %d LIMIT 1
",
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
intval($contact_id)
);
}
// contact is created. Now create an introduction
$hash = random_string();
$r = q("insert into intro ( uid, `contact-id`, knowyou, note, hash, datetime, blocked )
values( %d , %d, %d, '%s', '%s', '%s', %d ) ",
intval($uid),
intval($contact_id),
((x($_POST,'knowyou') && ($_POST['knowyou'] == 1)) ? 1 : 0),
dbesc(notags(trim($_POST['dfrn-request-message']))),
dbesc($hash),
dbesc(datetime_convert()),
1
);
// Next send an email verify form to the requestor.
}
else {
// Canonicalise email-style profile locator

2
mod/item.php

@ -872,7 +872,7 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) {
//base tag has the tags name only
$basetag = str_replace('_',' ',substr($tag,1));
//create text for link
$newtag = '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
$newtag = '#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
//replace tag by the link
$body = str_replace($tag, $newtag, $body);

23
mod/message.php

@ -313,6 +313,29 @@ function message_content(&$a) {
$from_url = $a->get_baseurl(true) . '/redir/' . $message['contact-id'];
$sparkle = ' sparkle';
}
$Text = $message['body'];
$saved_image = '';
$img_start = strpos($Text,'[img]data:');
$img_end = strpos($Text,'[/img]');
if($img_start !== false && $img_end !== false && $img_end > $img_start) {
$start_fragment = substr($Text,0,$img_start);
$img_start += strlen('[img]');
$saved_image = substr($Text,$img_start,$img_end - $img_start);
$end_fragment = substr($Text,$img_end + strlen('[/img]'));
$Text = $start_fragment . '[!#saved_image#!]' . $end_fragment;
$search = '/\[url\=(.*?)\]\[!#saved_image#!\]\[\/url\]' . '/is';
$replace = '[url=' . z_path() . '/redir/' . $message['contact-id']
. '?f=1&url=' . '$1' . '][!#saved_image#!][/url]' ;
$Text = preg_replace($search,$replace,$Text);
if(strlen($saved_image))
$message['body'] = str_replace('[!#saved_image#!]', '[img]' . $saved_image . '[/img]',$Text);
}
$mails[] = array(
'id' => $message['id'],
'from_name' => template_escape($message['from-name']),

2
mod/ping.php

@ -134,6 +134,8 @@ function ping_init(&$a) {
function xmlize($href, $name, $url, $photo, $date, $seen, $message){
$data = array('href' => &$href, 'name' => &$name, 'url'=>&$url, 'photo'=>&$photo, 'date'=>&$date, 'seen'=>&$seen, 'messsage'=>&$message);
call_hooks('ping_xmlize', $data);
$notsxml = '<note href="%s" name="%s" url="%s" photo="%s" date="%s" seen="%s" >%s</note>';
return sprintf ( $notsxml,
xmlify($href), xmlify($name), xmlify($url), xmlify($photo), xmlify($date), xmlify($seen), xmlify($message)

30
mod/search.php

@ -87,11 +87,26 @@ function search_content(&$a) {
else
$search = ((x($_GET,'search')) ? notags(trim(rawurldecode($_GET['search']))) : '');
$tag = false;
if(x($_GET,'tag')) {
$tag = true;
$search = ((x($_GET,'tag')) ? notags(trim(rawurldecode($_GET['tag']))) : '');
}
$o .= search($search,'search-box','/search',((local_user()) ? true : false));
if(! $search)
return $o;
if($tag)
$sql_extra = sprintf(" AND `item`.`tag` REGEXP '%s' ", dbesc('\\]' . preg_quote($search) . '\\['));
else
$sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(preg_quote($search)));
// Here is the way permissions work in the search module...
// Only public posts can be shown
// OR your own posts if you are a logged in member
@ -103,10 +118,8 @@ function search_content(&$a) {
AND (( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0)
OR `item`.`uid` = %d )
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
AND ( `item`.`body` REGEXP '%s' OR `item`.`tag` REGEXP '%s' ) group by `item`.`uri` ",
intval(local_user()),
dbesc(preg_quote($search)),
dbesc('\\]' . preg_quote($search) . '\\[')
$sql_extra group by `item`.`uri` ",
intval(local_user())
);
if(count($r))
@ -127,18 +140,19 @@ function search_content(&$a) {
AND (( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0 )
OR `item`.`uid` = %d )
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
AND ( `item`.`body` REGEXP '%s' OR `item`.`tag` REGEXP '%s' )
$sql_extra
group by `item`.`uri`
ORDER BY `received` DESC LIMIT %d , %d ",
intval(local_user()),
dbesc(preg_quote($search)),
dbesc('\\]' . preg_quote($search) . '\\['),
intval($a->pager['start']),
intval($a->pager['itemspage'])
);
$o .= '<h2>Search results for: ' . $search . '</h2>';
if($tag)
$o .= '<h2>Items tagged with: ' . $search . '</h2>';
else
$o .= '<h2>Search results for: ' . $search . '</h2>';
$o .= conversation($a,$r,'search',false);

9
mod/settings.php

@ -75,6 +75,11 @@ EOT;
'label' => t('Export personal data'),
'url' => $a->get_baseurl(true) . '/uexport',
'selected' => ''
),
array(
'label' => t('Remove account'),
'url' => $a->get_baseurl(true) . '/removeme',
'selected' => ''
)
);
@ -696,8 +701,8 @@ function settings_content(&$a) {
$allowed_themes_raw = explode(',',$allowed_themes_str);
$allowed_themes = array();
if(count($allowed_themes_raw))
foreach($allowed_themes_raw as $x)
if(strlen(trim($x)))
foreach($allowed_themes_raw as $x)
if(strlen(trim($x)) && is_dir("view/theme/$x"))
$allowed_themes[] = trim($x);

8
mod/tagger.php

@ -86,7 +86,7 @@ function tagger_content(&$a) {
</target>
EOT;
$tagid = $a->get_baseurl() . '/search?search=' . $term;
$tagid = $a->get_baseurl() . '/search?tag=' . $term;
$objtype = ACTIVITY_OBJ_TAGTERM;
$obj = <<< EOT
@ -105,7 +105,7 @@ EOT;
if(! isset($bodyverb))
return;
$termlink = html_entity_decode('&#x2317;') . '[url=' . $a->get_baseurl() . '/search?search=' . urlencode($term) . ']'. $term . '[/url]';
$termlink = html_entity_decode('&#x2317;') . '[url=' . $a->get_baseurl() . '/search?tag=' . urlencode($term) . ']'. $term . '[/url]';
$arr = array();
@ -161,7 +161,7 @@ EOT;
if((! $blocktags) && (! stristr($item['tag'], ']' . $term . '[' ))) {
q("update item set tag = '%s' where id = %d limit 1",
dbesc($item['tag'] . (strlen($item['tag']) ? ',' : '') . '#[url=' . $a->get_baseurl() . '/search?search=' . $term . ']'. $term . '[/url]'),
dbesc($item['tag'] . (strlen($item['tag']) ? ',' : '') . '#[url=' . $a->get_baseurl() . '/search?tag=' . $term . ']'. $term . '[/url]'),
intval($item['id'])
);
}
@ -177,7 +177,7 @@ EOT;
);
if(count($x) && !$x[0]['blocktags'] && (! stristr($r[0]['tag'], ']' . $term . '['))) {
q("update item set tag = '%s' where id = %d limit 1",
dbesc($r[0]['tag'] . (strlen($r[0]['tag']) ? ',' : '') . '#[url=' . $a->get_baseurl() . '/search?search=' . $term . ']'. $term . '[/url]'),
dbesc($r[0]['tag'] . (strlen($r[0]['tag']) ? ',' : '') . '#[url=' . $a->get_baseurl() . '/search?tag=' . $term . ']'. $term . '[/url]'),
intval($r[0]['id'])
);
}

38
mod/wall_upload.php

@ -5,19 +5,26 @@ require_once('Photo.php');
function wall_upload_post(&$a) {
if($a->argc > 1) {
$nick = $a->argv[1];
$r = q("SELECT `user`.*, `contact`.`id` FROM `user` LEFT JOIN `contact` on `user`.`uid` = `contact`.`uid` WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
dbesc($nick)
);
if(! count($r))
return;
if(! x($_FILES,'media')) {
$nick = $a->argv[1];
$r = q("SELECT `user`.*, `contact`.`id` FROM `user` LEFT JOIN `contact` on `user`.`uid` = `contact`.`uid` WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
dbesc($nick)
);
if(! count($r))
return;
}
else {
$user_info = api_get_user($a);
$r = q("SELECT `user`.*, `contact`.`id` FROM `user` LEFT JOIN `contact` on `user`.`uid` = `contact`.`uid` WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
dbesc($user_info['screen_name'])
);
}
}
else
return;
$can_post = false;
$visitor = 0;
@ -47,12 +54,19 @@ function wall_upload_post(&$a) {
killme();
}
if(! x($_FILES,'userfile'))
if(! x($_FILES,'userfile') && ! x($_FILES,'media'))
killme();
$src = $_FILES['userfile']['tmp_name'];
$filename = basename($_FILES['userfile']['name']);
$filesize = intval($_FILES['userfile']['size']);
if(x($_FILES,'userfile')) {
$src = $_FILES['userfile']['tmp_name'];
$filename = basename($_FILES['userfile']['name']);
$filesize = intval($_FILES['userfile']['size']);
}
elseif(x($_FILES,'media')) {
$src = $_FILES['media']['tmp_name'];
$filename = basename($_FILES['media']['name']);
$filesize = intval($_FILES['media']['size']);
}
$maximagesize = get_config('system','maximagesize');

7
tests/autoname_test.php

@ -67,7 +67,10 @@ class AutonameTest extends PHPUnit_Framework_TestCase {
$autoname2=autoname(1);
$this->assertEquals(1, count($autoname2));
$this->assertFalse($autoname1==$autoname2);
// The following test is problematic, with only 26 possibilities
// generating the same thing twice happens often aka
// birthday paradox
// $this->assertFalse($autoname1==$autoname2);
}
}

4
tests/get_tags_test.php

@ -202,8 +202,8 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
}
$this->assertEquals("cid:15", $inform);
$this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url],#[url=baseurl/search?search=test%20case]test case[/url]", $str_tags);
$this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url] This is a #[url=baseurl/search?search=test%20case]test case[/url]", $text);
$this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url],#[url=baseurl/search?tag=test%20case]test case[/url]", $str_tags);
$this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url] This is a #[url=baseurl/search?tag=test%20case]test case[/url]", $text);
}

818
util/messages.po
File diff suppressed because it is too large
View File

2
util/typo.php

@ -33,6 +33,8 @@
$files = glob($dir . '/*.php');
foreach($files as $file) {
echo $file . "\n";
if(stristr($file,'jappixmini/proxy.php'))
continue;
include_once($file);
}
}

10
view/birthdays_reminder.tpl

@ -0,0 +1,10 @@
{{ if $count }}
<div id="birthday-notice" class="birthday-notice fakelink $classtoday" onclick="openClose('birthday-wrapper');">$event_reminders ($count)</div>
<div id="birthday-wrapper" style="display: none;" ><div id="birthday-title">$event_title</div>
<div id="birthday-title-end"></div>
{{ for $events as $event }}
<div class="birthday-list" id="birthday-$event.id"></a> <a href="$event.link">$event.title</a> $event.date </div>
{{ endfor }}
</div></div>
{{ endif }}

2
view/contact_block.tpl

@ -1,7 +1,7 @@
<div id="contact-block">
<h4 class="contact-block-h4">$contacts</h4>
{{ if $micropro }}
<a class="allcontact-link" href="contacts/$nickname">$viewcontacts</a>
<a class="allcontact-link" href="viewcontacts/$nickname">$viewcontacts</a>
<div class='contact-block-content'>
{{ for $micropro as $m }}
$m

28
view/de/friend_complete_eml.tpl

@ -1,22 +1,22 @@
Liebe/r $username,
Hallo $[username],
großartige Neuigkeiten... '$fn' von '$dfrn_url' hat deine Kontaktaufnahme auf
'$sitename' bestätigt.
Großartige Neuigkeiten... '$[fn]' auf '$[dfrn_url]' hat
deine Kontaktanfrage auf '$[sitename]' bestätigt.
Ihr seit nun beidseitige Freunde und könnt Statusmitteilungen, Fotos und
EMail ohne Einschränkungen austauschen.
Ihr seit nun beidseitige Freunde und könnt Statusmitteilungen, Bilder und Emails
ohne einschränkungen austauschen.
Bitte rufe deine 'Kontakte' Seite auf $sitename auf um du Änderungen an
dieser Freundschaft vorzunehmen.
Rufe deine 'Kontakte' Seite auf $[sitename] auf wenn du
Änderungen an diesem Kontakt vornehmen willst.
$siteurl
$[siteurl]
[Du könntest zum Beispiel ein neue Profil anlegen mit Informationen die nicht
für die Allgemeinheit bestimmt sind, die du aber gerne mit '$fn' teilen
möchtest].
[Du könntest z.B. ein spezielles Profil anlegen, das Informationen enthällt
die nicht für die breite Öffentlichkeit sichtbar sein sollen und es für '$[fn]' zum Betrachten freigeben].
Mit freundlichen Grüßen
$sitename Administrator
Beste Grüße,
$[sitename] Administrator

28
view/de/intro_complete_eml.tpl

@ -1,18 +1,22 @@
Liebe/r $username,
Hallo $[username],
'$fn' von '$dfrn_url' hat deine Kontaktanfrage auf '$sitename' bestätigt.
'$[fn]' auf '$[dfrn_url]' wurde akzeptiert
Deine Verbindungsanfrage auf '$[sitename]'.
'$fn' hat sich dazu entschlossen dich als "Fan" mit eingeschränkten
Kommunikationsmöglichkeiten zu akzeptieren. Dies umfasst private Nachrichten
und einige Profilaktivitäten. Sollte dies eine Prominenten oder
Gemeinschaftsseite sein, wurden diese Einstellungen automatisch vorgenommen.
'$[fn]' hat entschieden Dich als "Fan" zu akzeptieren, was ein
paar Formen der Kommunikation einschränkt - wie das schreiben von privaten Nachrichten und einige Profil
Interaktionen. Wenn das ein Promi-Konto oder eine Forum-Seite ist, werden die Einstellungen
automatisch angewendet.
'$fn' kann sich in Zukunft dazu entschließen eure Beziehung in eine beidseitige
Freundschaft oder freizügigere Beziehung zu erweitern.
'$[fn]' kann wählen, ob die Freundschaft in eine beidseitige oder alles erlaubende
Beziehung in der Zukunft erweitert wird.
Ab sofort wirst du Statusmitteilungen von '$fn' erhalten, die auf deiner
'Netzwerkseite' erscheinen werden.
Du empfängst jetzt die öffentlichen Beiträge von '$[fn]',
welche auf der "Netzwerk" Seite erscheinen werden
Mit freundlichen Grüßen,
$sitename Administrator
$[siteurl]
Beste Grüße,
$[sitename] Administrator

1068
view/de/messages.po
File diff suppressed because it is too large
View File

24
view/de/passchanged_eml.tpl

@ -1,20 +1,20 @@
Liebe/r $username,
dein Passwort wurde wie gewünscht geändert. Bitte hebe diese Informationen
für deine Unterlagen auf (oder ändere das Passwort augenblicklich in etwas
das du dir merken kannst).
Hallo $[username],
Dein Passwort wurde wie gewünscht geändert. Bitte bewahre diese
Informationen in deinen Unterlagen auf (oder ändere dein Passwort sofort
in etwas, was du dir merken kannst).
Deine Anmeldedaten sind die Folgenden:
Deine Login Daten wurden wie folgt geändert:
Adresse der Seite: $siteurl
Anmelde Name: $email
Passwort: $new_password
Adresse der Seite: $[siteurl]
Login Name: $[email]
Passwort: $[new_password]
Du kannst diesen Passwort auf der "Einstellungen" Seite deines Accounts
ändern nachdem du angemeldet bits.
Du kannst dein Passwort unter deinen Account-Einstellungen ändern, wenn du angemeldet bist.
Viele Grüße,
$sitename Administrator
Beste Grüße,
$[sitename] Administrator

53
view/de/register_open_eml.tpl

@ -1,19 +1,34 @@
Liebe/r $username,
danke für die Registrierung bei $sitename. Dein neuer Account wurde angelegt.
Die Anmeldedetails sind die Folgenden.
Adresse der Seite: $siteurl
Anmelde Name: $email
Passwort: $password
Du kannst dein Passwort auf der "Einstellungen" Seite deines Accounts ändern
nachdem du dich angemeldet hast.
Nimm dir bitte ein paar Augenblicke Zeit um die anderen Einstellungen deines
Accounts zu bearbeiten.
Vielen Dank und Willkommen auf $sitename.
Mit freundlichem Gruß,
$sitename Administrator
Hallo $[username],
Danke für deine Anmeldung auf $[sitename]. Dein Account wurde angelegt.
Die Login Details sind die folgenden:
Adresse der Seite: $[siteurl]
Login Name: $[email]
Passwort: $[password]
Du kannst das Passwort in den "Einstellungen" zu deinem Account ändern
nachdem du dich eingeloggt hast.
Bitte nimm dir einige Augenblicke Zeit um die anderen Einstellungen auf der Seite zu überprüfen.
Eventuell möchtest du außerdem einige grundlegenden Informationen in dein Standart-Profil eintragen
(auf der "Profile" Seite) damit andere Leute dich einfacher finden können.
Wir empfehlen den kompletten Namen anzugeben, ein eigenes Profil-Foto,
ein paar "Profil-Schlüsselwörter" anzugeben (damit man leichter Gleichinteressierte finden kann) - und
natürlich in welchen Land Du lebst; wenn Du es nicht genauer angeben möchtest
dann das.
Wir respektieren Ihr Recht auf Privatsphäre, und keines dieser Elemente sind notwendig.
Wenn Du hier neu bist und keinen kennst, wird man Dir helfen
ein paar neue und interessante Freunde zu finden.
Danke dir und willkommen auf $[sitename].
Beste Grüße,
$[sitename] Administrator

26
view/de/register_verify_eml.tpl

@ -1,21 +1,25 @@
Ein neuer Nutzer hat sich auf $sitename registriert. Diese Registration
benötigt noch deine Zustimmung.
Eine Neuanmeldung auf $[sitename] benötigt
deine Aufmerksamkeit.
Die Anmeldedetails sind Folgende:
Kompletter Name: $username
Adresse der Seite: $siteurl
Anmelde Name: $email
Die Login-Einzelheiten sind die folgenden:
Kompletter Name: $[username]
Adresse der Seite: $[siteurl]
Login Name: $[email]
Um dieser Anmeldung zuzustimmen folge bitte diesem Link:
$siteurl/regmod/allow/$hash
Um die Anfrage zu bestätigen besuche bitte:
Um die Anfrage abzulehen und den Account zu entfernen folge diesem Link:
$[siteurl]/regmod/allow/$[hash]
$siteurl/regmod/deny/$hash
Besten Dank!
Um die Anfrage abzulehnen und den Account zu löschen besuche bitte:
$[siteurl]/regmod/deny/$[hash]
Danke!

19
view/de/request_notify_eml.tpl

@ -1,14 +1,17 @@
Liebe/r $myname,
Hallo $[myname],
du hast gerade eine Kontaktanfrage von '$requestor' auf $sitename erhalten.
du hast eine Kontaktanfrage von '$[requestor]' auf $[sitename]
Du kannst dir das Profil unter $url ansehen.
erhalten.
Bitte melde dich auf deiner Seite an um die komplette Vorstellung anzusehen
und bestätige oder ignoriere die Anfrage.
Du kannst sein/ihr Profil unter $[url] finden.
$siteurl
Bitte melde dich an um die komplette Vorstellung einzusehen
und die Anfrage zu bestätigen oder zu ignorieren oder abzulehnen.
Schöne Grüße,
$sitename Administrator
$[siteurl]
Beste Grüße,
$[sitename] Administrator

95
view/de/strings.php

@ -128,7 +128,7 @@ $a->strings["Post to Email"] = "An E-Mail senden";
$a->strings["Edit"] = "Bearbeiten";
$a->strings["Upload photo"] = "Foto hochladen";
$a->strings["Attach file"] = "Datei anhängen";
$a->strings["Insert web link"] = "eine Kontaktanfrage";
$a->strings["Insert web link"] = "einen Link einfügen";
$a->strings["Insert YouTube video"] = "YouTube-Video einfügen";
$a->strings["Insert Vorbis [.ogg] video"] = "Vorbis [.ogg] Video einfügen";
$a->strings["Insert Vorbis [.ogg] audio"] = "Vorbis [.ogg] Audio einfügen";
@ -156,7 +156,7 @@ $a->strings["Spam protection measures have been invoked."] = "Maßnahmen zum Spa
$a->strings["Friends are advised to please try again in 24 hours."] = "Freunde sind angehalten, es in 24 Stunden erneut zu versuchen.";
$a->strings["Invalid locator"] = "Ungültiger Locator";
$a->strings["Invalid email address."] = "Ungültige E-Mail Adresse.";
$a->strings["This account has not been configured for email. Request failed."] = "";
$a->strings["This account has not been configured for email. Request failed."] = "Dieses Konto ist nicht für Email konfiguriert. Anfrage fehlgeschlagen.";
$a->strings["Unable to resolve your name at the provided location."] = "Konnte deinen Namen an der angegebenen Stelle nicht finden.";
$a->strings["You have already introduced yourself here."] = "Du hast dich hier bereits vorgestellt.";
$a->strings["Apparently you are already friends with %s."] = "Es scheint so, als ob du bereits mit %s befreundet bist.";
@ -223,7 +223,7 @@ $a->strings["GD graphics PHP module"] = "PHP: GD-Grafikmodul";
$a->strings["OpenSSL PHP module"] = "PHP: OpenSSL-Modul";
$a->strings["mysqli PHP module"] = "PHP: mysqli-Modul";
$a->strings["mb_string PHP module"] = "PHP: mb_string-Modul";
$a->strings["Apace mod_rewrite module"] = "Apache: mod_rewrite-Modul";
$a->strings["Apache mod_rewrite module"] = "Apache mod_rewrite module";
$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Fehler: Das Apache-Modul mod-rewrite wird benötigt, es ist allerdings nicht installiert.";
$a->strings["Error: libCURL PHP module required but not installed."] = "Fehler: Das libCURL PHP Modul wird benötigt ist aber nicht installiert.";
$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Fehler: Das GD-Graphikmodul für PHP mit JPEG-Unterstützung ist nicht installiert.";
@ -474,9 +474,9 @@ $a->strings["Default Post Permissions"] = "Standard-Zugriffsrechte für Beiträg
$a->strings["(click to open/close)"] = "(klicke zum öffnen/schließen)";
$a->strings["Maximum private messages per day from unknown people:"] = "Maximale Anzahl von privaten Nachrichten, die dir unbekannte Personen pro Tag senden dürfen:";
$a->strings["Notification Settings"] = "Benachrichtigungseinstellungen";
$a->strings["By default post a status message when:"] = "";
$a->strings["By default post a status message when:"] = "Standardmäßig eine Status-Nachricht posten wenn:";
$a->strings["accepting a friend request"] = "akzeptieren einer Freundschaftsanfrage";
$a->strings["making an <em>interesting</em> profile change"] = "";
$a->strings["making an <em>interesting</em> profile change"] = "<em>interessante</em> Änderungen am Profil gemacht werden";
$a->strings["Send a notification email when:"] = "Benachrichtigungs-E-Mail senden wenn:";
$a->strings["You receive an introduction"] = "- du eine Kontaktanfrage erhältst";
$a->strings["Your introductions are confirmed"] = "- eine deiner Kontaktanfragen akzeptiert wurde";
@ -603,6 +603,8 @@ $a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s mag %2\$ss %3\$s";
$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s mag %2\$ss %3\$s nicht";
$a->strings["Item not found."] = "Beitrag nicht gefunden.";
$a->strings["Access denied."] = "Zugriff verweigert.";
$a->strings["Photos"] = "Bilder";
$a->strings["Files"] = "Dateien";
$a->strings["Account approved."] = "Account freigegeben.";
$a->strings["Registration revoked for %s"] = "Registrierung für %s wurde zurückgezogen";
$a->strings["Please login."] = "Bitte melde dich an.";
@ -679,7 +681,7 @@ $a->strings["Site name"] = "Seitenname";
$a->strings["Banner/Logo"] = "Banner/Logo";
$a->strings["System language"] = "Systemsprache";
$a->strings["System theme"] = "Systemweites Thema";
$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "";
$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Vorgabe für das System-Theme - kann von Benutzerprofilen überschrieben werden - <a href='#' id='cnftheme'>Theme-Einstellungen ändern</a>";
$a->strings["SSL link policy"] = "Regeln für SSL Links";
$a->strings["Determines whether generated links should be forced to use SSL"] = "Bestimmt, ob generierte Links SSL verwenden müssen";
$a->strings["Maximum image size"] = "Maximale Größe von Bildern";
@ -688,7 +690,7 @@ $a->strings["Register policy"] = "Registrierungsmethode";
$a->strings["Register text"] = "Registrierungstext";
$a->strings["Will be displayed prominently on the registration page."] = "Wird gut sichtbar auf der Registrierungs-Seite angezeigt.";
$a->strings["Accounts abandoned after x days"] = "Accounts gelten nach x Tagen als unbenutzt";
$a->strings["Will not waste system resources polling external sites for abandoned accounts. Enter 0 for no time limit."] = "Verschwende keine System-Ressourcen auf das Pollen externer Seiten, wenn Accounts nicht mehr benutzt werden. 0 eingeben für kein Limit.";
$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Verschwende keine System-Ressourcen auf das Pollen externer Seiten, wenn Accounts nicht mehr benutzt werden. 0 eingeben für kein Limit.";
$a->strings["Allowed friend domains"] = "Erlaubte Domains für Kontakte";
$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben.";
$a->strings["Allowed email domains"] = "Erlaubte Domains für Emails";
@ -779,7 +781,7 @@ $a->strings["{0} is now friends with %s"] = "{0} ist jetzt mit %s befreundet";
$a->strings["{0} posted"] = "{0} hat etwas veröffentlicht";
$a->strings["{0} tagged %s's post with #%s"] = "{0} hat %ss Beitrag mit dem Schlagwort #%s versehen";
$a->strings["{0} mentioned you in a post"] = "{0} hat dich in einem Beitrag erwähnt";
$a->strings["Contacts who are not members of a group"] = "";
$a->strings["Contacts who are not members of a group"] = "Kontakte, die keiner Gruppe zugewiesen sind";
$a->strings["OpenID protocol error. No ID returned."] = "OpenID Protokollfehler. Keine ID zurückgegeben.";
$a->strings["Account not found and OpenID registration is not permitted on this site."] = "Account wurde nicht gefunden und OpenID Registrierung auf diesem Server nicht gestattet.";
$a->strings["Login failed."] = "Annmeldung fehlgeschlagen.";
@ -801,19 +803,19 @@ $a->strings["No installed applications."] = "Keine Applikationen installiert.";
$a->strings["Search This Site"] = "Diese Seite durchsuchen";
$a->strings["Profile not found."] = "Profil nicht gefunden.";
$a->strings["Profile Name is required."] = "Profilname ist erforderlich.";
$a->strings["Marital Status"] = "";
$a->strings["Romantic Partner"] = "";
$a->strings["Work/Employment"] = "";
$a->strings["Marital Status"] = "Familienstand";
$a->strings["Romantic Partner"] = "Romanze";
$a->strings["Work/Employment"] = "Arbeit / Beschäftigung";
$a->strings["Religion"] = "Religion";
$a->strings["Political Views"] = "Politische Ansichten";
$a->strings["Gender"] = "Geschlecht";
$a->strings["Sexual Preference"] = "Sexuelle Vorlieben";
$a->strings["Homepage"] = "Webseite";
$a->strings["Interests"] = "Interessen";
$a->strings["Location"] = "";
$a->strings["Location"] = "Wohnort";
$a->strings["Profile updated."] = "Profil aktualisiert.";
$a->strings["public profile"] = "";
$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "";
$a->strings["public profile"] = "öffentliches Profil";
$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat folgendes aktualisiert %2\$s, verändert wurde %3\$s.";
$a->strings["Profile deleted."] = "Profil gelöscht.";
$a->strings["Profile-"] = "Profil-";
$a->strings["New profile created."] = "Neues Profil angelegt.";
@ -941,7 +943,7 @@ $a->strings["Facebook Connector Settings"] = "Facebook-Verbindungseinstellungen"
$a->strings["Facebook API Key"] = "Facebook API Schlüssel";
$a->strings["Error: it appears that you have specified the App-ID and -Secret in your .htconfig.php file. As long as they are specified there, they cannot be set using this form.<br><br>"] = "Fehler: du scheinst die App-ID und das App-Geheimnis in deiner .htconfig.php Datei angegeben zu haben. Solange sie dort festgelegt werden kannst du dieses Formular hier nicht verwenden.<br><br>";
$a->strings["Error: the given API Key seems to be incorrect (the application access token could not be retrieved)."] = "Fehler: der angegebene API Schlüssel scheint nicht korrekt zu sein (Zugriffstoken konnte nicht empfangen werden).";
$a->strings["The given API Key seems to work correctly."] = "Der angegebene API Schlüssel scheint nicht korrekt zu funktionieren.";
$a->strings["The given API Key seems to work correctly."] = "Der angegebene API Schlüssel scheint korrekt zu funktionieren.";
$a->strings["The correctness of the API Key could not be detected. Somthing strange's going on."] = "Die Echtheit des API Schlüssels konnte nicht überprüft werden. Etwas Merkwürdiges ist hier im Gange.";
$a->strings["App-ID / API-Key"] = "App-ID / API-Key";
$a->strings["Application secret"] = "Anwendungs-Geheimnis";
@ -1088,19 +1090,19 @@ $a->strings["The URL for the javascript file that should be included to use Math
$a->strings["Editplain settings updated."] = "Editplain Einstellungen aktualisiert";
$a->strings["Editplain Settings"] = "Editplain Einstellungen";
$a->strings["Disable richtext status editor"] = "RichText Editor deaktivieren";
$a->strings["generic profile image"] = "";
$a->strings["random geometric pattern"] = "";
$a->strings["monster face"] = "";
$a->strings["computer generated face"] = "";
$a->strings["retro arcade style face"] = "";
$a->strings["generic profile image"] = "allgemeines Profilbild";
$a->strings["random geometric pattern"] = "zufällig erzeugtes geometrisches Muster";
$a->strings["monster face"] = "Monstergesicht";
$a->strings["computer generated face"] = "Computergesicht";
$a->strings["retro arcade style face"] = "Retro Arcade Design Gesicht";
$a->strings["Default avatar image"] = "Standard Profilbild ";
$a->strings["Select default avatar image if none was found at Gravatar. See README"] = "";
$a->strings["Rating of images"] = "";
$a->strings["Select the appropriate avatar rating for your site. See README"] = "";
$a->strings["Gravatar settings updated."] = "";
$a->strings["Select default avatar image if none was found at Gravatar. See README"] = "Wähle das Standardgesicht, wenn kein Bild auf Gravatar gefunden wurde. Schaue auch sonst im README nach.";
$a->strings["Rating of images"] = "Bildbewertung";
$a->strings["Select the appropriate avatar rating for your site. See README"] = "Wähle eine angemessene Bildbewertung für Deinen Server. Schaue auch sonst im README nach.";
$a->strings["Gravatar settings updated."] = "Gravatar Einstellungen aktualisiert.";
$a->strings["Your account on %s will expire in a few days."] = "Dein Konto auf %s wird in ein paar Tagen verfallen.";
$a->strings["Your Friendica test account is about to expire."] = "Dein Friendica Test Konto wird bald verfallen.";
$a->strings["Hi %1\$s,\n\nYour test account on %2\$s will expire in less than five days. We hope you enjoyed this test drive and use this opportunity to find a permanent Friendica website for your integrated social communications. A list of public sites is available at http://dir.friendica.com/siteinfo - and for more information on setting up your own Friendica server please see the Friendica project website at http://friendica.com."] = "";
$a->strings["Hi %1\$s,\n\nYour test account on %2\$s will expire in less than five days. We hope you enjoyed this test drive and use this opportunity to find a permanent Friendica website for your integrated social communications. A list of public sites is available at http://dir.friendica.com/siteinfo - and for more information on setting up your own Friendica server please see the Friendica project website at http://friendica.com."] = "Hallo %1\$s,\n\ndein Test-Konto auf %2\$s wird in weniger als fünf Tagen verfallen. Wir hoffen, dass dir dieser Testlauf gefallen hat, so dass du die Gelegenheit nutzt und dir eine feste Friendica-Site für deine integrierte Social-Network-Kommunikation suchst. Eine Liste öffentlicher Sites findest du auf http://dir.friendica.com/siteinfo. Um mehr Information darüber zu bekommen, wie man einen eigenen Friendica-Server aufsetzt, kannst du auch einen Blick auf die Friendica Projektseite werfen: http://friendica.com";
$a->strings["\"pageheader\" Settings"] = "\"pageheader\"-Einstellungen";
$a->strings["pageheader Settings saved."] = "pageheader-Einstellungen gespeichert.";
$a->strings["Post to Insanejournal"] = "Auf InsaneJournal posten.";
@ -1184,18 +1186,18 @@ $a->strings["Send #tag links to Twitter"] = "#Tags nach Twitter senden";
$a->strings["Consumer key"] = "Consumer Key";
$a->strings["Consumer secret"] = "Consumer Secret";
$a->strings["IRC Settings"] = "IRC Einstellungen";
$a->strings["Channel(s) to auto connect (comma separated)"] = "";
$a->strings["Popular Channels (comma separated)"] = "";
$a->strings["Channel(s) to auto connect (comma separated)"] = "mit diesen Kanälen soll man automatisch verbunden werden (Komma getrennt)";
$a->strings["Popular Channels (comma separated)"] = "Beliebte Kanäle (mit Komma getrennt)";
$a->strings["IRC settings saved."] = "IRC Einstellungen gespeichert.";
$a->strings["IRC Chatroom"] = "IRC Chatraum";
$a->strings["Popular Channels"] = "Beliebte Räume";
$a->strings["Post to blogger"] = "";
$a->strings["Blogger Post Settings"] = "";
$a->strings["Enable Blogger Post Plugin"] = "";
$a->strings["Blogger username"] = "";
$a->strings["Blogger password"] = "";
$a->strings["Blogger API URL"] = "";
$a->strings["Post to Blogger by default"] = "";
$a->strings["Post to blogger"] = "Auf Blogger posten";
$a->strings["Blogger Post Settings"] = "Einstellungen zum posten auf Blogger";
$a->strings["Enable Blogger Post Plugin"] = "Blogger-Post-Plugin aktivieren";
$a->strings["Blogger username"] = "Blogger-Benutzername";
$a->strings["Blogger password"] = "Blogger-Passwort";
$a->strings["Blogger API URL"] = "Blogger-API-URL";
$a->strings["Post to Blogger by default"] = "Standardmäßig auf Blogger posten";
$a->strings["Post to Posterous"] = "Nach Posterous senden";
$a->strings["Posterous Post Settings"] = "Posterous Beitrags-Einstellungen";
$a->strings["Enable Posterous Post Plugin"] = "Posterous-Plugin aktivieren";
@ -1212,21 +1214,18 @@ $a->strings["Invite Friends"] = "Freunde einladen";
$a->strings["Community Pages"] = "Foren";
$a->strings["Help or @NewHere ?"] = "Hilfe oder @NewHere";
$a->strings["Connect Services"] = "Verbinde Dienste";
$a->strings["PostIt to Friendica"] = "Bei Friendica posten";
$a->strings["Post to Friendica"] = "Wenn du diesen Link";
$a->strings[" from anywhere by bookmarking this Link."] = " zu deinen Lesezeichen hinzufügst, kannst du von überallher Links bei Friendica veröffentlichen.";
$a->strings["Your posts and conversations"] = "Deine Beiträge und Unterhaltungen";
$a->strings["Your profile page"] = "Deine Profilseite";
$a->strings["Your contacts"] = "Deine Kontakte";
$a->strings["Photos"] = "Bilder";
$a->strings["Your photos"] = "Deine Fotos";
$a->strings["Your events"] = "Deine Ereignisse";
$a->strings["Personal notes"] = "Persönliche Notizen";
$a->strings["Your personal photos"] = "Deine privaten Fotos";
$a->strings["Theme settings"] = "Themen Einstellungen";
$a->strings["Set font-size for posts and comments"] = "";
$a->strings["Set line-height for posts and comments"] = "";
$a->strings["Set resolution for middle column"] = "";
$a->strings["Set font-size for posts and comments"] = "Schriftgröße für Beiträge und Kommentare festlegen";
$a->strings["Set line-height for posts and comments"] = "Liniengröße für Beiträge und Kommantare festlegen";
$a->strings["Set resolution for middle column"] = "Auflösung für die Mittelspalte setzen";
$a->strings["Set color scheme"] = "Wähle Farbschema";
$a->strings["Alignment"] = "Ausrichtung";
$a->strings["Left"] = "Links";
$a->strings["Center"] = "Mitte";
@ -1299,8 +1298,8 @@ $a->strings["Single"] = "Single";
$a->strings["Lonely"] = "Einsam";
$a->strings["Available"] = "Verfügbar";
$a->strings["Unavailable"] = "Nicht verfügbar";
$a->strings["Has crush"] = "";
$a->strings["Infatuated"] = "";
$a->strings["Has crush"] = "verknallt";
$a->strings["Infatuated"] = "verliebt";
$a->strings["Dating"] = "Dating";
$a->strings["Unfaithful"] = "Untreu";
$a->strings["Sex Addict"] = "Sexbesessen";
@ -1309,10 +1308,10 @@ $a->strings["Friends/Benefits"] = "Freunde/Zuwendungen";
$a->strings["Casual"] = "Casual";
$a->strings["Engaged"] = "Verlobt";
$a->strings["Married"] = "Verheiratet";
$a->strings["Imaginarily married"] = "";
$a->strings["Imaginarily married"] = "imaginär verheiratet";
$a->strings["Partners"] = "Partner";
$a->strings["Cohabiting"] = "zusammenlebend";