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

This commit is contained in:
Vasudev Kamath 2012-05-05 20:48:16 +05:30
commit b5e857c0e7
141 changed files with 10220 additions and 6910 deletions

View File

@ -9,9 +9,9 @@ require_once('include/nav.php');
require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_VERSION', '2.3.1324' );
define ( 'FRIENDICA_VERSION', '2.3.1332' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1138 );
define ( 'DB_UPDATE_VERSION', 1143 );
define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
@ -73,6 +73,14 @@ define ( 'HOOK_HOOK', 0);
define ( 'HOOK_FILE', 1);
define ( 'HOOK_FUNCTION', 2);
/**
* DB update return values
*/
define ( 'UPDATE_SUCCESS', 0);
define ( 'UPDATE_FAILED', 1);
/**
*
* page/profile types
@ -193,6 +201,8 @@ define ( 'ACTIVITY_REQ_FRIEND', NAMESPACE_ACTIVITY_SCHEMA . 'request-friend' );
define ( 'ACTIVITY_UNFRIEND', NAMESPACE_ACTIVITY_SCHEMA . 'remove-friend' );
define ( 'ACTIVITY_FOLLOW', NAMESPACE_ACTIVITY_SCHEMA . 'follow' );
define ( 'ACTIVITY_UNFOLLOW', NAMESPACE_ACTIVITY_SCHEMA . 'stop-following' );
define ( 'ACTIVITY_JOIN', NAMESPACE_ACTIVITY_SCHEMA . 'join' );
define ( 'ACTIVITY_POST', NAMESPACE_ACTIVITY_SCHEMA . 'post' );
define ( 'ACTIVITY_UPDATE', NAMESPACE_ACTIVITY_SCHEMA . 'update' );
define ( 'ACTIVITY_TAG', NAMESPACE_ACTIVITY_SCHEMA . 'tag' );
@ -205,6 +215,7 @@ define ( 'ACTIVITY_OBJ_PHOTO', NAMESPACE_ACTIVITY_SCHEMA . 'photo' );
define ( 'ACTIVITY_OBJ_P_PHOTO', NAMESPACE_ACTIVITY_SCHEMA . 'profile-photo' );
define ( 'ACTIVITY_OBJ_ALBUM', NAMESPACE_ACTIVITY_SCHEMA . 'photo-album' );
define ( 'ACTIVITY_OBJ_EVENT', NAMESPACE_ACTIVITY_SCHEMA . 'event' );
define ( 'ACTIVITY_OBJ_GROUP', NAMESPACE_ACTIVITY_SCHEMA . 'group' );
define ( 'ACTIVITY_OBJ_TAGTERM', NAMESPACE_DFRN . '/tagterm' );
define ( 'ACTIVITY_OBJ_PROFILE', NAMESPACE_DFRN . '/profile' );
@ -658,32 +669,29 @@ if(! function_exists('check_config')) {
// call the specific update
// global $db;
// $db->excep(TRUE);
// try {
// $db->beginTransaction();
$func = 'update_' . $x;
$func($a);
// $db->commit();
// } catch(Exception $ex) {
// $db->rollback();
// //send the administrator an e-mail
// $email_tpl = get_intltext_template("update_fail_eml.tpl");
// $email_tpl = replace_macros($email_tpl, array(
// '$sitename' => $a->config['sitename'],
// '$siteurl' => $a->get_baseurl(),
// '$update' => $x,
// '$error' => $ex->getMessage()));
// $subject=sprintf(t('Update Error at %s'), $a->get_baseurl());
$func = 'update_' . $x;
$retval = $func();
if($retval) {
//send the administrator an e-mail
$email_tpl = get_intltext_template("update_fail_eml.tpl");
$email_msg = replace_macros($email_tpl, array(
'$sitename' => $a->config['sitename'],
'$siteurl' => $a->get_baseurl(),
'$update' => $x,
'$error' => sprintf( t('Update %s failed. See error logs.'), $x)
));
$subject=sprintf(t('Update Error at %s'), $a->get_baseurl());
// mail($a->config['admin_email'], $subject, $text,
// 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
// . 'Content-type: text/plain; charset=UTF-8' . "\n"
// . 'Content-transfer-encoding: 8bit' );
// //try the logger
// logger('update failed: '.$ex->getMessage().EOL);
// }
// $db->excep(FALSE);
mail($a->config['admin_email'], $subject, $email_msg,
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
. 'Content-type: text/plain; charset=UTF-8' . "\n"
. 'Content-transfer-encoding: 8bit' );
//try the logger
logger('CRITICAL: Update Failed: '. $x);
}
else
set_config('database','update_' . $x, 'success');
}
}
set_config('system','build', DB_UPDATE_VERSION);
@ -725,9 +733,10 @@ if(! function_exists('check_config')) {
foreach($installed as $i) {
if(! in_array($i['name'],$plugins_arr)) {
uninstall_plugin($i['name']);
}
else
}
else {
$installed_arr[] = $i['name'];
}
}
}
@ -1463,16 +1472,19 @@ if(! function_exists('profile_tabs')){
'label'=>t('Status'),
'url' => $url,
'sel' => ((!isset($tab)&&$a->argv[0]=='profile')?'active':''),
'title' => t('Status Messages and Posts'),
),
array(
'label' => t('Profile'),
'url' => $url.'/?tab=profile',
'sel' => ((isset($tab) && $tab=='profile')?'active':''),
'title' => t('Profile Details'),
),
array(
'label' => t('Photos'),
'url' => $a->get_baseurl() . '/photos/' . $nickname,
'sel' => ((!isset($tab)&&$a->argv[0]=='photos')?'active':''),
'title' => t('Photo Albums'),
),
);
@ -1481,11 +1493,13 @@ if(! function_exists('profile_tabs')){
'label' => t('Events'),
'url' => $a->get_baseurl() . '/events',
'sel' =>((!isset($tab)&&$a->argv[0]=='events')?'active':''),
'title' => t('Events and Calendar'),
);
$tabs[] = array(
'label' => t('Personal Notes'),
'url' => $a->get_baseurl() . '/notes',
'sel' =>((!isset($tab)&&$a->argv[0]=='notes')?'active':''),
'title' => t('Only You Can See This'),
);
}
@ -1505,6 +1519,15 @@ function get_my_url() {
return false;
}
function zrl_init(&$a) {
$tmp_str = get_my_url();
if(validate_url($tmp_str)) {
proc_run('php','include/gprobe.php',bin2hex($tmp_str));
$arr = array('zrl' => $tmp_str, 'url' => $a->cmd);
call_hooks('zrl_init',$arr);
}
}
function zrl($s,$force = false) {
if(! strlen($s))
return $s;

View File

@ -16,9 +16,11 @@ CREATE TABLE IF NOT EXISTS `addon` (
`name` char(255) NOT NULL,
`version` char(255) NOT NULL,
`installed` tinyint(1) NOT NULL DEFAULT '0',
`hidden` tinyint(1) NOT NULL DEFAULT '0',
`timestamp` bigint(20) NOT NULL DEFAULT '0',
`plugin_admin` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
PRIMARY KEY (`id`),
KEY `hidden` (`hidden`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
@ -172,6 +174,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
`writable` tinyint(1) NOT NULL DEFAULT '0',
`forum` tinyint(1) NOT NULL DEFAULT '0',
`hidden` tinyint(1) NOT NULL DEFAULT '0',
`archive` tinyint(1) NOT NULL DEFAULT '0',
`pending` tinyint(1) NOT NULL DEFAULT '1',
`rating` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0-5 reputation, 0 unknown, 1 call police, 5 inscrutable',
`reason` text NOT NULL COMMENT 'why a rating was given - will help friends decide to make friends or not',
@ -197,6 +200,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
KEY `nurl` (`nurl`),
KEY `pending` (`pending`),
KEY `hidden` (`hidden`),
KEY `archive` (`archive`),
KEY `forum` (`forum`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
@ -380,11 +384,13 @@ CREATE TABLE IF NOT EXISTS `glink` (
`cid` int(11) NOT NULL,
`uid` int(11) NOT NULL,
`gcid` int(11) NOT NULL,
`zcid` int(11) NOT NULL,
`updated` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `cid` (`cid`),
KEY `uid` (`uid`),
KEY `gcid` (`gcid`),
KEY `zcid` (`zcid`),
KEY `updated` (`updated`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
@ -1017,9 +1023,11 @@ CREATE TABLE IF NOT EXISTS `user` (
`pwdreset` char(255) NOT NULL,
`maxreq` int(11) NOT NULL DEFAULT '10',
`expire` int(10) unsigned NOT NULL DEFAULT '0',
`account_removed` tinyint(1) NOT NULL DEFAULT '0',
`account_expired` tinyint(1) NOT NULL DEFAULT '0',
`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',
`service_class` char(32) NOT NULL,
`allow_cid` mediumtext NOT NULL,
`allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL,
@ -1034,7 +1042,9 @@ CREATE TABLE IF NOT EXISTS `user` (
KEY `blocked` (`blocked`),
KEY `verified` (`verified`),
KEY `unkmail` (`unkmail`),
KEY `cntunkmail` (`cntunkmail`)
KEY `cntunkmail` (`cntunkmail`),
KEY `account_removed` (`account_removed`),
KEY `service_class` (`service_class`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -51,6 +51,21 @@ function user_remove($uid) {
function contact_remove($id) {
$r = q("select uid from contact where id = %d limit 1",
intval($id)
);
if((! count($r)) || (! intval($r[0]['uid'])))
return;
$archive = get_pconfig($r[0]['uid'], 'system','archive_removed_contacts');
if($archive) {
q("update contact set `archive` = 1, `network` = 'none', `writable` = 0 where id = %d limit 1",
intval($id)
);
return;
}
q("DELETE FROM `contact` WHERE `id` = %d LIMIT 1",
intval($id)
);

View File

@ -282,7 +282,7 @@ function scrape_feed($url) {
}
}
if(! $basename)
$basename = substr($url,0,strrpos($url,'/')) . '/';
$basename = implode('/', array_slice(explode('/',$url),0,3)) . '/';
$items = $dom->getElementsByTagName('link');

View File

@ -122,7 +122,7 @@ function contact_selector($selname, $selclass, $preselected = false, $options) {
$o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"" . $x['size'] . "$\" $tabindex >\r\n";
$r = q("SELECT `id`, `name`, `url`, `network` FROM `contact`
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != ''
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
$sql_extra
ORDER BY `name` ASC ",
intval(local_user())
@ -188,7 +188,7 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
$o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\" $tabindex >\r\n";
$r = q("SELECT `id`, `name`, `url`, `network` FROM `contact`
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != ''
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
$sql_extra
ORDER BY `name` ASC ",
intval(local_user())

View File

@ -380,7 +380,7 @@
$nick = $name;
// Generating a random ID
if (!array_key_exists($nick, $usercache))
if (is_null($usercache[$nick]) or !array_key_exists($nick, $usercache))
$usercache[$nick] = mt_rand(2000000, 2100000);
$ret = array(

View File

@ -14,22 +14,40 @@
}
public static function set($key,$value) {
$r = q("SELECT * FROM `cache` WHERE `k`='%s' limit 1",
dbesc($key)
);
if(count($r)) {
q("UPDATE `cache` SET `v` = '%s', `updated = '%s' WHERE `k` = '%s' limit 1",
dbesc($value),
dbesc(datetime_convert()),
dbesc($key));
}
else {
q("INSERT INTO `cache` (`k`,`v`,`updated`) VALUES ('%s','%s','%s')",
q("REPLACE INTO `cache` (`k`,`v`,`updated`) VALUES ('%s','%s','%s')",
dbesc($key),
dbesc($value),
dbesc(datetime_convert()));
}
}
/*
*
* Leaving this legacy code temporaily to see how REPLACE fares
* as opposed to non-atomic checks when faced with fast moving key duplication.
* As a MySQL extension it isn't portable, but we're not yet very portable.
*/
/*
* $r = q("SELECT * FROM `cache` WHERE `k`='%s' limit 1",
* dbesc($key)
* );
* if(count($r)) {
* q("UPDATE `cache` SET `v` = '%s', `updated = '%s' WHERE `k` = '%s' limit 1",
* dbesc($value),
* dbesc(datetime_convert()),
* dbesc($key));
* }
* else {
* q("INSERT INTO `cache` (`k`,`v`,`updated`) VALUES ('%s','%s','%s')",
* dbesc($key),
* dbesc($value),
* dbesc(datetime_convert()));
* }
* }
*/
public static function clear(){
q("DELETE FROM `cache` WHERE `updated` < '%s'",

View File

@ -133,3 +133,59 @@ function categories_widget($baseurl,$selected = '') {
));
}
function common_friends_visitor_widget($profile_uid) {
$a = get_app();
if(local_user() == $profile_uid)
return;
$cid = $zcid = 0;
if(can_write_wall($a,$profile_uid))
$cid = remote_user();
else {
if(get_my_url()) {
$r = q("select id from contact where nurl = '%s' and uid = %d limit 1",
dbesc(normalise_link(get_my_url())),
intval($profile_uid)
);
if(count($r))
$cid = $r[0]['id'];
else {
$r = q("select id from gcontact where nurl = '%s' limit 1",
dbesc(normalise_link(get_my_url()))
);
if(count($r))
$zcid = $r[0]['id'];
}
}
}
if($cid == 0 && $zcid == 0)
return;
require_once('include/socgraph.php');
if($cid)
$t = count_common_friends($profile_uid,$cid);
else
$t = count_common_friends_zcid($profile_uid,$zcid);
if(! $t)
return;
if($cid)
$r = common_friends($profile_uid,$cid,0,5,true);
else
$r = common_friends_zcid($profile_uid,$zcid,0,5,true);
return replace_macros(get_markup_template('remote_friends_common.tpl'), array(
'$desc' => sprintf( tt("%d contact in common", "%d contacts in common", $t), $t),
'$base' => $a->get_baseurl(),
'$uid' => $profile_uid,
'$cid' => $cid,
'$more' => t('show more'),
'$items' => $r
));
};

View File

@ -75,22 +75,28 @@ class dba {
if((! $this->db) || (! $this->connected))
return false;
$this->error = '';
if($this->mysqli)
$result = @$this->db->query($sql);
else
$result = @mysql_query($sql,$this->db);
if($this->mysqli) {
if($this->db->errno)
$this->error = $this->db->error;
}
elseif(mysql_errno($this->db))
$this->error = mysql_error($this->db);
if(strlen($this->error)) {
logger('dba: ' . $this->error);
}
if($this->debug) {
$mesg = '';
if($this->mysqli) {
if($this->db->errno)
logger('dba: ' . $this->db->error);
}
elseif(mysql_errno($this->db))
logger('dba: ' . mysql_error($this->db));
if($result === false)
$mesg = 'false';
elseif($result === true)
@ -102,7 +108,9 @@ class dba {
$mesg = mysql_num_rows($result) . ' results' . EOL;
}
$str = 'SQL = ' . printable($sql) . EOL . 'SQL returned ' . $mesg . EOL;
$str = 'SQL = ' . printable($sql) . EOL . 'SQL returned ' . $mesg
. (($this->error) ? ' error: ' . $this->error : '')
. EOL;
logger('dba: ' . $str );
}
@ -114,9 +122,9 @@ class dba {
*/
if($result === false) {
logger('dba: ' . printable($sql) . ' returned false.');
logger('dba: ' . printable($sql) . ' returned false.' . "\n" . $this->error);
if(file_exists('dbfail.out'))
file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . ' returned false' . "\n", FILE_APPEND);
file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . ' returned false' . "\n" . $this->error . "\n", FILE_APPEND);
}
if(($result === true) || ($result === false))

View File

@ -51,6 +51,17 @@ function delivery_run($argv, $argc){
return;
}
$maxsysload = intval(get_config('system','maxloadavg'));
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.
q("delete from deliverq where cmd = '%s' and item = %d and contact = %d limit 1",

View File

@ -402,8 +402,8 @@ class enotify {
*/
static public function send($params) {
$fromName = email_header_encode($params['fromName'],'UTF-8');
$messageSubject = email_header_encode($params['messageSubject'],'UTF-8');
$fromName = email_header_encode(html_entity_decode($params['fromName'],ENT_QUOTES,'UTF-8'),'UTF-8');
$messageSubject = email_header_encode(html_entity_decode($params['messageSubject'],ENT_QUOTES,'UTF-8'),'UTF-8');
// generate a mime boundary
$mimeBoundary =rand(0,9)."-"

65
include/gprobe.php Normal file
View File

@ -0,0 +1,65 @@
<?php
require_once("boot.php");
require_once('include/Scrape.php');
require_once('include/socgraph.php');
function gprobe_run($argv, $argc){
global $a, $db;
if(is_null($a)) {
$a = new App;
}
if(is_null($db)) {
@include(".htconfig.php");
require_once("dba.php");
$db = new dba($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
};
require_once('include/session.php');
require_once('include/datetime.php');
load_config('config');
load_config('system');
$a->set_baseurl(get_config('system','url'));
load_hooks();
if($argc != 2)
return;
$url = hex2bin($argv[1]);
$r = q("select * from gcontact where nurl = '%s' limit 1",
dbesc(normalise_link($url))
);
if(! count($r)) {
$arr = probe_url($url);
if(count($arr) && x($arr,'network') && $arr['network'] === NETWORK_DFRN) {
q("insert into `gcontact` (`name`,`url`,`nurl`,`photo`)
values ( '%s', '%s', '%s', '%s') ",
dbesc($arr['name']),
dbesc($arr['url']),
dbesc(normalise_link($arr['url'])),
dbesc($arr['photo'])
);
}
$r = q("select * from gcontact where nurl = '%s' limit 1",
dbesc(normalise_link($url))
);
}
if(count($r))
poco_load(0,0,$r[0]['id'], str_replace('/profile/','/poco/',$r[0]['url']));
return;
}
if (array_search(__file__,get_included_files())===0){
gprobe_run($argv,$argc);
killme();
}

View File

@ -2227,10 +2227,10 @@ function local_delivery($importer,$data) {
logger('local_delivery: received remote comment');
$is_like = false;
// remote reply to our post. Import and then notify everybody else.
$datarray = get_atom_elements($feed,$item);
$r = q("SELECT `id`, `uid`, `last-child`, `edited`, `body` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
$r = q("SELECT `id`, `uid`, `last-child`, `edited`, `body` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
dbesc($item_id),
intval($importer['importer_uid'])
);
@ -2266,14 +2266,22 @@ function local_delivery($importer,$data) {
// return 0;
// }
// our user with $importer['importer_uid'] is the owner
$own = q("select name,url,thumb from contact where uid = %d and self = 1 limit 1",
intval($importer['importer_uid'])
);
$datarray['type'] = 'remote-comment';
$datarray['wall'] = 1;
$datarray['parent-uri'] = $parent_uri;
$datarray['uid'] = $importer['importer_uid'];
$datarray['owner-name'] = $r[0]['name'];
$datarray['owner-link'] = $r[0]['url'];
$datarray['owner-avatar'] = $r[0]['thumb'];
$datarray['owner-name'] = $own[0]['name'];
$datarray['owner-link'] = $own[0]['url'];
$datarray['owner-avatar'] = $own[0]['thumb'];
$datarray['contact-id'] = $importer['id'];
if(($datarray['verb'] === ACTIVITY_LIKE) || ($datarray['verb'] === ACTIVITY_DISLIKE)) {
$is_like = true;
$datarray['type'] = 'activity';
@ -2290,26 +2298,34 @@ function local_delivery($importer,$data) {
}
if(($datarray['verb'] === ACTIVITY_TAG) && ($datarray['object-type'] === ACTIVITY_OBJ_TAGTERM)) {
$xo = parse_xml_string($datarray['object'],false);
$xt = parse_xml_string($datarray['target'],false);
if(($xt->type == ACTIVITY_OBJ_NOTE) && ($xt->id == $r[0]['uri'])) {
if(($xt->type == ACTIVITY_OBJ_NOTE) && ($xt->id)) {
// fetch the parent item
$tagp = q("select * from item where uri = '%s' and uid = %d limit 1",
dbesc($xt->id),
intval($importer['importer_uid'])
);
if(! count($tagp))
continue;
// extract tag, if not duplicate, and this user allows tags, add to parent item
if($xo->id && $xo->content) {
$newtag = '#[url=' . $xo->id . ']'. $xo->content . '[/url]';
if(! (stristr($r[0]['tag'],$newtag))) {
if(! (stristr($tagp[0]['tag'],$newtag))) {
$i = q("SELECT `blocktags` FROM `user` where `uid` = %d LIMIT 1",
intval($importer['importer_uid'])
);
if(count($i) && ! ($i[0]['blocktags'])) {
q("UPDATE item SET tag = '%s' WHERE id = %d LIMIT 1",
dbesc($r[0]['tag'] . (strlen($r[0]['tag']) ? ',' : '') . $newtag),
intval($r[0]['id'])
if(count($i) && ! intval($i[0]['blocktags'])) {
q("UPDATE item SET tag = '%s', `edited` = '%s' WHERE id = %d LIMIT 1",
dbesc($tagp[0]['tag'] . (strlen($tagp[0]['tag']) ? ',' : '') . $newtag),
intval($tagp[0]['id']),
dbesc(datetime_convert())
);
}
}
@ -3013,32 +3029,7 @@ function item_expire($uid,$days) {
if($expire_items==0 && $item['type']!='note')
continue;
$r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
dbesc(datetime_convert()),
intval($item['id'])
);
$r = q("DELETE FROM item_id where iid in (select id from item where parent = %d) and uid = %d",
intval($item['id']),
intval($uid)
);
$r = q("DELETE FROM sign where iid in (select id from item where parent = %d) and uid = %d",
intval($item['id']),
intval($uid)
);
// kill the kids
$r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d ",
dbesc(datetime_convert()),
dbesc(datetime_convert()),
dbesc($item['parent-uri']),
intval($item['uid'])
);
drop_item($item['id'],false);
}
proc_run('php',"include/notifier.php","expire","$uid");
@ -3100,6 +3091,25 @@ function drop_item($id,$interactive = true) {
intval($item['id'])
);
// clean up categories and tags so they don't end up as orphans
$matches = false;
$cnt = preg_match_all('/<(.*?)>/',$item['file'],$matches,PREG_SET_ORDER);
if($cnt) {
foreach($matches as $mtch) {
file_tag_unsave_file($item['uid'],$item['id'],$mtch[1],true);
}
}
$matches = false;
$cnt = preg_match_all('/\[(.*?)\]/',$item['file'],$matches,PREG_SET_ORDER);
if($cnt) {
foreach($matches as $mtch) {
file_tag_unsave_file($item['uid'],$item['id'],$mtch[1],false);
}
}
// If item is a link to a photo resource, nuke all the associated photos
// (visitors will not have photo resources)
// This only applies to photos uploaded from the photos page. Photos inserted into a post do not
@ -3123,6 +3133,17 @@ function drop_item($id,$interactive = true) {
// ignore the result
}
// clean up item_id and sign meta-data tables
$r = q("DELETE FROM item_id where iid in (select id from item where parent = %d and uid = %d)",
intval($item['id']),
intval($item['uid'])
);
$r = q("DELETE FROM sign where iid in (select id from item where parent = %d and uid = %d)",
intval($item['id']),
intval($item['uid'])
);
// If it's the parent of a comment thread, kill all the kids
@ -3155,7 +3176,7 @@ function drop_item($id,$interactive = true) {
}
}
$drop_id = intval($item['id']);
// send the notification upstream/downstream as the case may be
if(! $interactive)

View File

@ -583,7 +583,7 @@ function fetch_xrd_links($url) {
// Take a URL from the wild, prepend http:// if necessary
// and check DNS to see if it's real
// and check DNS to see if it's real (or check if is a valid IP address)
// return true if it's OK, false if something is wrong with it
if(! function_exists('validate_url')) {
@ -596,7 +596,7 @@ function validate_url(&$url) {
$url = 'http://' . $url;
$h = @parse_url($url);
if(($h) && (dns_get_record($h['host'], DNS_A + DNS_CNAME + DNS_PTR))) {
if(($h) && (dns_get_record($h['host'], DNS_A + DNS_CNAME + DNS_PTR) || filter_var($h['host'], FILTER_VALIDATE_IP) )) {
return true;
}
return false;
@ -611,7 +611,7 @@ function validate_email($addr) {
return false;
$h = substr($addr,strpos($addr,'@') + 1);
if(($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_PTR + DNS_MX))) {
if(($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_PTR + DNS_MX) || filter_var($h['host'], FILTER_VALIDATE_IP) )) {
return true;
}
return false;

View File

@ -47,7 +47,7 @@ function notifier_run($argv, $argc){
$a->set_baseurl(get_config('system','url'));
logger('notifier: invoked: ' . print_r($argv,true));
logger('notifier: invoked: ' . print_r($argv,true), LOGGER_DEBUG);
$cmd = $argv[1];
@ -304,7 +304,7 @@ function notifier_run($argv, $argc){
$conversant_str = dbesc(implode(', ',$conversants));
}
$r = q("SELECT * FROM `contact` WHERE `id` IN ( $conversant_str ) AND `blocked` = 0 AND `pending` = 0");
$r = q("SELECT * FROM `contact` WHERE `id` IN ( $conversant_str ) AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0");
if(count($r))
$contacts = $r;
@ -520,7 +520,8 @@ function notifier_run($argv, $argc){
`user`.*
FROM `contact`
LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`
WHERE `contact`.`blocked` = 0 AND `contact`.`pending` = 0
WHERE `contact`.`blocked` = 0 AND `contact`.`archive` = 0
AND `contact`.`pending` = 0
AND `contact`.`network` = '%s' AND `user`.`nickname` = '%s'
$sql_extra
AND `user`.`account_expired` = 0 LIMIT 1",
@ -769,7 +770,7 @@ function notifier_run($argv, $argc){
);
$r2 = q("SELECT `id`, `name`,`network` FROM `contact`
WHERE `network` in ( '%s', '%s') AND `uid` = %d AND `blocked` = 0 AND `pending` = 0
WHERE `network` in ( '%s', '%s') AND `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
AND `rel` != %d order by rand() ",
dbesc(NETWORK_DFRN),
dbesc(NETWORK_MAIL2),
@ -832,6 +833,8 @@ function notifier_run($argv, $argc){
}
logger('notifier: calling hooks', LOGGER_DEBUG);
if($normal_mode)
call_hooks('notifier_normal',$target_item);

519
include/onepoll.php Normal file
View File

@ -0,0 +1,519 @@
<?php
require_once("boot.php");
function onepoll_run($argv, $argc){
global $a, $db;
if(is_null($a)) {
$a = new App;
}
if(is_null($db)) {
@include(".htconfig.php");
require_once("dba.php");
$db = new dba($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
};
require_once('include/session.php');
require_once('include/datetime.php');
require_once('library/simplepie/simplepie.inc');
require_once('include/items.php');
require_once('include/Contact.php');
require_once('include/email.php');
require_once('include/socgraph.php');
require_once('include/pidfile.php');
load_config('config');
load_config('system');
$a->set_baseurl(get_config('system','url'));
load_hooks();
logger('onepoll: start');
$abandon_days = intval(get_config('system','account_abandon_days'));
if($abandon_days < 1)
$abandon_days = 0;
$manual_id = 0;
$generation = 0;
$hub_update = false;
$force = false;
$restart = false;
if(($argc > 1) && (intval($argv[1])))
$contact_id = intval($argv[1]);
if(! $contact_id) {
logger('onepoll: no contact');
return;
}
$d = datetime_convert();
// Only poll from those with suitable relationships,
// and which have a polling address and ignore Diaspora since
// we are unable to match those posts with a Diaspora GUID and prevent duplicates.
$abandon_sql = (($abandon_days)
? sprintf(" AND `user`.`login_date` > UTC_TIMESTAMP() - INTERVAL %d DAY ", intval($abandon_days))
: ''
);
$contacts = q("SELECT `contact`.* FROM `contact`
WHERE ( `rel` = %d OR `rel` = %d ) AND `poll` != ''
AND NOT `network` IN ( '%s', '%s' )
AND `contact`.`id` = %d
AND `self` = 0 AND `contact`.`blocked` = 0 AND `contact`.`readonly` = 0
AND `contact`.`archive` = 0 LIMIT 1",
intval(CONTACT_IS_SHARING),
intval(CONTACT_IS_FRIEND),
dbesc(NETWORK_DIASPORA),
dbesc(NETWORK_FACEBOOK),
intval($contact_id)
);
if(! count($contacts)) {
return;
}
$contact = $contacts[0];
$xml = false;
$t = $contact['last-update'];
if($contact['subhub']) {
$interval = get_config('system','pushpoll_frequency');
$contact['priority'] = (($interval !== false) ? intval($interval) : 3);
$hub_update = false;
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day"))
$hub_update = true;
}
else
$hub_update = false;
$importer_uid = $contact['uid'];
$r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` LEFT JOIN `user` on `contact`.`uid` = `user`.`uid` WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
intval($importer_uid)
);
if(! count($r))
return;
$importer = $r[0];
logger("onepoll: poll: ({$contact['id']}) IMPORTER: {$importer['name']}, CONTACT: {$contact['name']}");
$last_update = (($contact['last-update'] === '0000-00-00 00:00:00')
? datetime_convert('UTC','UTC','now - 7 days', ATOM_TIME)
: datetime_convert('UTC','UTC',$contact['last-update'], ATOM_TIME)
);
if($contact['network'] === NETWORK_DFRN) {
$idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
if(intval($contact['duplex']) && $contact['dfrn-id'])
$idtosend = '0:' . $orig_id;
if(intval($contact['duplex']) && $contact['issued-id'])
$idtosend = '1:' . $orig_id;
// they have permission to write to us. We already filtered this in the contact query.
$perm = 'rw';
$url = $contact['poll'] . '?dfrn_id=' . $idtosend
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION
. '&type=data&last_update=' . $last_update
. '&perm=' . $perm ;
$handshake_xml = fetch_url($url);
logger('onepoll: handshake with url ' . $url . ' returns xml: ' . $handshake_xml, LOGGER_DATA);
if(! $handshake_xml) {
logger("poller: $url appears to be dead - marking for death ");
// dead connection - might be a transient event, or this might
// mean the software was uninstalled or the domain expired.
// Will keep trying for one month.
mark_for_death($contact);
// set the last-update so we don't keep polling
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
return;
}
if(! strstr($handshake_xml,'<?xml')) {
logger('poller: response from ' . $url . ' did not contain XML.');
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
return;
}
$res = parse_xml_string($handshake_xml);
if(intval($res->status) == 1) {
logger("poller: $url replied status 1 - marking for death ");
// we may not be friends anymore. Will keep trying for one month.
// set the last-update so we don't keep polling
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
mark_for_death($contact);
}
else {
if($contact['term-date'] != '0000-00-00 00:00:00') {
logger("poller: $url back from the dead - removing mark for death");
unmark_for_death($contact);
}
}
if((intval($res->status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id)))
return;
if(((float) $res->dfrn_version > 2.21) && ($contact['poco'] == '')) {
q("update contact set poco = '%s' where id = %d limit 1",
dbesc(str_replace('/profile/','/poco/', $contact['url'])),
intval($contact['id'])
);
}
$postvars = array();
$sent_dfrn_id = hex2bin((string) $res->dfrn_id);
$challenge = hex2bin((string) $res->challenge);
$final_dfrn_id = '';
if(($contact['duplex']) && strlen($contact['prvkey'])) {
openssl_private_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['prvkey']);
openssl_private_decrypt($challenge,$postvars['challenge'],$contact['prvkey']);
}
else {
openssl_public_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['pubkey']);
openssl_public_decrypt($challenge,$postvars['challenge'],$contact['pubkey']);
}
$final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.'));
if(strpos($final_dfrn_id,':') == 1)
$final_dfrn_id = substr($final_dfrn_id,2);
if($final_dfrn_id != $orig_id) {
logger('poller: ID did not decode: ' . $contact['id'] . ' orig: ' . $orig_id . ' final: ' . $final_dfrn_id);
// did not decode properly - cannot trust this site
return;
}
$postvars['dfrn_id'] = $idtosend;
$postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION;
$postvars['perm'] = 'rw';
$xml = post_url($contact['poll'],$postvars);
}
elseif(($contact['network'] === NETWORK_OSTATUS)
|| ($contact['network'] === NETWORK_DIASPORA)
|| ($contact['network'] === NETWORK_FEED) ) {
// Upgrading DB fields from an older Friendica version
// Will only do this once per notify-enabled OStatus contact
// or if relationship changes
$stat_writeable = ((($contact['notify']) && ($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['rel'] == CONTACT_IS_FRIEND)) ? 1 : 0);
if($stat_writeable != $contact['writable']) {
q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1",
intval($stat_writeable),
intval($contact['id'])
);
}
// Are we allowed to import from this person?
if($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['blocked'] || $contact['readonly'])
return;
$xml = fetch_url($contact['poll']);
}
elseif($contact['network'] === NETWORK_MAIL || $contact['network'] === NETWORK_MAIL2) {
logger("onepoll: mail: Fetching", LOGGER_DEBUG);
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
if($mail_disabled)
return;
logger("onepoll: Mail: Enabled", LOGGER_DEBUG);
$mbox = null;
$x = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1",
intval($importer_uid)
);
$mailconf = q("SELECT * FROM `mailacct` WHERE `server` != '' AND `uid` = %d LIMIT 1",
intval($importer_uid)
);
if(count($x) && count($mailconf)) {
$mailbox = construct_mailbox_name($mailconf[0]);
$password = '';
openssl_private_decrypt(hex2bin($mailconf[0]['pass']),$password,$x[0]['prvkey']);
$mbox = email_connect($mailbox,$mailconf[0]['user'],$password);
unset($password);
logger("Mail: Connect");
if($mbox) {
q("UPDATE `mailacct` SET `last_check` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($mailconf[0]['id']),
intval($importer_uid)
);
}
}
if($mbox) {
$msgs = email_poll($mbox,$contact['addr']);
if(count($msgs)) {
logger("Mail: Parsing ".count($msgs)." mails.", LOGGER_DEBUG);
foreach($msgs as $msg_uid) {
logger("Mail: Parsing mail ".$msg_uid, LOGGER_DATA);
$datarray = array();
$meta = email_msg_meta($mbox,$msg_uid);
$headers = email_msg_headers($mbox,$msg_uid);
// look for a 'references' header and try and match with a parent item we have locally.
$raw_refs = ((x($headers,'references')) ? str_replace("\t",'',$headers['references']) : '');
$datarray['uri'] = msgid2iri(trim($meta->message_id,'<>'));
if($raw_refs) {
$refs_arr = explode(' ', $raw_refs);
if(count($refs_arr)) {
for($x = 0; $x < count($refs_arr); $x ++)
$refs_arr[$x] = "'" . msgid2iri(str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x]))) . "'";
}
$qstr = implode(',',$refs_arr);
$r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `uri` IN ( $qstr ) AND `uid` = %d LIMIT 1",
intval($importer_uid)
);
if(count($r))
$datarray['parent-uri'] = $r[0]['uri'];
}
if(! x($datarray,'parent-uri'))
$datarray['parent-uri'] = $datarray['uri'];
// Have we seen it before?
$r = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
intval($importer_uid),
dbesc($datarray['uri'])
);
if(count($r)) {
// logger("Mail: Seen before ".$msg_uid);
if($meta->deleted && ! $r[0]['deleted']) {
q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($r[0]['id'])
);
}
switch ($mailconf[0]['action']) {
case 0:
break;
case 1:
logger("Mail: Deleting ".$msg_uid);
imap_delete($mbox, $msg_uid, FT_UID);
break;
case 2:
logger("Mail: Mark as seen ".$msg_uid);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
break;
case 3:
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
if ($mailconf[0]['movetofolder'] != "")
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
break;
}
continue;
}
// Decoding the header
$subject = imap_mime_header_decode($meta->subject);
$datarray['title'] = "";
foreach($subject as $subpart)
if ($subpart->charset != "default")
$datarray['title'] .= iconv($subpart->charset, 'UTF-8//IGNORE', $subpart->text);
else
$datarray['title'] .= $subpart->text;
$datarray['title'] = notags(trim($datarray['title']));
//$datarray['title'] = notags(trim($meta->subject));
$datarray['created'] = datetime_convert('UTC','UTC',$meta->date);
// Is it reply?
$reply = ((substr(strtolower($datarray['title']), 0, 3) == "re:") or
(substr(strtolower($datarray['title']), 0, 3) == "re-") or
(raw_refs != ""));
$r = email_get_msg($mbox,$msg_uid, $reply);
if(! $r) {
logger("Mail: can't fetch msg ".$msg_uid);
continue;
}
$datarray['body'] = escape_tags($r['body']);
logger("Mail: Importing ".$msg_uid);
// some mailing lists have the original author as 'from' - add this sender info to msg body.
// todo: adding a gravatar for the original author would be cool
if(! stristr($meta->from,$contact['addr'])) {
$from = imap_mime_header_decode($meta->from);
$fromdecoded = "";
foreach($from as $frompart)
if ($frompart->charset != "default")
$fromdecoded .= iconv($frompart->charset, 'UTF-8//IGNORE', $frompart->text);
else
$fromdecoded .= $frompart->text;
$datarray['body'] = "[b]".t('From: ') . escape_tags($fromdecoded) . "[/b]\n\n" . $datarray['body'];
}
$datarray['uid'] = $importer_uid;
$datarray['contact-id'] = $contact['id'];
if($datarray['parent-uri'] === $datarray['uri'])
$datarray['private'] = 1;
if(($contact['network'] === NETWORK_MAIL) && (! get_pconfig($importer_uid,'system','allow_public_email_replies'))) {
$datarray['private'] = 1;
$datarray['allow_cid'] = '<' . $contact['id'] . '>';
}
$datarray['author-name'] = $contact['name'];
$datarray['author-link'] = 'mailbox';
$datarray['author-avatar'] = $contact['photo'];
$stored_item = item_store($datarray);
q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d",
dbesc($datarray['parent-uri']),
intval($importer_uid)
);
q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
intval($stored_item)
);
switch ($mailconf[0]['action']) {
case 0:
break;
case 1:
logger("Mail: Deleting ".$msg_uid);
imap_delete($mbox, $msg_uid, FT_UID);
break;
case 2:
logger("Mail: Mark as seen ".$msg_uid);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
break;
case 3:
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
if ($mailconf[0]['movetofolder'] != "")
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
break;
}
}
}
imap_close($mbox);
}
}
elseif($contact['network'] === NETWORK_FACEBOOK) {
// This is picked up by the Facebook plugin on a cron hook.
// Ignored here.
}
if($xml) {
logger('poller: received xml : ' . $xml, LOGGER_DATA);
if(! strstr($xml,'<?xml')) {
logger('poller: post_handshake: response from ' . $url . ' did not contain XML.');
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
return;
}
consume_feed($xml,$importer,$contact,$hub,1,1);
// do it twice. Ensures that children of parents which may be later in the stream aren't tossed
consume_feed($xml,$importer,$contact,$hub,1,2);
$hubmode = 'subscribe';
if($contact['network'] === NETWORK_DFRN || $contact['blocked'] || $contact['readonly'])
$hubmode = 'unsubscribe';
if((strlen($hub)) && ($hub_update) && ($contact['rel'] != CONTACT_IS_FOLLOWER)) {
logger('poller: hub ' . $hubmode . ' : ' . $hub . ' contact name : ' . $contact['name'] . ' local user : ' . $importer['name']);
$hubs = explode(',', $hub);
if(count($hubs)) {
foreach($hubs as $h) {
$h = trim($h);
if(! strlen($h))
continue;
subscribe_to_hub($h,$importer,$contact,$hubmode);
}
}
}
}
$updated = datetime_convert();
$r = q("UPDATE `contact` SET `last-update` = '%s', `success_update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc($updated),
dbesc($updated),
intval($contact['id'])
);
// load current friends if possible.
if($contact['poco']) {
$r = q("SELECT count(*) as total from glink
where `cid` = %d and updated > UTC_TIMESTAMP() - INTERVAL 1 DAY",
intval($contact['id'])
);
}
if(count($r)) {
if(! $r[0]['total']) {
poco_load($contact['id'],$importer_uid,0,$contact['poco']);
}
}
return;
}
if (array_search(__file__,get_included_files())===0){
onepoll_run($argv,$argc);
killme();
}

View File

@ -5,7 +5,7 @@
if (! function_exists('uninstall_plugin')){
function uninstall_plugin($plugin){
logger("Addons: uninstalling " . $plugin);
q("DELETE FROM `addon` WHERE `name` = '%s' LIMIT 1",
q("DELETE FROM `addon` WHERE `name` = '%s' ",
dbesc($plugin)
);
@ -37,6 +37,16 @@ function install_plugin($plugin) {
intval($t),
$plugin_admin
);
// we can add the following with the previous SQL
// once most site tables have been updated.
// This way the system won't fall over dead during the update.
if(file_exists('addon/' . $plugin . '/.hidden')) {
q("update addon set hidden = 1 where name = '%s' limit 1",
dbesc($plugin)
);
}
return true;
}
else {

View File

@ -30,6 +30,17 @@ function poller_run($argv, $argc){
load_config('config');
load_config('system');
$maxsysload = intval(get_config('system','maxloadavg'));
if($maxsysload < 1)
$maxsysload = 50;
if(function_exists('sys_getloadavg')) {
$load = sys_getloadavg();
if(intval($load[0]) > $maxsysload) {
logger('system: load ' . $load . ' too high. Poller deferred to next scheduled run.');
return;
}
}
$lockpath = get_config('system','lockpath');
if ($lockpath != '') {
$pidfile = new pidfile($lockpath, 'poller.lck');
@ -39,6 +50,8 @@ function poller_run($argv, $argc){
}
}
$a->set_baseurl(get_config('system','url'));
load_hooks();
@ -113,6 +126,8 @@ function poller_run($argv, $argc){
$force = true;
}
$interval = ((get_config('system','delivery_interval') === false) ? 3 : intval(get_config('system','delivery_interval')));
$sql_extra = (($manual_id) ? " AND `id` = $manual_id " : "");
reload_plugins();
@ -136,6 +151,7 @@ function poller_run($argv, $argc){
AND NOT `network` IN ( '%s', '%s' )
$sql_extra
AND `self` = 0 AND `contact`.`blocked` = 0 AND `contact`.`readonly` = 0
AND `contact`.`archive` = 0
AND `user`.`account_expired` = 0 $abandon_sql ORDER BY RAND()",
intval(CONTACT_IS_SHARING),
intval(CONTACT_IS_FRIEND),
@ -224,440 +240,12 @@ function poller_run($argv, $argc){
continue;
}
// Check to see if we are running out of memory - if so spawn a new process and kill this one
$avail_memory = return_bytes(ini_get('memory_limit'));
$memused = memory_get_peak_usage(true);
if(intval($avail_memory)) {
if(($memused / $avail_memory) > 0.95) {
if($generation + 1 > 10) {
logger('poller: maximum number of spawns exceeded. Terminating.');
killme();
}
logger('poller: memory exceeded. ' . $memused . ' bytes used. Spawning new poll.');
proc_run('php', 'include/poller.php', 'restart', (string) $generation + 1);
killme();
}
}
$importer_uid = $contact['uid'];
$r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` LEFT JOIN `user` on `contact`.`uid` = `user`.`uid` WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
intval($importer_uid)
);
if(! count($r))
continue;
$importer = $r[0];
logger("poller: poll: ({$contact['id']}) IMPORTER: {$importer['name']}, CONTACT: {$contact['name']}");
$last_update = (($contact['last-update'] === '0000-00-00 00:00:00')
? datetime_convert('UTC','UTC','now - 30 days', ATOM_TIME)
: datetime_convert('UTC','UTC',$contact['last-update'], ATOM_TIME)
);
if($contact['network'] === NETWORK_DFRN) {
$idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
if(intval($contact['duplex']) && $contact['dfrn-id'])
$idtosend = '0:' . $orig_id;
if(intval($contact['duplex']) && $contact['issued-id'])
$idtosend = '1:' . $orig_id;
// they have permission to write to us. We already filtered this in the contact query.
$perm = 'rw';
$url = $contact['poll'] . '?dfrn_id=' . $idtosend
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION
. '&type=data&last_update=' . $last_update
. '&perm=' . $perm ;
$handshake_xml = fetch_url($url);
logger('poller: handshake with url ' . $url . ' returns xml: ' . $handshake_xml, LOGGER_DATA);
if(! $handshake_xml) {
logger("poller: $url appears to be dead - marking for death ");
// dead connection - might be a transient event, or this might
// mean the software was uninstalled or the domain expired.
// Will keep trying for one month.
mark_for_death($contact);
// set the last-update so we don't keep polling
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
continue;
}
if(! strstr($handshake_xml,'<?xml')) {
logger('poller: response from ' . $url . ' did not contain XML.');
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
continue;
}
$res = parse_xml_string($handshake_xml);
if(intval($res->status) == 1) {
logger("poller: $url replied status 1 - marking for death ");
// we may not be friends anymore. Will keep trying for one month.
// set the last-update so we don't keep polling
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
mark_for_death($contact);
}
else {
if($contact['term-date'] != '0000-00-00 00:00:00') {
logger("poller: $url back from the dead - removing mark for death");
unmark_for_death($contact);
}
}
if((intval($res->status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id)))
continue;
if(((float) $res->dfrn_version > 2.21) && ($contact['poco'] == '')) {
q("update contact set poco = '%s' where id = %d limit 1",
dbesc(str_replace('/profile/','/poco/', $contact['url'])),
intval($contact['id'])
);
}
$postvars = array();
$sent_dfrn_id = hex2bin((string) $res->dfrn_id);
$challenge = hex2bin((string) $res->challenge);
$final_dfrn_id = '';
if(($contact['duplex']) && strlen($contact['prvkey'])) {
openssl_private_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['prvkey']);
openssl_private_decrypt($challenge,$postvars['challenge'],$contact['prvkey']);
}
else {
openssl_public_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['pubkey']);
openssl_public_decrypt($challenge,$postvars['challenge'],$contact['pubkey']);
}
$final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.'));
if(strpos($final_dfrn_id,':') == 1)
$final_dfrn_id = substr($final_dfrn_id,2);
if($final_dfrn_id != $orig_id) {
logger('poller: ID did not decode: ' . $contact['id'] . ' orig: ' . $orig_id . ' final: ' . $final_dfrn_id);
// did not decode properly - cannot trust this site
continue;
}
$postvars['dfrn_id'] = $idtosend;
$postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION;
$postvars['perm'] = 'rw';
$xml = post_url($contact['poll'],$postvars);
}
elseif(($contact['network'] === NETWORK_OSTATUS)
|| ($contact['network'] === NETWORK_DIASPORA)
|| ($contact['network'] === NETWORK_FEED) ) {
// Upgrading DB fields from an older Friendica version
// Will only do this once per notify-enabled OStatus contact
// or if relationship changes
$stat_writeable = ((($contact['notify']) && ($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['rel'] == CONTACT_IS_FRIEND)) ? 1 : 0);
if($stat_writeable != $contact['writable']) {
q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1",
intval($stat_writeable),
intval($contact['id'])
);
}
// Are we allowed to import from this person?
if($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['blocked'] || $contact['readonly'])
continue;
$xml = fetch_url($contact['poll']);
}
elseif($contact['network'] === NETWORK_MAIL || $contact['network'] === NETWORK_MAIL2) {
logger("Mail: Fetching");
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
if($mail_disabled)
continue;
logger("Mail: Enabled");
$mbox = null;
$x = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1",
intval($importer_uid)
);
$mailconf = q("SELECT * FROM `mailacct` WHERE `server` != '' AND `uid` = %d LIMIT 1",
intval($importer_uid)
);
if(count($x) && count($mailconf)) {
$mailbox = construct_mailbox_name($mailconf[0]);
$password = '';
openssl_private_decrypt(hex2bin($mailconf[0]['pass']),$password,$x[0]['prvkey']);
$mbox = email_connect($mailbox,$mailconf[0]['user'],$password);
unset($password);
logger("Mail: Connect");
if($mbox) {
q("UPDATE `mailacct` SET `last_check` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($mailconf[0]['id']),
intval($importer_uid)
);
}
}
if($mbox) {
logger("Mail: mbox");
$msgs = email_poll($mbox,$contact['addr']);
if(count($msgs)) {
logger("Mail: Parsing ".count($msgs)." mails.");
foreach($msgs as $msg_uid) {
logger("Mail: Parsing mail ".$msg_uid);
$datarray = array();
$meta = email_msg_meta($mbox,$msg_uid);
$headers = email_msg_headers($mbox,$msg_uid);
// look for a 'references' header and try and match with a parent item we have locally.
$raw_refs = ((x($headers,'references')) ? str_replace("\t",'',$headers['references']) : '');
$datarray['uri'] = msgid2iri(trim($meta->message_id,'<>'));
if($raw_refs) {
$refs_arr = explode(' ', $raw_refs);
if(count($refs_arr)) {
for($x = 0; $x < count($refs_arr); $x ++)
$refs_arr[$x] = "'" . msgid2iri(str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x]))) . "'";
}
$qstr = implode(',',$refs_arr);
$r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `uri` IN ( $qstr ) AND `uid` = %d LIMIT 1",
intval($importer_uid)
);
if(count($r))
$datarray['parent-uri'] = $r[0]['uri'];
}
if(! x($datarray,'parent-uri'))
$datarray['parent-uri'] = $datarray['uri'];
// Have we seen it before?
$r = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
intval($importer_uid),
dbesc($datarray['uri'])
);
if(count($r)) {
logger("Mail: Seen before ".$msg_uid);
if($meta->deleted && ! $r[0]['deleted']) {
q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($r[0]['id'])
);
}
switch ($mailconf[0]['action']) {
case 0:
break;
case 1:
logger("Mail: Deleting ".$msg_uid);
imap_delete($mbox, $msg_uid, FT_UID);
break;
case 2:
logger("Mail: Mark as seen ".$msg_uid);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
break;
case 3:
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
if ($mailconf[0]['movetofolder'] != "")
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
break;
}
continue;
}
// Decoding the header
$subject = imap_mime_header_decode($meta->subject);
$datarray['title'] = "";
foreach($subject as $subpart)
if ($subpart->charset != "default")
$datarray['title'] .= iconv($subpart->charset, 'UTF-8//IGNORE', $subpart->text);
else
$datarray['title'] .= $subpart->text;
$datarray['title'] = notags(trim($datarray['title']));
//$datarray['title'] = notags(trim($meta->subject));
$datarray['created'] = datetime_convert('UTC','UTC',$meta->date);
// Is it reply?
$reply = ((substr(strtolower($datarray['title']), 0, 3) == "re:") or
(substr(strtolower($datarray['title']), 0, 3) == "re-") or
(raw_refs != ""));
$r = email_get_msg($mbox,$msg_uid, $reply);
if(! $r) {
logger("Mail: can't fetch msg ".$msg_uid);
continue;
}
$datarray['body'] = escape_tags($r['body']);
logger("Mail: Importing ".$msg_uid);
// some mailing lists have the original author as 'from' - add this sender info to msg body.
// todo: adding a gravatar for the original author would be cool
if(! stristr($meta->from,$contact['addr'])) {
$from = imap_mime_header_decode($meta->from);
$fromdecoded = "";
foreach($from as $frompart)
if ($frompart->charset != "default")
$fromdecoded .= iconv($frompart->charset, 'UTF-8//IGNORE', $frompart->text);
else
$fromdecoded .= $frompart->text;
$datarray['body'] = "[b]".t('From: ') . escape_tags($fromdecoded) . "[/b]\n\n" . $datarray['body'];
}
$datarray['uid'] = $importer_uid;
$datarray['contact-id'] = $contact['id'];
if($datarray['parent-uri'] === $datarray['uri'])
$datarray['private'] = 1;
if(($contact['network'] === NETWORK_MAIL) && (! get_pconfig($importer_uid,'system','allow_public_email_replies'))) {
$datarray['private'] = 1;
$datarray['allow_cid'] = '<' . $contact['id'] . '>';
}
$datarray['author-name'] = $contact['name'];
$datarray['author-link'] = 'mailbox';
$datarray['author-avatar'] = $contact['photo'];
$stored_item = item_store($datarray);
q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d",
dbesc($datarray['parent-uri']),
intval($importer_uid)
);
q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
intval($stored_item)
);
switch ($mailconf[0]['action']) {
case 0:
break;
case 1:
logger("Mail: Deleting ".$msg_uid);
imap_delete($mbox, $msg_uid, FT_UID);
break;
case 2:
logger("Mail: Mark as seen ".$msg_uid);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
break;
case 3:
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
if ($mailconf[0]['movetofolder'] != "")
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
break;
}
}
}
imap_close($mbox);
}
}
elseif($contact['network'] === NETWORK_FACEBOOK) {
// This is picked up by the Facebook plugin on a cron hook.
// Ignored here.
}
if($xml) {
logger('poller: received xml : ' . $xml, LOGGER_DATA);
if(! strstr($xml,'<?xml')) {
logger('poller: post_handshake: response from ' . $url . ' did not contain XML.');
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
continue;
}
consume_feed($xml,$importer,$contact,$hub,1,1);
// do it twice. Ensures that children of parents which may be later in the stream aren't tossed
consume_feed($xml,$importer,$contact,$hub,1,2);
$hubmode = 'subscribe';
if($contact['network'] === NETWORK_DFRN || $contact['blocked'] || $contact['readonly'])
$hubmode = 'unsubscribe';
if((strlen($hub)) && ($hub_update) && ($contact['rel'] != CONTACT_IS_FOLLOWER)) {
logger('poller: hub ' . $hubmode . ' : ' . $hub . ' contact name : ' . $contact['name'] . ' local user : ' . $importer['name']);
$hubs = explode(',', $hub);
if(count($hubs)) {
foreach($hubs as $h) {
$h = trim($h);
if(! strlen($h))
continue;
subscribe_to_hub($h,$importer,$contact,$hubmode);
}
}
}
}
$updated = datetime_convert();
$r = q("UPDATE `contact` SET `last-update` = '%s', `success_update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc($updated),
dbesc($updated),
intval($contact['id'])
);
// load current friends if possible.
if($contact['poco']) {
$r = q("SELECT count(*) as total from glink
where `cid` = %d and updated > UTC_TIMESTAMP() - INTERVAL 1 DAY",
intval($contact['id'])
);
}
if(count($r)) {
if(! $r[0]['total']) {
poco_load($contact['id'],$importer_uid,$contact['poco']);
}
}
// loop - next contact
proc_run('php','include/onepoll.php',$contact['id']);
if($interval)
@time_sleep_until(microtime(true) + (float) $interval);
}
}
return;
}

View File

@ -7,8 +7,10 @@ function gender_selector($current="",$suffix="") {
$o .= "<select name=\"gender$suffix\" id=\"gender-select$suffix\" size=\"1\" >";
foreach($select as $selection) {
$selected = (($selection == $current) ? ' selected="selected" ' : '');
$o .= "<option value=\"$selection\" $selected >$selection</option>";
if($selection !== 'NOTRANSLATION') {
$selected = (($selection == $current) ? ' selected="selected" ' : '');
$o .= "<option value=\"$selection\" $selected >$selection</option>";
}
}
$o .= '</select>';
return $o;
@ -20,8 +22,10 @@ function sexpref_selector($current="",$suffix="") {
$o .= "<select name=\"sexual$suffix\" id=\"sexual-select$suffix\" size=\"1\" >";
foreach($select as $selection) {
$selected = (($selection == $current) ? ' selected="selected" ' : '');
$o .= "<option value=\"$selection\" $selected >$selection</option>";
if($selection !== 'NOTRANSLATION') {
$selected = (($selection == $current) ? ' selected="selected" ' : '');
$o .= "<option value=\"$selection\" $selected >$selection</option>";
}
}
$o .= '</select>';
return $o;
@ -34,8 +38,10 @@ function marital_selector($current="",$suffix="") {
$o .= "<select name=\"marital\" id=\"marital-select\" size=\"1\" >";
foreach($select as $selection) {
$selected = (($selection == $current) ? ' selected="selected" ' : '');
$o .= "<option value=\"$selection\" $selected >$selection</option>";
if($selection !== 'NOTRANSLATION') {
$selected = (($selection == $current) ? ' selected="selected" ' : '');
$o .= "<option value=\"$selection\" $selected >$selection</option>";
}
}
$o .= '</select>';
return $o;

View File

@ -20,7 +20,7 @@ require_once('include/datetime.php');
function poco_load($cid,$uid = 0,$url = null) {
function poco_load($cid,$uid = 0,$zcid = 0,$url = null) {
$a = get_app();
if($cid) {
@ -53,7 +53,6 @@ function poco_load($cid,$uid = 0,$url = null) {
if(($a->get_curl_code() > 299) || (! $s))
return;
$j = json_decode($s);
logger('poco_load: json: ' . print_r($j,true),LOGGER_DATA);
@ -81,7 +80,6 @@ function poco_load($cid,$uid = 0,$url = null) {
$connect_url = str_replace('acct:' , '', $url->value);
continue;
}
}
foreach($entry->photos as $photo) {
if($photo->type == 'profile') {
@ -101,11 +99,12 @@ function poco_load($cid,$uid = 0,$url = null) {
$gcid = $x[0]['id'];
if($x[0]['name'] != $name || $x[0]['photo'] != $profile_photo) {
q("update gcontact set `name` = '%s', `photo` = '%s', `connect` = '%s'
q("update gcontact set `name` = '%s', `photo` = '%s', `connect` = '%s', `url` = '%s'
where `nurl` = '%s' limit 1",
dbesc($name),
dbesc($profile_photo),
dbesc($connect_url),
dbesc($profile_url),
dbesc(normalise_link($profile_url))
);
}
@ -128,34 +127,38 @@ function poco_load($cid,$uid = 0,$url = null) {
if(! $gcid)
return;
$r = q("select * from glink where `cid` = %d and `uid` = %d and `gcid` = %d limit 1",
$r = q("select * from glink where `cid` = %d and `uid` = %d and `gcid` = %d and `zcid` = %d limit 1",
intval($cid),
intval($uid),
intval($gcid)
intval($gcid),
intval($zcid)
);
if(! count($r)) {
q("insert into glink ( `cid`,`uid`,`gcid`,`updated`) values (%d,%d,%d,'%s') ",
q("insert into glink ( `cid`,`uid`,`gcid`,`zcid`, `updated`) values (%d,%d,%d,%d, '%s') ",
intval($cid),
intval($uid),
intval($gcid),
intval($zcid),
dbesc(datetime_convert())
);
}
else {
q("update glink set updated = '%s' where `cid` = %d and `uid` = %d and `gcid` = %d limit 1",
q("update glink set updated = '%s' where `cid` = %d and `uid` = %d and `gcid` = %d and zcid = %d limit 1",
dbesc(datetime_convert()),
intval($cid),
intval($uid),
intval($gcid)
intval($gcid),
intval($zcid)
);
}
}
logger("poco_load: loaded $total entries",LOGGER_DEBUG);
q("delete from glink where `cid` = %d and `uid` = %d and `updated` < UTC_TIMESTAMP - INTERVAL 2 DAY",
q("delete from glink where `cid` = %d and `uid` = %d and `zcid` = %d and `updated` < UTC_TIMESTAMP - INTERVAL 2 DAY",
intval($cid),
intval($uid)
intval($uid),
intval($zcid)
);
}
@ -166,37 +169,85 @@ function count_common_friends($uid,$cid) {
$r = q("SELECT count(*) as `total`
FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
where `glink`.`cid` = %d and `glink`.`uid` = %d
and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and id != %d ) ",
and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 and id != %d ) ",
intval($cid),
intval($uid),
intval($uid),
intval($cid)
);
// logger("count_common_friends: $uid $cid {$r[0]['total']}");
if(count($r))
return $r[0]['total'];
return 0;
}
function common_friends($uid,$cid,$start = 0,$limit=9999,$shuffle = false) {
if($shuffle)
$sql_extra = " order by rand() ";
else
$sql_extra = " order by `gcontact`.`name` asc ";
$r = q("SELECT `gcontact`.*
FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
where `glink`.`cid` = %d and `glink`.`uid` = %d
and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 and id != %d )
$sql_extra limit %d, %d",
intval($cid),
intval($uid),
intval($uid),
intval($cid),
intval($start),
intval($limit)
);
return $r;
}
function count_common_friends_zcid($uid,$zcid) {
$r = q("SELECT count(*) as `total`
FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
where `glink`.`zcid` = %d
and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 ) ",
intval($zcid),
intval($uid)
);
if(count($r))
return $r[0]['total'];
return 0;
}
function common_friends_zcid($uid,$zcid,$start = 0, $limit = 9999,$shuffle) {
function common_friends($uid,$cid) {
if($shuffle)
$sql_extra = " order by rand() ";
else
$sql_extra = " order by `gcontact`.`name` asc ";
$r = q("SELECT `gcontact`.*
FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
where `glink`.`cid` = %d and `glink`.`uid` = %d
and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and id != %d )
order by `gcontact`.`name` asc ",
intval($cid),
where `glink`.`zcid` = %d
and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 )
$sql_extra limit %d, %d",
intval($zcid),
intval($uid),
intval($uid),
intval($cid)
intval($start),
intval($limit)
);
return $r;
}
function count_all_friends($uid,$cid) {
$r = q("SELECT count(*) as `total`
@ -254,7 +305,7 @@ function suggestion_query($uid, $start = 0, $limit = 80) {
$r2 = q("SELECT gcontact.* from gcontact
left join glink on glink.gcid = gcontact.id
where glink.uid = 0 and glink.cid = 0 and not gcontact.nurl in ( select nurl from contact where uid = %d )
where glink.uid = 0 and glink.cid = 0 and glink.zcid = 0 and not gcontact.nurl in ( select nurl from contact where uid = %d )
and not gcontact.name in ( select name from contact where uid = %d )
and not gcontact.id in ( select gcid from gcign where uid = %d )
order by rand() limit %d, %d ",
@ -276,7 +327,7 @@ function update_suggestions() {
$done = array();
poco_load(0,0,$a->get_baseurl() . '/poco');
poco_load(0,0,0,$a->get_baseurl() . '/poco');
$done[] = $a->get_baseurl() . '/poco';
@ -288,7 +339,7 @@ function update_suggestions() {
foreach($j->entries as $entry) {
$url = $entry->url . '/poco';
if(! in_array($url,$done))
poco_load(0,0,$entry->url . '/poco');
poco_load(0,0,0,$entry->url . '/poco');
}
}
}
@ -302,7 +353,7 @@ function update_suggestions() {
foreach($r as $rr) {
$base = substr($rr['poco'],0,strrpos($rr['poco'],'/'));
if(! in_array($base,$done))
poco_load(0,0,$base);
poco_load(0,0,0,$base);
}
}
}

View File

@ -558,7 +558,7 @@ function contact_block() {
if((! is_array($a->profile)) || ($a->profile['hide-friends']))
return $o;
$r = q("SELECT COUNT(*) AS `total` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 AND `hidden` = 0",
$r = q("SELECT COUNT(*) AS `total` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 AND `hidden` = 0 AND `archive` = 0",
intval($a->profile['uid'])
);
if(count($r)) {
@ -569,7 +569,7 @@ function contact_block() {
$micropro = Null;
} else {
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 AND `hidden` = 0 ORDER BY RAND() LIMIT %d",
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 AND `hidden` = 0 AND `archive` = 0 ORDER BY RAND() LIMIT %d",
intval($a->profile['uid']),
intval($shown)
);
@ -930,7 +930,8 @@ function prepare_body($item,$attach = false) {
foreach($matches as $mtch) {
if(strlen($x))
$x .= ',';
$x .= xmlify(file_tag_decode($mtch[1]));
$x .= xmlify(file_tag_decode($mtch[1]))
. ((local_user() == $item['uid']) ? ' <a href="' . $a->get_baseurl() . '/filerm/' . $item['id'] . '?f=&cat=' . xmlify(file_tag_decode($mtch[1])) . '" title="' . t('remove') . '" >' . t('[remove]') . '</a>' : '');
}
if(strlen($x))
$s .= '<div class="categorytags"><span>' . t('Categories:') . ' </span>' . $x . '</div>';
@ -1466,12 +1467,16 @@ function file_tag_save_file($uid,$item,$file) {
return true;
}
function file_tag_unsave_file($uid,$item,$file) {
function file_tag_unsave_file($uid,$item,$file,$cat = false) {
$result = false;
if(! intval($uid))
return false;
$pattern = '[' . file_tag_encode($file) . ']' ;
if($cat == true)
$pattern = '<' . file_tag_encode($file) . '>' ;
else
$pattern = '[' . file_tag_encode($file) . ']' ;
$r = q("select file from item where id = %d and uid = %d limit 1",
intval($item),
@ -1486,13 +1491,14 @@ function file_tag_unsave_file($uid,$item,$file) {
intval($uid)
);
$r = q("select file from item where uid = %d " . file_tag_file_query('item',$file),
$r = q("select file from item where uid = %d and deleted = 0 " . file_tag_file_query('item',$file,(($cat) ? 'category' : 'file')),
intval($uid)
);
if(! count($r)) {
$saved = get_pconfig($uid,'system','filetags');
set_pconfig($uid,'system','filetags',str_replace($pattern,'',$saved));
}
return true;
}

View File

@ -92,13 +92,10 @@ if((x($_SESSION,'language')) && ($_SESSION['language'] !== $lang)) {
load_translation_table($lang);
}
if(x($_GET,'zrl')) {
if((x($_GET,'zrl')) && (! $install)) {
$_SESSION['my_url'] = $_GET['zrl'];
$a->query_string = preg_replace('/[\?&]zrl=(.*?)([\?&]|$)/is','',$a->query_string);
if(! $install) {
$arr = array('zrl' => $_SESSION['my_url'], 'url' => $a->cmd);
call_hooks('zrl_init',$arr);
}
zrl_init($a);
}
/**

View File

@ -73,7 +73,16 @@
setupFieldRichtext();
/* popup menus */
function close_last_popup_menu() {
if(last_popup_menu) {
last_popup_menu.hide();
last_popup_button.removeClass("selected");
last_popup_menu = null;
last_popup_button = null;
}
}
$('a[rel^=#]').click(function(e){
close_last_popup_menu();
menu = $( $(this).attr('rel') );
e.preventDefault();
e.stopPropagation();
@ -90,12 +99,7 @@
return false;
});
$('html').click(function() {
if(last_popup_menu) {
last_popup_menu.hide();
last_popup_button.removeClass("selected");
last_popup_menu = null;
last_popup_button = null;
}
close_last_popup_menu();
});
// fancyboxes

View File

@ -33,7 +33,7 @@ function acl_init(&$a){
if ($type=='' || $type=='c'){
$r = q("SELECT COUNT(`id`) AS c FROM `contact`
WHERE `uid` = %d AND `self` = 0
AND `blocked` = 0 AND `pending` = 0
AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
AND `notify` != '' $sql_extra2" ,
intval(local_user())
);
@ -45,7 +45,7 @@ function acl_init(&$a){
$r = q("SELECT COUNT(`id`) AS c FROM `contact`
WHERE `uid` = %d AND `self` = 0
AND `blocked` = 0 AND `pending` = 0
AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
AND `network` IN ('%s','%s','%s') $sql_extra2" ,
intval(local_user()),
dbesc(NETWORK_DFRN),
@ -94,7 +94,7 @@ function acl_init(&$a){
if ($type=='' || $type=='c'){
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != ''
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != ''
$sql_extra2
ORDER BY `name` ASC ",
intval(local_user())
@ -102,7 +102,7 @@ function acl_init(&$a){
}
elseif($type == 'm') {
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0
AND `network` IN ('%s','%s','%s')
$sql_extra2
ORDER BY `name` ASC ",

View File

@ -61,6 +61,9 @@ function admin_post(&$a){
case 'logs':
admin_page_logs_post($a);
break;
case 'dbsync':
admin_page_dbsync_post($a);
break;
case 'update':
admin_page_remoteupdate_post($a);
break;
@ -94,7 +97,8 @@ function admin_content(&$a) {
'users' => Array($a->get_baseurl(true)."/admin/users/", t("Users") , "users"),
'plugins'=> Array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"),
'themes' => Array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"),
'update' => Array($a->get_baseurl(true)."/admin/update/", t("Update") , "update")
'dbsync' => Array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync"),
'update' => Array($a->get_baseurl(true)."/admin/update/", t("Software Update") , "update")
);
/* get plugins admin page */
@ -142,6 +146,9 @@ function admin_content(&$a) {
case 'logs':
$o = admin_page_logs($a);
break;
case 'dbsync':
$o = admin_page_dbsync($a);
break;
case 'update':
$o = admin_page_remoteupdate($a);
break;
@ -235,6 +242,8 @@ function admin_page_site_post(&$a){
$proxyuser = ((x($_POST,'proxyuser')) ? notags(trim($_POST['proxyuser'])) : '');
$proxy = ((x($_POST,'proxy')) ? notags(trim($_POST['proxy'])) : '');
$timeout = ((x($_POST,'timeout')) ? intval(trim($_POST['timeout'])) : 60);
$delivery_interval = ((x($_POST,'delivery_interval'))? intval(trim($_POST['delivery_interval'])) : 0);
$maxloadavg = ((x($_POST,'maxloadavg')) ? intval(trim($_POST['maxloadavg'])) : 50);
$dfrn_only = ((x($_POST,'dfrn_only')) ? True : False);
$ostatus_disabled = !((x($_POST,'ostatus_disabled')) ? True : False);
$diaspora_enabled = ((x($_POST,'diaspora_enabled')) ? True : False);
@ -281,7 +290,8 @@ function admin_page_site_post(&$a){
}
}
set_config('system','ssl_policy',$ssl_policy);
set_config('system','delivery_interval',$delivery_interval);
set_config('system','maxloadavg',$maxloadavg);
set_config('config','sitename',$sitename);
if ($banner==""){
// don't know why, but del_config doesn't work...
@ -425,7 +435,8 @@ function admin_page_site(&$a) {
'$proxyuser' => array('proxyuser', t("Proxy user"), get_config('system','proxyuser'), ""),
'$proxy' => array('proxy', t("Proxy URL"), get_config('system','proxy'), ""),
'$timeout' => array('timeout', t("Network timeout"), (x(get_config('system','curl_timeout'))?get_config('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")),
'$delivery_interval' => array('delivery_interval', t("Delivery interval"), (x(get_config('system','delivery_interval'))?get_config('system','delivery_interval'):2), t("Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers.")),
'$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(get_config('system','maxloadavg')) > 0)?get_config('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")),
'$form_security_token' => get_form_security_token("admin_site"),
));
@ -433,6 +444,62 @@ function admin_page_site(&$a) {
}
function admin_page_dbsync(&$a) {
$o = '';
if($a->argc > 3 && intval($a->argv[3]) && $a->argv[2] === 'mark') {
set_config('database', 'update_' . intval($a->argv[3]), 'success');
info( t('Update has been marked successful') . EOL);
goaway($a->get_baseurl(true) . '/admin/dbsync');
}
if($a->argc > 2 && intval($a->argv[2])) {
require_once('update.php');
$func = 'update_' . intval($a->argv[2]);
if(function_exists($func)) {
$retval = $func();
if($retval === UPDATE_FAILED) {
$o .= sprintf( t('Executing %s failed. Check system logs.'), $func);
}
elseif($retval === UPDATE_SUCCESS) {
$o .= sprintf( t('Update %s was successfully applied.', $func));
set_config('database',$func, 'success');
}
else
$o .= sprintf( t('Update %s did not return a status. Unknown if it succeeded.'), $func);
}
else
$o .= sprintf( t('Update function %s could not be found.'), $func);
return $o;
}
$failed = array();
$r = q("select * from config where `cat` = 'database' ");
if(count($r)) {
foreach($r as $rr) {
$upd = intval(substr($rr['k'],7));
if($upd < 1139 || $rr['v'] === 'success')
continue;
$failed[] = $upd;
}
}
if(! count($failed))
return '<h3>' . t('No failed updates.') . '</h3>';
$o = replace_macros(get_markup_template('failed_updates.tpl'),array(
'$base' => $a->get_baseurl(true),
'$banner' => t('Failed Updates'),
'$desc' => t('This does not include updates prior to 1139, which did not return a status.'),
'$mark' => t('Mark success (if update was manually applied)'),
'$apply' => t('Attempt to execute this update step automatically'),
'$failed' => $failed
));
return $o;
}
/**
* Users admin page
*
@ -977,7 +1044,6 @@ readable.");
$size = 5000000;
$seek = fseek($fp,0-$size,SEEK_END);
if($seek === 0) {
fgets($fp); // throw away the first partial line
$data = escape_tags(fread($fp,$size));
while(! feof($fp))
$data .= escape_tags(fread($fp,4096));

View File

@ -5,25 +5,33 @@ require_once('include/socgraph.php');
function common_content(&$a) {
$o = '';
if(! local_user()) {
notice( t('Permission denied.') . EOL);
$cmd = $a->argv[1];
$uid = intval($a->argv[2]);
$cid = intval($a->argv[3]);
$zcid = 0;
if($cmd !== 'loc' && $cmd != 'rem')
return;
if(! $uid)
return;
if($cmd === 'loc' && $cid) {
$c = q("select name, url, photo from contact where id = %d and uid = %d limit 1",
intval($cid),
intval($uid)
);
}
if($a->argc > 1)
$cid = intval($a->argv[1]);
if(! $cid)
return;
$c = q("select name, url, photo from contact where id = %d and uid = %d limit 1",
intval($cid),
intval(local_user())
);
else {
$c = q("select name, url, photo from contact where self = 1 and uid = %d limit 1",
intval($uid)
);
}
$a->page['aside'] .= '<div class="vcard">'
. '<div class="fn label">' . $c[0]['name'] . '</div>'
. '<div id="profile-photo-wrapper">'
. '<a href="/contacts/' . $cid . '"><img class="photo" width="175" height="175"
. '<img class="photo" width="175" height="175"
src="' . $c[0]['photo'] . '" alt="' . $c[0]['name'] . '" /></div>'
. '</div>';
@ -33,13 +41,52 @@ function common_content(&$a) {
$o .= '<h2>' . t('Common Friends') . '</h2>';
// $o .= '<h3>' . sprintf( t('You and %s'),$c[0]['name']) . '</h3>';
if(! $cid) {
if(get_my_url()) {
$r = q("select id from contact where nurl = '%s' and uid = %d limit 1",
dbesc(normalise_link(get_my_url())),
intval($profile_uid)
);
if(count($r))
$cid = $r[0]['id'];
else {
$r = q("select id from gcontact where nurl = '%s' limit 1",
dbesc(normalise_link(get_my_url()))
);
if(count($r))
$zcid = $r[0]['id'];
}
}
}
$r = common_friends(local_user(),$cid);
if($cid == 0 && $zcid == 0)
return;
if($cid)
$t = count_common_friends($uid,$cid);
else
$t = count_common_friends_zcid($uid,$zcid);
$a->set_pager_total($t);
if(! $t) {
notice( t('No contacts in common.') . EOL);
return $o;
}
if($cid)
$r = common_friends($uid,$cid);
else
$r = common_friends_zcid($uid,$zcid);
if(! count($r)) {
$o .= t('No friends in common.');
return $o;
}

View File

@ -182,6 +182,22 @@ function contacts_content(&$a) {
return; // NOTREACHED
}
if($cmd === 'archive') {
$archived = (($orig_record[0]['archive']) ? 0 : 1);
$r = q("UPDATE `contact` SET `archive` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($archived),
intval($contact_id),
intval(local_user())
);
if($r) {
//notice( t('Contact has been ') . (($archived) ? t('archived') : t('unarchived')) . EOL );
info( (($archived) ? t('Contact has been archived') : t('Contact has been unarchived')) . EOL );
}
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
return; // NOTREACHED
}
if($cmd === 'drop') {
require_once('include/Contact.php');
@ -274,16 +290,26 @@ function contacts_content(&$a) {
'label' => (($contact['blocked']) ? t('Unblock') : t('Block') ),
'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/block',
'sel' => '',
'title' => t('Toggle Blocked status'),
),
array(
'label' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ),
'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/ignore',
'sel' => '',
'title' => t('Toggle Ignored status'),
),
array(
'label' => (($contact['archive']) ? t('Unarchive') : t('Archive') ),
'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/archive',
'sel' => '',
'title' => t('Toggle Archive status'),
),
array(
'label' => t('Repair'),
'url' => $a->get_baseurl(true) . '/crepair/' . $contact_id,
'sel' => '',
'title' => t('Advanced Contact Settings'),
)
);
$tab_tpl = get_markup_template('common_tabs.tpl');
@ -299,7 +325,7 @@ function contacts_content(&$a) {
'$lbl_info1' => t('Contact Information / Notes'),
'$infedit' => t('Edit contact notes'),
'$common_text' => $common_text,
'$common_link' => $a->get_baseurl(true) . '/common/' . $contact['id'],
'$common_link' => $a->get_baseurl(true) . '/common/loc/' . local_user() . '/' . $contact['id'],
'$all_friends' => $all_friends,
'$relation_text' => $relation_text,
'$visit' => sprintf( t('Visit %s\'s profile [%s]'),$contact['name'],$contact['url']),
@ -324,6 +350,7 @@ function contacts_content(&$a) {
'$info' => $contact['info'],
'$blocked' => (($contact['blocked']) ? t('Currently blocked') : ''),
'$ignored' => (($contact['readonly']) ? t('Currently ignored') : ''),
'$archived' => (($contact['archive']) ? t('Currently archived') : ''),
'$hidden' => array('hidden', t('Hide this contact from others'), ($contact['hidden'] == 1), t('Replies/likes to your public posts <strong>may</strong> still be visible')),
'$photo' => $contact['photo'],
'$name' => $contact['name'],
@ -365,6 +392,10 @@ function contacts_content(&$a) {
$sql_extra = " AND `readonly` = 1 ";
$ignored = true;
}
elseif(($a->argc == 2) && ($a->argv[1] === 'archived')) {
$sql_extra = " AND `archive` = 1 ";
$archived = true;
}
else
$sql_extra = " AND `blocked` = 0 ";
@ -376,34 +407,47 @@ function contacts_content(&$a) {
'label' => t('Suggestions'),
'url' => $a->get_baseurl(true) . '/suggest',
'sel' => '',
'title' => t('Suggest potential friends'),
),
array(
'label' => t('All Contacts'),
'url' => $a->get_baseurl(true) . '/contacts/all',
'sel' => ($all) ? 'active' : '',
'title' => t('Show all contacts'),
),
array(
'label' => t('Unblocked Contacts'),
'label' => t('Unblocked'),
'url' => $a->get_baseurl(true) . '/contacts',
'sel' => ((! $all) && (! $blocked) && (! $hidden) && (! $search) && (! $nets) && (! $ignored)) ? 'active' : '',
'sel' => ((! $all) && (! $blocked) && (! $hidden) && (! $search) && (! $nets) && (! $ignored) && (! $archived)) ? 'active' : '',
'title' => t('Only show unblocked contacts'),
),
array(
'label' => t('Blocked Contacts'),
'label' => t('Blocked'),
'url' => $a->get_baseurl(true) . '/contacts/blocked',
'sel' => ($blocked) ? 'active' : '',
'title' => t('Only show blocked contacts'),
),
array(
'label' => t('Ignored Contacts'),
'label' => t('Ignored'),
'url' => $a->get_baseurl(true) . '/contacts/ignored',
'sel' => ($ignored) ? 'active' : '',
'title' => t('Only show ignored contacts'),
),
array(
'label' => t('Hidden Contacts'),
'label' => t('Archived'),
'url' => $a->get_baseurl(true) . '/contacts/archived',
'sel' => ($archived) ? 'active' : '',
'title' => t('Only show archived contacts'),
),
array(
'label' => t('Hidden'),
'url' => $a->get_baseurl(true) . '/contacts/hidden',
'sel' => ($hidden) ? 'active' : '',
'title' => t('Only show hidden contacts'),
),
);

View File

@ -207,7 +207,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
if($duplex == 1)
$params['duplex'] = 1;
if($user['page-flags'] == PAGE_COMMUNITY)
if($user[0]['page-flags'] == PAGE_COMMUNITY)
$params['page'] = 1;
logger('dfrn_confirm: Confirm: posting data to ' . $dfrn_confirm . ': ' . print_r($params,true), LOGGER_DATA);
@ -434,7 +434,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
else
$contact = null;
if(isset($new_relation) && $new_relation == CONTACT_IS_FRIEND) {
if((isset($new_relation) && $new_relation == CONTACT_IS_FRIEND)) {
if(($contact) && ($contact['network'] === NETWORK_DIASPORA)) {
require_once('include/diaspora.php');
@ -447,7 +448,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
$r = q("SELECT `hide-friends` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1",
intval($uid)
);
if((count($r)) && ($activity) && (! $hidden)) {
if((count($r)) && ($r[0]['hide-friends'] == 0) && ($activity) && (! $hidden)) {
require_once('include/items.php');
@ -468,12 +470,15 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
$arr['author-name'] = $arr['owner-name'] = $self[0]['name'];
$arr['author-link'] = $arr['owner-link'] = $self[0]['url'];
$arr['author-avatar'] = $arr['owner-avatar'] = $self[0]['thumb'];
$arr['verb'] = ACTIVITY_FRIEND;
$arr['object-type'] = ACTIVITY_OBJ_PERSON;
$A = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url]';
$APhoto = '[url=' . $self[0]['url'] . ']' . '[img]' . $self[0]['thumb'] . '[/img][/url]';
$B = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]';
$BPhoto = '[url=' . $contact['url'] . ']' . '[img]' . $contact['thumb'] . '[/img][/url]';
$arr['verb'] = ACTIVITY_FRIEND;
$arr['object-type'] = ACTIVITY_OBJ_PERSON;
$arr['body'] = sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$BPhoto;
$arr['object'] = '<object><type>' . ACTIVITY_OBJ_PERSON . '</type><title>' . $contact['name'] . '</title>'
@ -481,6 +486,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
$arr['object'] .= '<link>' . xmlify('<link rel="alternate" type="text/html" href="' . $contact['url'] . '" />' . "\n");
$arr['object'] .= xmlify('<link rel="photo" type="image/jpeg" href="' . $contact['thumb'] . '" />' . "\n");
$arr['object'] .= '</link></object>' . "\n";
$arr['last-child'] = 1;
$arr['allow_cid'] = $user[0]['allow_cid'];
@ -710,6 +716,10 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
WHERE `contact`.`id` = %d LIMIT 1",
intval($dfrn_record)
);
if(count($r))
$combined = $r[0];
if((count($r)) && ($r[0]['notify-flags'] & NOTIFY_CONFIRM)) {
push_lang($r[0]['language']);
@ -738,6 +748,65 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
}
pop_lang();
}
// Send a new friend post if we are allowed to...
if($page && intval(get_pconfig($local_uid,'system','post_joingroup'))) {
$r = q("SELECT `hide-friends` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1",
intval($local_uid)
);
if((count($r)) && ($r[0]['hide-friends'] == 0)) {
require_once('include/items.php');
$self = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
intval($local_uid)
);
if(count($self)) {
$arr = array();
$arr['uri'] = $arr['parent-uri'] = item_new_uri($a->get_hostname(), $local_uid);
$arr['uid'] = $local_uid;
$arr['contact-id'] = $self[0]['id'];
$arr['wall'] = 1;
$arr['type'] = 'wall';
$arr['gravity'] = 0;
$arr['origin'] = 1;
$arr['author-name'] = $arr['owner-name'] = $self[0]['name'];
$arr['author-link'] = $arr['owner-link'] = $self[0]['url'];
$arr['author-avatar'] = $arr['owner-avatar'] = $self[0]['thumb'];
$A = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url]';
$APhoto = '[url=' . $self[0]['url'] . ']' . '[img]' . $self[0]['thumb'] . '[/img][/url]';
$B = '[url=' . $combined['url'] . ']' . $combined['name'] . '[/url]';
$BPhoto = '[url=' . $combined['url'] . ']' . '[img]' . $combined['thumb'] . '[/img][/url]';
$arr['verb'] = ACTIVITY_JOIN;
$arr['object-type'] = ACTIVITY_OBJ_GROUP;
$arr['body'] = sprintf( t('%1$s has joined %2$s'), $A, $B)."\n\n\n" .$BPhoto;
$arr['object'] = '<object><type>' . ACTIVITY_OBJ_GROUP . '</type><title>' . $combined['name'] . '</title>'
. '<id>' . $combined['url'] . '/' . $combined['name'] . '</id>';
$arr['object'] .= '<link>' . xmlify('<link rel="alternate" type="text/html" href="' . $combined['url'] . '" />' . "\n");
$arr['object'] .= xmlify('<link rel="photo" type="image/jpeg" href="' . $combined['thumb'] . '" />' . "\n");
$arr['object'] .= '</link></object>' . "\n";
$arr['last-child'] = 1;
$arr['allow_cid'] = $user[0]['allow_cid'];
$arr['allow_gid'] = $user[0]['allow_gid'];
$arr['deny_cid'] = $user[0]['deny_cid'];
$arr['deny_gid'] = $user[0]['deny_gid'];
$i = item_store($arr);
if($i)
proc_run('php',"include/notifier.php","activity","$i");
}
}
}
xml_status(0); // Success
return; // NOTREACHED

View File

@ -700,7 +700,8 @@ function dfrn_request_content(&$a) {
'node' => $r[0]['nickname'],
'dfrn_id' => $r[0]['issued-id'],
'intro_id' => $intro[0]['id'],
'duplex' => (($r[0]['page-flags'] == PAGE_FREELOVE) ? 1 : 0)
'duplex' => (($r[0]['page-flags'] == PAGE_FREELOVE) ? 1 : 0),
'activity' => intval(get_pconfig($r[0]['uid'],'system','post_newfriend'))
);
dfrn_confirm_post($a,$handsfree);
}
@ -753,6 +754,11 @@ function dfrn_request_content(&$a) {
$myaddr = ((x($_GET,'address')) ? $_GET['address'] : '');
}
// last, try a zrl
if(! strlen($myaddr))
$myaddr = get_my_url();
$target_addr = $a->profile['nickname'] . '@' . substr(z_root(), strpos(z_root(),'://') + 3 );

View File

@ -28,6 +28,9 @@ function events_post(&$a) {
$adjust = intval($_POST['adjust']);
$nofinish = intval($_POST['nofinish']);
// The default setting for the `private` field in event_store() is false, so mirror that
$private_event = false;
$start = sprintf('%d-%d-%d %d:%d:0',$startyear,$startmonth,$startday,$starthour,$startminute);
if($nofinish)
@ -65,14 +68,38 @@ function events_post(&$a) {
$share = ((intval($_POST['share'])) ? intval($_POST['share']) : 0);
$c = q("select id from contact where uid = %d and self = 1 limit 1",
intval(local_user())
);
if(count($c))
$self = $c[0]['id'];
else
$self = 0;
if($share) {
$str_group_allow = perms2str($_POST['group_allow']);
$str_contact_allow = perms2str($_POST['contact_allow']);
$str_group_deny = perms2str($_POST['group_deny']);
$str_contact_deny = perms2str($_POST['contact_deny']);
// Undo the pseudo-contact of self, since there are real contacts now
if( strpos($str_contact_allow, '<' . $self . '>') !== false )
{
$str_contact_allow = str_replace('<' . $self . '>', '', $str_contact_allow);
}
// Make sure to set the `private` field as true. This is necessary to
// have the posts show up correctly in Diaspora if an event is created
// as visible only to self at first, but then edited to display to others.
if( strlen($str_group_allow) or strlen($str_contact_allow) or strlen($str_group_deny) or strlen($str_contact_deny) )
{
$private_event = true;
}
}
else {
$str_contact_allow = '<' . local_user() . '>';
// Note: do not set `private` field for self-only events. It will
// keep even you from seeing them!
$str_contact_allow = '<' . $self . '>';
$str_group_allow = $str_contact_deny = $str_group_deny = '';
}
@ -91,6 +118,7 @@ function events_post(&$a) {
$datarray['allow_gid'] = $str_group_allow;
$datarray['deny_cid'] = $str_contact_deny;
$datarray['deny_gid'] = $str_group_deny;
$datarray['private'] = $private_event;
$datarray['id'] = $event_id;
$datarray['created'] = $created;
$datarray['edited'] = $edited;

View File

@ -7,12 +7,18 @@ function filerm_content(&$a) {
}
$term = unxmlify(trim($_GET['term']));
$cat = unxmlify(trim($_GET['cat']));
$category = (($cat) ? true : false);
if($category)
$term = $cat;
$item_id = (($a->argc > 1) ? intval($a->argv[1]) : 0);
logger('filerm: tag ' . $term . ' item ' . $item_id);
if($item_id && strlen($term))
file_tag_unsave_file(local_user(),$item_id,$term);
file_tag_unsave_file(local_user(),$item_id,$term, $category);
if(x($_SESSION,'return_url'))
goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);

View File

@ -18,10 +18,18 @@ function friendica_init(&$a) {
$admin = false;
}
$visible_plugins = array();
if(is_array($a->plugins) && count($a->plugins)) {
$r = q("select * from addon where hidden = 0");
if(count($r))
foreach($r as $rr)
$visible_plugins[] = $rr['name'];
}
$data = Array(
'version' => FRIENDICA_VERSION,
'url' => z_root(),
'plugins' => $a->plugins,
'plugins' => $visible_plugins,
'register_policy' => $register_policy[$a->config['register_policy']],
'admin' => $admin,
'site_name' => $a->config['sitename'],
@ -54,9 +62,18 @@ function friendica_content(&$a) {
$o .= '<p></p>';
if(count($a->plugins)) {
$visible_plugins = array();
if(is_array($a->plugins) && count($a->plugins)) {
$r = q("select * from addon where hidden = 0");
if(count($r))
foreach($r as $rr)
$visible_plugins[] = $rr['name'];
}
if(count($visible_plugins)) {
$o .= '<p>' . t('Installed plugins/addons/apps:') . '</p>';
$sorted = $a->plugins;
$sorted = $visible_plugins;
$s = '';
sort($sorted);
foreach($sorted as $p) {

View File

@ -444,9 +444,28 @@ function item_post(&$a) {
$tags[] = '@' . $parent_contact['nick'];
}
$tagged = array();
if(count($tags)) {
foreach($tags as $tag) {
handle_tag($a, $body, $inform, $str_tags, (local_user()) ? local_user() : $profile_uid , $tag);
// If we already tagged 'Robert Johnson', don't try and tag 'Robert'.
// Robert Johnson should be first in the $tags array
$fullnametagged = false;
for($x = 0; $x < count($tagged); $x ++) {
if(stristr($tagged[$x],$tag . ' ')) {
$fullnametagged = true;
break;
}
}
if($fullnametagged)
continue;
$success = handle_tag($a, $body, $inform, $str_tags, (local_user()) ? local_user() : $profile_uid , $tag);
if($success)
$tagged[] = $tag;
}
}
@ -861,21 +880,27 @@ function item_content(&$a) {
* @param unknown_type $str_tags string to add the tag to
* @param unknown_type $profile_uid
* @param unknown_type $tag the tag to replace
*
* @return boolean true if replaced, false if not replaced
*/
function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) {
$replaced = false;
//is it a hash tag?
if(strpos($tag,'#') === 0) {
//if the tag is replaced...
if(strpos($tag,'[url='))
//...do nothing
return;
return $replaced;
//base tag has the tags name only
$basetag = str_replace('_',' ',substr($tag,1));
//create text for link
$newtag = '#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
//replace tag by the link
$body = str_replace($tag, $newtag, $body);
$replaced = true;
//is the link already in str_tags?
if(! stristr($str_tags,$newtag)) {
//append or set str_tags
@ -883,13 +908,13 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) {
$str_tags .= ',';
$str_tags .= $newtag;
}
return;
return $replaced;
}
//is it a person tag?
if(strpos($tag,'@') === 0) {
//is it already replaced?
if(strpos($tag,'[url='))
return;
return $replaced;
$stat = false;
//get the person's name
$name = substr($tag,1);
@ -965,6 +990,7 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) {
}
//if there is an url for this persons profile
if(isset($profile)) {
$replaced = true;
//create profile link
$profile = str_replace(',','%2c',$profile);
$newtag = '@[url=' . $profile . ']' . $newname . '[/url]';
@ -989,4 +1015,6 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) {
}
}
}
return $replaced;
}

View File

@ -171,37 +171,44 @@ function network_content(&$a, $update = 0) {
'label' => t('Commented Order'),
'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '?f=&cid=' . $_GET['cid'] : ''),
'sel'=>$all_active,
'title'=> t('Sort by Comment Date'),
),
array(
'label' => t('Posted Order'),
'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
'sel'=>$postord_active,
'title' => t('Sort by Post Date'),
),
array(
'label' => t('Personal'),
'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&conv=1',
'sel' => $conv_active,
'title' => t('Posts that mention or involve you'),
),
array(
'label' => t('New'),
'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . '/new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''),
'sel' => $new_active,
'title' => t('Activity Stream - by date'),
),
array(
'label' => t('Starred'),
'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1',
'sel'=>$starred_active,
'title' => t('Favourite Posts'),
),
array(
'label' => t('Shared Links'),
'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1',
'sel'=>$bookmarked_active,
'title'=> t('Interesting Links'),
),
// array(
// 'label' => t('Spam'),
// 'url'=>$a->get_baseurl(true) . '/network?f=&spam=1'
// 'sel'=> $spam_active,
// 'title' => t('Posts flagged as SPAM'),
// ),

View File

@ -32,6 +32,8 @@ function profile_init(&$a) {
profile_load($a,$which,$profile);
$userblock = (($a->profile['hidewall'] && (! local_user()) && (! remote_user())) ? true : false);
if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) {
$a->page['htmlhead'] .= '<meta name="friendica.community" content="true" />';
}
@ -41,8 +43,8 @@ function profile_init(&$a) {
$delegate = ((strstr($a->profile['openid'],'://')) ? $a->profile['openid'] : 'http://' . $a->profile['openid']);
$a->page['htmlhead'] .= '<link rel="openid.delegate" href="' . $delegate . '" />' . "\r\n";
}
if(! $blocked) {
// site block
if((! $blocked) && (! $userblock)) {
$keywords = ((x($a->profile,'pub_keywords')) ? $a->profile['pub_keywords'] : '');
$keywords = str_replace(array('#',',',' ',',,'),array('',' ',',',','),$keywords);
if(strlen($keywords))
@ -141,6 +143,10 @@ function profile_content(&$a, $update = 0) {
return $o;
}
$o .= common_friends_visitor_widget($a->profile['profile_uid']);
if(x($_SESSION,'new_member') && $_SESSION['new_member'] && $is_owner)
$o .= '<a href="newmember" id="newmember-tips" style="font-size: 1.2em;"><b>' . t('Tips for New Members') . '</b></a>' . EOL;

View File

@ -139,21 +139,49 @@ function profiles_post(&$a) {
$changes = array();
$value = '';
if($is_default) {
if($marital != $orig[0]['marital']) $changes[] = '&hearts; ' . t('Marital Status');
if($withchanged) $changes[] = '&hearts; ' . t('Romantic Partner');
if($work != $orig[0]['work']) $changes[] = t('Work/Employment');
if($religion != $orig[0]['religion']) $changes[] = t('Religion');
if($politic != $orig[0]['politic']) $changes[] = t('Political Views');
if($gender != $orig[0]['gender']) $changes[] = t('Gender');
if($sexual != $orig[0]['sexual']) $changes[] = t('Sexual Preference');
if($homepage != $orig[0]['homepage']) $changes[] = t('Homepage');
if($interest != $orig[0]['interest']) $changes[] = t('Interests');
if($marital != $orig[0]['marital']) {
$changes[] = '[color=#ff0000]&hearts;[/color] ' . t('Marital Status');
$value = $marital;
}
if($withchanged) {
$changes[] = '&hearts; ' . t('Romantic Partner');
$value = strip_tags($with);
}
if($work != $orig[0]['work']) {
$changes[] = t('Work/Employment');
}
if($religion != $orig[0]['religion']) {
$changes[] = t('Religion');
$value = $religion;
}
if($politic != $orig[0]['politic']) {
$changes[] = t('Political Views');
$value = $politic;
}
if($gender != $orig[0]['gender']) {
$changes[] = t('Gender');
$value = $gender;
}
if($sexual != $orig[0]['sexual']) {
$changes[] = t('Sexual Preference');
$value = $sexual;
}
if($homepage != $orig[0]['homepage']) {
$changes[] = t('Homepage');
$value = $homepage;
}
if($interest != $orig[0]['interest']) {
$changes[] = t('Interests');
$value = $interest;
}
if($address != $orig[0]['address'] || $locality != $orig[0]['locality'] || $region != $orig[0]['region']
|| $country_name != $orig[0]['country_name'])
$changes[] = t('Location');
|| $country_name != $orig[0]['country-name']) {
$changes[] = t('Location');
}
profile_activity($changes);
profile_activity($changes,$value);
}
@ -245,7 +273,7 @@ function profiles_post(&$a) {
}
function profile_activity($changed) {
function profile_activity($changed, $value) {
$a = get_app();
if(! local_user() || ! is_array($changed) || ! count($changed))
@ -289,7 +317,7 @@ function profile_activity($changed) {
foreach($changed as $ch) {
if(strlen($changes)) {
if ($z == ($t - 1))
$changes .= ' and ';
$changes .= t(' and ');
else
$changes .= ', ';
}
@ -299,7 +327,15 @@ function profile_activity($changed) {
$prof = '[url=' . $self[0]['url'] . '?tab=profile' . ']' . t('public profile') . '[/url]';
$arr['body'] = sprintf( t('%1$s has an updated %2$s, changing %3$s.'), $A, $prof, $changes);
if($t == 1 && strlen($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);
}
else
$message = sprintf( t('%1$s has an updated %2$s, changing %3$s.'), $A, $prof, $changes);
$arr['body'] = $message;
$arr['object'] = '<object><type>' . ACTIVITY_OBJ_PROFILE . '</type><title>' . $self[0]['name'] . '</title>'
. '<id>' . $self[0]['url'] . '/' . $self[0]['name'] . '</id>';

View File

@ -352,6 +352,7 @@ function settings_post(&$a) {
$hide_friends = (($_POST['hide-friends'] == 1) ? 1: 0);
$hidewall = (($_POST['hidewall'] == 1) ? 1: 0);
$post_newfriend = (($_POST['post_newfriend'] == 1) ? 1: 0);
$post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0);
$post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0);
@ -436,6 +437,7 @@ function settings_post(&$a) {
set_pconfig(local_user(),'system','suggestme', $suggestme);
set_pconfig(local_user(),'system','post_newfriend', $post_newfriend);
set_pconfig(local_user(),'system','post_joingroup', $post_joingroup);
set_pconfig(local_user(),'system','post_profilechange', $post_profilechange);
@ -802,6 +804,9 @@ function settings_content(&$a) {
$post_newfriend = get_pconfig(local_user(), 'system','post_newfriend');
$post_newfriend = (($post_newfriend===false)? '0': $post_newfriend); // default if not set: 0
$post_joingroup = get_pconfig(local_user(), 'system','post_joingroup');
$post_joingroup = (($post_joingroup===false)? '0': $post_joingroup); // default if not set: 0
$post_profilechange = get_pconfig(local_user(), 'system','post_profilechange');
$post_profilechange = (($post_profilechange===false)? '0': $post_profilechange); // default if not set: 0
@ -976,6 +981,7 @@ function settings_content(&$a) {
'$h_not' => t('Notification Settings'),
'$activity_options' => t('By default post a status message when:'),
'$post_newfriend' => array('post_newfriend', t('accepting a friend request'), $post_newfriend, ''),
'$post_joingroup' => array('post_joingroup', t('joining a forum/community'), $post_joingroup, ''),
'$post_profilechange' => array('post_profilechange', t('making an <em>interesting</em> profile change'), $post_profilechange, ''),
'$lbl_not' => t('Send a notification email when:'),
'$notify1' => array('notify1', t('You receive an introduction'), ($notify & NOTIFY_INTRO), NOTIFY_INTRO, ''),

View File

@ -66,14 +66,14 @@ function tagger_content(&$a) {
}
$uri = item_new_uri($a->get_hostname(),$owner_uid);
$xterm = xmlify($term);
$post_type = (($item['resource-id']) ? t('photo') : t('status'));
$targettype = (($item['resource-id']) ? ACTIVITY_OBJ_PHOTO : ACTIVITY_OBJ_NOTE );
$link = xmlify('<link rel="alternate" type="text/html" href="'
. $a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . '" />' . "\n") ;
$body = $item['body'];
$body = xmlify($item['body']);
$target = <<< EOT
<target>
@ -95,8 +95,8 @@ EOT;
<local>1</local>
<id>$tagid</id>
<link>$tagid</link>
<title>$term</title>
<content>$term</content>
<title>$xterm</title>
<content>$xterm</content>
</object>
EOT;

View File

@ -24,13 +24,13 @@ function viewcontacts_content(&$a) {
}
$r = q("SELECT COUNT(*) as `total` FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 ",
$r = q("SELECT COUNT(*) as `total` FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 AND `archive` = 0 ",
intval($a->profile['uid'])
);
if(count($r))
$a->set_pager_total($r[0]['total']);
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 ORDER BY `name` ASC LIMIT %d , %d ",
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 AND `archive` = 0 ORDER BY `name` ASC LIMIT %d , %d ",
intval($a->profile['uid']),
intval($a->pager['start']),
intval($a->pager['itemspage'])

View File

@ -1,6 +1,6 @@
<?php
define( 'UPDATE_VERSION' , 1138 );
define( 'UPDATE_VERSION' , 1143 );
/**
*
@ -1213,3 +1213,38 @@ function update_1137() {
q("ALTER TABLE `item_id` ADD `sid` CHAR( 255 ) NOT NULL AFTER `uid` , ADD `service` CHAR( 255 ) NOT NULL AFTER `sid` , add index (`sid`), add index ( `service`) ");
}
function update_1138() {
q("alter table contact add archive tinyint(1) not null default '0' after hidden, add index (archive)");
}
function update_1139() {
$r = q("alter table user add account_removed tinyint(1) not null default '0' after expire, add index(account_removed) ");
if(! $r)
return UPDATE_FAILED ;
return UPDATE_SUCCESS ;
}
function update_1140() {
$r = q("alter table addon add hidden tinyint(1) not null default '0' after installed, add index(hidden) ");
if(! $r)
return UPDATE_FAILED ;
return UPDATE_SUCCESS ;
}
function update_1141() {
$r = q("alter table glink add zcid int(11) not null after gcid, add index(zcid) ");
if(! $r)
return UPDATE_FAILED ;
return UPDATE_SUCCESS ;
}
function update_1142() {
$r = q("alter table user add service_class char(32) not null after expire_notification_sent, add index(service_class) ");
if(! $r)
return UPDATE_FAILED ;
return UPDATE_SUCCESS ;
}

File diff suppressed because it is too large Load Diff

View File

@ -16,10 +16,12 @@
<li class='admin link button $admin.users.2'><a href='$admin.users.0'>$admin.users.1</a><span id='pending-update' title='$h_pending'></span></li>
<li class='admin link button $admin.plugins.2'><a href='$admin.plugins.0'>$admin.plugins.1</a></li>
<li class='admin link button $admin.themes.2'><a href='$admin.themes.0'>$admin.themes.1</a></li>
<li class='admin link button $admin.dbsync.2'><a href='$admin.dbsync.0'>$admin.dbsync.1</a></li>
</ul>
<ul class='admin linklist'>
<li class='admin link button $admin.update.2'><a href='$admin.update.0'>$admin.update.1</a></li>
<li class='admin link button $admin.update.2'><a href='https://kakste.com/profile/inthegit'>Important Changes</a></li>
</ul>

View File

@ -80,6 +80,8 @@
{{ inc field_input.tpl with $field=$proxy }}{{ endinc }}
{{ inc field_input.tpl with $field=$proxyuser }}{{ endinc }}
{{ inc field_input.tpl with $field=$timeout }}{{ endinc }}
{{ inc field_input.tpl with $field=$delivery_interval }}{{ endinc }}
{{ inc field_input.tpl with $field=$maxloadavg }}{{ endinc }}
{{ inc field_input.tpl with $field=$abandon_days }}{{ endinc }}
<div class="submit"><input type="submit" name="page_site" value="$submit" /></div>

View File

@ -1,5 +1,5 @@
<ul class="tabs">
{{ for $tabs as $tab }}
<li><a href="$tab.url" class="tab button $tab.sel">$tab.label</a></li>
<li><a href="$tab.url" class="tab button $tab.sel"{{ if $tab.title }} title="$tab.title"{{ endif }}>$tab.label</a></li>
{{ endfor }}
</ul>

View File

@ -26,11 +26,14 @@
{{ if $ignored }}
<li><div id="ignore-message">$ignored</div></li>
{{ endif }}
{{ if $archived }}
<li><div id="archive-message">$archived</div></li>
{{ endif }}
<li>&nbsp;</li>
{{ if $common_text }}
<li><div id="contact-edit-common"><a href="common/$contact_id">$common_text</a></div></li>
<li><div id="contact-edit-common"><a href="$common_link">$common_text</a></div></li>
{{ endif }}
{{ if $all_friends }}
<li><div id="contact-edit-allfriends"><a href="allfriends/$contact_id">$all_friends</a></div></li>

View File

@ -1,15 +1,14 @@
Hallo $myname,
Hallo $[myname],
'$requestor' folgt dir jetzt auf $sitename.
Du hast einen neuen Anhänger auf $[sitename] - '$[requestor]'.
Du kannst das Profil unter $url abrufen.
Du kannst das Profil unter $[url] besuchen.
Bitte melde dich auf deiner Seite an um die Anfrage zu bestätigen, abzulehnen
oder zu ignorieren.
Bitte melde dich an um die Anfrage zu bestätigen oder sie zu ignorieren bzw. abzulehnen.
$siteurl
$[siteurl]
Grüße,
$sitename Administrator
beste Grüße,
$[sitename] Administrator

View File

@ -1,32 +1,32 @@
Liebe/r $username,
wir haben gerade eine Anfrage erhalten dein Passwort auf $sitename zu ändern.
Um diese Anfrage zu bestätigen folge bitte dem Bestätigungslink oder kopiere
ihn in die Adresszeile deines Browsers.
Hallo $[username],
Auf $[sitename] wurde eine Anfrage zum Zurücksetzen deines
Passworts empfangen. Um diese zu bestätigen folge bitte dem Link
weiter unten oder kopiere ihn in die Adressleiste deines Browsers.
Solltest du KEINE Änderungsanfrage gestellt haben ignoriere diese EMail einfach
und folge dem angegebenen Link UNTER KEINEN UMSTÄNDEN.
Wenn du die Anfrage NICHT gesendet haben solltest, dann IGNORIERE
bitte diese Mail und den Link.
Dein Passwort wird nicht geändert wenn du die Anfrage nicht bestätigst.
Dein Passwort wird nicht geändert werden solange wir nicht überprüfen
konnten, dass du die Anfrage gestellt hast.
Folge diesem Link zur Verifizierung der Anfrage:
Folge diesem Link um deine Identität zu verifizieren:
$reset_link
$[reset_link]
Anschließend wirst du eine EMail erhalten die dein neues Passwort enthält.
Du wirst eine weitere Email erhalten mit dem neuen Passwort.
Du kannst dein Passwort jederzeit in den Einstellungen deines Accounts ändern
nachdem du angemeldet bist.
Das Passwort kannst du anschließend wie gewohnt in deinen Account Einstellungen ändern.
Die Anmelde Daten sind die Folgenden:
Die Login-Details sind die folgenden:
Adresse der Seite: $siteurl
Anmelde Name: $email
Adresse der Seite: $[siteurl]
Login Name: $[email]
Mit freundlichen Grüßen,
$sitename Administrator
Grüße,
$[sitename] Administrator

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -138,7 +138,7 @@ $a->strings["Permission settings"] = "Berechtigungseinstellungen";
$a->strings["CC: email addresses"] = "Cc:-E-Mail-Addressen";
$a->strings["Public post"] = "Öffentlicher Beitrag";
$a->strings["Set title"] = "Titel setzen";
$a->strings["Categories (comma-separated list)"] = "Kategorien (mit Komma separierte Liste)";
$a->strings["Categories (comma-separated list)"] = "Kategorien (kommasepariert)";
$a->strings["Example: bob@example.com, mary@example.com"] = "Z.B.: bob@example.com, mary@example.com";
$a->strings["This introduction has already been accepted."] = "Diese Kontaktanfrage wurde bereits akzeptiert.";
$a->strings["Profile location is not valid or does not contain profile information."] = "Profiladresse ist ungültig oder stellt einige Profildaten nicht zur Verfügung.";
@ -301,7 +301,8 @@ $a->strings["Contact has been blocked"] = "Kontakt wurde blockiert";
$a->strings["Contact has been unblocked"] = "Kontakt wurde wieder freigegeben";
$a->strings["Contact has been ignored"] = "Kontakt wurde ignoriert";
$a->strings["Contact has been unignored"] = "Kontakt wird nicht mehr ignoriert";
$a->strings["stopped following"] = "wird nicht mehr gefolgt";
$a->strings["Contact has been archived"] = "Kontakt wurde archiviert";
$a->strings["Contact has been unarchived"] = "Kontakt wurde aus dem Archiv geholt";
$a->strings["Contact has been removed."] = "Kontakt wurde entfernt.";
$a->strings["You are mutual friends with %s"] = "Du hast mit %s eine beidseitige Freundschaft";
$a->strings["You are sharing with %s"] = "Du teilst mit %s";
@ -319,8 +320,14 @@ $a->strings["%d contact in common"] = array(
$a->strings["View all contacts"] = "Alle Kontakte anzeigen";
$a->strings["Unblock"] = "Entsperren";
$a->strings["Block"] = "Sperren";
$a->strings["Toggle Blocked status"] = "Geblockt-Sttaus ein-/ausschalten";
$a->strings["Unignore"] = "Ignorieren aufheben";
$a->strings["Toggle Ignored status"] = "Ignoriert-Status ein-/ausschalten";
$a->strings["Unarchive"] = "Unarchivieren";
$a->strings["Archive"] = "Archivieren";
$a->strings["Toggle Archive status"] = "Archiviert-Status ein-/ausschalten";
$a->strings["Repair"] = "Reparieren";
$a->strings["Advanced Contact Settings"] = "Fortgeschrittene Kontakteinstellungen";
$a->strings["Contact Editor"] = "Kontakt Editor";
$a->strings["Profile Visibility"] = "Profil Anzeige";
$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bitte wähle eines deiner Profile das angezeigt werden soll, wenn %s dein Profil aufruft.";
@ -337,13 +344,22 @@ $a->strings["Update public posts"] = "Öffentliche Beiträge aktualisieren";
$a->strings["Update now"] = "Jetzt aktualisieren";
$a->strings["Currently blocked"] = "Derzeit geblockt";
$a->strings["Currently ignored"] = "Derzeit ignoriert";
$a->strings["Currently archived"] = "Momentan archiviert";
$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Antworten/Likes auf deine öffentlichen Beiträge <strong>könnten</strong> weiterhin sichtbar sein";
$a->strings["Suggestions"] = "Kontaktvorschläge";
$a->strings["Suggest potential friends"] = "Freunde vorschlagen";
$a->strings["All Contacts"] = "Alle Kontakte";
$a->strings["Unblocked Contacts"] = "Nicht blockierte Kontakte";
$a->strings["Blocked Contacts"] = "Blockierte Kontakte";
$a->strings["Ignored Contacts"] = "Ignorierte Kontakte";
$a->strings["Hidden Contacts"] = "Verborgene Kontakte";
$a->strings["Show all contacts"] = "Alle Kontakte anzeigen";
$a->strings["Unblocked"] = "Ungeblockt";
$a->strings["Only show unblocked contacts"] = "Nur nicht-blockierte Kontakte anzeigen";
$a->strings["Blocked"] = "Geblockt";
$a->strings["Only show blocked contacts"] = "Nur blockierte Kontakte anzeigen";
$a->strings["Ignored"] = "Ignoriert";
$a->strings["Only show ignored contacts"] = "Nur ignorierte Kontakte anzeigen";
$a->strings["Archived"] = "Archiviert";
$a->strings["Only show archived contacts"] = "Nur archivierte Kontakte anzeigen";
$a->strings["Hidden"] = "Verborgen";
$a->strings["Only show hidden contacts"] = "Nur verborgene Kontakte anzeigen";
$a->strings["Mutual Friendship"] = "Beidseitige Freundschaft";
$a->strings["is a fan of yours"] = "ist ein Fan von dir";
$a->strings["you are a fan of"] = "du bist Fan von";
@ -373,6 +389,7 @@ $a->strings["Connector settings"] = "Connector-Einstellungen";
$a->strings["Plugin settings"] = "Plugin-Einstellungen";
$a->strings["Connected apps"] = "Verbundene Programme";
$a->strings["Export personal data"] = "Persönliche Daten exportieren";
$a->strings["Remove account"] = "Account entfernen";
$a->strings["Settings"] = "Einstellungen";
$a->strings["Missing some important data!"] = "Wichtige Daten fehlen!";
$a->strings["Update"] = "Aktualisierungen";
@ -424,17 +441,17 @@ $a->strings["Display Settings"] = "Anzeige Einstellungen";
$a->strings["Display Theme:"] = "Theme:";
$a->strings["Update browser every xx seconds"] = "Browser alle xx Sekunden aktualisieren";
$a->strings["Minimum of 10 seconds, no maximum"] = "Minimal 10 Sekunden, kein Maximum";
$a->strings["Number of items to display on the network page:"] = "Zahl der Beiträge, welche pro Netzwerkseite angezeigt werden sollen: ";
$a->strings["Number of items to display on the network page:"] = "Zahl der Beiträge, die pro Netzwerkseite angezeigt werden sollen: ";
$a->strings["Maximum of 100 items"] = "Maximal 100 Beiträge";
$a->strings["Don't show emoticons"] = "Keine Smilies anzeigen";
$a->strings["Normal Account"] = "Normaler Account";
$a->strings["This account is a normal personal profile"] = "Dieser Account ist ein normales persönliches Profil";
$a->strings["Soapbox Account"] = "Sandkasten-Account";
$a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Freundschaftsanfragen werden automatisch als Nurlese-Fans akzeptiert";
$a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Kontaktanfragen werden automatisch als Nurlese-Fans akzeptiert";
$a->strings["Community/Celebrity Account"] = "Gemeinschafts/Promi-Account";
$a->strings["Automatically approve all connection/friend requests as read-write fans"] = "Freundschaftsanfragen werden automatisch als Lese-und-Schreib-Fans akzeptiert";
$a->strings["Automatically approve all connection/friend requests as read-write fans"] = "Kontaktanfragen werden automatisch als Lese-und-Schreib-Fans akzeptiert";
$a->strings["Automatic Friend Account"] = "Automatischer Freundesaccount";
$a->strings["Automatically approve all connection/friend requests as friends"] = "Freundschaftsanfragen werden automatisch als Freund akzeptiert";
$a->strings["Automatically approve all connection/friend requests as friends"] = "Kontaktanfragen werden automatisch als Freund akzeptiert";
$a->strings["OpenID:"] = "OpenID:";
$a->strings["(Optional) Allow this OpenID to login to this account."] = "(Optional) Erlaube die Anmeldung für diesen Account mit dieser OpenID.";
$a->strings["Publish your default profile in your local site directory?"] = "Veröffentliche dein Standardprofil im Verzeichnis der lokalen Seite?";
@ -475,14 +492,15 @@ $a->strings["(click to open/close)"] = "(klicke zum öffnen/schließen)";
$a->strings["Maximum private messages per day from unknown people:"] = "Maximale Anzahl von privaten Nachrichten, die dir unbekannte Personen pro Tag senden dürfen:";
$a->strings["Notification Settings"] = "Benachrichtigungseinstellungen";
$a->strings["By default post a status message when:"] = "Standardmäßig eine Status-Nachricht posten wenn:";
$a->strings["accepting a friend request"] = "akzeptieren einer Freundschaftsanfrage";
$a->strings["making an <em>interesting</em> profile change"] = "<em>interessante</em> Änderungen am Profil gemacht werden";
$a->strings["accepting a friend request"] = " du eine Kontaktanfrage akzeptierst";
$a->strings["joining a forum/community"] = " du einem Forum/einer Gemeinschaftsseite beitrittst";
$a->strings["making an <em>interesting</em> profile change"] = " du eine <em>interessante</em> Änderung an deinem Profil durchführst";
$a->strings["Send a notification email when:"] = "Benachrichtigungs-E-Mail senden wenn:";
$a->strings["You receive an introduction"] = "- du eine Kontaktanfrage erhältst";
$a->strings["Your introductions are confirmed"] = "- eine deiner Kontaktanfragen akzeptiert wurde";
$a->strings["Someone writes on your profile wall"] = "- jemand etwas auf deine Pinnwand schreibt";
$a->strings["Someone writes a followup comment"] = "- jemand auch einen Kommentar verfasst";
$a->strings["You receive a private message"] = "- du eine private Nachricht erhältst";
$a->strings["You receive an introduction"] = " du eine Kontaktanfrage erhältst";
$a->strings["Your introductions are confirmed"] = " eine deiner Kontaktanfragen akzeptiert wurde";
$a->strings["Someone writes on your profile wall"] = " jemand etwas auf deine Pinnwand schreibt";
$a->strings["Someone writes a followup comment"] = " jemand auch einen Kommentar verfasst";
$a->strings["You receive a private message"] = " du eine private Nachricht erhältst";
$a->strings["You receive a friend suggestion"] = "- du eine Empfehlung erhältst";
$a->strings["You are tagged in a post"] = "- du in einem Beitrag erwähnt wurdest";
$a->strings["Advanced Page Settings"] = "Erweiterte Seiten-Einstellungen";
@ -494,10 +512,16 @@ $a->strings["Remove term"] = "Begriff entfernen";
$a->strings["Saved Searches"] = "Gespeicherte Suchen";
$a->strings["add"] = "hinzufügen";
$a->strings["Commented Order"] = "Neueste Kommentare";
$a->strings["Sort by Comment Date"] = "Nach Kommentardatum sortieren";
$a->strings["Posted Order"] = "Neueste Beiträge";
$a->strings["Sort by Post Date"] = "Nach Beitragsdatum sortieren";
$a->strings["Posts that mention or involve you"] = "Beiträge, in denen es um Dich geht";
$a->strings["New"] = "Neue";
$a->strings["Activity Stream - by date"] = "Aktivitäten-Stream - nach Datum";
$a->strings["Starred"] = "Markierte";
$a->strings["Favourite Posts"] = "Favorisierte Beiträge";
$a->strings["Shared Links"] = "Geteilte Links";
$a->strings["Interesting Links"] = "Interessante Links";
$a->strings["Warning: This group contains %s member from an insecure network."] = array(
0 => "Warnung: Diese Gruppe beinhaltet %s Person aus einem unsicheren Netzwerk.",
1 => "Warnung: Diese Gruppe beinhaltet %s Personen aus unsicheren Netzwerken.",
@ -659,6 +683,8 @@ $a->strings["Site"] = "Seite";
$a->strings["Users"] = "Nutzer";
$a->strings["Plugins"] = "Plugins";
$a->strings["Themes"] = "Themen";
$a->strings["DB updates"] = "DB Updates";
$a->strings["Software Update"] = "Software Update";
$a->strings["Logs"] = "Protokolle";
$a->strings["User registrations waiting for confirmation"] = "Nutzeranmeldungen die auf Bestätigung warten";
$a->strings["Administration"] = "Administration";
@ -723,6 +749,18 @@ $a->strings["Proxy user"] = "Proxy Nutzer";
$a->strings["Proxy URL"] = "Proxy URL";
$a->strings["Network timeout"] = "Netzwerk Wartezeit";
$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Der Wert ist in Sekunden. Setze 0 für unbegrenzt (nicht empfohlen).";
$a->strings["Delivery interval"] = "Zustellungsintervall";
$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl an Sekunden um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared-Hosts, 2-3 für VPS, 0-1 für große dedizierte Server.";
$a->strings["Update has been marked successful"] = "Update wurde als erfolgreich markiert";
$a->strings["Executing %s failed. Check system logs."] = "Ausführung von %s schlug fehl. Systemprotokolle prüfen.";
$a->strings["Update %s was successfully applied."] = "Update %s war erfolgreich.";
$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "Update %s hat keinen Status zurückgegeben. Unbekannter Status.";
$a->strings["Update function %s could not be found."] = "Updatefunktion %s konnte nicht gefunden werden.";
$a->strings["No failed updates."] = "Keine fehlgeschlagenen Updates.";
$a->strings["Failed Updates"] = "Fehlgeschlagene Updates";
$a->strings["This does not include updates prior to 1139, which did not return a status."] = "Ohne Updates vor 1139, da diese keinen Status zurückgegeben haben.";
$a->strings["Mark success (if update was manually applied)"] = "Als erfolgreich markieren (falls das Update manuell installiert wurde)";
$a->strings["Attempt to execute this update step automatically"] = "Versuchen, diesen Schritt automatisch auszuführen";
$a->strings["%s user blocked/unblocked"] = array(
0 => "%s Benutzer geblockt/freigegeben",
1 => "%s Benutzer geblockt/freigegeben",
@ -814,7 +852,10 @@ $a->strings["Homepage"] = "Webseite";
$a->strings["Interests"] = "Interessen";
$a->strings["Location"] = "Wohnort";
$a->strings["Profile updated."] = "Profil aktualisiert.";
$a->strings[" and "] = " und ";
$a->strings["public profile"] = "öffentliches Profil";
$a->strings["%1\$s changed %2\$s to \"%3\$s\""] = "%1\$s änderte %2\$s zu \"%3\$s\"";
$a->strings[" - Visit %1\$s's %2\$s"] = " - %1\$s's %2\$s besuchen";
$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat folgendes aktualisiert %2\$s, verändert wurde %3\$s.";
$a->strings["Profile deleted."] = "Profil gelöscht.";
$a->strings["Profile-"] = "Profil-";
@ -894,7 +935,7 @@ $a->strings["%d message sent."] = array(
);
$a->strings["You have no more invitations available"] = "Du hast keine weiteren Einladungen";
$a->strings["Visit %s for a list of public sites that you can join. Friendica members on other sites can all connect with each other, as well as with members of many other social networks."] = "Besuche %s für eine Liste der öffentlichen Server, denen du beitreten kannst. Friendica Mitglieder unterschiedlicher Server können sich sowohl alle miteinander verbinden, als auch mit Mitgliedern anderer Sozialer Netzwerke.";
$a->strings["To accept this invitation, please visit and register at %s or any other public Friendica website."] = "Um diese Freundschaftsanfrage zu akzeptieren, besuche und registriere dich bitte bei %s oder einer anderen öffentlichen Friendica Website.";
$a->strings["To accept this invitation, please visit and register at %s or any other public Friendica website."] = "Um diese Kontaktanfrage zu akzeptieren, besuche und registriere dich bitte bei %s oder einer anderen öffentlichen Friendica Website.";
$a->strings["Friendica sites all inter-connect to create a huge privacy-enhanced social web that is owned and controlled by its members. They can also connect with many traditional social networks. See %s for a list of alternate Friendica sites you can join."] = "Friendica Server verbinden sich alle untereinander, um ein großes datenschutzorientiertes Soziales Netzwerk zu bilden, das von seinen Mitgliedern betrieben und kontrolliert wird. Sie können sich auch mit vielen üblichen Sozialen Netzwerken verbinden. Besuche %s für eine Liste alternativer Friendica Server, denen du beitreten kannst.";
$a->strings["Our apologies. This system is not currently configured to connect with other public sites or invite members."] = "Es tut uns Leid. Dieses System ist zurzeit nicht dafür konfiguriert, sich mit anderen öffentlichen Seiten zu verbinden oder Mitglieder einzuladen.";
$a->strings["Send invitations"] = "Einladungen senden";
@ -921,6 +962,7 @@ $a->strings["The ID provided by your system is a duplicate on our system. It sho
$a->strings["Unable to set your contact credentials on our system."] = "Deine Kontaktreferenzen konnten nicht in unserem System gespeichert werden.";
$a->strings["Unable to update your contact profile details on our system"] = "Die Updates für dein Profil konnten nicht gespeichert werden";
$a->strings["Connection accepted at %s"] = "Auf %s wurde die Verbindung akzeptiert";
$a->strings["%1\$s has joined %2\$s"] = "%1\$s ist %2\$s beigetreten";
$a->strings["Facebook disabled"] = "Facebook deaktiviert";
$a->strings["Updating contacts"] = "Aktualisiere Kontakte";
$a->strings["Facebook API key is missing."] = "Facebook-API-Schlüssel nicht gefunden";
@ -947,7 +989,8 @@ $a->strings["The given API Key seems to work correctly."] = "Der angegebene API
$a->strings["The correctness of the API Key could not be detected. Somthing strange's going on."] = "Die Echtheit des API Schlüssels konnte nicht überprüft werden. Etwas Merkwürdiges ist hier im Gange.";
$a->strings["App-ID / API-Key"] = "App-ID / API-Key";
$a->strings["Application secret"] = "Anwendungs-Geheimnis";
$a->strings["Polling Interval (min. %1\$s minutes)"] = "Abrufintervall (min. %1\$s Minuten)";
$a->strings["Polling Interval in minutes (minimum %1\$s minutes)"] = "Abfrage-Intervall in Minuten (min %1\$s Minuten)";
$a->strings["Synchronize comments (no comments on Facebook are missed, at the cost of increased system load)"] = "Kommentare synchronisieren (Kein Kommentar von Facebook geht verlohren, verursacht höhere Last auf dem Server)";
$a->strings["Real-Time Updates"] = "Echt-Zeit Aktualisierungen";
$a->strings["Real-Time Updates are activated."] = "Echtzeit-Updates sind aktiviert.";
$a->strings["Deactivate Real-Time Updates"] = "Echtzeit-Updates deaktivieren";
@ -961,6 +1004,11 @@ $a->strings["Facebook post failed. Queued for retry."] = "Veröffentlichung bei
$a->strings["Your Facebook connection became invalid. Please Re-authenticate."] = "Deine Facebook Anmeldedaten sind ungültig geworden. Bitte re-authentifiziere dich.";
$a->strings["Facebook connection became invalid"] = "Facebook Anmeldedaten sind ungültig geworden";
$a->strings["Hi %1\$s,\n\nThe connection between your accounts on %2\$s and Facebook became invalid. This usually happens after you change your Facebook-password. To enable the connection again, you have to %3\$sre-authenticate the Facebook-connector%4\$s."] = "Hi %1\$s,\n\ndie Verbindung von deinem Account auf %2\$s und Facebook funktioniert derzeit nicht. Dies ist im Allgemeinen das Ergebnis einer Passwortänderung bei Facebook. Um die Verbindung wieder zu aktivieren musst du %3\$sden Facebook-Connector neu Authentifizieren%4\$s.";
$a->strings["Lifetime of the cache (in hours)"] = "Lebenszeit des Caches (in Stunden)";
$a->strings["Cache Statistics"] = "Cache Statistik";
$a->strings["Number of items"] = "Anzahl der Einträge";
$a->strings["Size of the cache"] = "Größe des Caches";
$a->strings["Delete the whole cache"] = "Cache leeren";
$a->strings["%d person likes this"] = array(
0 => "%d Person mag das",
1 => "%d Leuten mögen das",
@ -969,6 +1017,7 @@ $a->strings["%d person doesn't like this"] = array(
0 => " %d Person mag das nicht",
1 => "%d Leute mögen das nicht",
);
$a->strings["Get added to this list!"] = "Werde Mitglied dieser Liste";
$a->strings["Generate new key"] = "Neuen Schlüssel erstellen";
$a->strings["Widgets key"] = "Widgets Schlüssel";
$a->strings["Widgets available"] = "Verfügbare Widgets";
@ -1058,12 +1107,12 @@ $a->strings["The impressum addon needs to be configured!<br />Please add at leas
$a->strings["The page operators name."] = "Name des Server-Administrators";
$a->strings["Site Owners Profile"] = "Profil des Seitenbetreibers";
$a->strings["Profile address of the operator."] = "Profil-Adresse des Server-Administrators";
$a->strings["How to contact the operator via snail mail."] = "Wie erreicht man den Betreiber der Seite postalisch.";
$a->strings["How to contact the operator via snail mail. You can use BBCode here."] = "Kontaktmöglichkeiten zum Administrator via Schneckenpost. Du kannst BBCode verwenden.";
$a->strings["Notes"] = "Hinweise";
$a->strings["Additional notes that are displayed beneath the contact information."] = "Zusätzliche Angaben, die unterhalb der Kontakt-Informationen angezeigt werden.";
$a->strings["Additional notes that are displayed beneath the contact information. You can use BBCode here."] = "Zusätzliche Informationen die neben den Kontaktmöglichkeiten angezeigt werden. Du kannst BBCode verwenden.";
$a->strings["How to contact the operator via email. (will be displayed obfuscated)"] = "Wie erreichts man den Betreiber per Email. (Adresse wird verschleiert dargestellt)";
$a->strings["Footer note"] = "Fußnote";
$a->strings["Text for the footer."] = "Text für die Fußnote";
$a->strings["Text for the footer. You can use BBCode here."] = "Text für die Fußzeile. Du kannst BBCode verwenden.";
$a->strings["Report Bug"] = "Fehlerreport erstellen";
$a->strings["\"Blockem\" Settings"] = "\"Blockem\"-Einstellungen";
$a->strings["Comma separated profile URLS to block"] = "Profil-URLs, die blockiert werden sollen (durch Kommas getrennt)";
@ -1131,7 +1180,7 @@ $a->strings["Cancel Connection Process"] = "Verbindungsprozess abbrechen";
$a->strings["Current StatusNet API is"] = "Derzeitige StatusNet-API-URL lautet";
$a->strings["Cancel StatusNet Connection"] = "Verbindung zum StatusNet Server abbrechen";
$a->strings["Currently connected to: "] = "Momentan verbunden mit: ";
$a->strings["If enabled all your <strong>public</strong> postings can be posted to the associated StatusNet account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Wenn aktiviert, so können all deine <strong>öffentlichen</strong> Einträge auf dem verbundenen StatusNet Konto veröffentlicht werden. Du kannst das (hier) als Standardverhalten einstellen oder beim Schreiben eines Beitrags in den Beitragsoptionen festlegen.";
$a->strings["If enabled all your <strong>public</strong> postings can be posted to the associated StatusNet account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Wenn aktiviert, können all deine <strong>öffentlichen</strong> Einträge auf dem verbundenen StatusNet-Konto veröffentlicht werden. Du kannst das (hier) als Standardverhalten einstellen oder beim Schreiben eines Beitrags in den Beitragsoptionen festlegen.";
$a->strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to StatusNet will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Hinweis</strong>: Aufgrund deiner Privatsphären-Einstellungen (<em>Profil-Details vor unbekannten Betrachtern verbergen?</em>) wird der Link, der eventuell an deinen StatusNet Account angehängt wird, um auf den original Artikel zu verweisen, den Betrachter auf eine leere Seite führen, die ihn darüber informiert, dass der Zugriff eingeschränkt wurde.";
$a->strings["Allow posting to StatusNet"] = "Veröffentlichung bei StatusNet erlauben";
$a->strings["Send public postings to StatusNet by default"] = "Veröffentliche öffentliche Beiträge standardmäßig bei StatusNet";
@ -1178,7 +1227,7 @@ $a->strings["No consumer key pair for Twitter found. Please contact your site ad
$a->strings["At this Friendica instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Auf diesem Friendica-Server wurde das Twitter-Plugin aktiviert, aber du hast deinen Account noch nicht mit deinem Twitter-Account verbunden. Klicke dazu auf die Schaltfläche unten. Du erhältst dann eine PIN von Twitter, die du dann in das Eingabefeld unten einfügst. Denk daran, den Senden-Knopf zu drücken! Nur <strong>öffentliche</strong> Beiträge werden bei Twitter veröffentlicht.";
$a->strings["Log in with Twitter"] = "bei Twitter anmelden";
$a->strings["Copy the PIN from Twitter here"] = "Kopiere die Twitter-PIN hier her";
$a->strings["If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Wenn aktiviert, so können all deine <strong>öffentlichen</strong> Einträge auf dem verbundenen Twitter Konto veröffentlicht werden. Du kannst dies (hier) als Standardverhalten einstellen oder beim Schreiben eines Beitrags in den Beitragsoptionen festlegen.";
$a->strings["If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Wenn aktiviert, können all deine <strong>öffentlichen</strong> Einträge auf dem verbundenen Twitter-Konto veröffentlicht werden. Du kannst dies (hier) als Standardverhalten einstellen oder beim Schreiben eines Beitrags in den Beitragsoptionen festlegen.";
$a->strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Hinweis</strong>: Aufgrund deiner Privatsphären-Einstellungen (<em>Profil-Details vor unbekannten Betrachtern verbergen?</em>) wird der Link, der eventuell an an deinen Twitter Account angehängt wird, um auf den original Artikel zu verweisen, den Betrachter auf eine leere Seite führen, die ihn darüber informiert, dass der Zugriff eingeschränkt wurde.";
$a->strings["Allow posting to Twitter"] = "Veröffentlichung bei Twitter erlauben";
$a->strings["Send public postings to Twitter by default"] = "Veröffentliche öffentliche Beiträge standardmäßig bei Twitter";
@ -1204,6 +1253,11 @@ $a->strings["Enable Posterous Post Plugin"] = "Posterous-Plugin aktivieren";
$a->strings["Posterous login"] = "Posterous-Anmeldename";
$a->strings["Posterous password"] = "Posterous-Passwort";
$a->strings["Post to Posterous by default"] = "Veröffentliche öffentliche Beiträge standardmäßig bei Posterous";
$a->strings["Theme settings"] = "Themen Einstellungen";
$a->strings["Set resize level for images in posts and comments (width and height)"] = "Wähle das Vergrößerungsmaß für Bilder in Beiträgen und Kommentaren (Höhe und Breite)";
$a->strings["Set font-size for posts and comments"] = "Schriftgröße für Beiträge und Kommentare festlegen";
$a->strings["Color scheme"] = "Farbschema";
$a->strings["Community Profiles"] = "Community-Profile";
$a->strings["Last users"] = "Letzte Nutzer";
$a->strings["Last likes"] = "Zuletzt gemocht";
$a->strings["Last photos"] = "Letzte Fotos";
@ -1221,15 +1275,13 @@ $a->strings["Your photos"] = "Deine Fotos";
$a->strings["Your events"] = "Deine Ereignisse";
$a->strings["Personal notes"] = "Persönliche Notizen";
$a->strings["Your personal photos"] = "Deine privaten Fotos";
$a->strings["Theme settings"] = "Themen Einstellungen";
$a->strings["Set font-size for posts and comments"] = "Schriftgröße für Beiträge und Kommentare festlegen";
$a->strings["Set line-height for posts and comments"] = "Liniengröße für Beiträge und Kommantare festlegen";
$a->strings["Set resolution for middle column"] = "Auflösung für die Mittelspalte setzen";
$a->strings["Set color scheme"] = "Wähle Farbschema";
$a->strings["Alignment"] = "Ausrichtung";
$a->strings["Left"] = "Links";
$a->strings["Center"] = "Mitte";
$a->strings["Color scheme"] = "Farbschema";
$a->strings["Set colour scheme"] = "Farbschema wählen";
$a->strings["Gender:"] = "Geschlecht:";
$a->strings["j F, Y"] = "j F, Y";
$a->strings["j F"] = "j F";
@ -1428,6 +1480,10 @@ $a->strings["All Networks"] = "Alle Netzwerke";
$a->strings["Saved Folders"] = "Gespeicherte Ordner";
$a->strings["Everything"] = "Alles";
$a->strings["Categories"] = "Kategorien";
$a->strings["%d friend in common"] = array(
0 => "%d gemeinsamer Freund",
1 => "%d gemeinsame Freunde",
);
$a->strings["Logged out."] = "Abgemeldet.";
$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Beim versuch dich mit der von dir angegebenen OpenID anzumelden trat ein Problem auf. Bitte überprüfe dass du die OpenID richtig geschrieben hast.";
$a->strings["The error message was:"] = "Die Fehlermeldung lautete:";
@ -1483,7 +1539,7 @@ $a->strings["tagged you"] = "erwähnte Dich";
$a->strings["[Friendica:Notify] %s tagged your post"] = "[Friendica Meldung] %s markierte Deinen Beitrag";
$a->strings["%s tagged your post at %s"] = "%s hat deinen Beitrag auf %s getaggt";
$a->strings["%s tagged %s"] = "%s markierte %s";
$a->strings["your post"] = "Deinen Beitrag";
$a->strings["your post"] = "deinen Beitrag";
$a->strings["[Friendica:Notify] Introduction received"] = "[Friendica Meldung] Kontaktanfrage erhalten";
$a->strings["You've received an introduction from '%s' at %s"] = "Du hast eine Kontaktanfrage von '%s' auf %s erhalten";
$a->strings["You've received %s from %s."] = "Du hast %s von %s erhalten.";
@ -1505,10 +1561,11 @@ $a->strings["Welcome "] = "Willkommen ";
$a->strings["Please upload a profile photo."] = "Bitte lade ein Profilbild hoch.";
$a->strings["Welcome back "] = "Willkommen zurück ";
$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Das Sicherheits-Merkmal war nicht korrekt. Das passiert meistens wenn das Formular vor dem Absenden zu lange geöffnet war (länger als 3 Stunden).";
$a->strings["stopped following"] = "wird nicht mehr gefolgt";
$a->strings["View Status"] = "Pinnwand anschauen";
$a->strings["View Profile"] = "Profil anschauen";
$a->strings["View Photos"] = "Bilder anschauen";
$a->strings["Network Posts"] = "Netzwerk Beiträge";
$a->strings["Network Posts"] = "Netzwerk-Beiträge";
$a->strings["Edit Contact"] = "Kontakt bearbeiten";
$a->strings["Send PM"] = "Private Nachricht senden";
$a->strings["post/item"] = "Nachricht/Beitrag";
@ -1525,6 +1582,14 @@ $a->strings["like"] = "mag ich";
$a->strings["dislike"] = "mag ich nicht";
$a->strings["Share this"] = "Teile dieses";
$a->strings["share"] = "Teilen";
$a->strings["Bold"] = "Fett";
$a->strings["Italic"] = "Kursiv";
$a->strings["Underline"] = "Unterstrichen";
$a->strings["Quote"] = "Zitat";
$a->strings["Code"] = "Code";
$a->strings["Image"] = "Bild";
$a->strings["Link"] = "Verweis";
$a->strings["Video"] = "Video";
$a->strings["add star"] = "markieren";
$a->strings["remove star"] = "Markierung entfernen";
$a->strings["toggle star status"] = "Markierung umschalten";
@ -1560,6 +1625,8 @@ $a->strings["clear location"] = "Ort löschen";
$a->strings["permissions"] = "Zugriffsrechte";
$a->strings["Delete this item?"] = "Diesen Beitrag löschen?";
$a->strings["show fewer"] = "weniger anzeigen";
$a->strings["Update %s failed. See error logs."] = "Update %s fehlgeschlagen. Bitte Fehlerprotokoll überprüfen.";
$a->strings["Update Error at %s"] = "Updatefehler bei %s";
$a->strings["Create a New Account"] = "Neuen Account erstellen";
$a->strings["Nickname or Email address: "] = "Spitzname oder Email-Adresse: ";
$a->strings["Password: "] = "Passwort: ";
@ -1569,9 +1636,13 @@ $a->strings["Edit profile"] = "Profil bearbeiten";
$a->strings["Message"] = "Nachricht";
$a->strings["g A l F d"] = "l, d. F G \\U\\h\\r";
$a->strings["F d"] = "d. F";
$a->strings["[today]"] = "[heute]";
$a->strings["Birthday Reminders"] = "Geburtstagserinnerungen";
$a->strings["Birthdays this week:"] = "Geburtstage diese Woche:";
$a->strings["[today]"] = "[heute]";
$a->strings["[No description]"] = "[keine Beschreibung]";
$a->strings["Event Reminders"] = "Veranstaltungserinnerungen";
$a->strings["Events this week:"] = "Veranstaltungen diese Woche";
$a->strings["[No description]"] = "[keine Beschreibung]";
$a->strings["Status Messages and Posts"] = "Statusnachrichten und Beiträge";
$a->strings["Profile Details"] = "Profildetails";
$a->strings["Events and Calendar"] = "Ereignisse und Kalender";
$a->strings["Only You Can See This"] = "Nur Du Kannst Das Sehen";

View File

@ -1,12 +1,11 @@
Hey,
Ich bin's, $sitename.
Die Friendica-Entwickler haben gerade Update $update freigegeben,
aber als ich es installieren wollte, ist irgendetwas schief gegangen.
Das sollte schnell repariert werden und alleine schaffe ich es nicht.
Wende dich bitte an einen Friendica-Entwickler, wenn du mir nicht selbst helfen kannst.
Meine Datenbank könnte ziemlich durcheinander sein.
Hi,
ich bin $sitename.
Die friendica Entwickler haben jüngst Update $update veröffentlicht,
aber als ich versucht habe es zu installieren ist etwas schrecklich schief gegangen.
Das sollte schnellst möglichst behoben werden und ich kann das nicht alleine machen.
Bitte wende dich an einen friendica Entwickler, falls du mir nicht alleine helfen kannst. Meine Datenbank könnte unbrauchbar sein.
Die Fehlermeldung ist '$error'.
Die Fehlermeldung lautet '$error'.
Tut mir leid,
dein Friendica Server unter $siteurl
Tut mir Leid!
Deine friendica Instanz auf $siteurl

File diff suppressed because it is too large Load Diff

View File

@ -301,7 +301,8 @@ $a->strings["Contact has been blocked"] = "Kontakto estas blokita.";
$a->strings["Contact has been unblocked"] = "Kontakto estas malblokita.";
$a->strings["Contact has been ignored"] = "Kontakto estas ignorita.";
$a->strings["Contact has been unignored"] = "Kontakto estas malignorita.";
$a->strings["stopped following"] = "ne plu sekvas";
$a->strings["Contact has been archived"] = "Enarkivigis kontakton";
$a->strings["Contact has been unarchived"] = "Elarkivigis kontakton";
$a->strings["Contact has been removed."] = "Kontakto estas forigita.";
$a->strings["You are mutual friends with %s"] = "Vi estas reciproka amiko de %s";
$a->strings["You are sharing with %s"] = "Vi kunhavigas kun %s";
@ -319,8 +320,14 @@ $a->strings["%d contact in common"] = array(
$a->strings["View all contacts"] = "Vidi ĉiujn kontaktojn";
$a->strings["Unblock"] = "Malbloki";
$a->strings["Block"] = "Bloki";
$a->strings["Toggle Blocked status"] = "Ŝalti/malŝalti Blokitan staton";
$a->strings["Unignore"] = "Malignori";
$a->strings["Toggle Ignored status"] = "Ŝalti/malŝalti Ignoritan staton";
$a->strings["Unarchive"] = "Elarkivigi";
$a->strings["Archive"] = "Enarkivigi";
$a->strings["Toggle Archive status"] = "Ŝalti/malŝalti Enarkivigitan staton";
$a->strings["Repair"] = "Ripari";
$a->strings["Advanced Contact Settings"] = "Specialaj Kontaktagordoj";
$a->strings["Contact Editor"] = "Kontakta redaktilo.";
$a->strings["Profile Visibility"] = "Videbleco de profilo";
$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bonvolu elekti la profilon kiu vi volas montri al %s aspektinde kiam sekure aspektante vian profilon.";
@ -337,13 +344,22 @@ $a->strings["Update public posts"] = "Ĝisdatigi publikajn afiŝojn";
$a->strings["Update now"] = "Ĝisdatigi nun";
$a->strings["Currently blocked"] = "Nuntempe blokata";
$a->strings["Currently ignored"] = "Nuntempe ignorata";
$a->strings["Currently archived"] = "Nuntempe enarkivigita";
$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Rispondoj/ŝataĵo al viaj publikaj afiŝoj <strong>eble</strong> plu estos videbla";
$a->strings["Suggestions"] = "Sugestoj";
$a->strings["Suggest potential friends"] = "Sugesti amikojn";
$a->strings["All Contacts"] = "Ĉiuj Kontaktoj";
$a->strings["Unblocked Contacts"] = "Malblokitaj Kontaktoj";
$a->strings["Blocked Contacts"] = "Blokitaj Kontaktoj";
$a->strings["Ignored Contacts"] = "Ignoritaj Kontaktoj";
$a->strings["Hidden Contacts"] = "Kaŝitaj Kontaktoj";
$a->strings["Show all contacts"] = "Montri ĉiujn kontaktojn";
$a->strings["Unblocked"] = "Malblokita";
$a->strings["Only show unblocked contacts"] = "Nur montri neblokitajn kontaktojn";
$a->strings["Blocked"] = "Blokita";
$a->strings["Only show blocked contacts"] = "Nur montri blokitajn kontaktojn";
$a->strings["Ignored"] = "Ignorita";
$a->strings["Only show ignored contacts"] = "Nur montri ignoritajn kontaktojn";
$a->strings["Archived"] = "Enarkivigita";
$a->strings["Only show archived contacts"] = "Nur montri enarkivigitajn kontaktojn";
$a->strings["Hidden"] = "Kaŝita";
$a->strings["Only show hidden contacts"] = "Nur montri kaŝitajn kontaktojn";
$a->strings["Mutual Friendship"] = "Reciproka amikeco";
$a->strings["is a fan of yours"] = "estas admiranto de vi";
$a->strings["you are a fan of"] = "vi estas admiranto de";
@ -373,6 +389,7 @@ $a->strings["Connector settings"] = "Konektiloj";
$a->strings["Plugin settings"] = "Kromprogramoj";
$a->strings["Connected apps"] = "Konektitaj programoj";
$a->strings["Export personal data"] = "Eksporto";
$a->strings["Remove account"] = "Forigi konton";
$a->strings["Settings"] = "Agordoj";
$a->strings["Missing some important data!"] = "Mankas importantaj datumoj!";
$a->strings["Update"] = "Ĝisdatigi";
@ -476,6 +493,7 @@ $a->strings["Maximum private messages per day from unknown people:"] = "Taga mak
$a->strings["Notification Settings"] = "Agordoj pri Atentigoj";
$a->strings["By default post a status message when:"] = "Defaŭlte afiŝi statmesaĝon okaze de:";
$a->strings["accepting a friend request"] = "akcepti kontaktpeton";
$a->strings["joining a forum/community"] = "aliĝi forumon/komunumon";
$a->strings["making an <em>interesting</em> profile change"] = "fari <em>interesan</em> profilŝanĝon";
$a->strings["Send a notification email when:"] = "Sendu atentiga repoŝton se:";
$a->strings["You receive an introduction"] = "Vi ricevas inviton";
@ -494,10 +512,16 @@ $a->strings["Remove term"] = "Forviŝu terminon";
$a->strings["Saved Searches"] = "Konservitaj Serĉadoj";
$a->strings["add"] = "aldoni";
$a->strings["Commented Order"] = "Komenta Ordo";
$a->strings["Sort by Comment Date"] = "Ordigi laŭ Dato de Komento";
$a->strings["Posted Order"] = "Afiŝita Ordo";
$a->strings["Sort by Post Date"] = "Ordigi laŭ Dato de Afiŝado";
$a->strings["Posts that mention or involve you"] = "Afiŝoj menciantaj vin aŭ pri vi";
$a->strings["New"] = "Nova";
$a->strings["Activity Stream - by date"] = "Fluo de Aktiveco - laŭ dato";
$a->strings["Starred"] = "Steligita";
$a->strings["Favourite Posts"] = "Favorigitaj Afiŝoj";
$a->strings["Shared Links"] = "Kunhavigitaj Ligiloj";
$a->strings["Interesting Links"] = "Interesaj Ligiloj";
$a->strings["Warning: This group contains %s member from an insecure network."] = array(
0 => "Averto: La grupo enhavas %s membron el nesekuraj retejoj.",
1 => "Averto: La grupo enhavas %s membrojn el nesekuraj retejoj.",
@ -659,6 +683,8 @@ $a->strings["Site"] = "Retejo";
$a->strings["Users"] = "Uzantoj";
$a->strings["Plugins"] = "Kromprogramoj";
$a->strings["Themes"] = "Etosoj";
$a->strings["DB updates"] = "DB ĝisdatigoj";
$a->strings["Software Update"] = "Friendica Ĝisdatigoj";
$a->strings["Logs"] = "Protokoloj";
$a->strings["User registrations waiting for confirmation"] = "Uzantaj registradoj atendante konfirmon";
$a->strings["Administration"] = "Administrado";
@ -723,6 +749,18 @@ $a->strings["Proxy user"] = "Uzantnomo por retperanto";
$a->strings["Proxy URL"] = "URL adreso de retperanto";
$a->strings["Network timeout"] = "Reta tempolimo";
$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valoro en sekundoj. Uzu 0 por mallimitigi (ne rekomendata).";
$a->strings["Delivery interval"] = "Intervalo de liverado";
$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Malfruigi fonan liveradon dum tiom da sekundoj por malpliigi la ŝargon de la sistemo. Rekomendoj: 4-5 por komunaj serviloj, 2-3 por virtualaj privataj serviloj, 0-1 por grandaj dediĉitaj serviloj.";
$a->strings["Update has been marked successful"] = "Ĝisdatigo estas markita sukcesa";
$a->strings["Executing %s failed. Check system logs."] = "Ne sukcesis plenumi %s. Kontrolu la sistemprotokolojn.";
$a->strings["Update %s was successfully applied."] = "Sukcese aplikis la ĝisdatigo %s.";
$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "Ĝisdatigo %s ne liveris elirstaton. ";
$a->strings["Update function %s could not be found."] = "Ne troveblas ĝisdatigo funkcio %s.";
$a->strings["No failed updates."] = "Neniom da malsukcesaj ĝisdatigoj.";
$a->strings["Failed Updates"] = "Malsukcesaj Ĝisdatigoj";
$a->strings["This does not include updates prior to 1139, which did not return a status."] = "Ne inkluzivas ĝisdatigojn antaŭ 1139, kiuj ne liveris elirstaton.";
$a->strings["Mark success (if update was manually applied)"] = "Marki sukcesa (se la ĝisdatigo estas instalita mane)";
$a->strings["Attempt to execute this update step automatically"] = "Provi automate plenumi ĉi tian paŝon de la ĝisdatigo.";
$a->strings["%s user blocked/unblocked"] = array(
0 => "Blokis/malblokis %s uzanton",
1 => "Blokis/malblokis %s uzantojn",
@ -814,7 +852,9 @@ $a->strings["Homepage"] = "Hejmpaĝo";
$a->strings["Interests"] = "Interesoj";
$a->strings["Location"] = "Loko";
$a->strings["Profile updated."] = "Profilo ĝisdatigita.";
$a->strings[" and "] = " kaj ";
$a->strings["public profile"] = "publika profilo";
$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ŝanĝis %2\$s al &ldquo;%3\$s&rdquo;";
$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s havas ĝisdatigigan %2\$s, ŝanĝas %3\$s.";
$a->strings["Profile deleted."] = "Profilo forviŝita.";
$a->strings["Profile-"] = "Profilo-";
@ -877,7 +917,7 @@ $a->strings["Existing Page Delegates"] = "Estantaj Delegitoj de la Paĝo";
$a->strings["Potential Delegates"] = "Eblaj Delegitoj";
$a->strings["Add"] = "Aldoni";
$a->strings["No entries."] = "Neniom da afiŝoj.";
$a->strings["Friend Suggestions"] = "Amikosugestoj.";
$a->strings["Friend Suggestions"] = "Amikosugestoj";
$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Neniu sugestoj disponeblas. Se ĉi tiu estas nova retejo, bonvolu reprovi post 24 horoj.";
$a->strings["Ignore/Hide"] = "Ignori/Kaŝi";
$a->strings["Global Directory"] = "Tutmonda Katalogo";
@ -921,6 +961,7 @@ $a->strings["The ID provided by your system is a duplicate on our system. It sho
$a->strings["Unable to set your contact credentials on our system."] = "Ne sukcesis agordi la legitimaĵojn de via kontakto ĉe nia sistemo.";
$a->strings["Unable to update your contact profile details on our system"] = "Neeblas ĝisdatigi viajn profildetalojn ĉe nia sistemo.";
$a->strings["Connection accepted at %s"] = "Konekto akceptita je %s";
$a->strings["%1\$s has joined %2\$s"] = "%1\$s aliĝis al %2\$s";
$a->strings["Facebook disabled"] = "Facebook malŝaltita";
$a->strings["Updating contacts"] = "Mi ĝisdatigas la kontaktojn.";
$a->strings["Facebook API key is missing."] = "La API ŝlosilo de Facebook ne estas konata ĉi tie.";
@ -947,7 +988,7 @@ $a->strings["The given API Key seems to work correctly."] = "La API ŝlosilo ŝa
$a->strings["The correctness of the API Key could not be detected. Somthing strange's going on."] = "Ne povis kontroli la ĝustecon de la API ŝlosilo. Ia stranga afero okazas. ";
$a->strings["App-ID / API-Key"] = "Programo ID / API Ŝlosilo";
$a->strings["Application secret"] = "Programo sekreto";
$a->strings["Polling Interval (min. %1\$s minutes)"] = "Intervalo por la enketilo (poller intervalo, minimume %1\$s mintuoj) ";
$a->strings["Polling Interval in minutes (minimum %1\$s minutes)"] = "Intervalo de enketo en minutoj (minimume %1\$s minutoj)";
$a->strings["Synchronize comments (no comments on Facebook are missed, at the cost of increased system load)"] = "Sinkronigi komentojn (vi ricevas ĉiujn komentojn de Facebook, sed la ŝargo de la sistemo iom kreskas)";
$a->strings["Real-Time Updates"] = "Realtempaj Ĝisdatigoj";
$a->strings["Real-Time Updates are activated."] = "Realtempaj Ĝisdatigoj estas ŝaltita";
@ -975,6 +1016,7 @@ $a->strings["%d person doesn't like this"] = array(
0 => "%d homo malŝatas tiun",
1 => "%d homo malŝatas tiun",
);
$a->strings["Get added to this list!"] = "Iĝu membro de ĉi tiu listo!";
$a->strings["Generate new key"] = "Generi novan ĉifroŝlosilon";
$a->strings["Widgets key"] = "Ŝlosilo por fenestraĵoj";
$a->strings["Widgets available"] = "Disponeblaj fenestraĵoj";
@ -999,6 +1041,7 @@ $a->strings["Use /expression/ to provide regular expressions"] = "Uzu /expr/ por
$a->strings["NSFW Settings saved."] = "NSFW agordoj konservitaj.";
$a->strings["%s - Click to open/close"] = "%s - Klaku por malfermi/fermi";
$a->strings["Forums"] = "Forumoj";
$a->strings["show more"] = "montri pli";
$a->strings["Planets Settings"] = "Agordo pri Planets";
$a->strings["Enable Planets Plugin"] = "Ŝalti la Planets kromprogamon";
$a->strings["Login"] = "Ensaluti";
@ -1064,12 +1107,12 @@ $a->strings["The impressum addon needs to be configured!<br />Please add at leas
$a->strings["The page operators name."] = "La nomo de la funkciigisto de la retejo.";
$a->strings["Site Owners Profile"] = "Profilo de la Proprietulo de la Retejo";
$a->strings["Profile address of the operator."] = "La profilo de la funkciigisto de la retejo.";
$a->strings["How to contact the operator via snail mail."] = "Kiel kontakti la funkciigiston de la retejo tra paperpoŝto.";
$a->strings["How to contact the operator via snail mail. You can use BBCode here."] = "Kiel poŝte kontakti la funkciigisto de la retejo. Vi eblas uzi BBCode ĉi tie.";
$a->strings["Notes"] = "Notoj";
$a->strings["Additional notes that are displayed beneath the contact information."] = "Pliaj notoj kiuj estas montrigota malsupre la kontaktinformojn.";
$a->strings["Additional notes that are displayed beneath the contact information. You can use BBCode here."] = "Pli da notoj kiuj aperas sub la kontaktinformoj. Vi eblas uzi BBCode ĉi tie.";
$a->strings["How to contact the operator via email. (will be displayed obfuscated)"] = "Kiel kontakti la funkciigiston de la retejo tra retpoŝto. (montriĝos vuale) ";
$a->strings["Footer note"] = "Paĝpiednoto";
$a->strings["Text for the footer."] = "Teksto por la paĝpiedo.";
$a->strings["Text for the footer. You can use BBCode here."] = "Teksto por la paĝpiedo. Vie eblas uzi BBCode ĉi tie.";
$a->strings["Report Bug"] = "Skribi cimraporton";
$a->strings["\"Blockem\" Settings"] = "\"Blockem\" Agordoj";
$a->strings["Comma separated profile URLS to block"] = "Blokotaj URL adresoj, disigita per komo";
@ -1169,7 +1212,6 @@ $a->strings["\"Show more\" Settings"] = "\"Montri pli\" agordoj";
$a->strings["Enable Show More"] = "Ŝalti \"montri pli\"";
$a->strings["Cutting posts after how much characters"] = "Limitigi afiŝojn al kiom da literoj";
$a->strings["Show More Settings saved."] = "Konservis \"montri pli\" agordojn.";
$a->strings["show more"] = "montri pli";
$a->strings["This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool."] = "Ĉi retejo uzas <a href='http://www.piwik.org'>Piwik</a> kiel retuma analizilo.";
$a->strings["If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."] = "Se ni ne protokolu viajn vizitojn tiel, vi <a href='%s'>povas agordi kuketon por malpermesi Piwik al plu protokoli pliajn vizitojn</a> (mem-for-elekti / opt-out).";
$a->strings["Piwik Base URL"] = "Piwik baza URL adreso";
@ -1210,16 +1252,10 @@ $a->strings["Enable Posterous Post Plugin"] = "Ŝalti la Poserous-afiŝo krompro
$a->strings["Posterous login"] = "Posterous salutnomo";
$a->strings["Posterous password"] = "Posterous pasvorto";
$a->strings["Post to Posterous by default"] = "Defaŭlte afiŝi al Posterous";
$a->strings["Last users"] = "Ĵusaj uzantoj";
$a->strings["Last likes"] = "Ĵusaj ŝatitaj elementoj";
$a->strings["Last photos"] = "Ĵusaj bildoj";
$a->strings["Find Friends"] = "Trovi Amikojn";
$a->strings["Local Directory"] = "Loka Katalogo";
$a->strings["Similar Interests"] = "Similaj Interesoj";
$a->strings["Invite Friends"] = "Inviti amikojn";
$a->strings["Community Pages"] = "Komunumaj paĝoj";
$a->strings["Help or @NewHere ?"] = "Helpu aŭ @NewHere ?";
$a->strings["Connect Services"] = "Konekti Servojn";
$a->strings["Theme settings"] = "Agordoj pri la etoso";
$a->strings["Set resize level for images in posts and comments (width and height)"] = "Agordi la regrandignivelo por bildoj en afiŝoj kaj komentoj (larĝo kaj alto)";
$a->strings["Set font-size for posts and comments"] = "Agordi la tiparan grandon por afiŝoj kaj komentoj";
$a->strings["Color scheme"] = "Kolorskemo";
$a->strings["Your posts and conversations"] = "Viaj afiŝoj kaj komunikadoj";
$a->strings["Your profile page"] = "Via profilo";
$a->strings["Your contacts"] = "Viaj kontaktoj";
@ -1227,15 +1263,24 @@ $a->strings["Your photos"] = "Viaj bildoj";
$a->strings["Your events"] = "Viaj okazoj";
$a->strings["Personal notes"] = "Personaj notoj";
$a->strings["Your personal photos"] = "Viaj personaj bildoj";
$a->strings["Theme settings"] = "Agordoj pri la etoso";
$a->strings["Set font-size for posts and comments"] = "Agordi la tiparan grandon por afiŝoj kaj komentoj";
$a->strings["Community Pages"] = "Komunumaj paĝoj";
$a->strings["Community Profiles"] = "Komunumaj Profiloj";
$a->strings["Last users"] = "Ĵusaj uzantoj";
$a->strings["Last likes"] = "Ĵusaj ŝatitaj elementoj";
$a->strings["Last photos"] = "Ĵusaj bildoj";
$a->strings["Find Friends"] = "Trovi Amikojn";
$a->strings["Local Directory"] = "Loka Katalogo";
$a->strings["Similar Interests"] = "Similaj Interesoj";
$a->strings["Invite Friends"] = "Inviti amikojn";
$a->strings["Help or @NewHere ?"] = "Helpu aŭ @NewHere ?";
$a->strings["Connect Services"] = "Konekti Servojn";
$a->strings["Set line-height for posts and comments"] = "Agordi la linigrandon por afiŝoj kaj komentoj";
$a->strings["Set resolution for middle column"] = "Agordi la distingivon por la meza kolumno";
$a->strings["Set color scheme"] = "Agordi Kolorskemon";
$a->strings["Alignment"] = "Ĝisrandigo";
$a->strings["Left"] = "Maldekstren";
$a->strings["Center"] = "Centren";
$a->strings["Color scheme"] = "Kolorskemo";
$a->strings["Set colour scheme"] = "Agordi Kolorskemon";
$a->strings["Gender:"] = "Sekso:";
$a->strings["j F, Y"] = "j F, Y";
$a->strings["j F"] = "j F";
@ -1434,6 +1479,10 @@ $a->strings["All Networks"] = "Ĉiuj Retoj";
$a->strings["Saved Folders"] = "Konservitaj Dosierujoj";
$a->strings["Everything"] = "Ĉio";
$a->strings["Categories"] = "Kategorioj";
$a->strings["%d friend in common"] = array(
0 => "%d komuna amiko",
1 => "%d komunaj amikoj",
);
$a->strings["Logged out."] = "Elsalutita.";
$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Okazis problemo ensalutinta kun via OpenID. Bonvolu kontroli la ID.";
$a->strings["The error message was:"] = "La erarmesaĝo estis:";
@ -1511,6 +1560,7 @@ $a->strings["Welcome "] = "Bonvenon ";
$a->strings["Please upload a profile photo."] = "Bonvolu alŝuti profilbildon.";
$a->strings["Welcome back "] = "Bonvenon ";
$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "La sekuriga ĵetono de la formo estis malĝusta. Tio verŝajne okazis ĉar la formo estis malfermita dum tro longa tempo (>3 horoj) antaŭ la sendado.";
$a->strings["stopped following"] = "ne plu sekvas";
$a->strings["View Status"] = "Vidi Staton";
$a->strings["View Profile"] = "Vidi Profilon";
$a->strings["View Photos"] = "Vidi Bildojn";
@ -1531,6 +1581,14 @@ $a->strings["like"] = "ŝati";
$a->strings["dislike"] = "malŝati";
$a->strings["Share this"] = "Kunhavigi ĉi tiun";
$a->strings["share"] = "kunhavigi";
$a->strings["Bold"] = "Grasa";
$a->strings["Italic"] = "Kursiva";
$a->strings["Underline"] = "Substreki";
$a->strings["Quote"] = "Citaĵo";
$a->strings["Code"] = "Kodo";
$a->strings["Image"] = "Bildo";
$a->strings["Link"] = "Ligilo";
$a->strings["Video"] = "Video";
$a->strings["add star"] = "aldoni stelon";
$a->strings["remove star"] = "forpreni stelon";
$a->strings["toggle star status"] = "ŝalti/malŝalti steloŝtato";
@ -1566,6 +1624,8 @@ $a->strings["clear location"] = "forviŝi lokon";
$a->strings["permissions"] = "permesoj";
$a->strings["Delete this item?"] = "Forviŝi ĉi tiun elementon?";
$a->strings["show fewer"] = "montri malpli";
$a->strings["Update %s failed. See error logs."] = "Malsukcesis ĝisdatigi %s. Vidu la protokolojn.";
$a->strings["Update Error at %s"] = "Eraro dum ĝisdatigo ĉe %s";
$a->strings["Create a New Account"] = "Krei Novan Konton";
$a->strings["Nickname or Email address: "] = "Kaŝnomo aŭ retpoŝtadreso:";
$a->strings["Password: "] = "Pasvorto:";
@ -1575,9 +1635,13 @@ $a->strings["Edit profile"] = "Redakti profilon";
$a->strings["Message"] = "Mesaĝo";
$a->strings["g A l F d"] = "\\j\\e \\l\\a G\\a \\h\\o\\r\\o, l F d";
$a->strings["F d"] = "F d";
$a->strings["[today]"] = "[hodiaŭ]";
$a->strings["Birthday Reminders"] = "Memorigilo pri naskiĝtagoj";
$a->strings["Birthdays this week:"] = "Naskiĝtagoj ĉi-semajne:";
$a->strings["[today]"] = "[hodiaŭ]";
$a->strings["[No description]"] = "[Neniu priskribo]";
$a->strings["Event Reminders"] = "Memorigiloj pri Okazoj";
$a->strings["Events this week:"] = "Okazoj ĉi-semajne:";
$a->strings["[No description]"] = "[Neniu priskribo]";
$a->strings["Status Messages and Posts"] = "Ŝtatmesaĝoj kaj Afiŝoj";
$a->strings["Profile Details"] = "Profildetaloj";
$a->strings["Events and Calendar"] = "Okazoj kaj Kalendaro";
$a->strings["Only You Can See This"] = "Nur Vi Povas Vidi Tiun";

17
view/failed_updates.tpl Normal file
View File

@ -0,0 +1,17 @@
<h2>$banner</h2>
<div id="failed_updates_desc">$desc</div>
{{ if $failed }}
{{ for $failed as $f }}
<h4>$f</h4>
<ul>
<li><a href="$base/admin/dbsync/mark/$f">$mark</a></li>
<li><a href="$base/admin/dbsync/$f">$apply</a></li>
</ul>
<hr />
{{ endfor }}
{{ endif }}

View File

@ -1,13 +1,13 @@
Cher $username,
Cher(e) $username,
'$from' a commenté sur un élément ou une conversation que vous suivez.
« $from » a commenté un élément ou une conversation que vous suivez.
-----
$body
-----
Connectez-vous à $siteurl si vous souhaitez voir la conversation complète:
Connectez-vous à $siteurl si vous souhaitez voir la conversation complète :
$display

View File

@ -1,15 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
<html>
<head>
<title>Friendika Message</title>
<title>Message de Friendica</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
<table style="border:1px solid #ccc">
<tbody>
<tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendika</span></td></tr>
<tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendica</span></td></tr>
<tr><td style="padding-top:22px;" colspan="2">$from a commenté sur un élément ou une conversation que vous suivez.</td></tr>
<tr><td style="padding-top:22px;" colspan="2">$from a commenté un élément ou une conversation que vous suivez.</td></tr>
<tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>

View File

@ -1,12 +1,13 @@
Cher $username,
'$from' a commentŽ sur un ŽlŽment ou une conversation que vous suivez.
Cher(e) $username,
« $from » a commenté un éléŽment ou une conversation que vous suivez.
-----
$body
-----
Connectez-vous ˆ $siteurl si vous souhaitez voir la conversation compl<70>te:
Connectez-vous à $siteurl si vous souhaitez voir la conversation complète :
$display

View File

@ -1,9 +1,9 @@
Chèr(e) $myname,
Cher(e) $myname,
Une nouvelle personne - $requestor - vous suit désormais sur $sitename.
Vous pouvez visiter son profil sur $url.
Vous pouvez consulter son profil sur $url.
Merci de vous connecter à votre site pour approuver ou ignorer/annuler cette demande.

View File

@ -1,20 +1,20 @@
Chèr(e) $username,
Cher(e) $username,
Grande nouvelle... '$fn' (de '$dfrn_url') à accepté votre
demande de connexion à '$sitename'.
Grande nouvelle… « $fn » (de « $dfrn_url ») a accepté votre
demande de connexion à « $sitename ».
Vous êtes désormais dans une relation réciproque et pouvez échanger des
photos, des humeurs et des messages sans restriction.
Merci de visiter votre page 'Contacts' sur $sitename pour toute
Merci de visiter votre page « Contacts » sur $sitename pour toute
modification que vous souhaiteriez apporter à cette relation.
$siteurl
[Par exemple, vous pouvez créer un profil spécifique avec des informations
cachées au grand public - et ainsi assigner des droits privilégiés à
'$fn']/
« $fn »]/
Sincèremment,

View File

@ -1,19 +1,19 @@
Chèr(e) $username,
Cher(e) $username,
'$fn' du site '$dfrn_url' a accepté votre
demande de mise en relation sur '$sitename'.
« $fn » du site « $dfrn_url » a accepté votre
demande de mise en relation sur « $sitename ».
'$fn' a décidé de vous accepter comme "fan", ce qui restreint
« $fn » a décidé de vous accepter comme « fan », ce qui restreint
certains de vos moyens de communication - tels que les messages privés et
certaines interactions avec son profil. S'il s'agit de la page d'une
célébrité et/ou communauté, ces réglages ont été définis automatiquement.
'$fn' pourra choisir d'étendre votre relation à quelque-chose de
« $fn » pourra choisir d'étendre votre relation à quelque chose de
plus permissif dans l'avenir.
Vous allez commencer à recevoir les mises-à-jour publiques du
statut de '$fn', lesquelles apparaîtront sur votre page 'Réseau' sur
Vous allez commencer à recevoir les mises à jour publiques du
statut de « $fn », lesquelles apparaîtront sur votre page « Réseau » sur
$siteurl

View File

@ -1,6 +1,7 @@
Chèr(e) $username,
Nous avons récemment reçu, chez $sitename, un demande de remise
Cher(e) $username,
Nous avons récemment reçu, chez $sitename, une demande de remise
à zéro du mot de passe protégeant votre compte. Pour confirmer cette
demande, merci de cliquer sur le lien de vérification suivant, ou de le
coller dans la barre d'adresse de votre navigateur web.
@ -11,7 +12,7 @@ le lien en question, et d'ignorer/supprimer ce courriel.
Votre mot de passe ne sera réinitialisé qu'une fois que nous aurons pu
nous assurer que vous êtes bien à l'origine de cette demande.
Merci de suivre le lien suivant pour confirmer votre identité:
Merci de suivre le lien suivant pour confirmer votre identité :
$reset_link
@ -20,10 +21,10 @@ Vous recevrez en retour un message avec votre nouveau mot de passe.
Vous pourrez ensuite changer ce mot de passe, après connexion, dans la
page des réglages du compte.
Les informations du compte concerné sont:
Les informations du compte concerné sont :
Site: $siteurl
Pseudo/Courriel: $email
Site : $siteurl
Pseudo/Courriel : $email

View File

@ -1,22 +1,22 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
<html>
<head>
<title>Friendika Message</title>
<title>Message de Friendica</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
<table style="border:1px solid #ccc">
<tbody>
<tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendika</span></td></tr>
<tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendica</span></td></tr>
<tr><td style="padding-top:22px;" colspan="2">$from t'a envoyŽ un message ˆ $siteName.</td></tr>
<tr><td style="padding-top:22px;" colspan="2">$from vous a envoyé un message à $siteName.</td></tr>
<tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
<td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
<tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
<tr><td style="padding-right:22px;">$htmlversion</td></tr>
<tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Ouvrez une session svp ˆ <a href="$siteurl">$siteurl</a> pour lire et rŽpondre ˆ vos messages privŽs.</td></tr>
<tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Veuillez Ouvrir une session sur <a href="$siteurl">$siteurl</a> pour lire et répondre à vos messages privés.</td></tr>
<tr><td></td><td>Merci,</td></tr>
<tr><td></td><td>$siteName Administrateur</td></tr>
</tbody>

View File

@ -1,10 +1,10 @@
$from t'a envoyŽ un message ˆ $siteName.
$from vous a envoyé un message à $siteName.
$title
$textversion
Ouvrez une session svp ˆ $siteurl pour lire et rŽpondre ˆ vos messages privŽs.
Veuillez ouvrir une session sur $siteurl pour lire et répondre à vos messages privés.
Merci,
$siteName Administrateur

View File

@ -1,16 +1,17 @@
Chèr(e) $username,
Votre mot de passe a été changé, comme demandé. Merci de conserver
Cher(e) $username,
Votre mot de passe a été modifié comme demandé. Merci de conserver
cette information pour un usage ultérieur (ou bien de changer votre mot de
passe immédiatement en quelque-chose dont vous vous souviendrez).
passe immédiatement en quelque chose dont vous vous souviendrez).
Vos informations de connexion sont désormais:
Vos informations de connexion sont désormais :
Site: $siteurl
Pseudo/Courriel: $email
Mot de passe: $new_password
Site : $siteurl
Pseudo/Courriel : $email
Mot de passe : $new_password
Vous pouvez changer ce mot de passe depuis la page des réglages de votre compte,
Vous pouvez changer ce mot de passe depuis la page des « réglages » de votre compte,
après connexion
Sincèrement votre,

View File

@ -1,13 +1,14 @@
Chèr(e) $username,
Cher(e) $username,
Merci de votre inscription à $sitename. Votre compte a été créé.
Les informations de connexion sont comme suit:
Les informations de connexion sont les suivantes :
Site: $siteurl
Pseudo/Courriel: $email
Mot de passe: $password
Site : $siteurl
Pseudo/Courriel : $email
Mot de passe : $password
Vous pouvez changer de mot de passe dans la page des "Réglages" de votre compte,
Vous pouvez changer de mot de passe dans la page des « Réglages » de votre compte,
après connexion.
Merci de prendre quelques minutes pour découvrir les autres réglages disponibles

View File

@ -3,21 +3,21 @@ Une nouvelle demande d'inscription a été reçue sur $sitename, et elle
nécessite votre approbation.
Les informations de connexion sont comme suit:
Les informations de connexion sont les suivantes :
Nom complet: $username
Site: $siteurl
Pseudo/Courriel: $email
Nom complet : $username
Site : $siteurl
Pseudo/Courriel : $email
Pour approuver cette demande, merci de suivre le lien:
Pour approuver cette demande, merci de suivre le lien :
$siteurl/regmod/allow/$hash
Pour rejeter cette demande et supprimer le compte associé,
merci de suivre le lien:
merci de suivre le lien :
$siteurl/regmod/deny/$hash

View File

@ -1,9 +1,9 @@
Chèr(e) $myname,
Cher(e) $myname,
Vous venez de recevoir une demande de mise en relation sur $sitename
venant de '$requestor'.
venant de « $requestor ».
Vous pouvez visiter son profil sur $url.

View File

@ -1,13 +1,13 @@
Chèr(e) $username,
Cher(e) $username,
'$from' a posté quelque-chose sur le mur de votre profil.
« $from » a posté quelque chose sur le mur de votre profil.
-----
$body
-----
Connectez-vous à $siteurl pour voir et/ou supprimer l'élément:
Connectez-vous à $siteurl pour voir et/ou supprimer l'élément :
$display

View File

@ -13,4 +13,4 @@
<div class="profile-match-connect"><a href="$connlnk" title="$conntxt">$conntxt</a></div>
{{ endif }}
</div>
</div>

View File

@ -0,0 +1,21 @@
<div id="remote-friends-in-common" class="bigwidget">
<div id="rfic-desc">$desc &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="$base/common/rem/$uid/$cid">$more</a></div>
{{ if $items }}
{{ for $items as $item }}
<div class="profile-match-wrapper">
<div class="profile-match-photo">
<a href="$item.url">
<img src="$item.photo" width="80" height="80" alt="$item.name" title="$item.name" />
</a>
</div>
<div class="profile-match-break"></div>
<div class="profile-match-name">
<a href="$itemurl" title="$item.name">$item.name</a>
</div>
<div class="profile-match-end"></div>
</div>
{{ endfor }}
{{ endif }}
<div id="rfic-end" class="clear"></div>
</div>

View File

@ -102,6 +102,7 @@ $unkmail
<strong>$activity_options</strong>
{{inc field_checkbox.tpl with $field=$post_newfriend }}{{endinc}}
{{inc field_checkbox.tpl with $field=$post_joingroup }}{{endinc}}
{{inc field_checkbox.tpl with $field=$post_profilechange }}{{endinc}}

View File

@ -12,8 +12,9 @@ function theme_content(&$a){
$resize = get_pconfig(local_user(), 'cleanzero', 'resize' );
$color = get_pconfig(local_user(), 'cleanzero', 'color' );
$font_size = get_pconfig(local_user(), 'cleanzero', 'font_size' );
$theme_width= get_pconfig(local_user(), 'cleanzero', 'theme_width' );
return cleanzero_form($a,$color,$font_size,$resize);
return cleanzero_form($a,$color,$font_size,$resize,$theme_width);
}
function theme_post(&$a){
@ -24,6 +25,7 @@ function theme_post(&$a){
set_pconfig(local_user(), 'cleanzero', 'resize', $_POST['cleanzero_resize']);
set_pconfig(local_user(), 'cleanzero', 'color', $_POST['cleanzero_color']);
set_pconfig(local_user(), 'cleanzero', 'font_size', $_POST['cleanzero_font_size']);
set_pconfig(local_user(), 'cleanzero', 'theme_width', $_POST['cleanzero_theme_width']);
}
}
@ -32,8 +34,8 @@ function theme_admin(&$a){
$resize = get_config('cleanzero', 'resize' );
$color = get_config('cleanzero', 'color' );
$font_size = get_config('cleanzero', 'font_size' );
return cleanzero_form($a,$color,$font_size,$resize);
$theme_width= get_config('cleanzero', 'theme_width' );
return cleanzero_form($a,$color,$font_size,$resize,$theme_width);
}
function theme_admin_post(&$a){
@ -41,11 +43,13 @@ function theme_admin_post(&$a){
set_config('cleanzero', 'resize', $_POST['cleanzero_resize']);
set_config('cleanzero', 'color', $_POST['cleanzero_color']);
set_config('cleanzero', 'font_size', $_POST['cleanzero_font_size']);
set_config('cleanzero', 'theme_width', $_POST['cleanzero_theme_width']);
}
}
function cleanzero_form(&$a, $color,$font_size,$resize){
function cleanzero_form(&$a, $color,$font_size,$resize,$theme_width){
$colors = array(
"cleanzero"=>"cleanzero",
"cleanzero-green"=>"green",
@ -65,7 +69,12 @@ function cleanzero_form(&$a, $color,$font_size,$resize){
"250"=>"3 (250px)",
"150"=>"4 (150px)",
);
$theme_widths =array (
"standard"=>"standard",
"narrow"=>"narrow",
"wide"=>"wide",
);
$t = file_get_contents( dirname(__file__). "/theme_settings.tpl" );
$o .= replace_macros($t, array(
'$submit' => t('Submit'),
@ -73,6 +82,7 @@ function cleanzero_form(&$a, $color,$font_size,$resize){
'$title' => t("Theme settings"),
'$resize' => array('cleanzero_resize',t ('Set resize level for images in posts and comments (width and height)'),$resize,'',$resizes),
'$font_size' => array('cleanzero_font_size', t('Set font-size for posts and comments'), $font_size, '', $font_sizes),
'$theme_width' => array('cleanzero_theme_width', t('Set theme width'), $theme_width, '', $theme_widths),
'$color' => array('cleanzero_color', t('Color scheme'), $color, '', $colors),
));
return $o;

View File

@ -1,23 +1,14 @@
<nav>
<nav>
$langselector
<div id="site-location">$sitelocation</div>
{{ if $nav.logout }}<a id="nav-logout-link" class="nav-link $nav.logout.2" href="$nav.logout.0" title="$nav.logout.3" >$nav.logout.1</a> {{ endif }}
{{ if $nav.login }}<a id="nav-login-link" class="nav-login-link $nav.login.2" href="$nav.login.0" title="$nav.login.3" >$nav.login.1</a> {{ endif }}
<span id="nav-link-wrapper" >
<span id="nav-commlink-wrapper">
{{ if $nav.register }}<a id="nav-register-link" class="nav-commlink $nav.register.2 $sel.register" href="$nav.register.0" title="$nav.register.3" >$nav.register.1</a>{{ endif }}
{{ if $nav.help }} <a id="nav-help-link" class="nav-link $nav.help.2" target="friendika-help" href="$nav.help.0" title="$nav.help.3" >$nav.help.1</a>{{ endif }}
{{ if $nav.apps }}<a id="nav-apps-link" class="nav-link $nav.apps.2" href="$nav.apps.0" title="$nav.apps.3" >$nav.apps.1</a>{{ endif }}
<a id="nav-search-link" class="nav-link $nav.search.2" href="$nav.search.0" title="$nav.search.3" >$nav.search.1</a>
<a id="nav-directory-link" class="nav-link $nav.directory.2" href="$nav.directory.0" title="$nav.directory.3" >$nav.directory.1</a>
{{ if $nav.admin }}<a id="nav-admin-link" class="nav-link $nav.admin.2" href="$nav.admin.0" title="$nav.admin.3" >$nav.admin.1</a>{{ endif }}
{{ if $nav.network }}
<a id="nav-network-link" class="nav-commlink $nav.network.2 $sel.network" href="$nav.network.0" title="$nav.network.3" >$nav.network.1</a>
@ -27,7 +18,9 @@
<a id="nav-home-link" class="nav-commlink $nav.home.2 $sel.home" href="$nav.home.0" title="$nav.home.3" >$nav.home.1</a>
<span id="home-update" class="nav-ajax-left"></span>
{{ endif }}
{{ if $nav.community }}
<a id="nav-community-link" class="nav-commlink $nav.community.2 $sel.community" href="$nav.community.0" title="$nav.community.3" >$nav.community.1</a>
{{ endif }}
{{ if $nav.introductions }}
<a id="nav-notify-link" class="nav-commlink $nav.introductions.2 $sel.introductions" href="$nav.introductions.0" title="$nav.introductions.3" >$nav.introductions.1</a>
<span id="intro-update" class="nav-ajax-left"></span>
@ -36,11 +29,6 @@
<a id="nav-messages-link" class="nav-commlink $nav.messages.2 $sel.messages" href="$nav.messages.0" title="$nav.messages.3" >$nav.messages.1</a>
<span id="mail-update" class="nav-ajax-left"></span>
{{ endif }}
{{ if $nav.notifications }}
<a id="nav-notifications-linkmenu" class="nav-commlink" href="$nav.notifications.0" rel="#nav-notifications-menu" title="$nav.notifications.1">$nav.notifications.1</a>
<span id="notify-update" class="nav-ajax-left"></span>
@ -49,7 +37,24 @@
<li id="nav-notifications-mark-all"><a href="#" onclick="notifyMarkAll(); return false;">$nav.notifications.mark.1</a></li>
<li class="empty">$emptynotifications</li>
</ul>
{{ endif }}
{{ endif }}
</span>
<span id="banner">$banner</span>
<span id="nav-link-wrapper">
{{ if $nav.logout }}<a id="nav-logout-link" class="nav-link $nav.logout.2" href="$nav.logout.0" title="$nav.logout.3" >$nav.logout.1</a> {{ endif }}
{{ if $nav.login }}<a id="nav-login-link" class="nav-login-link $nav.login.2" href="$nav.login.0" title="$nav.login.3" >$nav.login.1</a> {{ endif }}
{{ if $nav.help }} <a id="nav-help-link" class="nav-link $nav.help.2" target="friendika-help" href="$nav.help.0" title="$nav.help.3" >$nav.help.1</a>{{ endif }}
{{ if $nav.apps }}<a id="nav-apps-link" class="nav-link $nav.apps.2" href="$nav.apps.0" title="$nav.apps.3" >$nav.apps.1</a>{{ endif }}
<a id="nav-search-link" class="nav-link $nav.search.2" href="$nav.search.0" title="$nav.search.3" >$nav.search.1</a>
<a id="nav-directory-link" class="nav-link $nav.directory.2" href="$nav.directory.0" title="$nav.directory.3" >$nav.directory.1</a>
{{ if $nav.admin }}<a id="nav-admin-link" class="nav-link $nav.admin.2" href="$nav.admin.0" title="$nav.admin.3" >$nav.admin.1</a>{{ endif }}
{{ if $nav.settings }}<a id="nav-settings-link" class="nav-link $nav.settings.2" href="$nav.settings.0" title="$nav.settings.3">$nav.settings.1</a>{{ endif }}
{{ if $nav.profiles }}<a id="nav-profiles-link" class="nav-link $nav.profiles.2" href="$nav.profiles.0" title="$nav.profiles.3" >$nav.profiles.1</a>{{ endif }}
@ -58,12 +63,9 @@
{{ if $nav.manage }}<a id="nav-manage-link" class="nav-link $nav.manage.2 $sel.manage" href="$nav.manage.0" title="$nav.manage.3">$nav.manage.1</a>{{ endif }}
{{ if $nav.community }}
<a id="nav-community-link" class="nav-link $nav.community.2 $sel.community" href="$nav.community.0" title="$nav.community.3" >$nav.community.1</a>
{{ endif }}
</span>
<span id="nav-end"></span>
<span id="banner">$banner</span>
</nav>
<ul id="nav-notifications-template" style="display:none;" rel="template">

View File

@ -1,21 +1,24 @@
<?php
$color=false;
$cleanzero_font_size=false;
$cleanzero_theme_width=false;
$site_color = get_config("cleanzero","color");
$site_cleanzero_font_size = get_config("cleanzero", "font_size" );
$site_cleanzero_theme_width = get_config("cleanzero", "theme_width");
if (local_user()) {
$color = get_pconfig(local_user(), "cleanzero","color");
$cleanzero_font_size = get_pconfig(local_user(), "cleanzero", "font_size");
$cleanzero_theme_width = get_pconfig(local_user(), "cleanzero", "theme_width");
}
if ($color===false) $color=$site_color;
if ($color===false) $color="cleanzero";
if ($cleanzero_font_size===false) $cleanzero_font_size=$site_cleanzero_font_size;
if ($cleanzero_theme_width===false) $cleanzero_theme_width=$site_cleanzero_theme_width;
if ($cleanzero_theme_width===false) $cleanzero_theme_width="standard";
if (file_exists("$THEMEPATH/$color/style.css")){
@ -68,4 +71,70 @@
}
";
}
if ($cleanzero_theme_width === "standard") {
echo "
section {
margin: 0px 10%;
margin-right:10%;
}
aside {
margin-left: 10%;
}
nav {
margin-left: 10%;
margin-right: 10%;
}
nav #site-location {
right: 10%;
}
";
}
if ($cleanzero_theme_width === "narrow") {
echo "
section {
margin: 0px 15%;
margin-right:15%;
}
aside {
margin-left: 15%;
}
nav {
margin-left: 15%;
margin-right: 15%;
}
nav #site-location {
right: 15%;
}
";
}
if ($cleanzero_theme_width === "wide") {
echo "
section {
margin: 0px 5%;
margin-right:5%;
}
aside {
margin-left: 5%;
}
nav {
margin-left: 5%;
margin-right: 5%;
}
nav #site-location {
right: 5%;
}
";
}

View File

@ -108,7 +108,7 @@ $a->page['htmlhead'] .= '
<script>
$(function() {
$(".wall-item-content-wrapper img").aeImageResize({height: '.$resize.', width: '.$resize.'});
$(".wall-item-content img").aeImageResize({height: '.$resize.', width: '.$resize.'});
});
</script>';}
}

View File

@ -1,7 +1,7 @@
{{inc field_select.tpl with $field=$color}}{{endinc}}
{{inc field_select.tpl with $field=$font_size}}{{endinc}}
{{inc field_select.tpl with $field=$resize}}{{endinc}}
{{inc field_select.tpl with $field=$theme_width}}{{endinc}}
<div class="settings-submit-wrapper">

View File

@ -0,0 +1,115 @@
<script type="text/javascript" src="$baseurl/view/theme/diabook/js/jquery.autogrow.textarea.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("iframe").each(function(){
var ifr_source = $(this).attr("src");
var wmode = "wmode=transparent";
if(ifr_source.indexOf("?") != -1) {
var getQString = ifr_source.split("?");
var oldString = getQString[1];
var newString = getQString[0];
$(this).attr("src",newString+"?"+wmode+"&"+oldString);
}
else $(this).attr("src",ifr_source+"?"+wmode);
});
});
$(document).ready(function(){
$("#sortable_boxes").sortable({
update: function(event, ui) {
var BoxOrder = $(this).sortable("toArray").toString();
$.cookie("Boxorder", BoxOrder , { expires: 365, path: "/" });
}
});
var cookie = $.cookie("Boxorder");
if (!cookie) return;
var SavedID = cookie.split(",");
for (var Sitem=0, m = SavedID.length; Sitem < m; Sitem++) {
$("#sortable_boxes").append($("#sortable_boxes").children("#" + SavedID[Sitem]));
}
});
function tautogrow(id){
$("textarea#comment-edit-text-" +id).autogrow();
};
function yt_iframe() {
$("iframe").load(function() {
var ifr_src = $(this).contents().find("body iframe").attr("src");
$("iframe").contents().find("body iframe").attr("src", ifr_src+"&wmode=transparent");
});
};
function scrolldown(){
$("html, body").animate({scrollTop:$(document).height()}, "slow");
return false;
};
function scrolltop(){
$("html, body").animate({scrollTop:0}, "slow");
return false;
};
$(window).scroll(function () {
var footer_top = $(document).height() - 30;
$("div#footerbox").css("top", footer_top);
var scrollInfo = $(window).scrollTop();
if (scrollInfo <= "900"){
$("a#top").attr("id","down");
$("a#down").attr("onclick","scrolldown()");
$("img#scroll_top_bottom").attr("src","view/theme/diabook/icons/scroll_bottom.png");
}
if (scrollInfo > "900"){
$("a#down").attr("id","top");
$("a#top").attr("onclick","scrolltop()");
$("img#scroll_top_bottom").attr("src","view/theme/diabook/icons/scroll_top.png");
}
});
function insertFormatting(comment,BBcode,id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if(tmpStr == comment) {
tmpStr = "";
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
openMenu("comment-edit-submit-wrapper-" + id);
}
textarea = document.getElementById("comment-edit-text-" +id);
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
if (BBcode == "url"){
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
} else
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
if (BBcode == "url"){
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
} else
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;
}
function cmtBbOpen(id) {
$(".comment-edit-bb-" + id).show();
}
function cmtBbClose(id) {
$(".comment-edit-bb-" + id).hide();
}
</script>

View File

@ -13,13 +13,13 @@
<div class="comment-edit-photo-end"></div>
<textarea id="comment-edit-text-$id" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,$id);tautogrow($id);cmtBbOpen($id);" >$comment</textarea>
<div class="comment-edit-bb-$id" style="display:none;">
<a class="icon bb-image" style="cursor: pointer;" onclick="insertFormatting('$comment','img',$id);">img</a>
<a class="icon bb-url" style="cursor: pointer;" onclick="insertFormatting('$comment','url',$id);">url</a>
<a class="icon bb-video" style="cursor: pointer;" onclick="insertFormatting('$comment','video',$id);">video</a>
<a class="icon underline" style="cursor: pointer;" onclick="insertFormatting('$comment','u',$id);">u</a>
<a class="icon italic" style="cursor: pointer;" onclick="insertFormatting('$comment','i',$id);">i</a>
<a class="icon bold" style="cursor: pointer;" onclick="insertFormatting('$comment','b',$id);">b</a>
<a class="icon quote" style="cursor: pointer;" onclick="insertFormatting('$comment','quote',$id);">quote</a>
<a class="icon bb-image" style="cursor: pointer;" title="$edimg" onclick="insertFormatting('$comment','img',$id);">img</a>
<a class="icon bb-url" style="cursor: pointer;" title="$edurl" onclick="insertFormatting('$comment','url',$id);">url</a>
<a class="icon bb-video" style="cursor: pointer;" title="$edvideo" onclick="insertFormatting('$comment','video',$id);">video</a>
<a class="icon underline" style="cursor: pointer;" title="$eduline" onclick="insertFormatting('$comment','u',$id);">u</a>
<a class="icon italic" style="cursor: pointer;" title="$editalic" onclick="insertFormatting('$comment','i',$id);">i</a>
<a class="icon bold" style="cursor: pointer;" title="$edbold" onclick="insertFormatting('$comment','b',$id);">b</a>
<a class="icon quote" style="cursor: pointer;" title="$edquote" onclick="insertFormatting('$comment','quote',$id);">quote</a>
</div>
{{ if $qcomment }}
<select id="qcomment-select-$id" name="qcomment-$id" class="qcomment" onchange="qCommentInsert(this,$id);" >

View File

@ -1,12 +1,28 @@
<div id="close_pages">
<div id="pos_null" style="margin-bottom:-30px;">
</div>
<div id="sortable_boxes">
<div id="close_pages" style="margin-top:30px;">
{{ if $page }}
<div>$page</div>
{{ endif }}
<div id="close_profiles">
{{ if $comunity_profilest_title }}
<h3>$comunity_profilest_title<a id="close_comunity_profiles_icon" onClick="close_profiles()" class="icon close_box" title="close"></a></h3>
<div id='lastusers-wrapper' class='items-wrapper'>
{{ for $comunity_profiles_items as $i }}
$i
{{ endfor }}
</div>
{{ endif }}
</div>
<div id="close_helpers">
{{ if $lastusers_title }}
<h3 style="margin-top:0px;">$helpers.title.1<a id="close_helpers_icon" onClick="close_helpers()" class="icon close_box" title="close"></a></h3>
{{ if $helpers }}
<h3>$helpers.title.1<a id="close_helpers_icon" onClick="close_helpers()" class="icon close_box" title="close"></a></h3>
<a href="http://kakste.com/profile/newhere" title="@NewHere" style="margin-left: 10px; " target="blank">NewHere</a><br>
<a href="https://helpers.pyxis.uberspace.de/profile/helpers" style="margin-left: 10px; " title="Friendica Support" target="blank">Friendica Support</a><br>
<a href="https://letstalk.pyxis.uberspace.de/profile/letstalk" style="margin-left: 10px; " title="Let's talk" target="blank">Let's talk</a><br>
@ -15,7 +31,7 @@
</div>
<div id="close_services">
{{ if $lastusers_title }}
{{ if $con_services }}
<h3>$con_services.title.1<a id="close_services_icon" onClick="close_services()" class="icon close_box" title="close"></a></h3>
<div id="right_service_icons" style="margin-left: 16px; margin-top: 5px;">
<a href="$url/facebook"><img alt="Facebook" src="view/theme/diabook/icons/facebook.png" title="Facebook"></a>
@ -82,4 +98,8 @@ $nv.search
{{ endfor }}
</ul>
{{ endif }}
</div>
<div id="twitter">
</div>
</div>

View File

@ -1182,7 +1182,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1191,14 +1191,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-aerith/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1290,8 +1290,8 @@ right_aside .directory-photo { margin: 0px; }
right_aside .directory-photo-img { max-width: 45px; max-height: 45px; }
right_aside #likes { margin: 0px; padding: 0px; list-style: none; }
right_aside .items-wrapper{ overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
#page-sidebar-right_aside{margin-top: 0px; margin-bottom: 30px;}
#page-sidebar-right_aside ul {margin-top: 0px;}
#page-sidebar-right_aside .label {max-width: 128px;}

View File

@ -1178,7 +1178,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1187,14 +1187,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-aerith/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1285,8 +1285,8 @@ right_aside .directory-photo { margin: 0px; }
right_aside .directory-photo-img { max-width: 45px; max-height: 45px; }
right_aside #likes { margin: 0px; padding: 0px; list-style: none; }
right_aside .items-wrapper{ overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
#page-sidebar-right_aside{margin-top: 0px; margin-bottom: 30px;}
#page-sidebar-right_aside ul {margin-top: 0px;}
#page-sidebar-right_aside .label {max-width: 128px;}

View File

@ -1158,7 +1158,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1167,14 +1167,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-aerith/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1266,8 +1266,8 @@ right_aside .directory-photo { margin: 0px; }
right_aside .directory-photo-img { max-width: 45px; max-height: 45px; }
right_aside #likes { margin: 0px; padding: 0px; list-style: none; }
right_aside .items-wrapper{ overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
#page-sidebar-right_aside{margin-top: 0px; margin-bottom: 30px;}
#page-sidebar-right_aside ul {margin-top: 0px;}
#page-sidebar-right_aside .label {max-width: 128px;}

View File

@ -1154,7 +1154,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1163,14 +1163,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-aerith/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1261,8 +1261,8 @@ right_aside .directory-photo { margin: 0px; }
right_aside .directory-photo-img { max-width: 45px; max-height: 45px; }
right_aside #likes { margin: 0px; padding: 0px; list-style: none; }
right_aside .items-wrapper{ overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
#page-sidebar-right_aside{margin-top: 0px; margin-bottom: 30px;}
#page-sidebar-right_aside ul {margin-top: 0px;}
#page-sidebar-right_aside .label {max-width: 128px;}

View File

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -1014,7 +1015,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1243,7 +1244,7 @@ aside #likes a:hover{
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{

View File

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -1013,7 +1014,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1241,7 +1242,7 @@ aside #likes a:hover{
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{

View File

@ -1148,7 +1148,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1157,14 +1157,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-blue/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1253,8 +1253,8 @@ right_aside .directory-photo { margin: 0px; }
right_aside .directory-photo-img { max-width: 45px; max-height: 45px; }
right_aside #likes { margin: 0px; padding: 0px; list-style: none; }
right_aside .items-wrapper{ overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
#page-sidebar-right_aside{margin-top: 0px; margin-bottom: 30px;}
#page-sidebar-right_aside ul {margin-top: 0px;}
#page-sidebar-right_aside .label {max-width: 128px;}

View File

@ -1144,7 +1144,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1153,14 +1153,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-blue/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1248,8 +1248,8 @@ right_aside .directory-photo { margin: 0px; }
right_aside .directory-photo-img { max-width: 45px; max-height: 45px; }
right_aside #likes { margin: 0px; padding: 0px; list-style: none; }
right_aside .items-wrapper{ overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
#page-sidebar-right_aside{margin-top: 0px; margin-bottom: 30px;}
#page-sidebar-right_aside ul {margin-top: 0px;}
#page-sidebar-right_aside .label {max-width: 128px;}

View File

@ -1128,7 +1128,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1137,14 +1137,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-blue/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1233,8 +1233,8 @@ right_aside .directory-photo { margin: 0px; }
right_aside .directory-photo-img { max-width: 45px; max-height: 45px; }
right_aside #likes { margin: 0px; padding: 0px; list-style: none; }
right_aside .items-wrapper{ overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
#page-sidebar-right_aside{margin-top: 0px; margin-bottom: 30px;}
#page-sidebar-right_aside ul {margin-top: 0px;}
#page-sidebar-right_aside .label {max-width: 128px;}

View File

@ -1124,7 +1124,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1133,14 +1133,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-blue/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1228,8 +1228,8 @@ right_aside .directory-photo { margin: 0px; }
right_aside .directory-photo-img { max-width: 45px; max-height: 45px; }
right_aside #likes { margin: 0px; padding: 0px; list-style: none; }
right_aside .items-wrapper{ overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
#page-sidebar-right_aside{margin-top: 0px; margin-bottom: 30px;}
#page-sidebar-right_aside ul {margin-top: 0px;}
#page-sidebar-right_aside .label {max-width: 128px;}

View File

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -983,7 +984,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1203,7 +1204,7 @@ aside #side-peoplefind-url {
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{

View File

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -982,7 +983,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1201,7 +1202,7 @@ aside #side-peoplefind-url {
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{

View File

@ -1431,7 +1431,7 @@ transition: all 0.2s ease-in-out;
.wall-item-comment-wrapper {
margin: 1px 5px 5px 80px;
background-color: #fff;
background-color: #444;
width: 500px;
}
.wall-item-comment-wrapper .comment-edit-photo {
@ -1442,14 +1442,14 @@ transition: all 0.2s ease-in-out;
width: 100%;
font-size: 10px;
color: #999999;
border: 1px solid #DDD;
border: 1px solid #2e2e2f;
padding: 0.3em;
font-size: 14px;
}
.wall-item-comment-wrapper .comment-edit-text-full {
font-size: 14px;
height: 4em;
color: #2e2f2e;
color: #eec;
border: 1px solid #2e2f2e;
}
.comment-edit-preview {
@ -1596,10 +1596,11 @@ transition: all 0.2s ease-in-out;
height: 2.0em;
width: 99%;
font-size: 15px;
color: #999999;
border: 1px solid #DDD;
color: #eec;
border: 1px solid #eec;
padding: 0.3em;
margin-bottom: 10px;
background: #444
}
.grey
{

View File

@ -540,7 +540,7 @@ header #banner a:active,
header #banner a:visited,
header #banner a:link,
header #banner a:hover {
color: #2e2f2e;
color: #eec;
text-decoration: none;
outline: none;
vertical-align: middle;
@ -661,7 +661,7 @@ nav .nav-menu-icon {
border-radius: 5px 5px 0 0;
}
nav .nav-menu-icon:hover {
background-color: #eec;
background-color: #308dbf;
position: relative;
height: 22px;
padding: 5px;
@ -776,7 +776,7 @@ nav #nav-apps-link.selected {
}
.notify-seen {
background: none repeat scroll 0 0 #DDDDDD;
background: none repeat scroll 0 0 #666;
}
ul.menu-popup {
@ -1424,7 +1424,7 @@ transition: all 0.2s ease-in-out;
.wall-item-comment-wrapper .comment-edit-text-full {
font-size: 14px;
height: 4em;
color: #2e302;
color: #eec;
border: 1px solid #2e302;
}
.comment-edit-preview {
@ -1571,10 +1571,11 @@ transition: all 0.2s ease-in-out;
height: 2.0em;
width: 99%;
font-size: 15px;
color: #999999;
color: #eec;
border: 1px solid #DDD;
padding: 0.3em;
margin-bottom: 10px;
background: #444;
}
.grey
{
@ -1667,6 +1668,7 @@ transition: all 0.2s ease-in-out;
margin: 0 0 5px;
width: 60%;
border: 1px solid #d2d2d2;
background: #444;
}
#profile-jot-form #jot-title:-webkit-input-placeholder {
font-weight: normal;

View File

@ -547,7 +547,7 @@ code {
float: right;
}
.tool a {
color: #3465a4;
color: #88a9d2;
}
.tool a:hover {
text-decoration: none;
@ -594,7 +594,7 @@ header #banner a:active,
header #banner a:visited,
header #banner a:link,
header #banner a:hover {
color: #2e2f2e;
color: #eec;
text-decoration: none;
outline: none;
vertical-align: middle;
@ -806,7 +806,7 @@ nav .nav-menu-icon:hover {
}
nav .nav-menu-icon.selected {
background-color: #fff;
background-color: #308dbf;
}
nav .nav-menu-icon img {
width: 22px;
@ -929,7 +929,7 @@ ul.menu-popup {
}
ul.menu-popup a {
display: block;
color: #2e302e;
color: #eec;
padding: 5px 10px;
text-decoration: none;
}
@ -1671,6 +1671,7 @@ body .pageheader{
height: 2.0em;
width: 100%;
font-size: 10px;
background: #444;
color: #999999;
border: 1px solid #DDD;
padding: 0.3em;
@ -1922,6 +1923,7 @@ body .pageheader{
margin: 0 0 5px;
width: 60%;
border: 1px solid #d2d2d2;
background: #444;
}
#profile-jot-form #jot-title:-webkit-input-placeholder {
font-weight: normal;

View File

@ -439,7 +439,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #194719;
color: #2c9936;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -1158,7 +1158,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1167,14 +1167,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-green/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1266,8 +1266,8 @@ right_aside .directory-photo { margin: 0px; }
right_aside .directory-photo-img { max-width: 45px; max-height: 45px; }
right_aside #likes { margin: 0px; padding: 0px; list-style: none; }
right_aside .items-wrapper{ overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
#page-sidebar-right_aside{margin-top: 0px; margin-bottom: 30px;}
#page-sidebar-right_aside ul {margin-top: 0px;}
#page-sidebar-right_aside .label {max-width: 128px;}
@ -1301,7 +1301,7 @@ transition: all 0.2s ease-in-out;
padding-top: 10px;
}
.tread-wrapper a{
color: #194719;
color: #2c9936;
}
/*marker*/
@ -1840,7 +1840,7 @@ transition: all 0.2s ease-in-out;
font-weight: bolder;
}
.button.creation2 {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View File

@ -439,7 +439,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #194719;
color: #2c9936;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -493,7 +493,7 @@ code {
float: right;
}
.tool a {
color: #194719;
color: #2c9936;
}
.tool a:hover {
text-decoration: none;
@ -1155,7 +1155,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1164,14 +1164,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-green/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1262,8 +1262,8 @@ right_aside .directory-photo { margin: 0px; }
right_aside .directory-photo-img { max-width: 45px; max-height: 45px; }
right_aside #likes { margin: 0px; padding: 0px; list-style: none; }
right_aside .items-wrapper{ overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
#page-sidebar-right_aside{margin-top: 0px; margin-bottom: 30px;}
#page-sidebar-right_aside ul {margin-top: 0px;}
#page-sidebar-right_aside .label {max-width: 128px;}
@ -1297,7 +1297,7 @@ transition: all 0.2s ease-in-out;
padding-top: 10px;
}
.tread-wrapper a{
color: #194719;
color: #2c9936;
}
.wall-item-decor {
@ -1832,7 +1832,7 @@ transition: all 0.2s ease-in-out;
font-weight: bolder;
}
.button.creation2 {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -1964,7 +1964,7 @@ ul.tabs li {
margin-left: 5px;
}
ul.tabs li .active {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View File

@ -440,7 +440,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #194719;
color: #2c9936;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -1134,7 +1134,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1143,14 +1143,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-green/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1242,8 +1242,8 @@ right_aside .directory-photo { margin: 0px; }
right_aside .directory-photo-img { max-width: 45px; max-height: 45px; }
right_aside #likes { margin: 0px; padding: 0px; list-style: none; }
right_aside .items-wrapper{ overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
#page-sidebar-right_aside{margin-top: 0px; margin-bottom: 30px;}
#page-sidebar-right_aside ul {margin-top: 0px;}
#page-sidebar-right_aside .label {max-width: 128px;}
@ -1276,7 +1276,7 @@ transition: all 0.2s ease-in-out;
padding-top: 10px;
}
.tread-wrapper a{
color: #194719;
color: #2c9936;
}
/*marker*/
@ -1811,7 +1811,7 @@ transition: all 0.2s ease-in-out;
cursor: pointer;
}
.button.creation2 {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -1945,7 +1945,7 @@ ul.tabs li {
margin-left: 5px;
}
ul.tabs li .active {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View File

@ -440,7 +440,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #194719;
color: #2c9936;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -1130,7 +1130,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1139,14 +1139,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-green/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1237,8 +1237,8 @@ right_aside .directory-photo { margin: 0px; }
right_aside .directory-photo-img { max-width: 45px; max-height: 45px; }
right_aside #likes { margin: 0px; padding: 0px; list-style: none; }
right_aside .items-wrapper{ overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #lastusers-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
right_aside #ra-photos-wrapper { padding-left: 9px; padding-top: 3px; overflow: auto; width: 100%; }
#page-sidebar-right_aside{margin-top: 0px; margin-bottom: 30px;}
#page-sidebar-right_aside ul {margin-top: 0px;}
#page-sidebar-right_aside .label {max-width: 128px;}
@ -1270,7 +1270,7 @@ transition: all 0.2s ease-in-out;
padding-top: 10px;
}
.tread-wrapper a{
color: #194719;
color: #2c9936;
}
.wall-item-decor {
@ -1801,7 +1801,7 @@ transition: all 0.2s ease-in-out;
cursor: pointer;
}
.button.creation2 {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -1933,7 +1933,7 @@ ul.tabs li {
margin-left: 5px;
}
ul.tabs li .active {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

Some files were not shown because too many files have changed in this diff Show More