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

This commit is contained in:
Tobias Diekershoff 2011-03-16 06:52:33 +01:00
commit c43f647049
28 changed files with 380 additions and 65 deletions

View File

@ -225,7 +225,7 @@ function facebook_post_hook(&$a,&$b) {
// make links readable before we strip the code // make links readable before we strip the code
$msg = preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/is",'$2 [$1]',$msg); $msg = preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/is",'$2 $1',$msg);
$msg = preg_replace("/\[img\](.+?)\[\/img\]/is", t('Image: ') . '$1',$msg); $msg = preg_replace("/\[img\](.+?)\[\/img\]/is", t('Image: ') . '$1',$msg);

View File

@ -2,9 +2,9 @@
set_time_limit(0); set_time_limit(0);
define ( 'FRIENDIKA_VERSION', '2.1.915' ); define ( 'FRIENDIKA_VERSION', '2.1.919' );
define ( 'DFRN_PROTOCOL_VERSION', '2.1' ); define ( 'DFRN_PROTOCOL_VERSION', '2.1' );
define ( 'DB_UPDATE_VERSION', 1040 ); define ( 'DB_UPDATE_VERSION', 1043 );
define ( 'EOL', "<br />\r\n" ); define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );

View File

@ -297,7 +297,8 @@ CREATE TABLE IF NOT EXISTS `profile` (
`sexual` char(255) NOT NULL, `sexual` char(255) NOT NULL,
`politic` char(255) NOT NULL, `politic` char(255) NOT NULL,
`religion` char(255) NOT NULL, `religion` char(255) NOT NULL,
`keywords` text NOT NULL, `pub_keywords` text NOT NULL,
`prv_keywords` text NOT NULL,
`about` text NOT NULL, `about` text NOT NULL,
`summary` char(255) NOT NULL, `summary` char(255) NOT NULL,
`music` text NOT NULL, `music` text NOT NULL,
@ -378,6 +379,7 @@ CREATE TABLE IF NOT EXISTS `user` (
`page-flags` int(11) unsigned NOT NULL DEFAULT '0', `page-flags` int(11) unsigned NOT NULL DEFAULT '0',
`pwdreset` char(255) NOT NULL, `pwdreset` char(255) NOT NULL,
`maxreq` int(11) NOT NULL DEFAULT '10', `maxreq` int(11) NOT NULL DEFAULT '10',
`expire` int(11) unsigned NOT NULL DEFAULT '0',
`allow_cid` mediumtext NOT NULL, `allow_cid` mediumtext NOT NULL,
`allow_gid` mediumtext NOT NULL, `allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL, `deny_cid` mediumtext NOT NULL,
@ -479,3 +481,19 @@ CREATE TABLE IF NOT EXISTS `cache` (
`v` TEXT NOT NULL, `v` TEXT NOT NULL,
`updated` DATETIME NOT NULL `updated` DATETIME NOT NULL
) ENGINE = MYISAM DEFAULT CHARSET=utf8; ) ENGINE = MYISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `fcontact` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`url` CHAR( 255 ) NOT NULL ,
`name` CHAR( 255 ) NOT NULL ,
`photo` CHAR( 255 ) NOT NULL
) ENGINE = MYISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `ffinder` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`uid` INT UNSIGNED NOT NULL ,
`cid` INT UNSIGNED NOT NULL ,
`fid` INT UNSIGNED NOT NULL
) ENGINE = MYISAM DEFAULT CHARSET=utf8;

View File

@ -90,7 +90,7 @@ function bbcode($Text) {
$Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.+?)\[\/img\]/", '<img src="$3" height="$2" width="$1">', $Text); $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.+?)\[\/img\]/", '<img src="$3" height="$2" width="$1">', $Text);
// Youtube extensions // Youtube extensions
$Text = preg_replace("/\[youtube\]http:\/\/www.youtube.com\/watch\?v\=(.+?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text); $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/watch\?v\=(.+?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text);
$Text = preg_replace("/\[youtube\](.+?)\[\/youtube\]/", '<object width="425" height="350" type="application/x-shockwave-flash" data="http://www.youtube.com/v/$1" ><param name="movie" value="http://www.youtube.com/v/$1"></param><!--[if IE]><embed src="http://www.youtube.com/v/$1" type="application/x-shockwave-flash" width="425" height="350" /><![endif]--></object>', $Text); $Text = preg_replace("/\[youtube\](.+?)\[\/youtube\]/", '<object width="425" height="350" type="application/x-shockwave-flash" data="http://www.youtube.com/v/$1" ><param name="movie" value="http://www.youtube.com/v/$1"></param><!--[if IE]><embed src="http://www.youtube.com/v/$1" type="application/x-shockwave-flash" width="425" height="350" /><![endif]--></object>', $Text);
// oembed tag // oembed tag

View File

@ -19,6 +19,23 @@ class dba {
public $connected = false; public $connected = false;
function __construct($server,$user,$pass,$db,$install = false) { function __construct($server,$user,$pass,$db,$install = false) {
$server = trim($server);
$user = trim($user);
$pass = trim($pass);
$db = trim($db);
if($install) {
if(strlen($server) && ($server !== 'localhost') && ($server !== '127.0.0.1')) {
if(! dns_get_record($server, DNS_A + DNS_CNAME + DNS_PTR)) {
notice( sprintf( t('Cannot locate DNS info for database server \'%s\'',$server)));
$this->connected = false;
$this->db = null;
return;
}
}
}
$this->db = @new mysqli($server,$user,$pass,$db); $this->db = @new mysqli($server,$user,$pass,$db);
if(! mysqli_connect_errno()) { if(! mysqli_connect_errno()) {
$this->connected = true; $this->connected = true;
@ -61,7 +78,7 @@ class dba {
} }
else { else {
/* /**
* If dbfail.out exists, we will write any failed calls directly to it, * If dbfail.out exists, we will write any failed calls directly to it,
* regardless of any logging that may or may nor be in effect. * regardless of any logging that may or may nor be in effect.
* These usually indicate SQL syntax errors that need to be resolved. * These usually indicate SQL syntax errors that need to be resolved.

44
include/expire.php Normal file
View File

@ -0,0 +1,44 @@
<?php
require_once("boot.php");
function expire_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('session.php');
require_once('datetime.php');
require_once('simplepie/simplepie.inc');
require_once('include/items.php');
require_once('include/Contact.php');
$a->set_baseurl(get_config('system','url'));
logger('expire: start');
$r = q("SELECT `uid`,`username`,`expire` FROM `user` WHERE `expire` != 0");
if(count($r)) {
foreach($r as $rr) {
logger('Expire: ' . $rr['username'] . ' interval: ' . $rr['expire'], LOGGER_DEBUG);
item_expire($rr['uid'],$rr['expire']);
}
}
return;
}
if (array_search(__file__,get_included_files())===0){
expire_run($argv,$argc);
killme();
}

41
include/fcontact.php Normal file
View File

@ -0,0 +1,41 @@
<?php
function fcontact_store($url,$name,$photo) {
$nurl = str_replace(array('https:','//www.'), array('http:','//'), $url);
$r = q("SELECT `id` FROM `fcontact` WHERE `url` = '%s' LIMIT 1",
dbesc($nurl)
);
if(count($r))
return $r[0]['id'];
$r = q("INSERT INTO `fcontact` ( `url`, `name`, `photo` ) VALUES ( '%s', '%s', '%s' ) ",
dbesc($nurl),
dbesc($name),
dbesc($photo)
);
if($r) {
$r = q("SELECT `id` FROM `fcontact` WHERE `url` = '%s' LIMIT 1",
dbesc($nurl)
);
if(count($r))
return $r[0]['id'];
}
return 0;
}
function ffinder_store($uid,$cid,$fid) {
$r = q("INSERT INTO `ffinder` ( `uid`, `cid`, `fid` ) VALUES ( %d, %d, %d ) ",
intval($uid),
intval($cid),
intval($fid)
);
return $r;
}

View File

@ -401,6 +401,17 @@ function get_atom_elements($feed,$item) {
$res['edited'] = $item->get_date('c'); $res['edited'] = $item->get_date('c');
// Disallow time travelling posts
$d1 = strtotime($res['created']);
$d2 = strtotime($res['edited']);
$d3 = strtotime('now');
if($d1 > $d3)
$res['created'] = datetime_convert();
if($d2 > $d3)
$res['edited'] = datetime_convert();
$rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner'); $rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner');
if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']) if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])
$res['owner-name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']); $res['owner-name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']);
@ -702,6 +713,18 @@ function item_store($arr,$force_parent = false) {
intval($current_post) intval($current_post)
); );
/**
* If this is now the last-child, force all _other_ children of this parent to *not* be last-child
*/
if($arr['last-child']) {
$r = q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d AND `id` != %d",
dbesc($arr['uri']),
intval($arr['uid']),
intval($current_post)
);
}
return $current_post; return $current_post;
} }
@ -1484,3 +1507,49 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
return $o; return $o;
} }
function item_expire($uid,$days) {
if((! $uid) || (! $days))
return;
$r = q("SELECT * FROM `item`
WHERE `uid` = %d
AND `created` < UTC_TIMESTAMP() - INTERVAL %d DAY
AND `id` = `parent`
AND `deleted` = 0",
intval($uid),
intval($days)
);
if(! count($r))
return;
logger('expire: # items=' . count($r) );
foreach($r as $item) {
// Only expire posts, not photos and photo comments
if(strlen($item['resource-id']))
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'])
);
// 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'])
);
}
proc_run('php',"include/notifier.php","expire","$uid");
}

View File

@ -40,6 +40,7 @@ function notifier_run($argv, $argc){
break; break;
} }
$expire = false;
$top_level = false; $top_level = false;
$recipients = array(); $recipients = array();
$url_recipients = array(); $url_recipients = array();
@ -57,6 +58,17 @@ function notifier_run($argv, $argc){
$item = $message[0]; $item = $message[0];
} }
elseif($cmd === 'expire') {
$expire = true;
$items = q("SELECT * FROM `item` WHERE `uid` = %d AND `wall` = 1
AND `deleted` = 1 AND `changed` > UTC_TIMESTAMP - INTERVAL 10 MINUTE",
intval($item_id)
);
$uid = $item_id;
$item_id = 0;
if(! count($items))
return;
}
else { else {
// find ancestors // find ancestors
@ -80,7 +92,6 @@ function notifier_run($argv, $argc){
return; return;
} }
// avoid race condition with deleting entries // avoid race condition with deleting entries
if($items[0]['deleted']) { if($items[0]['deleted']) {
@ -98,11 +109,11 @@ function notifier_run($argv, $argc){
intval($uid) intval($uid)
); );
if(count($r)) if(! count($r))
$owner = $r[0];
else {
return; return;
}
$owner = $r[0];
$hub = get_config('system','huburl'); $hub = get_config('system','huburl');
// If this is a public conversation, notify the feed hub // If this is a public conversation, notify the feed hub
@ -117,7 +128,7 @@ function notifier_run($argv, $argc){
$parent = $items[0]; $parent = $items[0];
if($parent['type'] === 'remote') { if($parent['type'] === 'remote' && (! $expire)) {
// local followup to remote post // local followup to remote post
$followup = true; $followup = true;
$notify_hub = false; // not public $notify_hub = false; // not public
@ -235,6 +246,7 @@ function notifier_run($argv, $argc){
} }
else { else {
foreach($items as $item) { foreach($items as $item) {
if(! $item['parent']) if(! $item['parent'])
continue; continue;
@ -244,7 +256,7 @@ function notifier_run($argv, $argc){
$atom .= atom_entry($item,'text',$contact,$owner,true); $atom .= atom_entry($item,'text',$contact,$owner,true);
if(($top_level) && ($notify_hub) && ($item['author-link'] === $item['owner-link'])) if(($top_level) && ($notify_hub) && ($item['author-link'] === $item['owner-link']) && (! $expire))
$slaps[] = atom_entry($item,'html',$contact,$owner,true); $slaps[] = atom_entry($item,'html',$contact,$owner,true);
} }
} }
@ -319,7 +331,7 @@ function notifier_run($argv, $argc){
// only send salmon if public - e.g. if it's ok to notify // only send salmon if public - e.g. if it's ok to notify
// a public hub, it's ok to send a salmon // a public hub, it's ok to send a salmon
if(count($slaps) && $notify_hub) { if((count($slaps)) && ($notify_hub) && (! $expire)) {
logger('notifier: slapdelivery: ' . $contact['name']); logger('notifier: slapdelivery: ' . $contact['name']);
foreach($slaps as $slappy) { foreach($slaps as $slappy) {
if($contact['notify']) { if($contact['notify']) {
@ -350,7 +362,7 @@ function notifier_run($argv, $argc){
// send additional slaps to mentioned remote tags (@foo@example.com) // send additional slaps to mentioned remote tags (@foo@example.com)
if($slap && count($url_recipients) && $followup && $notify_hub) { if($slap && count($url_recipients) && $followup && $notify_hub && (! $expire)) {
foreach($url_recipients as $url) { foreach($url_recipients as $url) {
if($url) { if($url) {
logger('notifier: urldelivery: ' . $url); logger('notifier: urldelivery: ' . $url);

View File

@ -29,6 +29,17 @@ function poller_run($argv, $argc){
proc_run('php',"include/queue.php"); proc_run('php',"include/queue.php");
// once daily run expire in background
$d1 = get_config('system','last_expire_day');
$d2 = intval(datetime_convert('UTC','UTC','now','d'));
if($d2 != intval($d1)) {
set_config('system','last_expire_day',$d2);
proc_run('php','include/expire.php');
}
// clear old cache // clear old cache
q("DELETE FROM `cache` WHERE `updated` < '%s'", q("DELETE FROM `cache` WHERE `updated` < '%s'",
dbesc(datetime_convert('UTC','UTC',"now - 30 days"))); dbesc(datetime_convert('UTC','UTC',"now - 30 days")));

View File

@ -32,9 +32,16 @@ $install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false
* Get the language setting directly from system variables, bypassing get_config() * Get the language setting directly from system variables, bypassing get_config()
* as database may not yet be configured. * as database may not yet be configured.
* *
* If possible, we use the value from the browser.
*
*/ */
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$langs = preg_split("/[,-]/",$_SERVER['HTTP_ACCEPT_LANGUAGE'],2);
$lang = $langs[0];
} else {
$lang = ((isset($a->config['system']['language'])) ? $a->config['system']['language'] : 'en'); $lang = ((isset($a->config['system']['language'])) ? $a->config['system']['language'] : 'en');
}
load_translation_table($lang); load_translation_table($lang);

View File

@ -40,7 +40,7 @@ function directory_content(&$a) {
if($search) if($search)
$search = dbesc($search); $search = dbesc($search);
$sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, `user`.`nickname`, `pdesc`, `locality`,`region`,`country-name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`keywords` ) AGAINST ('$search' IN BOOLEAN MODE) " : ""); $sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, `user`.`nickname`, `pdesc`, `locality`,`region`,`country-name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`pub_keywords`,`prv_keywords` ) AGAINST ('$search' IN BOOLEAN MODE) " : "");
$publish = ((get_config('system','publish_all')) ? '' : " AND `publish` = 1 " ); $publish = ((get_config('system','publish_all')) ? '' : " AND `publish` = 1 " );

View File

@ -532,7 +532,7 @@ function item_content(&$a) {
require_once('include/security.php'); require_once('include/security.php');
$uid = $_SESSION['uid']; $uid = local_user();
if(($a->argc == 3) && ($a->argv[1] === 'drop') && intval($a->argv[2])) { if(($a->argc == 3) && ($a->argv[1] === 'drop') && intval($a->argv[2])) {

View File

@ -28,6 +28,11 @@ function profile_init(&$a) {
$a->page['htmlhead'] .= '<link rel="openid.delegate" href="' . $delegate . '" />' . "\r\n"; $a->page['htmlhead'] .= '<link rel="openid.delegate" href="' . $delegate . '" />' . "\r\n";
} }
$keywords = ((x($a->profile,'pub_keywords')) ? $a->profile['pub_keywords'] : '');
$keywords = str_replace(array(',',' ',',,'),array(' ',',',','),$keywords);
if(strlen($keywords))
$a->page['htmlhead'] .= '<meta name="keywords" content="' . $keywords . '" />' . "\r\n" ;
$a->page['htmlhead'] .= '<meta name="dfrn-global-visibility" content="' . (($a->profile['net-publish']) ? 'true' : 'false') . '" />' . "\r\n" ; $a->page['htmlhead'] .= '<meta name="dfrn-global-visibility" content="' . (($a->profile['net-publish']) ? 'true' : 'false') . '" />' . "\r\n" ;
$a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/dfrn_poll/' . $which .'" />' . "\r\n" ; $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/dfrn_poll/' . $which .'" />' . "\r\n" ;
$uri = urlencode('acct:' . $a->profile['nickname'] . '@' . $a->get_hostname() . (($a->path) ? '/' . $a->path : '')); $uri = urlencode('acct:' . $a->profile['nickname'] . '@' . $a->get_hostname() . (($a->path) ? '/' . $a->path : ''));

View File

@ -55,7 +55,8 @@ function profiles_post(&$a) {
$region = notags(trim($_POST['region'])); $region = notags(trim($_POST['region']));
$postal_code = notags(trim($_POST['postal_code'])); $postal_code = notags(trim($_POST['postal_code']));
$country_name = notags(trim($_POST['country_name'])); $country_name = notags(trim($_POST['country_name']));
$keywords = notags(trim($_POST['keywords'])); $pub_keywords = notags(trim($_POST['pub_keywords']));
$prv_keywords = notags(trim($_POST['prv_keywords']));
$marital = notags(trim($_POST['marital'])); $marital = notags(trim($_POST['marital']));
if($marital != $orig[0]['marital']) if($marital != $orig[0]['marital'])
$maritalchanged = true; $maritalchanged = true;
@ -147,7 +148,8 @@ function profiles_post(&$a) {
`homepage` = '%s', `homepage` = '%s',
`politic` = '%s', `politic` = '%s',
`religion` = '%s', `religion` = '%s',
`keywords` = '%s', `pub_keywords` = '%s',
`prv_keywords` = '%s',
`about` = '%s', `about` = '%s',
`interest` = '%s', `interest` = '%s',
`contact` = '%s', `contact` = '%s',
@ -176,7 +178,8 @@ function profiles_post(&$a) {
dbesc($homepage), dbesc($homepage),
dbesc($politic), dbesc($politic),
dbesc($religion), dbesc($religion),
dbesc($keywords), dbesc($pub_keywords),
dbesc($prv_keywords),
dbesc($about), dbesc($about),
dbesc($interest), dbesc($interest),
dbesc($contact), dbesc($contact),
@ -383,7 +386,8 @@ function profiles_content(&$a) {
'$homepage' => $r[0]['homepage'], '$homepage' => $r[0]['homepage'],
'$politic' => $r[0]['politic'], '$politic' => $r[0]['politic'],
'$religion' => $r[0]['religion'], '$religion' => $r[0]['religion'],
'$keywords' => $r[0]['keywords'], '$pub_keywords' => $r[0]['pub_keywords'],
'$prv_keywords' => $r[0]['prv_keywords'],
'$music' => $r[0]['music'], '$music' => $r[0]['music'],
'$book' => $r[0]['book'], '$book' => $r[0]['book'],
'$tv' => $r[0]['tv'], '$tv' => $r[0]['tv'],

View File

@ -63,6 +63,7 @@ function settings_post(&$a) {
$defloc = ((x($_POST,'defloc')) ? notags(trim($_POST['defloc'])) : ''); $defloc = ((x($_POST,'defloc')) ? notags(trim($_POST['defloc'])) : '');
$openid = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : ''); $openid = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
$maxreq = ((x($_POST,'maxreq')) ? intval($_POST['maxreq']) : 0); $maxreq = ((x($_POST,'maxreq')) ? intval($_POST['maxreq']) : 0);
$expire = ((x($_POST,'expire')) ? intval($_POST['expire']) : 0);
$allow_location = (((x($_POST,'allow_location')) && (intval($_POST['allow_location']) == 1)) ? 1: 0); $allow_location = (((x($_POST,'allow_location')) && (intval($_POST['allow_location']) == 1)) ? 1: 0);
$publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0); $publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0);
@ -139,7 +140,7 @@ function settings_post(&$a) {
$openidserver = ''; $openidserver = '';
} }
$r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `theme` = '%s', `maxreq` = %d, `openidserver` = '%s' WHERE `uid` = %d LIMIT 1", $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `theme` = '%s', `maxreq` = %d, `expire` = %d, `openidserver` = '%s' WHERE `uid` = %d LIMIT 1",
dbesc($username), dbesc($username),
dbesc($email), dbesc($email),
dbesc($openid), dbesc($openid),
@ -154,6 +155,7 @@ function settings_post(&$a) {
intval($allow_location), intval($allow_location),
dbesc($theme), dbesc($theme),
intval($maxreq), intval($maxreq),
intval($expire),
dbesc($openidserver), dbesc($openidserver),
intval(local_user()) intval(local_user())
); );
@ -238,6 +240,7 @@ function settings_content(&$a) {
$defloc = $a->user['default-location']; $defloc = $a->user['default-location'];
$openid = $a->user['openid']; $openid = $a->user['openid'];
$maxreq = $a->user['maxreq']; $maxreq = $a->user['maxreq'];
$expire = ((intval($a->user['expire'])) ? $a->user['expire'] : '');
if(! strlen($a->user['timezone'])) if(! strlen($a->user['timezone']))
$timezone = date_default_timezone_get(); $timezone = date_default_timezone_get();
@ -358,6 +361,7 @@ function settings_content(&$a) {
'$sel_notify4' => (($notify & NOTIFY_COMMENT) ? ' checked="checked" ' : ''), '$sel_notify4' => (($notify & NOTIFY_COMMENT) ? ' checked="checked" ' : ''),
'$sel_notify5' => (($notify & NOTIFY_MAIL) ? ' checked="checked" ' : ''), '$sel_notify5' => (($notify & NOTIFY_MAIL) ? ' checked="checked" ' : ''),
'$maxreq' => $maxreq, '$maxreq' => $maxreq,
'$expire' => $expire,
'$theme' => $theme_selector, '$theme' => $theme_selector,
'$pagetype' => $pagetype '$pagetype' => $pagetype
)); ));

View File

@ -326,7 +326,7 @@ function update_1033() {
`k` CHAR( 255 ) NOT NULL PRIMARY KEY , `k` CHAR( 255 ) NOT NULL PRIMARY KEY ,
`v` TEXT NOT NULL, `v` TEXT NOT NULL,
`updated` DATETIME NOT NULL `updated` DATETIME NOT NULL
) ENGINE = MYISAM DEFAULT CHARSET=utf8;"); ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
} }
@ -377,3 +377,33 @@ function update_1038() {
function update_1039() { function update_1039() {
q("ALTER TABLE `addon` ADD `timestamp` BIGINT NOT NULL DEFAULT '0'"); q("ALTER TABLE `addon` ADD `timestamp` BIGINT NOT NULL DEFAULT '0'");
} }
function update_1040() {
q("CREATE TABLE IF NOT EXISTS `fcontact` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`url` CHAR( 255 ) NOT NULL ,
`name` CHAR( 255 ) NOT NULL ,
`photo` CHAR( 255 ) NOT NULL
) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
q("CREATE TABLE IF NOT EXISTS `ffinder` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`uid` INT UNSIGNED NOT NULL ,
`cid` INT UNSIGNED NOT NULL ,
`fid` INT UNSIGNED NOT NULL
) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
}
function update_1041() {
q("ALTER TABLE `profile` CHANGE `keywords` `prv_keywords` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ");
q("ALTER TABLE `profile` ADD `pub_keywords` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `religion` ");
}
function update_1042() {
q("ALTER TABLE `user` ADD `expire` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `maxreq` ");
}

View File

@ -134,11 +134,17 @@ $sexual
</div> </div>
<div id="profile-edit-religion-end"></div> <div id="profile-edit-religion-end"></div>
<div id="profile-edit-keywords-wrapper" > <div id="profile-edit-pubkeywords-wrapper" >
<label id="profile-edit-keywords-label" for="profile-edit-keywords" >Keywords: </label> <label id="profile-edit-pubkeywords-label" for="profile-edit-pubkeywords" >Public Keywords: </label>
<input type="text" size="32" name="keywords" id="profile-edit-keywords" title="Example: fishing photography software" value="$keywords" /> <input type="text" size="32" name="pubkeywords" id="profile-edit-pubkeywords" title="Example: fishing photography software" value="$pub_keywords" />
</div><div id="profile-edit-keywords-desc">(Used for searching public profiles, never shown to others)</div> </div><div id="profile-edit-pubkeywords-desc">(Used for suggesting potential friends, can be seen by others)</div>
<div id="profile-edit-keywords-end"></div> <div id="profile-edit-pubkeywords-end"></div>
<div id="profile-edit-prvkeywords-wrapper" >
<label id="profile-edit-prvkeywords-label" for="profile-edit-prvkeywords" >Private Keywords: </label>
<input type="text" size="32" name="prvkeywords" id="profile-edit-prvkeywords" title="Example: fishing photography software" value="$prv_keywords" />
</div><div id="profile-edit-prvkeywords-desc">(Used for searching profiles, never shown to others)</div>
<div id="profile-edit-prvkeywords-end"></div>
<div class="profile-edit-submit-wrapper" > <div class="profile-edit-submit-wrapper" >

View File

@ -78,7 +78,7 @@ $profile_in_net_dir
<div id="settings-default-perms" class="settings-default-perms" > <div id="settings-default-perms" class="settings-default-perms" >
<div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >&#x21e9; $permissions</div> <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >$permissions</div>
<div id="settings-default-perms-menu-end"></div> <div id="settings-default-perms-menu-end"></div>
<div id="settings-default-perms-select" style="display: none;" > <div id="settings-default-perms-select" style="display: none;" >
@ -89,6 +89,10 @@ $profile_in_net_dir
</div> </div>
<div id="settings-default-perms-end"></div> <div id="settings-default-perms-end"></div>
<div id="settings-expire-desc">Automatically expire (delete) posts older than <input type="text" size="3" name="expire" value="$expire" /> days</div>
<div id="settings-expire-end"></div>
<div class="settings-submit-wrapper" > <div class="settings-submit-wrapper" >
<input type="submit" name="submit" class="settings-submit" value="Submit" /> <input type="submit" name="submit" class="settings-submit" value="Submit" />
</div> </div>

View File

@ -134,11 +134,17 @@ $sexual
</div> </div>
<div id="profile-edit-religion-end"></div> <div id="profile-edit-religion-end"></div>
<div id="profile-edit-keywords-wrapper" > <div id="profile-edit-pubkeywords-wrapper" >
<label id="profile-edit-keywords-label" for="profile-edit-keywords" >Keywords: </label> <label id="profile-edit-pubkeywords-label" for="profile-edit-pubkeywords" >Public Keywords: </label>
<input type="text" size="32" name="keywords" id="profile-edit-keywords" title="Example: fishing photography software" value="$keywords" /> <input type="text" size="32" name="pub_keywords" id="profile-edit-pubkeywords" title="Example: fishing photography software" value="$pub_keywords" />
</div><div id="profile-edit-keywords-desc">(Used for searching public profiles, never shown to others)</div> </div><div id="profile-edit-pubkeywords-desc">(Used for suggesting potential friends, can be seen by others)</div>
<div id="profile-edit-keywords-end"></div> <div id="profile-edit-pubkeywords-end"></div>
<div id="profile-edit-prvkeywords-wrapper" >
<label id="profile-edit-prvkeywords-label" for="profile-edit-prvkeywords" >Private Keywords: </label>
<input type="text" size="32" name="prv_keywords" id="profile-edit-prvkeywords" title="Example: fishing photography software" value="$prv_keywords" />
</div><div id="profile-edit-prvkeywords-desc">(Used for searching profiles, never shown to others)</div>
<div id="profile-edit-prvkeywords-end"></div>
<div class="profile-edit-submit-wrapper" > <div class="profile-edit-submit-wrapper" >

View File

@ -76,9 +76,8 @@ $profile_in_dir
$profile_in_net_dir $profile_in_net_dir
<div id="settings-default-perms" class="settings-default-perms" > <div id="settings-default-perms" class="settings-default-perms" >
<div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >&#x21e9; $permissions</div> <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >$permissions</div>
<div id="settings-default-perms-menu-end"></div> <div id="settings-default-perms-menu-end"></div>
<div id="settings-default-perms-select" style="display: none;" > <div id="settings-default-perms-select" style="display: none;" >
@ -89,6 +88,10 @@ $profile_in_net_dir
</div> </div>
<div id="settings-default-perms-end"></div> <div id="settings-default-perms-end"></div>
<div id="settings-expire-desc">Automatically expire (delete) posts older than <input type="text" size="3" name="expire" value="$expire" /> days</div>
<div id="settings-expire-end"></div>
<div class="settings-submit-wrapper" > <div class="settings-submit-wrapper" >
<input type="submit" name="submit" class="settings-submit" value="Submit" /> <input type="submit" name="submit" class="settings-submit" value="Submit" />
</div> </div>

View File

@ -134,11 +134,17 @@ $sexual
</div> </div>
<div id="profile-edit-religion-end"></div> <div id="profile-edit-religion-end"></div>
<div id="profile-edit-keywords-wrapper" > <div id="profile-edit-pubkeywords-wrapper" >
<label id="profile-edit-keywords-label" for="profile-edit-keywords" >Keywords: </label> <label id="profile-edit-pubkeywords-label" for="profile-edit-pubkeywords" >Public Keywords: </label>
<input type="text" size="32" name="keywords" id="profile-edit-keywords" title="Example: fishing photography software" value="$keywords" /> <input type="text" size="32" name="pub_keywords" id="profile-edit-pubkeywords" title="Example: fishing photography software" value="$pub_keywords" />
</div><div id="profile-edit-keywords-desc">(Used for searching public profiles, never shown to others)</div> </div><div id="profile-edit-pubkeywords-desc">(Used for suggesting potential friends, can be seen by others)</div>
<div id="profile-edit-keywords-end"></div> <div id="profile-edit-pubkeywords-end"></div>
<div id="profile-edit-prvkeywords-wrapper" >
<label id="profile-edit-prvkeywords-label" for="profile-edit-prvkeywords" >Private Keywords: </label>
<input type="text" size="32" name="prv_keywords" id="profile-edit-prvkeywords" title="Example: fishing photography software" value="$prv_keywords" />
</div><div id="profile-edit-prvkeywords-desc">(Used for searching profiles, never shown to others)</div>
<div id="profile-edit-prvkeywords-end"></div>
<div class="profile-edit-submit-wrapper" > <div class="profile-edit-submit-wrapper" >

View File

@ -78,7 +78,7 @@ $profile_in_net_dir
<div id="settings-default-perms" class="settings-default-perms" > <div id="settings-default-perms" class="settings-default-perms" >
<div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >&#x21e9; $permissions</div> <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >$permissions</div>
<div id="settings-default-perms-menu-end"></div> <div id="settings-default-perms-menu-end"></div>
<div id="settings-default-perms-select" style="display: none;" > <div id="settings-default-perms-select" style="display: none;" >
@ -89,6 +89,9 @@ $profile_in_net_dir
</div> </div>
<div id="settings-default-perms-end"></div> <div id="settings-default-perms-end"></div>
<div id="settings-expire-desc">Automatically expire (delete) posts older than <input type="text" size="3" name="expire" value="$expire" /> days</div>
<div id="settings-expire-end"></div>
<div class="settings-submit-wrapper" > <div class="settings-submit-wrapper" >
<input type="submit" name="submit" class="settings-submit" value="Submit" /> <input type="submit" name="submit" class="settings-submit" value="Submit" />
</div> </div>

View File

@ -16,14 +16,14 @@ $a->strings['last'] = 'last';
$a->strings['next'] = 'next'; $a->strings['next'] = 'next';
$a->strings[' likes this.'] = ' aime ça.'; $a->strings[' likes this.'] = ' aime ça.';
$a->strings[' doesn\'t like this.'] = ' n\'aime pas ça.'; $a->strings[' doesn\'t like this.'] = ' n\'aime pas ça.';
$a->strings['people'] = 'personne(s)'; $a->strings['people'] = 'personnes';
$a->strings['like this.'] = 'aime(nt) ça.'; $a->strings['like this.'] = 'aiment ça.';
$a->strings['don\'t like this.'] = 'n\'aime(nt) pas ça.'; $a->strings['don\'t like this.'] = 'n\'aiment pas ça.';
$a->strings['and'] = 'et'; $a->strings['and'] = 'et';
$a->strings[', and '] = ', et '; $a->strings[', and '] = ', et ';
$a->strings[' other people'] = ' autre(s) personne(s)'; $a->strings[' other people'] = ' autres personnes';
$a->strings[' like this.'] = ' aime(nt) ça.'; $a->strings[' like this.'] = ' aiment ça.';
$a->strings[' don\'t like this.'] = ' n\'aime(nt) pas ça.'; $a->strings[' don\'t like this.'] = ' n\'aiment pas ça.';
$a->strings['No contacts'] = 'Aucun contact'; $a->strings['No contacts'] = 'Aucun contact';
$a->strings['Contacts'] = 'Contacts'; $a->strings['Contacts'] = 'Contacts';
$a->strings['View Contacts'] = 'Voir les contacts'; $a->strings['View Contacts'] = 'Voir les contacts';

View File

@ -134,11 +134,17 @@ $sexual
</div> </div>
<div id="profile-edit-religion-end"></div> <div id="profile-edit-religion-end"></div>
<div id="profile-edit-keywords-wrapper" > <div id="profile-edit-pubkeywords-wrapper" >
<label id="profile-edit-keywords-label" for="profile-edit-keywords" >Parole chiave: </label> <label id="profile-edit-pubkeywords-label" for="profile-edit-pubkeywords" >[Public] Parole chiave: </label>
<input type="text" size="32" name="keywords" id="profile-edit-keywords" title="Esempio: pescare fotografia software" value="$keywords" /> <input type="text" size="32" name="pub_keywords" id="profile-edit-pubkeywords" title="Esempio: pescare fotografia software" value="$pub_keywords" />
</div><div id="profile-edit-keywords-desc">(Usati per la ricerca dei profili pubblci, mai mostrati agli altri)</div> </div><div id="profile-edit-pubkeywords-desc">(Used for suggesting potential friends, can be seen by others)</div>
<div id="profile-edit-keywords-end"></div> <div id="profile-edit-pubkeywords-end"></div>
<div id="profile-edit-prvkeywords-wrapper" >
<label id="profile-edit-prvkeywords-label" for="profile-edit-prvkeywords" >Parole chiave: </label>
<input type="text" size="32" name="prv_keywords" id="profile-edit-prvkeywords" title="Esempio: pescare fotografia software" value="$prv_keywords" />
</div><div id="profile-edit-prvkeywords-desc">(Usati per la ricerca dei profili, mai mostrati agli altri)</div>
<div id="profile-edit-prvkeywords-end"></div>
<div class="profile-edit-submit-wrapper" > <div class="profile-edit-submit-wrapper" >

View File

@ -79,7 +79,7 @@ $profile_in_net_dir
<div id="settings-default-perms" class="settings-default-perms" > <div id="settings-default-perms" class="settings-default-perms" >
<div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >&#x21e9; $permissions</div> <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >$permissions</div>
<div id="settings-default-perms-menu-end"></div> <div id="settings-default-perms-menu-end"></div>
<div id="settings-default-perms-select" style="display: none;" > <div id="settings-default-perms-select" style="display: none;" >
@ -90,6 +90,9 @@ $profile_in_net_dir
</div> </div>
<div id="settings-default-perms-end"></div> <div id="settings-default-perms-end"></div>
<div id="settings-expire-desc">Automatically expire (delete) posts older than <input type="text" size="3" name="expire" value="$expire" /> days</div>
<div id="settings-expire-end"></div>
<div class="settings-submit-wrapper" > <div class="settings-submit-wrapper" >
<input type="submit" name="submit" class="settings-submit" value="Aggiorna" /> <input type="submit" name="submit" class="settings-submit" value="Aggiorna" />
</div> </div>

View File

@ -373,6 +373,10 @@ input#dfrn-url {
margin-bottom: 30px; margin-bottom: 30px;
} }
#settings-expire-end {
margin-bottom: 30px;
}
#settings-username-end, #settings-username-end,
#settings-email-end, #settings-email-end,
#settings-nick-end, #settings-nick-end,
@ -624,7 +628,8 @@ input#dfrn-url {
#profile-edit-sexual-label, #profile-edit-sexual-label,
#profile-edit-politic-label, #profile-edit-politic-label,
#profile-edit-religion-label, #profile-edit-religion-label,
#profile-edit-keywords-label, #profile-edit-pubkeywords-label,
#profile-edit-prvkeywords-label,
#profile-edit-homepage-label { #profile-edit-homepage-label {
float: left; float: left;
width: 175px; width: 175px;
@ -644,7 +649,8 @@ input#dfrn-url {
#sexual-select, #sexual-select,
#profile-edit-politic, #profile-edit-politic,
#profile-edit-religion, #profile-edit-religion,
#profile-edit-keywords, #profile-edit-pubkeywords,
#profile-edit-prvkeywords,
#profile-in-dir-yes, #profile-in-dir-yes,
#profile-in-dir-no, #profile-in-dir-no,
#profile-in-netdir-yes, #profile-in-netdir-yes,
@ -698,7 +704,8 @@ input#dfrn-url {
#profile-edit-pdesc-desc, #profile-edit-pdesc-desc,
#profile-edit-keywords-desc { #profile-edit-pubkeywords-desc,
#profile-edit-prvkeywords-desc {
float: left; float: left;
margin-left: 20px; margin-left: 20px;
} }
@ -741,7 +748,8 @@ input#dfrn-url {
#profile-edit-sexual-end, #profile-edit-sexual-end,
#profile-edit-politic-end, #profile-edit-politic-end,
#profile-edit-religion-end, #profile-edit-religion-end,
#profile-edit-keywords-end, #profile-edit-pubkeywords-end,
#profile-edit-prvkeywords-end,
#profile-edit-homepage-end, #profile-edit-homepage-end,
#profile-in-dir-break, #profile-in-dir-break,
#profile-in-dir-end, #profile-in-dir-end,

View File

@ -506,6 +506,10 @@ input#dfrn-url {
margin-bottom: 30px; margin-bottom: 30px;
} }
#settings-expire-end {
margin-bottom: 30px;
}
#settings-username-end, #settings-username-end,
#settings-email-end, #settings-email-end,
#settings-nick-end, #settings-nick-end,
@ -755,7 +759,8 @@ input#dfrn-url {
#profile-edit-sexual-label, #profile-edit-sexual-label,
#profile-edit-politic-label, #profile-edit-politic-label,
#profile-edit-religion-label, #profile-edit-religion-label,
#profile-edit-keywords-label, #profile-edit-pubkeywords-label,
#profile-edit-prvkeywords-label,
#profile-edit-homepage-label { #profile-edit-homepage-label {
float: left; float: left;
width: 175px; width: 175px;
@ -775,7 +780,8 @@ input#dfrn-url {
#sexual-select, #sexual-select,
#profile-edit-politic, #profile-edit-politic,
#profile-edit-religion, #profile-edit-religion,
#profile-edit-keywords, #profile-edit-pubkeywords,
#profile-edit-prvkeywords,
#profile-in-dir-yes, #profile-in-dir-yes,
#profile-in-dir-no, #profile-in-dir-no,
#profile-in-netdir-yes, #profile-in-netdir-yes,
@ -806,7 +812,8 @@ input#dfrn-url {
margin-left: 20px; margin-left: 20px;
} }
#profile-edit-keywords-desc { #profile-edit-pubkeywords-desc,
#profile-edit-prvkeywords-desc {
float: left; float: left;
margin-left: 20px; margin-left: 20px;
} }
@ -864,7 +871,8 @@ input#dfrn-url {
#profile-edit-sexual-end, #profile-edit-sexual-end,
#profile-edit-politic-end, #profile-edit-politic-end,
#profile-edit-religion-end, #profile-edit-religion-end,
#profile-edit-keywords-end, #profile-edit-pubkeywords-end,
#profile-edit-prvkeywords-end,
#profile-edit-homepage-end, #profile-edit-homepage-end,
#profile-in-dir-break, #profile-in-dir-break,
#profile-in-dir-end, #profile-in-dir-end,