1
1
Fork 0

Merge remote branch 'upstream/master'

This commit is contained in:
Michael Vogel 2012-05-19 14:04:24 +02:00
commit 9a940786c1
26 changed files with 1058 additions and 687 deletions

View file

@ -9,9 +9,9 @@ require_once('include/nav.php');
require_once('include/cache.php'); require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_VERSION', '3.0.1343' ); define ( 'FRIENDICA_VERSION', '3.0.1346' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1143 ); define ( 'DB_UPDATE_VERSION', 1144 );
define ( 'EOL', "<br />\r\n" ); define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );

19
convert_innodb.sql Normal file
View file

@ -0,0 +1,19 @@
ALTER TABLE `profile` DROP INDEX `pub_keywords` ;
ALTER TABLE `profile` DROP INDEX `prv_keywords` ;
ALTER TABLE `item` DROP INDEX `title` ;
ALTER TABLE `item` DROP INDEX `body` ;
ALTER TABLE `item` DROP INDEX `allow_cid` ;
ALTER TABLE `item` DROP INDEX `allow_gid` ;
ALTER TABLE `item` DROP INDEX `deny_cid` ;
ALTER TABLE `item` DROP INDEX `deny_gid` ;
ALTER TABLE `item` DROP INDEX `tag` ;
ALTER TABLE `item` DROP INDEX `file` ;
SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' engine=InnoDB;')
FROM information_schema.tables
WHERE engine = 'MyISAM';

View file

@ -1028,6 +1028,7 @@ CREATE TABLE IF NOT EXISTS `user` (
`account_expires_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `account_expires_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`expire_notification_sent` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `expire_notification_sent` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`service_class` char(32) NOT NULL, `service_class` char(32) NOT NULL,
`def_gid` int(11) NOT NULL DEFAULT '0',
`allow_cid` mediumtext NOT NULL, `allow_cid` mediumtext NOT NULL,
`allow_gid` mediumtext NOT NULL, `allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL, `deny_cid` mediumtext NOT NULL,

View file

@ -38,164 +38,167 @@ function delivery_run($argv, $argc){
$cmd = $argv[1]; $cmd = $argv[1];
$item_id = intval($argv[2]); $item_id = intval($argv[2]);
$contact_id = intval($argv[3]);
// Some other process may have delivered this item already. for($x = 3; $x < $argc; $x ++) {
$r = q("select * from deliverq where cmd = '%s' and item = %d and contact = %d limit 1", $contact_id = intval($argv[x]);
dbesc($cmd),
dbesc($item_id),
dbesc($contact_id)
);
if(! count($r)) {
return;
}
$maxsysload = intval(get_config('system','maxloadavg')); // Some other process may have delivered this item already.
if($maxsysload < 1)
$maxsysload = 50;
if(function_exists('sys_getloadavg')) {
$load = sys_getloadavg();
if(intval($load[0]) > $maxsysload) {
logger('system: load ' . $load . ' too high. Delivery deferred to next queue run.');
return;
}
}
// It's ours to deliver. Remove it from the queue. $r = q("select * from deliverq where cmd = '%s' and item = %d and contact = %d limit 1",
dbesc($cmd),
q("delete from deliverq where cmd = '%s' and item = %d and contact = %d limit 1", dbesc($item_id),
dbesc($cmd), dbesc($contact_id)
dbesc($item_id),
dbesc($contact_id)
);
if((! $item_id) || (! $contact_id))
return;
$expire = false;
$top_level = false;
$recipients = array();
$url_recipients = array();
$normal_mode = true;
$recipients[] = $contact_id;
if($cmd === 'expire') {
$normal_mode = false;
$expire = true;
$items = q("SELECT * FROM `item` WHERE `uid` = %d AND `wall` = 1
AND `deleted` = 1 AND `changed` > UTC_TIMESTAMP() - INTERVAL 30 MINUTE",
intval($item_id)
); );
$uid = $item_id; if(! count($r)) {
$item_id = 0; continue;
if(! count($items))
return;
}
else {
// find ancestors
$r = q("SELECT * FROM `item` WHERE `id` = %d and visible = 1 and moderated = 0 LIMIT 1",
intval($item_id)
);
if((! count($r)) || (! intval($r[0]['parent']))) {
return;
} }
$target_item = $r[0]; $maxsysload = intval(get_config('system','maxloadavg'));
$parent_id = intval($r[0]['parent']); if($maxsysload < 1)
$uid = $r[0]['uid']; $maxsysload = 50;
$updated = $r[0]['edited']; if(function_exists('sys_getloadavg')) {
$load = sys_getloadavg();
if(! $parent_id) if(intval($load[0]) > $maxsysload) {
return; logger('system: load ' . $load . ' too high. Delivery deferred to next queue run.');
return;
}
$items = q("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer`
FROM `item` LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id` WHERE `parent` = %d and visible = 1 and moderated = 0 ORDER BY `id` ASC",
intval($parent_id)
);
if(! count($items)) {
return;
} }
$icontacts = null; // It's ours to deliver. Remove it from the queue.
$contacts_arr = array();
foreach($items as $item) q("delete from deliverq where cmd = '%s' and item = %d and contact = %d limit 1",
if(! in_array($item['contact-id'],$contacts_arr)) dbesc($cmd),
$contacts_arr[] = intval($item['contact-id']); dbesc($item_id),
if(count($contacts_arr)) { dbesc($contact_id)
$str_contacts = implode(',',$contacts_arr); );
$icontacts = q("SELECT * FROM `contact`
WHERE `id` IN ( $str_contacts ) " if((! $item_id) || (! $contact_id))
continue;
$expire = false;
$top_level = false;
$recipients = array();
$url_recipients = array();
$normal_mode = true;
$recipients[] = $contact_id;
if($cmd === 'expire') {
$normal_mode = false;
$expire = true;
$items = q("SELECT * FROM `item` WHERE `uid` = %d AND `wall` = 1
AND `deleted` = 1 AND `changed` > UTC_TIMESTAMP() - INTERVAL 30 MINUTE",
intval($item_id)
); );
$uid = $item_id;
$item_id = 0;
if(! count($items))
continue;
} }
if( ! ($icontacts && count($icontacts))) else {
return;
// avoid race condition with deleting entries // find ancestors
$r = q("SELECT * FROM `item` WHERE `id` = %d and visible = 1 and moderated = 0 LIMIT 1",
intval($item_id)
);
if($items[0]['deleted']) { if((! count($r)) || (! intval($r[0]['parent']))) {
continue;
}
$target_item = $r[0];
$parent_id = intval($r[0]['parent']);
$uid = $r[0]['uid'];
$updated = $r[0]['edited'];
if(! $parent_id)
continue;
$items = q("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer`
FROM `item` LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id` WHERE `parent` = %d and visible = 1 and moderated = 0 ORDER BY `id` ASC",
intval($parent_id)
);
if(! count($items)) {
continue;
}
$icontacts = null;
$contacts_arr = array();
foreach($items as $item) foreach($items as $item)
$item['deleted'] = 1; if(! in_array($item['contact-id'],$contacts_arr))
$contacts_arr[] = intval($item['contact-id']);
if(count($contacts_arr)) {
$str_contacts = implode(',',$contacts_arr);
$icontacts = q("SELECT * FROM `contact`
WHERE `id` IN ( $str_contacts ) "
);
}
if( ! ($icontacts && count($icontacts)))
continue;
// avoid race condition with deleting entries
if($items[0]['deleted']) {
foreach($items as $item)
$item['deleted'] = 1;
}
if((count($items) == 1) && ($items[0]['uri'] === $items[0]['parent-uri'])) {
logger('delivery: top level post');
$top_level = true;
}
} }
if((count($items) == 1) && ($items[0]['uri'] === $items[0]['parent-uri'])) { $r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`,
logger('delivery: top level post'); `user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`,
$top_level = true; `user`.`page-flags`, `user`.`prvnets`
} FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid`
} WHERE `contact`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
intval($uid)
);
$r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`, if(! count($r))
`user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`, continue;
`user`.`page-flags`, `user`.`prvnets`
FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid`
WHERE `contact`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
intval($uid)
);
if(! count($r)) $owner = $r[0];
return;
$owner = $r[0]; $walltowall = ((($top_level) && ($owner['id'] != $items[0]['contact-id'])) ? true : false);
$walltowall = ((($top_level) && ($owner['id'] != $items[0]['contact-id'])) ? true : false); $public_message = true;
$public_message = true; // fill this in with a single salmon slap if applicable
// fill this in with a single salmon slap if applicable $slap = '';
$slap = ''; require_once('include/group.php');
require_once('include/group.php'); $parent = $items[0];
$parent = $items[0]; // This is IMPORTANT!!!!
// This is IMPORTANT!!!! // We will only send a "notify owner to relay" or followup message if the referenced post
// originated on our system by virtue of having our hostname somewhere
// in the URI, AND it was a comment (not top_level) AND the parent originated elsewhere.
// if $parent['wall'] == 1 we will already have the parent message in our array
// and we will relay the whole lot.
// We will only send a "notify owner to relay" or followup message if the referenced post // expire sends an entire group of expire messages and cannot be forwarded.
// originated on our system by virtue of having our hostname somewhere // However the conversation owner will be a part of the conversation and will
// in the URI, AND it was a comment (not top_level) AND the parent originated elsewhere. // be notified during this run.
// if $parent['wall'] == 1 we will already have the parent message in our array // Other DFRN conversation members will be alerted during polled updates.
// and we will relay the whole lot.
// expire sends an entire group of expire messages and cannot be forwarded. // Diaspora members currently are not notified of expirations, and other networks have
// However the conversation owner will be a part of the conversation and will // either limited or no ability to process deletions. We should at least fix Diaspora
// be notified during this run. // by stringing togther an array of retractions and sending them onward.
// Other DFRN conversation members will be alerted during polled updates.
// Diaspora members currently are not notified of expirations, and other networks have
// either limited or no ability to process deletions. We should at least fix Diaspora
// by stringing togther an array of retractions and sending them onward.
$localhost = $a->get_hostname(); $localhost = $a->get_hostname();
if(strpos($localhost,':')) if(strpos($localhost,':'))
$localhost = substr($localhost,0,strpos($localhost,':')); $localhost = substr($localhost,0,strpos($localhost,':'));
/** /**
* *
@ -205,174 +208,71 @@ function delivery_run($argv, $argc){
* *
*/ */
if((! $top_level) && ($parent['wall'] == 0) && (! $expire) && (stristr($target_item['uri'],$localhost))) { if((! $top_level) && ($parent['wall'] == 0) && (! $expire) && (stristr($target_item['uri'],$localhost))) {
logger('relay denied for delivery agent.'); logger('relay denied for delivery agent.');
/* no relay allowed for direct contact delivery */ /* no relay allowed for direct contact delivery */
return; continue;
} }
if((strlen($parent['allow_cid'])) if((strlen($parent['allow_cid']))
|| (strlen($parent['allow_gid'])) || (strlen($parent['allow_gid']))
|| (strlen($parent['deny_cid'])) || (strlen($parent['deny_cid']))
|| (strlen($parent['deny_gid']))) { || (strlen($parent['deny_gid']))) {
$public_message = false; // private recipients, not public $public_message = false; // private recipients, not public
} }
$r = q("SELECT * FROM `contact` WHERE `id` = %d AND `blocked` = 0 AND `pending` = 0", $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `blocked` = 0 AND `pending` = 0",
intval($contact_id) intval($contact_id)
); );
if(count($r)) if(count($r))
$contact = $r[0]; $contact = $r[0];
$hubxml = feed_hublinks(); $hubxml = feed_hublinks();
logger('notifier: slaps: ' . print_r($slaps,true), LOGGER_DATA); logger('notifier: slaps: ' . print_r($slaps,true), LOGGER_DATA);
require_once('include/salmon.php'); require_once('include/salmon.php');
if($contact['self']) if($contact['self'])
return; continue;
$deliver_status = 0; $deliver_status = 0;
switch($contact['network']) { switch($contact['network']) {
case NETWORK_DFRN : case NETWORK_DFRN :
logger('notifier: dfrndelivery: ' . $contact['name']); logger('notifier: dfrndelivery: ' . $contact['name']);
$feed_template = get_markup_template('atom_feed.tpl'); $feed_template = get_markup_template('atom_feed.tpl');
$mail_template = get_markup_template('atom_mail.tpl'); $mail_template = get_markup_template('atom_mail.tpl');
$atom = ''; $atom = '';
$birthday = feed_birthday($owner['uid'],$owner['timezone']); $birthday = feed_birthday($owner['uid'],$owner['timezone']);
if(strlen($birthday)) if(strlen($birthday))
$birthday = '<dfrn:birthday>' . xmlify($birthday) . '</dfrn:birthday>'; $birthday = '<dfrn:birthday>' . xmlify($birthday) . '</dfrn:birthday>';
$atom .= replace_macros($feed_template, array( $atom .= replace_macros($feed_template, array(
'$version' => xmlify(FRIENDICA_VERSION), '$version' => xmlify(FRIENDICA_VERSION),
'$feed_id' => xmlify($a->get_baseurl() . '/profile/' . $owner['nickname'] ), '$feed_id' => xmlify($a->get_baseurl() . '/profile/' . $owner['nickname'] ),
'$feed_title' => xmlify($owner['name']), '$feed_title' => xmlify($owner['name']),
'$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', $updated . '+00:00' , ATOM_TIME)) , '$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', $updated . '+00:00' , ATOM_TIME)) ,
'$hub' => $hubxml, '$hub' => $hubxml,
'$salmon' => '', // private feed, we don't use salmon here '$salmon' => '', // private feed, we don't use salmon here
'$name' => xmlify($owner['name']), '$name' => xmlify($owner['name']),
'$profile_page' => xmlify($owner['url']), '$profile_page' => xmlify($owner['url']),
'$photo' => xmlify($owner['photo']), '$photo' => xmlify($owner['photo']),
'$thumb' => xmlify($owner['thumb']), '$thumb' => xmlify($owner['thumb']),
'$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) , '$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) ,
'$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) , '$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) ,
'$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME)) , '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME)) ,
'$birthday' => $birthday, '$birthday' => $birthday,
'$community' => (($owner['page-flags'] == PAGE_COMMUNITY) ? '<dfrn:community>1</dfrn:community>' : '') '$community' => (($owner['page-flags'] == PAGE_COMMUNITY) ? '<dfrn:community>1</dfrn:community>' : '')
)); ));
foreach($items as $item) {
if(! $item['parent'])
continue;
// private emails may be in included in public conversations. Filter them.
if(($public_message) && $item['private'])
continue;
$item_contact = get_item_contact($item,$icontacts);
if(! $item_contact)
continue;
if($normal_mode) {
if($item_id == $item['id'] || $item['id'] == $item['parent'])
$atom .= atom_entry($item,'text',null,$owner,true);
}
else
$atom .= atom_entry($item,'text',null,$owner,true);
}
$atom .= '</feed>' . "\r\n";
logger('notifier: ' . $atom, LOGGER_DATA);
$basepath = implode('/', array_slice(explode('/',$contact['url']),0,3));
// perform local delivery if we are on the same site
if(link_compare($basepath,$a->get_baseurl())) {
$nickname = basename($contact['url']);
if($contact['issued-id'])
$sql_extra = sprintf(" AND `dfrn-id` = '%s' ", dbesc($contact['issued-id']));
else
$sql_extra = sprintf(" AND `issued-id` = '%s' ", dbesc($contact['dfrn-id']));
$x = q("SELECT `contact`.*, `contact`.`uid` AS `importer_uid`,
`contact`.`pubkey` AS `cpubkey`,
`contact`.`prvkey` AS `cprvkey`,
`contact`.`thumb` AS `thumb`,
`contact`.`url` as `url`,
`contact`.`name` as `senderName`,
`user`.*
FROM `contact`
LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`
WHERE `contact`.`blocked` = 0 AND `contact`.`pending` = 0
AND `contact`.`network` = '%s' AND `user`.`nickname` = '%s'
$sql_extra
AND `user`.`account_expired` = 0 LIMIT 1",
dbesc(NETWORK_DFRN),
dbesc($nickname)
);
if(count($x)) {
if($owner['page-flags'] == PAGE_COMMUNITY && ! $x[0]['writable']) {
q("update contact set writable = 1 where id = %d limit 1",
intval($x[0]['id'])
);
$x[0]['writable'] = 1;
}
$ssl_policy = get_config('system','ssl_policy');
fix_contact_ssl_policy($x[0],$ssl_policy);
// If we are setup as a soapbox we aren't accepting input from this person
if($x[0]['page-flags'] == PAGE_SOAPBOX)
break;
require_once('library/simplepie/simplepie.inc');
logger('mod-delivery: local delivery');
local_delivery($x[0],$atom);
break;
}
}
if(! was_recently_delayed($contact['id']))
$deliver_status = dfrn_deliver($owner,$contact,$atom);
else
$deliver_status = (-1);
logger('notifier: dfrn_delivery returns ' . $deliver_status);
if($deliver_status == (-1)) {
logger('notifier: delivery failed: queuing message');
add_to_queue($contact['id'],NETWORK_DFRN,$atom);
}
break;
case NETWORK_OSTATUS :
// Do not send to otatus if we are not configured to send to public networks
if($owner['prvnets'])
break;
if(get_config('system','ostatus_disabled') || get_config('system','dfrn_only'))
break;
// only send salmon if public - e.g. if it's ok to notify
// a public hub, it's ok to send a salmon
if(($public_message) && (! $expire)) {
$slaps = array();
foreach($items as $item) { foreach($items as $item) {
if(! $item['parent']) if(! $item['parent'])
@ -386,156 +286,260 @@ function delivery_run($argv, $argc){
if(! $item_contact) if(! $item_contact)
continue; continue;
if(($top_level) && ($public_message) && ($item['author-link'] === $item['owner-link']) && (! $expire)) if($normal_mode) {
$slaps[] = atom_entry($item,'html',null,$owner,true); if($item_id == $item['id'] || $item['id'] == $item['parent'])
$atom .= atom_entry($item,'text',null,$owner,true);
}
else
$atom .= atom_entry($item,'text',null,$owner,true);
} }
logger('notifier: slapdelivery: ' . $contact['name']); $atom .= '</feed>' . "\r\n";
foreach($slaps as $slappy) {
if($contact['notify']) {
if(! was_recently_delayed($contact['id']))
$deliver_status = slapper($owner,$contact['notify'],$slappy);
else
$deliver_status = (-1);
if($deliver_status == (-1)) { logger('notifier: ' . $atom, LOGGER_DATA);
// queue message for redelivery $basepath = implode('/', array_slice(explode('/',$contact['url']),0,3));
add_to_queue($contact['id'],NETWORK_OSTATUS,$slappy);
// perform local delivery if we are on the same site
if(link_compare($basepath,$a->get_baseurl())) {
$nickname = basename($contact['url']);
if($contact['issued-id'])
$sql_extra = sprintf(" AND `dfrn-id` = '%s' ", dbesc($contact['issued-id']));
else
$sql_extra = sprintf(" AND `issued-id` = '%s' ", dbesc($contact['dfrn-id']));
$x = q("SELECT `contact`.*, `contact`.`uid` AS `importer_uid`,
`contact`.`pubkey` AS `cpubkey`,
`contact`.`prvkey` AS `cprvkey`,
`contact`.`thumb` AS `thumb`,
`contact`.`url` as `url`,
`contact`.`name` as `senderName`,
`user`.*
FROM `contact`
LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`
WHERE `contact`.`blocked` = 0 AND `contact`.`pending` = 0
AND `contact`.`network` = '%s' AND `user`.`nickname` = '%s'
$sql_extra
AND `user`.`account_expired` = 0 LIMIT 1",
dbesc(NETWORK_DFRN),
dbesc($nickname)
);
if(count($x)) {
if($owner['page-flags'] == PAGE_COMMUNITY && ! $x[0]['writable']) {
q("update contact set writable = 1 where id = %d limit 1",
intval($x[0]['id'])
);
$x[0]['writable'] = 1;
}
$ssl_policy = get_config('system','ssl_policy');
fix_contact_ssl_policy($x[0],$ssl_policy);
// If we are setup as a soapbox we aren't accepting input from this person
if($x[0]['page-flags'] == PAGE_SOAPBOX)
break;
require_once('library/simplepie/simplepie.inc');
logger('mod-delivery: local delivery');
local_delivery($x[0],$atom);
break;
}
}
if(! was_recently_delayed($contact['id']))
$deliver_status = dfrn_deliver($owner,$contact,$atom);
else
$deliver_status = (-1);
logger('notifier: dfrn_delivery returns ' . $deliver_status);
if($deliver_status == (-1)) {
logger('notifier: delivery failed: queuing message');
add_to_queue($contact['id'],NETWORK_DFRN,$atom);
}
break;
case NETWORK_OSTATUS :
// Do not send to otatus if we are not configured to send to public networks
if($owner['prvnets'])
break;
if(get_config('system','ostatus_disabled') || get_config('system','dfrn_only'))
break;
// only send salmon if public - e.g. if it's ok to notify
// a public hub, it's ok to send a salmon
if(($public_message) && (! $expire)) {
$slaps = array();
foreach($items as $item) {
if(! $item['parent'])
continue;
// private emails may be in included in public conversations. Filter them.
if(($public_message) && $item['private'])
continue;
$item_contact = get_item_contact($item,$icontacts);
if(! $item_contact)
continue;
if(($top_level) && ($public_message) && ($item['author-link'] === $item['owner-link']) && (! $expire))
$slaps[] = atom_entry($item,'html',null,$owner,true);
}
logger('notifier: slapdelivery: ' . $contact['name']);
foreach($slaps as $slappy) {
if($contact['notify']) {
if(! was_recently_delayed($contact['id']))
$deliver_status = slapper($owner,$contact['notify'],$slappy);
else
$deliver_status = (-1);
if($deliver_status == (-1)) {
// queue message for redelivery
add_to_queue($contact['id'],NETWORK_OSTATUS,$slappy);
}
} }
} }
} }
}
break;
case NETWORK_MAIL :
case NETWORK_MAIL2:
if(get_config('system','dfrn_only'))
break;
// WARNING: does not currently convert to RFC2047 header encodings, etc.
$addr = $contact['addr'];
if(! strlen($addr))
break; break;
if($cmd === 'wall-new' || $cmd === 'comment-new') { case NETWORK_MAIL :
case NETWORK_MAIL2:
$it = null; if(get_config('system','dfrn_only'))
if($cmd === 'wall-new') break;
$it = $items[0]; // WARNING: does not currently convert to RFC2047 header encodings, etc.
else {
$r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1", $addr = $contact['addr'];
intval($argv[2]), if(! strlen($addr))
break;
if($cmd === 'wall-new' || $cmd === 'comment-new') {
$it = null;
if($cmd === 'wall-new')
$it = $items[0];
else {
$r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($argv[2]),
intval($uid)
);
if(count($r))
$it = $r[0];
}
if(! $it)
break;
$local_user = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
intval($uid) intval($uid)
); );
if(count($r)) if(! count($local_user))
$it = $r[0]; break;
}
if(! $it)
break;
$reply_to = '';
$r1 = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
intval($uid)
);
if($r1 && $r1[0]['reply_to'])
$reply_to = $r1[0]['reply_to'];
$local_user = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", $subject = (($it['title']) ? email_header_encode($it['title'],'UTF-8') : t("\x28no subject\x29")) ;
intval($uid)
);
if(! count($local_user))
break;
$reply_to = ''; // only expose our real email address to true friends
$r1 = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
intval($uid)
);
if($r1 && $r1[0]['reply_to'])
$reply_to = $r1[0]['reply_to'];
$subject = (($it['title']) ? email_header_encode($it['title'],'UTF-8') : t("\x28no subject\x29")) ; if(($contact['rel'] == CONTACT_IS_FRIEND) && (! $contact['blocked']))
$headers = 'From: ' . email_header_encode($local_user[0]['username'],'UTF-8') . ' <' . $local_user[0]['email'] . '>' . "\n";
else
$headers = 'From: ' . email_header_encode($local_user[0]['username'],'UTF-8') . ' <' . t('noreply') . '@' . $a->get_hostname() . '>' . "\n";
// only expose our real email address to true friends if($reply_to)
$headers .= 'Reply-to: ' . $reply_to . "\n";
if(($contact['rel'] == CONTACT_IS_FRIEND) && (! $contact['blocked'])) // for testing purposes: Collect exported mails
$headers = 'From: ' . email_header_encode($local_user[0]['username'],'UTF-8') . ' <' . $local_user[0]['email'] . '>' . "\n"; // $file = tempnam("/tmp/friendica/", "mail-out-");
else // file_put_contents($file, json_encode($it));
$headers = 'From: ' . email_header_encode($local_user[0]['username'],'UTF-8') . ' <' . t('noreply') . '@' . $a->get_hostname() . '>' . "\n";
if($reply_to) $headers .= 'Message-Id: <' . iri2msgid($it['uri']). '>' . "\n";
$headers .= 'Reply-to: ' . $reply_to . "\n";
// for testing purposes: Collect exported mails //logger("Mail: uri: ".$it['uri']." parent-uri ".$it['parent-uri'], LOGGER_DEBUG);
// $file = tempnam("/tmp/friendica/", "mail-out-"); //logger("Mail: Data: ".print_r($it, true), LOGGER_DEBUG);
// file_put_contents($file, json_encode($it)); //logger("Mail: Data: ".print_r($it, true), LOGGER_DATA);
$headers .= 'Message-Id: <' . iri2msgid($it['uri']). '>' . "\n"; if($it['uri'] !== $it['parent-uri']) {
$headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n";
if(!strlen($it['title'])) {
$r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
dbesc($it['parent-uri']));
//logger("Mail: uri: ".$it['uri']." parent-uri ".$it['parent-uri'], LOGGER_DEBUG); if(count($r) AND ($r[0]['title'] != ''))
//logger("Mail: Data: ".print_r($it, true), LOGGER_DEBUG); $subject = $r[0]['title'];
//logger("Mail: Data: ".print_r($it, true), LOGGER_DATA); }
if(strncasecmp($subject,'RE:',3))
if($it['uri'] !== $it['parent-uri']) { $subject = 'Re: '.$subject;
$headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n";
if(!strlen($it['title'])) {
$r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
dbesc($it['parent-uri']));
if(count($r) AND ($r[0]['title'] != ''))
$subject = $r[0]['title'];
} }
if(strncasecmp($subject,'RE:',3)) email_send($addr, $subject, $headers, $it);
$subject = 'Re: '.$subject;
} }
email_send($addr, $subject, $headers, $it);
}
break;
case NETWORK_DIASPORA :
if($public_message)
$loc = 'public batch ' . $contact['batch'];
else
$loc = $contact['name'];
logger('delivery: diaspora batch deliver: ' . $loc);
if(get_config('system','dfrn_only') || (! get_config('system','diaspora_enabled')) || (! $normal_mode))
break; break;
if((! $contact['pubkey']) && (! $public_message)) case NETWORK_DIASPORA :
if($public_message)
$loc = 'public batch ' . $contact['batch'];
else
$loc = $contact['name'];
logger('delivery: diaspora batch deliver: ' . $loc);
if(get_config('system','dfrn_only') || (! get_config('system','diaspora_enabled')) || (! $normal_mode))
break;
if((! $contact['pubkey']) && (! $public_message))
break;
if($target_item['verb'] === ACTIVITY_DISLIKE) {
// unsupported
break;
}
elseif(($target_item['deleted']) && ($target_item['verb'] !== ACTIVITY_LIKE)) {
logger('delivery: diaspora retract: ' . $loc);
// diaspora delete,
diaspora_send_retraction($target_item,$owner,$contact,$public_message);
break;
}
elseif($target_item['parent'] != $target_item['id']) {
logger('delivery: diaspora relay: ' . $loc);
// we are the relay - send comments, likes and unlikes to our conversants
diaspora_send_relay($target_item,$owner,$contact,$public_message);
break;
}
elseif(($top_level) && (! $walltowall)) {
// currently no workable solution for sending walltowall
logger('delivery: diaspora status: ' . $loc);
diaspora_send_status($target_item,$owner,$contact,$public_message);
break;
}
logger('delivery: diaspora unknown mode: ' . $contact['name']);
break; break;
if($target_item['verb'] === ACTIVITY_DISLIKE) { case NETWORK_FEED :
// unsupported case NETWORK_FACEBOOK :
if(get_config('system','dfrn_only'))
break;
default:
break; break;
} }
elseif(($target_item['deleted']) && ($target_item['verb'] !== ACTIVITY_LIKE)) {
logger('delivery: diaspora retract: ' . $loc);
// diaspora delete,
diaspora_send_retraction($target_item,$owner,$contact,$public_message);
break;
}
elseif($target_item['parent'] != $target_item['id']) {
logger('delivery: diaspora relay: ' . $loc);
// we are the relay - send comments, likes and unlikes to our conversants
diaspora_send_relay($target_item,$owner,$contact,$public_message);
break;
}
elseif(($top_level) && (! $walltowall)) {
// currently no workable solution for sending walltowall
logger('delivery: diaspora status: ' . $loc);
diaspora_send_status($target_item,$owner,$contact,$public_message);
break;
}
logger('delivery: diaspora unknown mode: ' . $contact['name']);
break;
case NETWORK_FEED :
case NETWORK_FACEBOOK :
if(get_config('system','dfrn_only'))
break;
default:
break;
} }
return; return;

View file

@ -569,6 +569,14 @@ function diaspora_request($importer,$xml) {
return; return;
} }
$g = q("select def_gid from user where uid = %d limit 1",
intval($importer['uid'])
);
if($g && intval($g[0]['def_gid'])) {
require_once('include/group.php');
group_add_member($importer['uid'],'',$contact_record['id'],$g[0]['def_gid']);
}
if($importer['page-flags'] == PAGE_NORMAL) { if($importer['page-flags'] == PAGE_NORMAL) {
$hash = random_string() . (string) time(); // Generate a confirm_key $hash = random_string() . (string) time(); // Generate a confirm_key

View file

@ -97,8 +97,9 @@ function group_rmv_member($uid,$name,$member) {
} }
function group_add_member($uid,$name,$member) { function group_add_member($uid,$name,$member,$gid = 0) {
$gid = group_byname($uid,$name); if(! $gid)
$gid = group_byname($uid,$name);
if((! $gid) || (! $uid) || (! $member)) if((! $gid) || (! $uid) || (! $member))
return false; return false;
@ -154,6 +155,32 @@ function group_public_members($gid) {
} }
function mini_group_select($uid,$gid = 0) {
$grps = array();
$o = '';
$r = q("SELECT * FROM `group` WHERE `deleted` = 0 AND `uid` = %d ORDER BY `name` ASC",
intval($uid)
);
$grps[] = array('name' => '', 'id' => '0', 'selected' => '');
if(count($r)) {
foreach($r as $rr) {
$grps[] = array('name' => $rr['name'], 'id' => $rr['id'], 'selected' => (($gid == $rr['id']) ? 'true' : ''));
}
}
logger('groups: ' . print_r($grps,true));
$o = replace_macros(get_markup_template('group_selection.tpl'), array(
'$label' => t('Default privacy group for new contacts'),
'$groups' => $grps
));
return $o;
}
function group_side($every="contacts",$each="group",$edit = false, $group_id = 0, $cid = 0) { function group_side($every="contacts",$each="group",$edit = false, $group_id = 0, $cid = 0) {

View file

@ -959,6 +959,8 @@ function tag_deliver($uid,$item_id) {
return; return;
$community_page = (($u[0]['page-flags'] == PAGE_COMMUNITY) ? true : false); $community_page = (($u[0]['page-flags'] == PAGE_COMMUNITY) ? true : false);
$prvgroup = (($u[0]['page-flags'] == PAGE_PRVGROUP) ? true : false);
$i = q("select * from item where id = %d and uid = %d limit 1", $i = q("select * from item where id = %d and uid = %d limit 1",
intval($item_id), intval($item_id),
@ -1008,9 +1010,10 @@ function tag_deliver($uid,$item_id) {
'otype' => 'item' 'otype' => 'item'
)); ));
if(! $community_page) if((! $community_page) && (! prvgroup))
return; return;
// tgroup delivery - setup a second delivery chain // tgroup delivery - setup a second delivery chain
// prevent delivery looping - only proceed // prevent delivery looping - only proceed
// if the message originated elsewhere and is a top-level post // if the message originated elsewhere and is a top-level post
@ -1031,8 +1034,11 @@ function tag_deliver($uid,$item_id) {
$private = ($u[0]['allow_cid'] || $u[0]['allow_gid'] || $u[0]['deny_cid'] || $u[0]['deny_gid']) ? 1 : 0; $private = ($u[0]['allow_cid'] || $u[0]['allow_gid'] || $u[0]['deny_cid'] || $u[0]['deny_gid']) ? 1 : 0;
q("update item set wall = 1, origin = 1, forum_mode = 1, `owner-name` = '%s', `owner-link` = '%s', `owner-avatar` = '%s', $forum_mode = (($prvgroup) ? 2 : 1);
q("update item set wall = 1, origin = 1, forum_mode = %d, `owner-name` = '%s', `owner-link` = '%s', `owner-avatar` = '%s',
`private` = %d, `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s' where id = %d limit 1", `private` = %d, `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s' where id = %d limit 1",
intval($forum_mode),
dbesc($c[0]['name']), dbesc($c[0]['name']),
dbesc($c[0]['url']), dbesc($c[0]['url']),
dbesc($c[0]['thumb']), dbesc($c[0]['thumb']),
@ -2194,7 +2200,7 @@ function local_delivery($importer,$data) {
if($is_reply) { if($is_reply) {
$community = false; $community = false;
if($importer['page-flags'] == PAGE_COMMUNITY) { if($importer['page-flags'] == PAGE_COMMUNITY || $importer['page-flags'] == PAGE_PRVGROUP ) {
$sql_extra = ''; $sql_extra = '';
$community = true; $community = true;
logger('local_delivery: possible community reply'); logger('local_delivery: possible community reply');
@ -2221,8 +2227,8 @@ function local_delivery($importer,$data) {
if($r && count($r)) if($r && count($r))
$is_a_remote_comment = true; $is_a_remote_comment = true;
// Does this have the characteristics of a community comment? // Does this have the characteristics of a community or private group comment?
// If it's a reply to a wall post on a community page it's a // If it's a reply to a wall post on a community/prvgroup page it's a
// valid community comment. Also forum_mode makes it valid for sure. // valid community comment. Also forum_mode makes it valid for sure.
// If neither, it's not. // If neither, it's not.
@ -2711,6 +2717,12 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) {
); );
$a = get_app(); $a = get_app();
if(count($r)) { if(count($r)) {
if(intval($r[0]['def_gid'])) {
require_once('include/group.php');
group_add_member($r[0]['uid'],'',$contact_record['id'],$r[0]['def_gid']);
}
if(($r[0]['notify-flags'] & NOTIFY_INTRO) && ($r[0]['page-flags'] == PAGE_NORMAL)) { if(($r[0]['notify-flags'] & NOTIFY_INTRO) && ($r[0]['page-flags'] == PAGE_NORMAL)) {
$email_tpl = get_intltext_template('follow_notify_eml.tpl'); $email_tpl = get_intltext_template('follow_notify_eml.tpl');
$email = replace_macros($email_tpl, array( $email = replace_macros($email_tpl, array(

View file

@ -876,3 +876,167 @@ function fix_contact_ssl_policy(&$contact,$new_policy) {
} }
} }
/**
* xml2array() will convert the given XML text to an array in the XML structure.
* Link: http://www.bin-co.com/php/scripts/xml2array/
* Portions significantly re-written by mike@macgirvin.com for Friendica (namespaces, lowercase tags, get_attribute default changed, more...)
* Arguments : $contents - The XML text
* $namespaces - true or false include namespace information in the returned array as array elements.
* $get_attributes - 1 or 0. If this is 1 the function will get the attributes as well as the tag values - this results in a different array structure in the return value.
* $priority - Can be 'tag' or 'attribute'. This will change the way the resulting array sturcture. For 'tag', the tags are given more importance.
* Return: The parsed XML in an array form. Use print_r() to see the resulting array structure.
* Examples: $array = xml2array(file_get_contents('feed.xml'));
* $array = xml2array(file_get_contents('feed.xml', true, 1, 'attribute'));
*/
function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = 'attribute') {
if(!$contents) return array();
if(!function_exists('xml_parser_create')) {
logger('xml2array: parser function missing');
return array();
}
libxml_use_internal_errors(true);
libxml_clear_errors();
if($namespaces)
$parser = @xml_parser_create_ns("UTF-8",':');
else
$parser = @xml_parser_create();
if(! $parser) {
logger('xml2array: xml_parser_create: no resource');
return array();
}
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8");
// http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
@xml_parse_into_struct($parser, trim($contents), $xml_values);
@xml_parser_free($parser);
if(! $xml_values) {
logger('xml2array: libxml: parse error: ' . $contents, LOGGER_DATA);
foreach(libxml_get_errors() as $err)
logger('libxml: parse: ' . $err->code . " at " . $err->line . ":" . $err->column . " : " . $err->message, LOGGER_DATA);
libxml_clear_errors();
return;
}
//Initializations
$xml_array = array();
$parents = array();
$opened_tags = array();
$arr = array();
$current = &$xml_array; // Reference
// Go through the tags.
$repeated_tag_index = array(); // Multiple tags with same name will be turned into an array
foreach($xml_values as $data) {
unset($attributes,$value); // Remove existing values, or there will be trouble
// This command will extract these variables into the foreach scope
// tag(string), type(string), level(int), attributes(array).
extract($data); // We could use the array by itself, but this cooler.
$result = array();
$attributes_data = array();
if(isset($value)) {
if($priority == 'tag') $result = $value;
else $result['value'] = $value; // Put the value in a assoc array if we are in the 'Attribute' mode
}
//Set the attributes too.
if(isset($attributes) and $get_attributes) {
foreach($attributes as $attr => $val) {
if($priority == 'tag') $attributes_data[$attr] = $val;
else $result['@attributes'][$attr] = $val; // Set all the attributes in a array called 'attr'
}
}
// See tag status and do the needed.
if($namespaces && strpos($tag,':')) {
$namespc = substr($tag,0,strrpos($tag,':'));
$tag = strtolower(substr($tag,strlen($namespc)+1));
$result['@namespace'] = $namespc;
}
$tag = strtolower($tag);
if($type == "open") { // The starting of the tag '<tag>'
$parent[$level-1] = &$current;
if(!is_array($current) or (!in_array($tag, array_keys($current)))) { // Insert New tag
$current[$tag] = $result;
if($attributes_data) $current[$tag. '_attr'] = $attributes_data;
$repeated_tag_index[$tag.'_'.$level] = 1;
$current = &$current[$tag];
} else { // There was another element with the same tag name
if(isset($current[$tag][0])) { // If there is a 0th element it is already an array
$current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
$repeated_tag_index[$tag.'_'.$level]++;
} else { // This section will make the value an array if multiple tags with the same name appear together
$current[$tag] = array($current[$tag],$result); // This will combine the existing item and the new item together to make an array
$repeated_tag_index[$tag.'_'.$level] = 2;
if(isset($current[$tag.'_attr'])) { // The attribute of the last(0th) tag must be moved as well
$current[$tag]['0_attr'] = $current[$tag.'_attr'];
unset($current[$tag.'_attr']);
}
}
$last_item_index = $repeated_tag_index[$tag.'_'.$level]-1;
$current = &$current[$tag][$last_item_index];
}
} elseif($type == "complete") { // Tags that ends in 1 line '<tag />'
//See if the key is already taken.
if(!isset($current[$tag])) { //New Key
$current[$tag] = $result;
$repeated_tag_index[$tag.'_'.$level] = 1;
if($priority == 'tag' and $attributes_data) $current[$tag. '_attr'] = $attributes_data;
} else { // If taken, put all things inside a list(array)
if(isset($current[$tag][0]) and is_array($current[$tag])) { // If it is already an array...
// ...push the new element into that array.
$current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
if($priority == 'tag' and $get_attributes and $attributes_data) {
$current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data;
}
$repeated_tag_index[$tag.'_'.$level]++;
} else { // If it is not an array...
$current[$tag] = array($current[$tag],$result); //...Make it an array using using the existing value and the new value
$repeated_tag_index[$tag.'_'.$level] = 1;
if($priority == 'tag' and $get_attributes) {
if(isset($current[$tag.'_attr'])) { // The attribute of the last(0th) tag must be moved as well
$current[$tag]['0_attr'] = $current[$tag.'_attr'];
unset($current[$tag.'_attr']);
}
if($attributes_data) {
$current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data;
}
}
$repeated_tag_index[$tag.'_'.$level]++; // 0 and 1 indexes are already taken
}
}
} elseif($type == 'close') { // End of tag '</tag>'
$current = &$parent[$level-1];
}
}
return($xml_array);
}

View file

@ -220,7 +220,7 @@ function notifier_run($argv, $argc){
} }
if(($cmd === 'uplink') && (intval($parent['forum_mode'])) && (! $top_level)) { if(($cmd === 'uplink') && (intval($parent['forum_mode']) == 1) && (! $top_level)) {
$relay_to_owner = true; $relay_to_owner = true;
} }
@ -265,10 +265,10 @@ function notifier_run($argv, $argc){
$deny_people = expand_acl($parent['deny_cid']); $deny_people = expand_acl($parent['deny_cid']);
$deny_groups = expand_groups(expand_acl($parent['deny_gid'])); $deny_groups = expand_groups(expand_acl($parent['deny_gid']));
// if our parent is a forum, uplink to the origional author causing // if our parent is a public forum (forum_mode == 1), uplink to the origional author causing
// a delivery fork // a delivery fork. private groups (forum_mode == 2) do not uplink
if(intval($parent['forum_mode']) && (! $top_level) && ($cmd !== 'uplink')) { if((intval($parent['forum_mode']) == 1) && (! $top_level) && ($cmd !== 'uplink')) {
proc_run('php','include/notifier','uplink',$item_id); proc_run('php','include/notifier','uplink',$item_id);
} }
@ -478,6 +478,12 @@ function notifier_run($argv, $argc){
} }
} }
$deliveries_per_process = intval(get_config('system','delivery_batch_count'));
if($deliveries_per_process <= 0)
$deliveries_per_process = 1;
$this_batch = array();
foreach($r as $contact) { foreach($r as $contact) {
if($contact['self']) if($contact['self'])
continue; continue;
@ -486,6 +492,7 @@ function notifier_run($argv, $argc){
// we will deliver single recipient types of message and email receipients here. // we will deliver single recipient types of message and email receipients here.
if((! $mail) && (! $fsuggest) && (! $followup)) { if((! $mail) && (! $fsuggest) && (! $followup)) {
// deliveries per process not yet implemented, 1 delivery per process.
proc_run('php','include/delivery.php',$cmd,$item_id,$contact['id']); proc_run('php','include/delivery.php',$cmd,$item_id,$contact['id']);
if($interval) if($interval)
@time_sleep_until(microtime(true) + (float) $interval); @time_sleep_until(microtime(true) + (float) $interval);

View file

@ -500,6 +500,16 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
} }
} }
} }
$g = q("select def_gid from user where uid = %d limit 1",
intval($uid)
);
if($contact && $g && intval($g[0]['def_gid'])) {
require_once('include/group.php');
group_add_member($uid,'',$contact[0]['id'],$g[0]['def_gid']);
}
// Let's send our user to the contact editor in case they want to // Let's send our user to the contact editor in case they want to
// do anything special with this new friend. // do anything special with this new friend.

View file

@ -370,6 +370,14 @@ function dfrn_request_post(&$a) {
if(count($r)) { if(count($r)) {
$contact_id = $r[0]['id']; $contact_id = $r[0]['id'];
$g = q("select def_gid from user where uid = %d limit 1",
intval($uid)
);
if($g && intval($g[0]['def_gid'])) {
require_once('include/group.php');
group_add_member($uid,'',$contact_id,$g[0]['def_gid']);
}
$photo = avatar_img($addr); $photo = avatar_img($addr);
$r = q("UPDATE `contact` SET $r = q("UPDATE `contact` SET

View file

@ -109,6 +109,7 @@ function follow_init(&$a) {
dbesc($ret['poll']) dbesc($ret['poll'])
); );
if(count($r)) { if(count($r)) {
// update contact // update contact
if($r[0]['rel'] == CONTACT_IS_FOLLOWER || ($network === NETWORK_DIASPORA && $r[0]['rel'] == CONTACT_IS_SHARING)) { if($r[0]['rel'] == CONTACT_IS_FOLLOWER || ($network === NETWORK_DIASPORA && $r[0]['rel'] == CONTACT_IS_SHARING)) {
@ -165,6 +166,15 @@ function follow_init(&$a) {
$contact = $r[0]; $contact = $r[0];
$contact_id = $r[0]['id']; $contact_id = $r[0]['id'];
$g = q("select def_gid from user where uid = %d limit 1",
intval($uid)
);
if($g && intval($g[0]['def_gid'])) {
require_once('include/group.php');
group_add_member($uid,'',$contact_id,$g[0]['def_gid']);
}
require_once("Photo.php"); require_once("Photo.php");
$photos = import_profile_photo($ret['photo'],$uid,$contact_id); $photos = import_profile_photo($ret['photo'],$uid,$contact_id);

View file

@ -28,6 +28,8 @@ function photo_init(&$a) {
} }
}*/ }*/
$prvcachecontrol = false;
switch($a->argc) { switch($a->argc) {
case 4: case 4:
$person = $a->argv[3]; $person = $a->argv[3];
@ -134,6 +136,7 @@ function photo_init(&$a) {
); );
if(count($r)) { if(count($r)) {
$data = file_get_contents('images/nosign.jpg'); $data = file_get_contents('images/nosign.jpg');
$prvcachecontrol = true;
} }
} }
} }
@ -179,8 +182,22 @@ function photo_init(&$a) {
} }
header("Content-type: image/jpeg"); header("Content-type: image/jpeg");
header("Expires: " . gmdate("D, d M Y H:i:s", time() + (3600*24)) . " GMT");
header("Cache-Control: max-age=" . (3600*24)); if($prvcachecontrol) {
// it is a private photo that they have no permission to view.
// tell the browser not to cache it, in case they authenticate
// and subsequently have permission to see it
header("Cache-Control: no-store, no-cache, must-revalidate");
}
else {
header("Expires: " . gmdate("D, d M Y H:i:s", time() + (3600*24)) . " GMT");
header("Cache-Control: max-age=" . (3600*24));
}
echo $data; echo $data;
killme(); killme();
// NOTREACHED // NOTREACHED

View file

@ -329,7 +329,7 @@ function profile_activity($changed, $value) {
if($t == 1 && strlen($value)) { if($t == 1 && strlen($value)) {
$message = sprintf( t('%1$s changed %2$s to &ldquo;%3$s&rdquo;'), $A, $changes, $value); $message = sprintf( t('%1$s changed %2$s to &ldquo;%3$s&rdquo;'), $A, $changes, $value);
$message .= "\n\n" . sprintf( t(" - Visit %1$s\'s %2$s"), $A, $prof); $message .= "\n\n" . sprintf( t(' - Visit %1$s\'s %2$s'), $A, $prof);
} }
else else
$message = sprintf( t('%1$s has an updated %2$s, changing %3$s.'), $A, $prof, $changes); $message = sprintf( t('%1$s has an updated %2$s, changing %3$s.'), $A, $prof, $changes);

View file

@ -96,6 +96,12 @@ function search_content(&$a) {
$o .= search($search,'search-box','/search',((local_user()) ? true : false)); $o .= search($search,'search-box','/search',((local_user()) ? true : false));
if(strpos($search,'#') === 0) {
$tag = true;
$search = substr($search,1);
}
if(! $search) if(! $search)
return $o; return $o;

View file

@ -330,6 +330,7 @@ function settings_post(&$a) {
$openid = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : ''); $openid = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
$maxreq = ((x($_POST,'maxreq')) ? intval($_POST['maxreq']) : 0); $maxreq = ((x($_POST,'maxreq')) ? intval($_POST['maxreq']) : 0);
$expire = ((x($_POST,'expire')) ? intval($_POST['expire']) : 0); $expire = ((x($_POST,'expire')) ? intval($_POST['expire']) : 0);
$def_gid = ((x($_POST,'group-selection')) ? intval($_POST['group-selection']) : 0);
$expire_items = ((x($_POST,'expire_items')) ? intval($_POST['expire_items']) : 0); $expire_items = ((x($_POST,'expire_items')) ? intval($_POST['expire_items']) : 0);
@ -355,7 +356,6 @@ function settings_post(&$a) {
$post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0); $post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0);
$post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0); $post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0);
$notify = 0; $notify = 0;
if(x($_POST,'notify1')) if(x($_POST,'notify1'))
@ -441,7 +441,20 @@ function settings_post(&$a) {
set_pconfig(local_user(),'system','post_profilechange', $post_profilechange); set_pconfig(local_user(),'system','post_profilechange', $post_profilechange);
$r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `blockwall` = %d, `hidewall` = %d, `blocktags` = %d, `unkmail` = %d, `cntunkmail` = %d WHERE `uid` = %d LIMIT 1", if($page_flags == PAGE_PRVGROUP) {
$hidewall = 1;
if((! str_contact_allow) && (! str_group_allow) && (! str_contact_deny) && (! $str_group_deny)) {
if($def_gid) {
info( t('Private forum has no privacy permissions. Using default privacy group.'). EOL);
$str_group_allow = '<' . $def_gid . '>';
}
else {
notice( t('Private forum has no privacy permissions and no default privacy group.') . EOL);
}
}
}
$r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `def_gid` = %d, `blockwall` = %d, `hidewall` = %d, `blocktags` = %d, `unkmail` = %d, `cntunkmail` = %d WHERE `uid` = %d LIMIT 1",
dbesc($username), dbesc($username),
dbesc($email), dbesc($email),
dbesc($openid), dbesc($openid),
@ -457,6 +470,7 @@ function settings_post(&$a) {
intval($maxreq), intval($maxreq),
intval($expire), intval($expire),
dbesc($openidserver), dbesc($openidserver),
intval($def_gid),
intval($blockwall), intval($blockwall),
intval($hidewall), intval($hidewall),
intval($blocktags), intval($blocktags),
@ -833,6 +847,13 @@ function settings_content(&$a) {
'$page_freelove' => array('page-flags', t('Automatic Friend Account'), PAGE_FREELOVE, '$page_freelove' => array('page-flags', t('Automatic Friend Account'), PAGE_FREELOVE,
t('Automatically approve all connection/friend requests as friends'), t('Automatically approve all connection/friend requests as friends'),
($a->user['page-flags'] == PAGE_FREELOVE)), ($a->user['page-flags'] == PAGE_FREELOVE)),
'$page_prvgroup' => array('page-flags', t('Private Forum'), PAGE_PRVGROUP,
t('Private forum - approved members only [Experimental]'),
($a->user['page-flags'] == PAGE_PRVGROUP)),
'$experimental' => ( (intval(get_config('system','prvgroup_testing'))) ? 'true' : ''),
)); ));
$noid = get_config('system','no_openid'); $noid = get_config('system','no_openid');
@ -934,6 +955,9 @@ function settings_content(&$a) {
'photos' => array('expire_photos', t("Expire photos:"), $expire_photos, '', array(t('No'),t('Yes'))), 'photos' => array('expire_photos', t("Expire photos:"), $expire_photos, '', array(t('No'),t('Yes'))),
); );
require_once('include/group.php');
$group_select = mini_group_select(local_user(),$a->user['def_gid']);
$o .= replace_macros($stpl,array( $o .= replace_macros($stpl,array(
'$ptitle' => t('Account Settings'), '$ptitle' => t('Account Settings'),
@ -941,7 +965,6 @@ function settings_content(&$a) {
'$baseurl' => $a->get_baseurl(true), '$baseurl' => $a->get_baseurl(true),
'$uid' => local_user(), '$uid' => local_user(),
'$form_security_token' => get_form_security_token("settings"), '$form_security_token' => get_form_security_token("settings"),
'$nickname_block' => $prof_addr, '$nickname_block' => $prof_addr,
'$h_pass' => t('Password Settings'), '$h_pass' => t('Password Settings'),
@ -968,6 +991,10 @@ function settings_content(&$a) {
'$suggestme' => $suggestme, '$suggestme' => $suggestme,
'$blockwall'=> $blockwall, // array('blockwall', t('Allow friends to post to your profile page:'), !$blockwall, ''), '$blockwall'=> $blockwall, // array('blockwall', t('Allow friends to post to your profile page:'), !$blockwall, ''),
'$blocktags'=> $blocktags, // array('blocktags', t('Allow friends to tag your posts:'), !$blocktags, ''), '$blocktags'=> $blocktags, // array('blocktags', t('Allow friends to tag your posts:'), !$blocktags, ''),
'$group_select' => $group_select,
'$expire' => $expire_arr, '$expire' => $expire_arr,
'$profile_in_dir' => $profile_in_dir, '$profile_in_dir' => $profile_in_dir,

View file

@ -1,6 +1,6 @@
<?php <?php
define( 'UPDATE_VERSION' , 1143 ); define( 'UPDATE_VERSION' , 1144 );
/** /**
* *
@ -1246,5 +1246,12 @@ function update_1142() {
return UPDATE_SUCCESS ; return UPDATE_SUCCESS ;
} }
function update_1143() {
$r = q("alter table user add def_gid int(11) not null default '0' after service_class");
if(! $r)
return UPDATE_FAILED ;
return UPDATE_SUCCESS ;
}

View file

@ -6,9 +6,9 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 3.0.1343\n" "Project-Id-Version: 3.0.1346\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-15 10:00-0700\n" "POT-Creation-Date: 2012-05-18 10:00-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -39,8 +39,8 @@ msgstr ""
#: ../../mod/api.php:31 ../../mod/photos.php:130 ../../mod/photos.php:865 #: ../../mod/api.php:31 ../../mod/photos.php:130 ../../mod/photos.php:865
#: ../../mod/editpost.php:10 ../../mod/install.php:171 #: ../../mod/editpost.php:10 ../../mod/install.php:171
#: ../../mod/notifications.php:66 ../../mod/contacts.php:125 #: ../../mod/notifications.php:66 ../../mod/contacts.php:125
#: ../../mod/settings.php:104 ../../mod/settings.php:521 #: ../../mod/settings.php:104 ../../mod/settings.php:535
#: ../../mod/settings.php:526 ../../mod/manage.php:86 ../../mod/network.php:6 #: ../../mod/settings.php:540 ../../mod/manage.php:86 ../../mod/network.php:6
#: ../../mod/notes.php:20 ../../mod/wallmessage.php:9 #: ../../mod/notes.php:20 ../../mod/wallmessage.php:9
#: ../../mod/wallmessage.php:33 ../../mod/wallmessage.php:79 #: ../../mod/wallmessage.php:33 ../../mod/wallmessage.php:79
#: ../../mod/wallmessage.php:103 ../../mod/attach.php:33 #: ../../mod/wallmessage.php:103 ../../mod/attach.php:33
@ -54,8 +54,8 @@ msgstr ""
#: ../../mod/follow.php:8 ../../mod/display.php:138 ../../mod/profiles.php:7 #: ../../mod/follow.php:8 ../../mod/display.php:138 ../../mod/profiles.php:7
#: ../../mod/profiles.php:365 ../../mod/delegate.php:6 #: ../../mod/profiles.php:365 ../../mod/delegate.php:6
#: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81 #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81
#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:495 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:503
#: ../../include/items.php:3202 ../../index.php:306 #: ../../include/items.php:3214 ../../index.php:306
msgid "Permission denied." msgid "Permission denied."
msgstr "" msgstr ""
@ -84,8 +84,8 @@ msgstr ""
msgid "Return to contact editor" msgid "Return to contact editor"
msgstr "" msgstr ""
#: ../../mod/crepair.php:148 ../../mod/settings.php:541 #: ../../mod/crepair.php:148 ../../mod/settings.php:555
#: ../../mod/settings.php:567 ../../mod/admin.php:643 ../../mod/admin.php:652 #: ../../mod/settings.php:581 ../../mod/admin.php:643 ../../mod/admin.php:652
msgid "Name" msgid "Name"
msgstr "" msgstr ""
@ -127,12 +127,12 @@ msgstr ""
#: ../../mod/photos.php:1273 ../../mod/photos.php:1304 #: ../../mod/photos.php:1273 ../../mod/photos.php:1304
#: ../../mod/install.php:251 ../../mod/install.php:289 #: ../../mod/install.php:251 ../../mod/install.php:289
#: ../../mod/localtime.php:45 ../../mod/contacts.php:322 #: ../../mod/localtime.php:45 ../../mod/contacts.php:322
#: ../../mod/settings.php:539 ../../mod/settings.php:685 #: ../../mod/settings.php:553 ../../mod/settings.php:699
#: ../../mod/settings.php:746 ../../mod/settings.php:940 #: ../../mod/settings.php:760 ../../mod/settings.php:964
#: ../../mod/manage.php:109 ../../mod/group.php:85 ../../mod/admin.php:404 #: ../../mod/manage.php:109 ../../mod/group.php:85 ../../mod/admin.php:404
#: ../../mod/admin.php:640 ../../mod/admin.php:776 ../../mod/admin.php:975 #: ../../mod/admin.php:640 ../../mod/admin.php:776 ../../mod/admin.php:975
#: ../../mod/admin.php:1062 ../../mod/profiles.php:534 #: ../../mod/admin.php:1062 ../../mod/profiles.php:534
#: ../../mod/invite.php:119 ../../addon/facebook/facebook.php:597 #: ../../mod/invite.php:119 ../../addon/facebook/facebook.php:605
#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93 #: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93
#: ../../addon/nsfw/nsfw.php:57 ../../addon/planets/planets.php:158 #: ../../addon/nsfw/nsfw.php:57 ../../addon/planets/planets.php:158
#: ../../addon/uhremotestorage/uhremotestorage.php:89 #: ../../addon/uhremotestorage/uhremotestorage.php:89
@ -279,8 +279,8 @@ msgid "Share this event"
msgstr "" msgstr ""
#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94 #: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
#: ../../mod/dfrn_request.php:818 ../../mod/settings.php:540 #: ../../mod/dfrn_request.php:826 ../../mod/settings.php:554
#: ../../mod/settings.php:566 ../../addon/js_upload/js_upload.php:45 #: ../../mod/settings.php:580 ../../addon/js_upload/js_upload.php:45
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
@ -323,24 +323,24 @@ msgid ""
"and/or create new posts for you?" "and/or create new posts for you?"
msgstr "" msgstr ""
#: ../../mod/api.php:105 ../../mod/dfrn_request.php:806 #: ../../mod/api.php:105 ../../mod/dfrn_request.php:814
#: ../../mod/settings.php:854 ../../mod/settings.php:860 #: ../../mod/settings.php:875 ../../mod/settings.php:881
#: ../../mod/settings.php:868 ../../mod/settings.php:872 #: ../../mod/settings.php:889 ../../mod/settings.php:893
#: ../../mod/settings.php:877 ../../mod/settings.php:883 #: ../../mod/settings.php:898 ../../mod/settings.php:904
#: ../../mod/settings.php:889 ../../mod/settings.php:895 #: ../../mod/settings.php:910 ../../mod/settings.php:916
#: ../../mod/settings.php:931 ../../mod/settings.php:932 #: ../../mod/settings.php:952 ../../mod/settings.php:953
#: ../../mod/settings.php:933 ../../mod/settings.php:934 #: ../../mod/settings.php:954 ../../mod/settings.php:955
#: ../../mod/register.php:532 ../../mod/profiles.php:511 #: ../../mod/register.php:532 ../../mod/profiles.php:511
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
#: ../../mod/api.php:106 ../../mod/dfrn_request.php:807 #: ../../mod/api.php:106 ../../mod/dfrn_request.php:815
#: ../../mod/settings.php:854 ../../mod/settings.php:860 #: ../../mod/settings.php:875 ../../mod/settings.php:881
#: ../../mod/settings.php:868 ../../mod/settings.php:872 #: ../../mod/settings.php:889 ../../mod/settings.php:893
#: ../../mod/settings.php:877 ../../mod/settings.php:883 #: ../../mod/settings.php:898 ../../mod/settings.php:904
#: ../../mod/settings.php:889 ../../mod/settings.php:895 #: ../../mod/settings.php:910 ../../mod/settings.php:916
#: ../../mod/settings.php:931 ../../mod/settings.php:932 #: ../../mod/settings.php:952 ../../mod/settings.php:953
#: ../../mod/settings.php:933 ../../mod/settings.php:934 #: ../../mod/settings.php:954 ../../mod/settings.php:955
#: ../../mod/register.php:533 ../../mod/profiles.php:512 #: ../../mod/register.php:533 ../../mod/profiles.php:512
msgid "No" msgid "No"
msgstr "" msgstr ""
@ -398,7 +398,7 @@ msgstr ""
#: ../../mod/photos.php:528 ../../mod/like.php:127 ../../mod/tagger.php:70 #: ../../mod/photos.php:528 ../../mod/like.php:127 ../../mod/tagger.php:70
#: ../../addon/communityhome/communityhome.php:163 #: ../../addon/communityhome/communityhome.php:163
#: ../../view/theme/diabook/theme.php:565 ../../include/text.php:1305 #: ../../view/theme/diabook/theme.php:565 ../../include/text.php:1305
#: ../../include/diaspora.php:1654 ../../include/conversation.php:53 #: ../../include/diaspora.php:1662 ../../include/conversation.php:53
#: ../../include/conversation.php:126 #: ../../include/conversation.php:126
msgid "photo" msgid "photo"
msgstr "" msgstr ""
@ -426,7 +426,7 @@ msgid "Image upload failed."
msgstr "" msgstr ""
#: ../../mod/photos.php:759 ../../mod/community.php:16 #: ../../mod/photos.php:759 ../../mod/community.php:16
#: ../../mod/dfrn_request.php:732 ../../mod/viewcontacts.php:17 #: ../../mod/dfrn_request.php:740 ../../mod/viewcontacts.php:17
#: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29 #: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29
msgid "Public access denied." msgid "Public access denied."
msgstr "" msgstr ""
@ -554,8 +554,8 @@ msgstr ""
msgid "Preview" msgid "Preview"
msgstr "" msgstr ""
#: ../../mod/photos.php:1331 ../../mod/settings.php:602 #: ../../mod/photos.php:1331 ../../mod/settings.php:616
#: ../../mod/settings.php:683 ../../mod/group.php:168 ../../mod/admin.php:647 #: ../../mod/settings.php:697 ../../mod/group.php:168 ../../mod/admin.php:647
#: ../../include/conversation.php:321 ../../include/conversation.php:587 #: ../../include/conversation.php:321 ../../include/conversation.php:587
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
@ -625,7 +625,7 @@ msgstr ""
msgid "Post to Email" msgid "Post to Email"
msgstr "" msgstr ""
#: ../../mod/editpost.php:95 ../../mod/settings.php:601 #: ../../mod/editpost.php:95 ../../mod/settings.php:615
#: ../../include/conversation.php:574 #: ../../include/conversation.php:574
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
@ -694,19 +694,19 @@ msgstr ""
msgid "This introduction has already been accepted." msgid "This introduction has already been accepted."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:117 ../../mod/dfrn_request.php:487 #: ../../mod/dfrn_request.php:117 ../../mod/dfrn_request.php:495
msgid "Profile location is not valid or does not contain profile information." msgid "Profile location is not valid or does not contain profile information."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:122 ../../mod/dfrn_request.php:492 #: ../../mod/dfrn_request.php:122 ../../mod/dfrn_request.php:500
msgid "Warning: profile location has no identifiable owner name." msgid "Warning: profile location has no identifiable owner name."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:124 ../../mod/dfrn_request.php:494 #: ../../mod/dfrn_request.php:124 ../../mod/dfrn_request.php:502
msgid "Warning: profile location has no profile photo." msgid "Warning: profile location has no profile photo."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:127 ../../mod/dfrn_request.php:497 #: ../../mod/dfrn_request.php:127 ../../mod/dfrn_request.php:505
#, php-format #, php-format
msgid "%d required parameter was not found at the given location" msgid "%d required parameter was not found at the given location"
msgid_plural "%d required parameters were not found at the given location" msgid_plural "%d required parameters were not found at the given location"
@ -750,128 +750,128 @@ msgstr ""
msgid "This account has not been configured for email. Request failed." msgid "This account has not been configured for email. Request failed."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:432 #: ../../mod/dfrn_request.php:440
msgid "Unable to resolve your name at the provided location." msgid "Unable to resolve your name at the provided location."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:445 #: ../../mod/dfrn_request.php:453
msgid "You have already introduced yourself here." msgid "You have already introduced yourself here."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:449 #: ../../mod/dfrn_request.php:457
#, php-format #, php-format
msgid "Apparently you are already friends with %s." msgid "Apparently you are already friends with %s."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:470 #: ../../mod/dfrn_request.php:478
msgid "Invalid profile URL." msgid "Invalid profile URL."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:476 ../../mod/follow.php:23 #: ../../mod/dfrn_request.php:484 ../../mod/follow.php:23
msgid "Disallowed profile URL." msgid "Disallowed profile URL."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:545 ../../mod/contacts.php:102 #: ../../mod/dfrn_request.php:553 ../../mod/contacts.php:102
msgid "Failed to update contact record." msgid "Failed to update contact record."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:566 #: ../../mod/dfrn_request.php:574
msgid "Your introduction has been sent." msgid "Your introduction has been sent."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:619 #: ../../mod/dfrn_request.php:627
msgid "Please login to confirm introduction." msgid "Please login to confirm introduction."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:633 #: ../../mod/dfrn_request.php:641
msgid "" msgid ""
"Incorrect identity currently logged in. Please login to <strong>this</" "Incorrect identity currently logged in. Please login to <strong>this</"
"strong> profile." "strong> profile."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:645 #: ../../mod/dfrn_request.php:653
#, php-format #, php-format
msgid "Welcome home %s." msgid "Welcome home %s."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:646 #: ../../mod/dfrn_request.php:654
#, php-format #, php-format
msgid "Please confirm your introduction/connection request to %s." msgid "Please confirm your introduction/connection request to %s."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:647 #: ../../mod/dfrn_request.php:655
msgid "Confirm" msgid "Confirm"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:688 ../../include/items.php:2717 #: ../../mod/dfrn_request.php:696 ../../include/items.php:2729
msgid "[Name Withheld]" msgid "[Name Withheld]"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:781 #: ../../mod/dfrn_request.php:789
msgid "" msgid ""
"Please enter your 'Identity Address' from one of the following supported " "Please enter your 'Identity Address' from one of the following supported "
"communications networks:" "communications networks:"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:797 #: ../../mod/dfrn_request.php:805
msgid "<strike>Connect as an email follower</strike> (Coming soon)" msgid "<strike>Connect as an email follower</strike> (Coming soon)"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:799 #: ../../mod/dfrn_request.php:807
msgid "" msgid ""
"If you are not yet a member of the free social web, <a href=\"http://dir." "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 " "friendica.com/siteinfo\">follow this link to find a public Friendica site "
"and join us today</a>." "and join us today</a>."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:802 #: ../../mod/dfrn_request.php:810
msgid "Friend/Connection Request" msgid "Friend/Connection Request"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:803 #: ../../mod/dfrn_request.php:811
msgid "" msgid ""
"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
"testuser@identi.ca" "testuser@identi.ca"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:804 #: ../../mod/dfrn_request.php:812
msgid "Please answer the following:" msgid "Please answer the following:"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:805 #: ../../mod/dfrn_request.php:813
#, php-format #, php-format
msgid "Does %s know you?" msgid "Does %s know you?"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:808 #: ../../mod/dfrn_request.php:816
msgid "Add a personal note:" msgid "Add a personal note:"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:810 ../../include/contact_selectors.php:76 #: ../../mod/dfrn_request.php:818 ../../include/contact_selectors.php:76
msgid "Friendica" msgid "Friendica"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:811 #: ../../mod/dfrn_request.php:819
msgid "StatusNet/Federated Social Web" msgid "StatusNet/Federated Social Web"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:812 ../../mod/settings.php:636 #: ../../mod/dfrn_request.php:820 ../../mod/settings.php:650
#: ../../include/contact_selectors.php:80 #: ../../include/contact_selectors.php:80
msgid "Diaspora" msgid "Diaspora"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:813 #: ../../mod/dfrn_request.php:821
#, php-format #, php-format
msgid "" msgid ""
" - please do not use this form. Instead, enter %s into your Diaspora search " " - please do not use this form. Instead, enter %s into your Diaspora search "
"bar." "bar."
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:814 #: ../../mod/dfrn_request.php:822
msgid "Your Identity Address:" msgid "Your Identity Address:"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:817 #: ../../mod/dfrn_request.php:825
msgid "Submit Request" msgid "Submit Request"
msgstr "" msgstr ""
@ -1688,10 +1688,10 @@ msgstr ""
#: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107 #: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107
#: ../../mod/register.php:388 ../../mod/register.php:442 #: ../../mod/register.php:388 ../../mod/register.php:442
#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:742 #: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752
#: ../../addon/facebook/facebook.php:680 #: ../../addon/facebook/facebook.php:688
#: ../../addon/facebook/facebook.php:1170 #: ../../addon/facebook/facebook.php:1178
#: ../../addon/testdrive/testdrive.php:58 ../../include/items.php:2726 #: ../../addon/testdrive/testdrive.php:58 ../../include/items.php:2738
#: ../../boot.php:696 #: ../../boot.php:696
msgid "Administrator" msgid "Administrator"
msgstr "" msgstr ""
@ -1784,7 +1784,7 @@ msgstr ""
msgid "Missing some important data!" msgid "Missing some important data!"
msgstr "" msgstr ""
#: ../../mod/settings.php:134 ../../mod/settings.php:565 #: ../../mod/settings.php:134 ../../mod/settings.php:579
msgid "Update" msgid "Update"
msgstr "" msgstr ""
@ -1828,7 +1828,15 @@ msgstr ""
msgid " Cannot change to that email." msgid " Cannot change to that email."
msgstr "" msgstr ""
#: ../../mod/settings.php:468 ../../addon/facebook/facebook.php:480 #: ../../mod/settings.php:448
msgid "Private forum has no privacy permissions. Using default privacy group."
msgstr ""
#: ../../mod/settings.php:452
msgid "Private forum has no privacy permissions and no default privacy group."
msgstr ""
#: ../../mod/settings.php:482 ../../addon/facebook/facebook.php:488
#: ../../addon/impressum/impressum.php:77 #: ../../addon/impressum/impressum.php:77
#: ../../addon/openstreetmap/openstreetmap.php:80 #: ../../addon/openstreetmap/openstreetmap.php:80
#: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105 #: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105
@ -1836,409 +1844,417 @@ msgstr ""
msgid "Settings updated." msgid "Settings updated."
msgstr "" msgstr ""
#: ../../mod/settings.php:538 ../../mod/settings.php:564 #: ../../mod/settings.php:552 ../../mod/settings.php:578
#: ../../mod/settings.php:600 #: ../../mod/settings.php:614
msgid "Add application" msgid "Add application"
msgstr "" msgstr ""
#: ../../mod/settings.php:542 ../../mod/settings.php:568 #: ../../mod/settings.php:556 ../../mod/settings.php:582
#: ../../addon/statusnet/statusnet.php:555 #: ../../addon/statusnet/statusnet.php:555
msgid "Consumer Key" msgid "Consumer Key"
msgstr "" msgstr ""
#: ../../mod/settings.php:543 ../../mod/settings.php:569 #: ../../mod/settings.php:557 ../../mod/settings.php:583
#: ../../addon/statusnet/statusnet.php:554 #: ../../addon/statusnet/statusnet.php:554
msgid "Consumer Secret" msgid "Consumer Secret"
msgstr "" msgstr ""
#: ../../mod/settings.php:544 ../../mod/settings.php:570 #: ../../mod/settings.php:558 ../../mod/settings.php:584
msgid "Redirect" msgid "Redirect"
msgstr "" msgstr ""
#: ../../mod/settings.php:545 ../../mod/settings.php:571 #: ../../mod/settings.php:559 ../../mod/settings.php:585
msgid "Icon url" msgid "Icon url"
msgstr "" msgstr ""
#: ../../mod/settings.php:556 #: ../../mod/settings.php:570
msgid "You can't edit this application." msgid "You can't edit this application."
msgstr "" msgstr ""
#: ../../mod/settings.php:599 #: ../../mod/settings.php:613
msgid "Connected Apps" msgid "Connected Apps"
msgstr "" msgstr ""
#: ../../mod/settings.php:603 #: ../../mod/settings.php:617
msgid "Client key starts with" msgid "Client key starts with"
msgstr "" msgstr ""
#: ../../mod/settings.php:604 #: ../../mod/settings.php:618
msgid "No name" msgid "No name"
msgstr "" msgstr ""
#: ../../mod/settings.php:605 #: ../../mod/settings.php:619
msgid "Remove authorization" msgid "Remove authorization"
msgstr "" msgstr ""
#: ../../mod/settings.php:616 #: ../../mod/settings.php:630
msgid "No Plugin settings configured" msgid "No Plugin settings configured"
msgstr "" msgstr ""
#: ../../mod/settings.php:624 ../../addon/widgets/widgets.php:123 #: ../../mod/settings.php:638 ../../addon/widgets/widgets.php:123
msgid "Plugin Settings" msgid "Plugin Settings"
msgstr "" msgstr ""
#: ../../mod/settings.php:636 ../../mod/settings.php:637 #: ../../mod/settings.php:650 ../../mod/settings.php:651
#, php-format #, php-format
msgid "Built-in support for %s connectivity is %s" msgid "Built-in support for %s connectivity is %s"
msgstr "" msgstr ""
#: ../../mod/settings.php:636 ../../mod/settings.php:637 #: ../../mod/settings.php:650 ../../mod/settings.php:651
msgid "enabled" msgid "enabled"
msgstr "" msgstr ""
#: ../../mod/settings.php:636 ../../mod/settings.php:637 #: ../../mod/settings.php:650 ../../mod/settings.php:651
msgid "disabled" msgid "disabled"
msgstr "" msgstr ""
#: ../../mod/settings.php:637 #: ../../mod/settings.php:651
msgid "StatusNet" msgid "StatusNet"
msgstr "" msgstr ""
#: ../../mod/settings.php:667 #: ../../mod/settings.php:681
msgid "Connector Settings" msgid "Connector Settings"
msgstr "" msgstr ""
#: ../../mod/settings.php:672 #: ../../mod/settings.php:686
msgid "Email/Mailbox Setup" msgid "Email/Mailbox Setup"
msgstr "" msgstr ""
#: ../../mod/settings.php:673 #: ../../mod/settings.php:687
msgid "" msgid ""
"If you wish to communicate with email contacts using this service " "If you wish to communicate with email contacts using this service "
"(optional), please specify how to connect to your mailbox." "(optional), please specify how to connect to your mailbox."
msgstr "" msgstr ""
#: ../../mod/settings.php:674 #: ../../mod/settings.php:688
msgid "Last successful email check:" msgid "Last successful email check:"
msgstr "" msgstr ""
#: ../../mod/settings.php:675 #: ../../mod/settings.php:689
msgid "Email access is disabled on this site." msgid "Email access is disabled on this site."
msgstr "" msgstr ""
#: ../../mod/settings.php:676 #: ../../mod/settings.php:690
msgid "IMAP server name:" msgid "IMAP server name:"
msgstr "" msgstr ""
#: ../../mod/settings.php:677 #: ../../mod/settings.php:691
msgid "IMAP port:" msgid "IMAP port:"
msgstr "" msgstr ""
#: ../../mod/settings.php:678 #: ../../mod/settings.php:692
msgid "Security:" msgid "Security:"
msgstr "" msgstr ""
#: ../../mod/settings.php:678 ../../mod/settings.php:683 #: ../../mod/settings.php:692 ../../mod/settings.php:697
msgid "None" msgid "None"
msgstr "" msgstr ""
#: ../../mod/settings.php:679 #: ../../mod/settings.php:693
msgid "Email login name:" msgid "Email login name:"
msgstr "" msgstr ""
#: ../../mod/settings.php:680 #: ../../mod/settings.php:694
msgid "Email password:" msgid "Email password:"
msgstr "" msgstr ""
#: ../../mod/settings.php:681 #: ../../mod/settings.php:695
msgid "Reply-to address:" msgid "Reply-to address:"
msgstr "" msgstr ""
#: ../../mod/settings.php:682 #: ../../mod/settings.php:696
msgid "Send public posts to all email contacts:" msgid "Send public posts to all email contacts:"
msgstr "" msgstr ""
#: ../../mod/settings.php:683 #: ../../mod/settings.php:697
msgid "Action after import:" msgid "Action after import:"
msgstr "" msgstr ""
#: ../../mod/settings.php:683 #: ../../mod/settings.php:697
msgid "Mark as seen" msgid "Mark as seen"
msgstr "" msgstr ""
#: ../../mod/settings.php:683 #: ../../mod/settings.php:697
msgid "Move to folder" msgid "Move to folder"
msgstr "" msgstr ""
#: ../../mod/settings.php:684 #: ../../mod/settings.php:698
msgid "Move to folder:" msgid "Move to folder:"
msgstr "" msgstr ""
#: ../../mod/settings.php:744 #: ../../mod/settings.php:758
msgid "Display Settings" msgid "Display Settings"
msgstr "" msgstr ""
#: ../../mod/settings.php:750 #: ../../mod/settings.php:764
msgid "Display Theme:" msgid "Display Theme:"
msgstr "" msgstr ""
#: ../../mod/settings.php:751 #: ../../mod/settings.php:765
msgid "Update browser every xx seconds" msgid "Update browser every xx seconds"
msgstr "" msgstr ""
#: ../../mod/settings.php:751 #: ../../mod/settings.php:765
msgid "Minimum of 10 seconds, no maximum" msgid "Minimum of 10 seconds, no maximum"
msgstr "" msgstr ""
#: ../../mod/settings.php:752 #: ../../mod/settings.php:766
msgid "Number of items to display on the network page:" msgid "Number of items to display on the network page:"
msgstr "" msgstr ""
#: ../../mod/settings.php:752 #: ../../mod/settings.php:766
msgid "Maximum of 100 items" msgid "Maximum of 100 items"
msgstr "" msgstr ""
#: ../../mod/settings.php:753 #: ../../mod/settings.php:767
msgid "Don't show emoticons" msgid "Don't show emoticons"
msgstr "" msgstr ""
#: ../../mod/settings.php:821 ../../mod/admin.php:180 ../../mod/admin.php:621 #: ../../mod/settings.php:835 ../../mod/admin.php:180 ../../mod/admin.php:621
msgid "Normal Account" msgid "Normal Account"
msgstr "" msgstr ""
#: ../../mod/settings.php:822 #: ../../mod/settings.php:836
msgid "This account is a normal personal profile" msgid "This account is a normal personal profile"
msgstr "" msgstr ""
#: ../../mod/settings.php:825 ../../mod/admin.php:181 ../../mod/admin.php:622 #: ../../mod/settings.php:839 ../../mod/admin.php:181 ../../mod/admin.php:622
msgid "Soapbox Account" msgid "Soapbox Account"
msgstr "" msgstr ""
#: ../../mod/settings.php:826 #: ../../mod/settings.php:840
msgid "Automatically approve all connection/friend requests as read-only fans" msgid "Automatically approve all connection/friend requests as read-only fans"
msgstr "" msgstr ""
#: ../../mod/settings.php:829 ../../mod/admin.php:182 ../../mod/admin.php:623 #: ../../mod/settings.php:843 ../../mod/admin.php:182 ../../mod/admin.php:623
msgid "Community/Celebrity Account" msgid "Community/Celebrity Account"
msgstr "" msgstr ""
#: ../../mod/settings.php:830 #: ../../mod/settings.php:844
msgid "Automatically approve all connection/friend requests as read-write fans" msgid "Automatically approve all connection/friend requests as read-write fans"
msgstr "" msgstr ""
#: ../../mod/settings.php:833 ../../mod/admin.php:183 ../../mod/admin.php:624 #: ../../mod/settings.php:847 ../../mod/admin.php:183 ../../mod/admin.php:624
msgid "Automatic Friend Account" msgid "Automatic Friend Account"
msgstr "" msgstr ""
#: ../../mod/settings.php:834 #: ../../mod/settings.php:848
msgid "Automatically approve all connection/friend requests as friends" msgid "Automatically approve all connection/friend requests as friends"
msgstr "" msgstr ""
#: ../../mod/settings.php:844 #: ../../mod/settings.php:851
msgid "Private Forum"
msgstr ""
#: ../../mod/settings.php:852
msgid "Private forum - approved members only [Experimental]"
msgstr ""
#: ../../mod/settings.php:865
msgid "OpenID:" msgid "OpenID:"
msgstr "" msgstr ""
#: ../../mod/settings.php:844 #: ../../mod/settings.php:865
msgid "(Optional) Allow this OpenID to login to this account." msgid "(Optional) Allow this OpenID to login to this account."
msgstr "" msgstr ""
#: ../../mod/settings.php:854 #: ../../mod/settings.php:875
msgid "Publish your default profile in your local site directory?" msgid "Publish your default profile in your local site directory?"
msgstr "" msgstr ""
#: ../../mod/settings.php:860 #: ../../mod/settings.php:881
msgid "Publish your default profile in the global social directory?" msgid "Publish your default profile in the global social directory?"
msgstr "" msgstr ""
#: ../../mod/settings.php:868 #: ../../mod/settings.php:889
msgid "Hide your contact/friend list from viewers of your default profile?" msgid "Hide your contact/friend list from viewers of your default profile?"
msgstr "" msgstr ""
#: ../../mod/settings.php:872 #: ../../mod/settings.php:893
msgid "Hide your profile details from unknown viewers?" msgid "Hide your profile details from unknown viewers?"
msgstr "" msgstr ""
#: ../../mod/settings.php:877 #: ../../mod/settings.php:898
msgid "Allow friends to post to your profile page?" msgid "Allow friends to post to your profile page?"
msgstr "" msgstr ""
#: ../../mod/settings.php:883 #: ../../mod/settings.php:904
msgid "Allow friends to tag your posts?" msgid "Allow friends to tag your posts?"
msgstr "" msgstr ""
#: ../../mod/settings.php:889 #: ../../mod/settings.php:910
msgid "Allow us to suggest you as a potential friend to new members?" msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "" msgstr ""
#: ../../mod/settings.php:895 #: ../../mod/settings.php:916
msgid "Permit unknown people to send you private mail?" msgid "Permit unknown people to send you private mail?"
msgstr "" msgstr ""
#: ../../mod/settings.php:906 #: ../../mod/settings.php:927
msgid "Profile is <strong>not published</strong>." msgid "Profile is <strong>not published</strong>."
msgstr "" msgstr ""
#: ../../mod/settings.php:912 ../../mod/profile_photo.php:211 #: ../../mod/settings.php:933 ../../mod/profile_photo.php:211
msgid "or" msgid "or"
msgstr "" msgstr ""
#: ../../mod/settings.php:917 #: ../../mod/settings.php:938
msgid "Your Identity Address is" msgid "Your Identity Address is"
msgstr "" msgstr ""
#: ../../mod/settings.php:928 #: ../../mod/settings.php:949
msgid "Automatically expire posts after this many days:" msgid "Automatically expire posts after this many days:"
msgstr "" msgstr ""
#: ../../mod/settings.php:928 #: ../../mod/settings.php:949
msgid "If empty, posts will not expire. Expired posts will be deleted" msgid "If empty, posts will not expire. Expired posts will be deleted"
msgstr "" msgstr ""
#: ../../mod/settings.php:929 #: ../../mod/settings.php:950
msgid "Advanced expiration settings" msgid "Advanced expiration settings"
msgstr "" msgstr ""
#: ../../mod/settings.php:930 #: ../../mod/settings.php:951
msgid "Advanced Expiration" msgid "Advanced Expiration"
msgstr "" msgstr ""
#: ../../mod/settings.php:931 #: ../../mod/settings.php:952
msgid "Expire posts:" msgid "Expire posts:"
msgstr "" msgstr ""
#: ../../mod/settings.php:932 #: ../../mod/settings.php:953
msgid "Expire personal notes:" msgid "Expire personal notes:"
msgstr "" msgstr ""
#: ../../mod/settings.php:933 #: ../../mod/settings.php:954
msgid "Expire starred posts:" msgid "Expire starred posts:"
msgstr "" msgstr ""
#: ../../mod/settings.php:934 #: ../../mod/settings.php:955
msgid "Expire photos:" msgid "Expire photos:"
msgstr "" msgstr ""
#: ../../mod/settings.php:938 #: ../../mod/settings.php:962
msgid "Account Settings" msgid "Account Settings"
msgstr "" msgstr ""
#: ../../mod/settings.php:947 #: ../../mod/settings.php:970
msgid "Password Settings" msgid "Password Settings"
msgstr "" msgstr ""
#: ../../mod/settings.php:948 #: ../../mod/settings.php:971
msgid "New Password:" msgid "New Password:"
msgstr "" msgstr ""
#: ../../mod/settings.php:949 #: ../../mod/settings.php:972
msgid "Confirm:" msgid "Confirm:"
msgstr "" msgstr ""
#: ../../mod/settings.php:949 #: ../../mod/settings.php:972
msgid "Leave password fields blank unless changing" msgid "Leave password fields blank unless changing"
msgstr "" msgstr ""
#: ../../mod/settings.php:953 #: ../../mod/settings.php:976
msgid "Basic Settings" msgid "Basic Settings"
msgstr "" msgstr ""
#: ../../mod/settings.php:954 ../../include/profile_advanced.php:15 #: ../../mod/settings.php:977 ../../include/profile_advanced.php:15
msgid "Full Name:" msgid "Full Name:"
msgstr "" msgstr ""
#: ../../mod/settings.php:955 #: ../../mod/settings.php:978
msgid "Email Address:" msgid "Email Address:"
msgstr "" msgstr ""
#: ../../mod/settings.php:956 #: ../../mod/settings.php:979
msgid "Your Timezone:" msgid "Your Timezone:"
msgstr "" msgstr ""
#: ../../mod/settings.php:957 #: ../../mod/settings.php:980
msgid "Default Post Location:" msgid "Default Post Location:"
msgstr "" msgstr ""
#: ../../mod/settings.php:958 #: ../../mod/settings.php:981
msgid "Use Browser Location:" msgid "Use Browser Location:"
msgstr "" msgstr ""
#: ../../mod/settings.php:961 #: ../../mod/settings.php:984
msgid "Security and Privacy Settings" msgid "Security and Privacy Settings"
msgstr "" msgstr ""
#: ../../mod/settings.php:963 #: ../../mod/settings.php:986
msgid "Maximum Friend Requests/Day:" msgid "Maximum Friend Requests/Day:"
msgstr "" msgstr ""
#: ../../mod/settings.php:963 ../../mod/settings.php:978 #: ../../mod/settings.php:986 ../../mod/settings.php:1005
msgid "(to prevent spam abuse)" msgid "(to prevent spam abuse)"
msgstr "" msgstr ""
#: ../../mod/settings.php:964 #: ../../mod/settings.php:987
msgid "Default Post Permissions" msgid "Default Post Permissions"
msgstr "" msgstr ""
#: ../../mod/settings.php:965 #: ../../mod/settings.php:988
msgid "(click to open/close)" msgid "(click to open/close)"
msgstr "" msgstr ""
#: ../../mod/settings.php:978 #: ../../mod/settings.php:1005
msgid "Maximum private messages per day from unknown people:" msgid "Maximum private messages per day from unknown people:"
msgstr "" msgstr ""
#: ../../mod/settings.php:981 #: ../../mod/settings.php:1008
msgid "Notification Settings" msgid "Notification Settings"
msgstr "" msgstr ""
#: ../../mod/settings.php:982 #: ../../mod/settings.php:1009
msgid "By default post a status message when:" msgid "By default post a status message when:"
msgstr "" msgstr ""
#: ../../mod/settings.php:983 #: ../../mod/settings.php:1010
msgid "accepting a friend request" msgid "accepting a friend request"
msgstr "" msgstr ""
#: ../../mod/settings.php:984 #: ../../mod/settings.php:1011
msgid "joining a forum/community" msgid "joining a forum/community"
msgstr "" msgstr ""
#: ../../mod/settings.php:985 #: ../../mod/settings.php:1012
msgid "making an <em>interesting</em> profile change" msgid "making an <em>interesting</em> profile change"
msgstr "" msgstr ""
#: ../../mod/settings.php:986 #: ../../mod/settings.php:1013
msgid "Send a notification email when:" msgid "Send a notification email when:"
msgstr "" msgstr ""
#: ../../mod/settings.php:987 #: ../../mod/settings.php:1014
msgid "You receive an introduction" msgid "You receive an introduction"
msgstr "" msgstr ""
#: ../../mod/settings.php:988 #: ../../mod/settings.php:1015
msgid "Your introductions are confirmed" msgid "Your introductions are confirmed"
msgstr "" msgstr ""
#: ../../mod/settings.php:989 #: ../../mod/settings.php:1016
msgid "Someone writes on your profile wall" msgid "Someone writes on your profile wall"
msgstr "" msgstr ""
#: ../../mod/settings.php:990 #: ../../mod/settings.php:1017
msgid "Someone writes a followup comment" msgid "Someone writes a followup comment"
msgstr "" msgstr ""
#: ../../mod/settings.php:991 #: ../../mod/settings.php:1018
msgid "You receive a private message" msgid "You receive a private message"
msgstr "" msgstr ""
#: ../../mod/settings.php:992 #: ../../mod/settings.php:1019
msgid "You receive a friend suggestion" msgid "You receive a friend suggestion"
msgstr "" msgstr ""
#: ../../mod/settings.php:993 #: ../../mod/settings.php:1020
msgid "You are tagged in a post" msgid "You are tagged in a post"
msgstr "" msgstr ""
#: ../../mod/settings.php:996 #: ../../mod/settings.php:1023
msgid "Advanced Page Settings" msgid "Advanced Page Settings"
msgstr "" msgstr ""
@ -2268,7 +2284,7 @@ msgstr ""
msgid "Saved Searches" msgid "Saved Searches"
msgstr "" msgstr ""
#: ../../mod/network.php:92 ../../include/group.php:217 #: ../../mod/network.php:92 ../../include/group.php:244
msgid "add" msgid "add"
msgstr "" msgstr ""
@ -2357,7 +2373,7 @@ msgid "Personal Notes"
msgstr "" msgstr ""
#: ../../mod/notes.php:63 ../../mod/filer.php:30 #: ../../mod/notes.php:63 ../../mod/filer.php:30
#: ../../addon/facebook/facebook.php:748 #: ../../addon/facebook/facebook.php:756
#: ../../addon/privacy_image_cache/privacy_image_cache.php:147 #: ../../addon/privacy_image_cache/privacy_image_cache.php:147
#: ../../include/text.php:652 #: ../../include/text.php:652
msgid "Save" msgid "Save"
@ -2784,19 +2800,19 @@ msgid "People Search"
msgstr "" msgstr ""
#: ../../mod/like.php:127 ../../mod/tagger.php:70 #: ../../mod/like.php:127 ../../mod/tagger.php:70
#: ../../addon/facebook/facebook.php:1564 #: ../../addon/facebook/facebook.php:1572
#: ../../addon/communityhome/communityhome.php:158 #: ../../addon/communityhome/communityhome.php:158
#: ../../addon/communityhome/communityhome.php:167 #: ../../addon/communityhome/communityhome.php:167
#: ../../view/theme/diabook/theme.php:560 #: ../../view/theme/diabook/theme.php:560
#: ../../view/theme/diabook/theme.php:569 ../../include/diaspora.php:1654 #: ../../view/theme/diabook/theme.php:569 ../../include/diaspora.php:1662
#: ../../include/conversation.php:48 ../../include/conversation.php:57 #: ../../include/conversation.php:48 ../../include/conversation.php:57
#: ../../include/conversation.php:121 ../../include/conversation.php:130 #: ../../include/conversation.php:121 ../../include/conversation.php:130
msgid "status" msgid "status"
msgstr "" msgstr ""
#: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1568 #: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1576
#: ../../addon/communityhome/communityhome.php:172 #: ../../addon/communityhome/communityhome.php:172
#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1670 #: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1678
#: ../../include/conversation.php:65 #: ../../include/conversation.php:65
#, php-format #, php-format
msgid "%1$s likes %2$s's %3$s" msgid "%1$s likes %2$s's %3$s"
@ -2809,7 +2825,7 @@ msgstr ""
#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:156 #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:156
#: ../../mod/admin.php:684 ../../mod/admin.php:883 ../../mod/display.php:37 #: ../../mod/admin.php:684 ../../mod/admin.php:883 ../../mod/display.php:37
#: ../../mod/display.php:142 ../../include/items.php:3084 #: ../../mod/display.php:142 ../../include/items.php:3096
msgid "Item not found." msgid "Item not found."
msgstr "" msgstr ""
@ -3719,11 +3735,11 @@ msgid ""
"notifications from you." "notifications from you."
msgstr "" msgstr ""
#: ../../mod/follow.php:160 #: ../../mod/follow.php:161
msgid "Unable to retrieve contact information." msgid "Unable to retrieve contact information."
msgstr "" msgstr ""
#: ../../mod/follow.php:206 #: ../../mod/follow.php:216
msgid "following" msgid "following"
msgstr "" msgstr ""
@ -4233,129 +4249,129 @@ msgstr ""
msgid "%1$s is now friends with %2$s" msgid "%1$s is now friends with %2$s"
msgstr "" msgstr ""
#: ../../mod/dfrn_confirm.php:554 #: ../../mod/dfrn_confirm.php:564
#, php-format #, php-format
msgid "No user record found for '%s' " msgid "No user record found for '%s' "
msgstr "" msgstr ""
#: ../../mod/dfrn_confirm.php:564 #: ../../mod/dfrn_confirm.php:574
msgid "Our site encryption key is apparently messed up." msgid "Our site encryption key is apparently messed up."
msgstr "" msgstr ""
#: ../../mod/dfrn_confirm.php:575 #: ../../mod/dfrn_confirm.php:585
msgid "Empty site URL was provided or URL could not be decrypted by us." msgid "Empty site URL was provided or URL could not be decrypted by us."
msgstr "" msgstr ""
#: ../../mod/dfrn_confirm.php:596 #: ../../mod/dfrn_confirm.php:606
msgid "Contact record was not found for you on our site." msgid "Contact record was not found for you on our site."
msgstr "" msgstr ""
#: ../../mod/dfrn_confirm.php:610 #: ../../mod/dfrn_confirm.php:620
#, php-format #, php-format
msgid "Site public key not available in contact record for URL %s." msgid "Site public key not available in contact record for URL %s."
msgstr "" msgstr ""
#: ../../mod/dfrn_confirm.php:630 #: ../../mod/dfrn_confirm.php:640
msgid "" msgid ""
"The ID provided by your system is a duplicate on our system. It should work " "The ID provided by your system is a duplicate on our system. It should work "
"if you try again." "if you try again."
msgstr "" msgstr ""
#: ../../mod/dfrn_confirm.php:641 #: ../../mod/dfrn_confirm.php:651
msgid "Unable to set your contact credentials on our system." msgid "Unable to set your contact credentials on our system."
msgstr "" msgstr ""
#: ../../mod/dfrn_confirm.php:706 #: ../../mod/dfrn_confirm.php:716
msgid "Unable to update your contact profile details on our system" msgid "Unable to update your contact profile details on our system"
msgstr "" msgstr ""
#: ../../mod/dfrn_confirm.php:740 #: ../../mod/dfrn_confirm.php:750
#, php-format #, php-format
msgid "Connection accepted at %s" msgid "Connection accepted at %s"
msgstr "" msgstr ""
#: ../../mod/dfrn_confirm.php:789 #: ../../mod/dfrn_confirm.php:799
#, php-format #, php-format
msgid "%1$s has joined %2$s" msgid "%1$s has joined %2$s"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:501 #: ../../addon/facebook/facebook.php:509
msgid "Facebook disabled" msgid "Facebook disabled"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:506 #: ../../addon/facebook/facebook.php:514
msgid "Updating contacts" msgid "Updating contacts"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:529 #: ../../addon/facebook/facebook.php:537
msgid "Facebook API key is missing." msgid "Facebook API key is missing."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:536 #: ../../addon/facebook/facebook.php:544
msgid "Facebook Connect" msgid "Facebook Connect"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:542 #: ../../addon/facebook/facebook.php:550
msgid "Install Facebook connector for this account." msgid "Install Facebook connector for this account."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:549 #: ../../addon/facebook/facebook.php:557
msgid "Remove Facebook connector" msgid "Remove Facebook connector"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:554 #: ../../addon/facebook/facebook.php:562
msgid "" msgid ""
"Re-authenticate [This is necessary whenever your Facebook password is " "Re-authenticate [This is necessary whenever your Facebook password is "
"changed.]" "changed.]"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:561 #: ../../addon/facebook/facebook.php:569
msgid "Post to Facebook by default" msgid "Post to Facebook by default"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:567 #: ../../addon/facebook/facebook.php:575
msgid "" msgid ""
"Facebook friend linking has been disabled on this site. The following " "Facebook friend linking has been disabled on this site. The following "
"settings will have no effect." "settings will have no effect."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:571 #: ../../addon/facebook/facebook.php:579
msgid "" msgid ""
"Facebook friend linking has been disabled on this site. If you disable it, " "Facebook friend linking has been disabled on this site. If you disable it, "
"you will be unable to re-enable it." "you will be unable to re-enable it."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:574 #: ../../addon/facebook/facebook.php:582
msgid "Link all your Facebook friends and conversations on this website" msgid "Link all your Facebook friends and conversations on this website"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:576 #: ../../addon/facebook/facebook.php:584
msgid "" msgid ""
"Facebook conversations consist of your <em>profile wall</em> and your friend " "Facebook conversations consist of your <em>profile wall</em> and your friend "
"<em>stream</em>." "<em>stream</em>."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:577 #: ../../addon/facebook/facebook.php:585
msgid "On this website, your Facebook friend stream is only visible to you." msgid "On this website, your Facebook friend stream is only visible to you."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:578 #: ../../addon/facebook/facebook.php:586
msgid "" msgid ""
"The following settings determine the privacy of your Facebook profile wall " "The following settings determine the privacy of your Facebook profile wall "
"on this website." "on this website."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:582 #: ../../addon/facebook/facebook.php:590
msgid "" msgid ""
"On this website your Facebook profile wall conversations will only be " "On this website your Facebook profile wall conversations will only be "
"visible to you" "visible to you"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:587 #: ../../addon/facebook/facebook.php:595
msgid "Do not import your Facebook profile wall conversations" msgid "Do not import your Facebook profile wall conversations"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:589 #: ../../addon/facebook/facebook.php:597
msgid "" msgid ""
"If you choose to link conversations and leave both of these boxes unchecked, " "If you choose to link conversations and leave both of these boxes unchecked, "
"your Facebook profile wall will be merged with your profile wall on this " "your Facebook profile wall will be merged with your profile wall on this "
@ -4363,120 +4379,120 @@ msgid ""
"who may see the conversations." "who may see the conversations."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:594 #: ../../addon/facebook/facebook.php:602
msgid "Comma separated applications to ignore" msgid "Comma separated applications to ignore"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:678 #: ../../addon/facebook/facebook.php:686
msgid "Problems with Facebook Real-Time Updates" msgid "Problems with Facebook Real-Time Updates"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:706 #: ../../addon/facebook/facebook.php:714
#: ../../include/contact_selectors.php:81 #: ../../include/contact_selectors.php:81
msgid "Facebook" msgid "Facebook"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:707 #: ../../addon/facebook/facebook.php:715
msgid "Facebook Connector Settings" msgid "Facebook Connector Settings"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:722 #: ../../addon/facebook/facebook.php:730
msgid "Facebook API Key" msgid "Facebook API Key"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:732 #: ../../addon/facebook/facebook.php:740
msgid "" msgid ""
"Error: it appears that you have specified the App-ID and -Secret in your ." "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 " "htconfig.php file. As long as they are specified there, they cannot be set "
"using this form.<br><br>" "using this form.<br><br>"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:737 #: ../../addon/facebook/facebook.php:745
msgid "" msgid ""
"Error: the given API Key seems to be incorrect (the application access token " "Error: the given API Key seems to be incorrect (the application access token "
"could not be retrieved)." "could not be retrieved)."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:739 #: ../../addon/facebook/facebook.php:747
msgid "The given API Key seems to work correctly." msgid "The given API Key seems to work correctly."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:741 #: ../../addon/facebook/facebook.php:749
msgid "" msgid ""
"The correctness of the API Key could not be detected. Somthing strange's " "The correctness of the API Key could not be detected. Somthing strange's "
"going on." "going on."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:744 #: ../../addon/facebook/facebook.php:752
msgid "App-ID / API-Key" msgid "App-ID / API-Key"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:745 #: ../../addon/facebook/facebook.php:753
msgid "Application secret" msgid "Application secret"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:746 #: ../../addon/facebook/facebook.php:754
#, php-format #, php-format
msgid "Polling Interval in minutes (minimum %1$s minutes)" msgid "Polling Interval in minutes (minimum %1$s minutes)"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:747 #: ../../addon/facebook/facebook.php:755
msgid "" msgid ""
"Synchronize comments (no comments on Facebook are missed, at the cost of " "Synchronize comments (no comments on Facebook are missed, at the cost of "
"increased system load)" "increased system load)"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:751 #: ../../addon/facebook/facebook.php:759
msgid "Real-Time Updates" msgid "Real-Time Updates"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:755 #: ../../addon/facebook/facebook.php:763
msgid "Real-Time Updates are activated." msgid "Real-Time Updates are activated."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:756 #: ../../addon/facebook/facebook.php:764
msgid "Deactivate Real-Time Updates" msgid "Deactivate Real-Time Updates"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:758 #: ../../addon/facebook/facebook.php:766
msgid "Real-Time Updates not activated." msgid "Real-Time Updates not activated."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:758 #: ../../addon/facebook/facebook.php:766
msgid "Activate Real-Time Updates" msgid "Activate Real-Time Updates"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:777 #: ../../addon/facebook/facebook.php:785
msgid "The new values have been saved." msgid "The new values have been saved."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:801 #: ../../addon/facebook/facebook.php:809
msgid "Post to Facebook" msgid "Post to Facebook"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:899 #: ../../addon/facebook/facebook.php:907
msgid "" msgid ""
"Post to Facebook cancelled because of multi-network access permission " "Post to Facebook cancelled because of multi-network access permission "
"conflict." "conflict."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:1119 #: ../../addon/facebook/facebook.php:1127
msgid "View on Friendica" msgid "View on Friendica"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:1152 #: ../../addon/facebook/facebook.php:1160
msgid "Facebook post failed. Queued for retry." msgid "Facebook post failed. Queued for retry."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:1192 #: ../../addon/facebook/facebook.php:1200
msgid "Your Facebook connection became invalid. Please Re-authenticate." msgid "Your Facebook connection became invalid. Please Re-authenticate."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:1193 #: ../../addon/facebook/facebook.php:1201
msgid "Facebook connection became invalid" msgid "Facebook connection became invalid"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:1194 #: ../../addon/facebook/facebook.php:1202
#, php-format #, php-format
msgid "" msgid ""
"Hi %1$s,\n" "Hi %1$s,\n"
@ -5809,7 +5825,7 @@ msgid "j F"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:30 ../../include/datetime.php:448 #: ../../include/profile_advanced.php:30 ../../include/datetime.php:448
#: ../../include/items.php:1413 #: ../../include/items.php:1419
msgid "Birthday:" msgid "Birthday:"
msgstr "" msgstr ""
@ -6349,15 +6365,15 @@ msgstr ""
msgid "Item filed" msgid "Item filed"
msgstr "" msgstr ""
#: ../../include/diaspora.php:582 #: ../../include/diaspora.php:590
msgid "Sharing notification from Diaspora network" msgid "Sharing notification from Diaspora network"
msgstr "" msgstr ""
#: ../../include/diaspora.php:1969 #: ../../include/diaspora.php:1977
msgid "Attachments:" msgid "Attachments:"
msgstr "" msgstr ""
#: ../../include/diaspora.php:2152 #: ../../include/diaspora.php:2160
#, php-format #, php-format
msgid "[Relayed] Comment authored by %s from network %s" msgid "[Relayed] Comment authored by %s from network %s"
msgstr "" msgstr ""
@ -6381,27 +6397,31 @@ msgid ""
"not what you intended, please create another group with a different name." "not what you intended, please create another group with a different name."
msgstr "" msgstr ""
#: ../../include/group.php:168 #: ../../include/group.php:176
msgid "Default privacy group for new contacts"
msgstr ""
#: ../../include/group.php:195
msgid "Everybody" msgid "Everybody"
msgstr "" msgstr ""
#: ../../include/group.php:191 #: ../../include/group.php:218
msgid "edit" msgid "edit"
msgstr "" msgstr ""
#: ../../include/group.php:212 #: ../../include/group.php:239
msgid "Groups" msgid "Groups"
msgstr "" msgstr ""
#: ../../include/group.php:213 #: ../../include/group.php:240
msgid "Edit group" msgid "Edit group"
msgstr "" msgstr ""
#: ../../include/group.php:214 #: ../../include/group.php:241
msgid "Create a new group" msgid "Create a new group"
msgstr "" msgstr ""
#: ../../include/group.php:215 #: ../../include/group.php:242
msgid "Contacts not in any group" msgid "Contacts not in any group"
msgstr "" msgstr ""
@ -6876,11 +6896,11 @@ msgstr ""
msgid "Please visit %s to approve or reject the suggestion." msgid "Please visit %s to approve or reject the suggestion."
msgstr "" msgstr ""
#: ../../include/items.php:2724 #: ../../include/items.php:2736
msgid "A new person is sharing with you at " msgid "A new person is sharing with you at "
msgstr "" msgstr ""
#: ../../include/items.php:2724 #: ../../include/items.php:2736
msgid "You have a new follower at " msgid "You have a new follower at "
msgstr "" msgstr ""

8
view/group_selection.tpl Normal file
View file

@ -0,0 +1,8 @@
<div class="field custom">
<label for="group-selection" id="group-selection-lbl">$label</label>
<select name="group-selection" id="group-selection" >
{{ for $groups as $group }}
<option value="$group.id" {{ if $group.selected }}selected="selected"{{ endif }} >$group.name</option>
{{ endfor }}
</select>
</div>

View file

@ -2,3 +2,6 @@
{{inc field_radio.tpl with $field=$page_soapbox }}{{endinc}} {{inc field_radio.tpl with $field=$page_soapbox }}{{endinc}}
{{inc field_radio.tpl with $field=$page_community }}{{endinc}} {{inc field_radio.tpl with $field=$page_community }}{{endinc}}
{{inc field_radio.tpl with $field=$page_freelove }}{{endinc}} {{inc field_radio.tpl with $field=$page_freelove }}{{endinc}}
{{ if $experimental }}
{{inc field_radio.tpl with $field=$page_prvgroup }}{{endinc}}
{{ endif }}

View file

@ -56,9 +56,12 @@ $suggestme
$unkmail $unkmail
{{inc field_input.tpl with $field=$cntunkmail }}{{endinc}} {{inc field_input.tpl with $field=$cntunkmail }}{{endinc}}
{{inc field_input.tpl with $field=$expire.days }}{{endinc}} {{inc field_input.tpl with $field=$expire.days }}{{endinc}}
<div class="field input"> <div class="field input">
<span class="field_help"><a href="#advanced-expire-popup" id="advanced-expire" class='popupbox' title="$expire.advanced">$expire.label</a></span> <span class="field_help"><a href="#advanced-expire-popup" id="advanced-expire" class='popupbox' title="$expire.advanced">$expire.label</a></span>
<div style="display: none;"> <div style="display: none;">
@ -90,6 +93,8 @@ $unkmail
<br/> <br/>
<div id="settings-default-perms-end"></div> <div id="settings-default-perms-end"></div>
$group_select
<div class="settings-submit-wrapper" > <div class="settings-submit-wrapper" >
<input type="submit" name="submit" class="settings-submit" value="Submit" /> <input type="submit" name="submit" class="settings-submit" value="Submit" />

View file

@ -55,9 +55,9 @@ h6{font-size:xx-small;}
.action{margin:5px 0;} .action{margin:5px 0;}
.tool{margin:5px 0;list-style:none;} .tool{margin:5px 0;list-style:none;}
#articlemain{width:100%;height:100%;margin:0 auto;} #articlemain{width:100%;height:100%;margin:0 auto;}
.button,#profile-listing-desc{width:25%;height:auto;background:#555753;color:#eeeecc;border:2px outset #222321;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:5px;font-size:smaller;cursor:pointer;}.button.active,#profile-listing-desc.active{-moz-box-shadow:4px 4px 7px 0px #111111;-o-box-shadow:4px 4px 7px 0px #111111;-webkit-box-shadow:4px 4px 7px 0px #111111;-ms-box-shadow:4px 4px 7px 0px #111111;box-shadow:4px 4px 7px 0px #111111;} .button,#profile-listing-desc{color:#eeeecc;padding:5px;cursor:pointer;}.button.active,#profile-listing-desc.active{-moz-box-shadow:4px 4px 7px 0px #111111;-o-box-shadow:4px 4px 7px 0px #111111;-webkit-box-shadow:4px 4px 7px 0px #111111;-ms-box-shadow:4px 4px 7px 0px #111111;box-shadow:4px 4px 7px 0px #111111;}
.button a,#profile-listing-desc a{color:#eeeecc;font-size:smaller;font-weight:bold;} .button a,#profile-listing-desc a{color:#eeeecc;font-weight:bold;}
[class$="-desc"],[id$="-desc"]{color:#2e2f2e;border:1px outset #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;} [class$="-desc"],[id$="-desc"]{color:#eeeecc;background:#2e2f2e;border:1px outset #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;}
#item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;} #item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;}
.intro-approve-as-friend-desc{margin-top:10px;} .intro-approve-as-friend-desc{margin-top:10px;}
.intro-desc{margin-bottom:20px;font-weight:bold;} .intro-desc{margin-bottom:20px;font-weight:bold;}
@ -395,7 +395,7 @@ div[id$="wrapper"]{height:100%;margin-bottom:1em;}div[id$="wrapper"] br{clear:le
#sidebar-group-ul{padding-left:0;} #sidebar-group-ul{padding-left:0;}
#sidebar-group-list{margin:0 0 5px 0;}#sidebar-group-list li{margin-top:10px;} #sidebar-group-list{margin:0 0 5px 0;}#sidebar-group-list li{margin-top:10px;}
#sidebar-group-list .icon{display:inline-block;width:12px;height:12px;} #sidebar-group-list .icon{display:inline-block;width:12px;height:12px;}
.sidebar-group-element{padding:3px;}.sidebar-group-element:hover{color:#2e2f2e;background:#2e3436;border:1px solid #638ec4;padding:3px;} .sidebar-group-element{padding:3px;}.sidebar-group-element:hover{color:#eeeecc;background:#2e3436;border:1px solid #638ec4;padding:3px;}
#sidebar-new-group{margin:auto;display:inline-block;color:#eeeeee;text-decoration:none;text-align:center;} #sidebar-new-group{margin:auto;display:inline-block;color:#eeeeee;text-decoration:none;text-align:center;}
#peoplefind-sidebar form{margin-bottom:10px;} #peoplefind-sidebar form{margin-bottom:10px;}
#sidebar-new-group:hover{} #sidebar-new-group:hover{}

View file

@ -282,27 +282,27 @@ h6 {
} }
.button, .button,
#profile-listing-desc { #profile-listing-desc {
.box(25%, auto); // .box(25%, auto);
background: @menu_bg_colour; // background: @menu_bg_colour;
color: @main_colour; color: @main_colour;
.borders(2px, outset, darken(@menu_bg_colour, 20%)); // .borders(2px, outset, darken(@menu_bg_colour, 20%));
.rounded_corners; // .rounded_corners;
padding: 5px; padding: 5px;
font-size: smaller; // font-size: smaller;
cursor: pointer; cursor: pointer;
&.active { &.active {
.box_shadow(4px, 4px, 7px); .box_shadow(4px, 4px, 7px);
} }
a { a {
color: @main_colour; color: @main_colour;
font-size: smaller; // font-size: smaller;
font-weight: bold; font-weight: bold;
} }
} }
[class$="-desc"], [class$="-desc"],
[id$="-desc"] { [id$="-desc"] {
color: @bg_colour; color: @main_colour;
// background: @main_colour; background: @bg_colour;
.borders(1px, outset, @main_colour); .borders(1px, outset, @main_colour);
.rounded_corners; .rounded_corners;
// .box_shadow(3px, 3px, 5px); // .box_shadow(3px, 3px, 5px);
@ -568,6 +568,9 @@ div.jGrowl div {
padding-left: 58px; padding-left: 58px;
margin-top: 50px; margin-top: 50px;
} }
// &.jGrowl-message {
// }
} }
#nav-notifications-menu { #nav-notifications-menu {
margin: 30px 0 0 -20px; margin: 30px 0 0 -20px;
@ -2349,7 +2352,7 @@ div {
.sidebar-group-element { .sidebar-group-element {
padding: 3px; padding: 3px;
&:hover { &:hover {
color: @bg_colour; color: @main_colour;
background: @shiny_colour; background: @shiny_colour;
.borders(1px, solid, @hover_colour); .borders(1px, solid, @hover_colour);
padding: 3px; padding: 3px;

View file

@ -55,9 +55,9 @@ h6{font-size:xx-small;}
.action{margin:5px 0;} .action{margin:5px 0;}
.tool{margin:5px 0;list-style:none;} .tool{margin:5px 0;list-style:none;}
#articlemain{width:100%;height:100%;margin:0 auto;} #articlemain{width:100%;height:100%;margin:0 auto;}
.button,#profile-listing-desc{width:25%;height:auto;background:#555753;color:#eeeeec;border:2px outset #222321;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:5px;font-size:smaller;cursor:pointer;}.button.active,#profile-listing-desc.active{-moz-box-shadow:4px 4px 7px 0px #111111;-o-box-shadow:4px 4px 7px 0px #111111;-webkit-box-shadow:4px 4px 7px 0px #111111;-ms-box-shadow:4px 4px 7px 0px #111111;box-shadow:4px 4px 7px 0px #111111;} .button,#profile-listing-desc{color:#111111;padding:5px;cursor:pointer;}.button.active,#profile-listing-desc.active{-moz-box-shadow:4px 4px 7px 0px #111111;-o-box-shadow:4px 4px 7px 0px #111111;-webkit-box-shadow:4px 4px 7px 0px #111111;-ms-box-shadow:4px 4px 7px 0px #111111;box-shadow:4px 4px 7px 0px #111111;}
.button a,#profile-listing-desc a{color:#eeeeec;font-size:smaller;font-weight:bold;} .button a,#profile-listing-desc a{color:#eeeeec;font-weight:bold;}
[class$="-desc"],[id$="-desc"]{color:#eeeeec;border:1px outset #eeeeec;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;} [class$="-desc"],[id$="-desc"]{color:#eeeeec;background:#111111;border:1px outset #eeeeec;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;}
#item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;} #item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;}
.intro-approve-as-friend-desc{margin-top:10px;} .intro-approve-as-friend-desc{margin-top:10px;}
.intro-desc{margin-bottom:20px;font-weight:bold;} .intro-desc{margin-bottom:20px;font-weight:bold;}

View file

@ -283,27 +283,27 @@ h6 {
} }
.button, .button,
#profile-listing-desc { #profile-listing-desc {
.box(25%, auto); // .box(25%, auto);
background: @menu_bg_colour; // background: @menu_bg_colour;
color: @bg_colour; color: @main_colour;
.borders(2px, outset, darken(@menu_bg_colour, 20%)); // .borders(2px, outset, darken(@menu_bg_colour, 20%));
.rounded_corners; // .rounded_corners;
padding: 5px; padding: 5px;
font-size: smaller; // font-size: smaller;
cursor: pointer; cursor: pointer;
&.active { &.active {
.box_shadow(4px, 4px, 7px); .box_shadow(4px, 4px, 7px);
} }
a { a {
color: @bg_colour; color: @bg_colour;
font-size: smaller; // font-size: smaller;
font-weight: bold; font-weight: bold;
} }
} }
[class$="-desc"], [class$="-desc"],
[id$="-desc"] { [id$="-desc"] {
color: @bg_colour; color: @bg_colour;
// background: @main_colour; background: @main_colour;
.borders(1px, outset, @bg_colour); .borders(1px, outset, @bg_colour);
.rounded_corners; .rounded_corners;
// .box_shadow(3px, 3px, 5px); // .box_shadow(3px, 3px, 5px);

View file

@ -1091,6 +1091,11 @@ input#dfrn-url {
overflow: auto; overflow: auto;
} }
.wall-item-content img {
max-width: 700px;
}
.wall-item-title { .wall-item-title {
float: left; float: left;
font-weight: bold; font-weight: bold;