// 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);
set_time_limit(0);
-define ( 'FRIENDIKA_VERSION', '2.1.913' );
+define ( 'FRIENDIKA_VERSION', '2.1.921' );
define ( 'DFRN_PROTOCOL_VERSION', '2.1' );
-define ( 'DB_UPDATE_VERSION', 1040 );
+define ( 'DB_UPDATE_VERSION', 1043 );
define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
);
if($r && count($r)) {
- $o .= '<div id="birthday-wrapper"><div id="birthday-title">' . t('Birthdays this week:') . '</div>';
+ $total = 0;
+ foreach($r as $rr)
+ if(strlen($rr['name']))
+ $total ++;
+
+ $o .= '<div id="birthday-notice" class="birthday-notice fakelink" onclick=openClose(\'birthday-wrapper\'); >' . t('Birthday Reminders') . ' ' . '(' . $total . ')' . '</div>';
+ $o .= '<div id="birthday-wrapper" style="display: none;" ><div id="birthday-title">' . t('Birthdays this week:') . '</div>';
$o .= '<div id="birthday-adjust">' . t("\x28Adjusted for local time\x29") . '</div>';
$o .= '<div id="birthday-title-end"></div>';
foreach($r as $rr) {
+ if(! strlen($rr['name']))
+ continue;
$now = strtotime('now');
$today = (((strtotime($rr['start'] . ' +00:00') < $now) && (strtotime($rr['finish'] . ' +00:00') > $now)) ? true : false);
. '</div>' ;
}
- $o .= '</div>';
+ $o .= '</div></div>';
}
return $o;
`sexual` char(255) NOT NULL,
`politic` 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,
`summary` char(255) NOT NULL,
`music` text NOT NULL,
`page-flags` int(11) unsigned NOT NULL DEFAULT '0',
`pwdreset` char(255) NOT NULL,
`maxreq` int(11) NOT NULL DEFAULT '10',
+ `expire` int(11) unsigned NOT NULL DEFAULT '0',
`allow_cid` mediumtext NOT NULL,
`allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL,
`v` TEXT NOT NULL,
`updated` DATETIME NOT NULL
) 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;
+
$Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.+?)\[\/img\]/", '<img src="$3" height="$2" width="$1">', $Text);
// 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);
// oembed tag
public $connected = 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);
if(! mysqli_connect_errno()) {
$this->connected = true;
}
else {
- /*
+ /**
* 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.
* These usually indicate SQL syntax errors that need to be resolved.
--- /dev/null
+<?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();
+}
--- /dev/null
+<?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;
+}
+
$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');
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']);
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 $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");
+
+}
\ No newline at end of file
break;
}
+ $expire = false;
$top_level = false;
$recipients = array();
$url_recipients = array();
$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 {
// find ancestors
intval($parent_id)
);
- if(! count($items)){
+ if(! count($items)) {
return;
}
-
// avoid race condition with deleting entries
if($items[0]['deleted']) {
intval($uid)
);
- if(count($r))
- $owner = $r[0];
- else {
+ if(! count($r))
return;
- }
+
+ $owner = $r[0];
+
$hub = get_config('system','huburl');
// If this is a public conversation, notify the feed hub
$parent = $items[0];
- if($parent['type'] === 'remote') {
+ if($parent['type'] === 'remote' && (! $expire)) {
// local followup to remote post
$followup = true;
$notify_hub = false; // not public
}
else {
foreach($items as $item) {
+
if(! $item['parent'])
continue;
if(! $contact)
continue;
- $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);
}
}
// only send salmon if public - e.g. if it's ok to notify
// 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']);
foreach($slaps as $slappy) {
if($contact['notify']) {
// 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) {
if($url) {
logger('notifier: urldelivery: ' . $url);
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
q("DELETE FROM `cache` WHERE `updated` < '%s'",
dbesc(datetime_convert('UTC','UTC',"now - 30 days")));
*
* Get the language setting directly from system variables, bypassing get_config()
* as database may not yet be configured.
+ *
+ * If possible, we use the value from the browser.
*
*/
-$lang = ((isset($a->config['system']['language'])) ? $a->config['system']['language'] : 'en');
+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');
+}
load_translation_table($lang);
$_SESSION['sysmsg'] = '';
/*
- * check_config() is responible for running update scripts. These automatically
- * update the DB schema whenever we push a new one out.
+ * check_config() is responsible for running update scripts. These automatically
+ * update the DB schema whenever we push a new one out. It also checks to see if
+ * any plugins have been added or removed and reacts accordingly.
*/
/**
*
- * We have already parsed the server path into $->argc and $a->argv
+ * We have already parsed the server path into $a->argc and $a->argv
*
* $a->argv[0] is our module name. We will load the file mod/{$a->argv[0]}.php
* and use it for handling our URL request.
* and in the following order:
*
* "module"_init
- * "module"_post (only if there are $_POST variables)
+ * "module"_post (only called if there are $_POST variables)
* "module"_afterpost
* "module"_content - the string return of this function contains our page body
*
*/
if(strlen($a->module)) {
+
+ /**
+ *
+ * We will always have a module name.
+ * First see if we have a plugin which is masquerading as a module.
+ *
+ */
+
if(is_array($a->plugins) && in_array($a->module,$a->plugins) && file_exists("addon/{$a->module}/{$a->module}.php")) {
include_once("addon/{$a->module}/{$a->module}.php");
if(function_exists($a->module . '_module'))
$a->module_loaded = true;
}
+
+ /**
+ * If not, next look for a 'standard' program module in the 'mod' directory
+ */
+
if((! $a->module_loaded) && (file_exists("mod/{$a->module}.php"))) {
- include("mod/{$a->module}.php");
+ include_once("mod/{$a->module}.php");
$a->module_loaded = true;
}
+
+ /**
+ *
+ * The URL provided does not resolve to a valid module.
+ *
+ * On Dreamhost sites, quite often things go wrong for no apparent reason and they send us to '/internal_error.html'.
+ * We don't like doing this, but as it occasionally accounts for 10-20% or more of all site traffic -
+ * we are going to trap this and redirect back to the requested page. As long as you don't have a critical error on your page
+ * this will often succeed and eventually do the right thing.
+ *
+ * Otherwise we are going to emit a 404 not found.
+ *
+ */
+
if(! $a->module_loaded) {
if((x($_SERVER,'QUERY_STRING')) && ($_SERVER['QUERY_STRING'] === 'q=internal_error.html') && isset($dreamhost_error_hack)) {
logger('index.php: dreamhost_error_hack invoked. Original URI =' . $_SERVER['REQUEST_URI']);
}
-// let javascript take you home
+// If you're just visiting, let javascript take you home
if(x($_SESSION,'visitor_home'))
$homebase = $_SESSION['visitor_home'];
if($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 " );
$cmnt_tpl = load_view_file('view/comment_item.tpl');
- $like_tpl = load_view_file('view/like.tpl');
+ $like_tpl = load_view_file('view/like_noshare.tpl');
$tpl = load_view_file('view/wall_item.tpl');
$wallwall = load_view_file('view/wallwall_item.tpl');
'$id' => $item['id'],
'$likethis' => t("I like this \x28toggle\x29"),
'$nolike' => t("I don't like this \x28toggle\x29"),
+ '$share' => t('Share'),
'$wait' => t('Please wait')
));
}
if(count($tags)) {
foreach($tags as $tag) {
if(strpos($tag,'#') === 0) {
+ if(strpos($tag,'[url='))
+ continue;
$basetag = str_replace('_',' ',substr($tag,1));
$body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
if(strlen($str_tags))
continue;
}
if(strpos($tag,'@') === 0) {
+ if(strpos($tag,'[url='))
+ continue;
$stat = false;
$name = substr($tag,1);
if((strpos($name,'@')) || (strpos($name,'http://'))) {
require_once('include/security.php');
- $uid = $_SESSION['uid'];
+ $uid = local_user();
if(($a->argc == 3) && ($a->argv[1] === 'drop') && intval($a->argv[2])) {
'$upload' => t('Upload photo'),
'$weblink' => t('Insert web link'),
'$youtube' => t('Insert YouTube video'),
+ '$video' => t('Insert Vorbis [.ogg] video'),
+ '$audio' => t('Insert Vorbis [.ogg] audio'),
'$setloc' => t('Set your location'),
'$noloc' => t('Clear browser location'),
'$wait' => t('Please wait'),
$cmnt_tpl = load_view_file('view/comment_item.tpl');
$like_tpl = load_view_file('view/like.tpl');
+ $noshare_tpl = load_view_file('view/like_noshare.tpl');
$tpl = load_view_file('view/wall_item.tpl');
$wallwall = load_view_file('view/wallwall_item.tpl');
$likebuttons = '';
if($item['id'] == $item['parent']) {
- $likebuttons = replace_macros($like_tpl,array(
+ $likebuttons = replace_macros((($item['private']) ? $noshare_tpl : $like_tpl),array(
'$id' => $item['id'],
'$likethis' => t("I like this \x28toggle\x29"),
'$nolike' => t("I don't like this \x28toggle\x29"),
+ '$share' => t('Share'),
'$wait' => t('Please wait')
));
}
return;
}
+ $prevlink = '';
+ $nextlink = '';
+
+ $prvnxt = q("SELECT `resource-id` FROM `photo` WHERE `album` = '%s' AND `uid` = %d AND `scale` = 0
+ $sql_extra ORDER BY `created` DESC ",
+ dbesc($ph[0]['album']),
+ intval($owner_uid)
+ );
+
+ if(count($prvnxt)) {
+ for($z = 0; $z < count($prvnxt); $z++) {
+ if($prvnxt[$z]['resource-id'] == $ph[0]['resource-id']) {
+ $prv = $z - 1;
+ $nxt = $z + 1;
+ if($prv < 0)
+ $prv = count($prvnxt) - 1;
+ if($nxt >= count($prvnxt))
+ $nxt = 0;
+ break;
+ }
+ }
+ $prevlink = $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$prv]['resource-id'] ;
+ $nextlink = $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$nxt]['resource-id'] ;
+ }
+
+
if(count($ph) == 1)
$hires = $lores = $ph[0];
if(count($ph) > 1) {
$o .= '</div>';
}
+ if($prevlink)
+ $o .= '<div id="photo-prev-link"><a href="' . $prevlink .'">' . t('<< Prev') . '</a></div>' ;
- $o .= '<a href="' . $a->get_baseurl() . '/photo/'
+ $o .= '<div id="photo-photo"><a href="' . $a->get_baseurl() . '/photo/'
. $hires['resource-id'] . '-' . $hires['scale'] . '.jpg" title="'
. t('View Full Size') . '" ><img src="' . $a->get_baseurl() . '/photo/'
- . $lores['resource-id'] . '-' . $lores['scale'] . '.jpg' . '" /></a>';
+ . $lores['resource-id'] . '-' . $lores['scale'] . '.jpg' . '" /></a></div>';
+
+ if($nextlink)
+ $o .= '<div id="photo-next-link"><a href="' . $nextlink .'">' . t('Next >>') . '</a></div>';
+
+ $o .= '<div id="photo-photo-end"></div>';
// Do we have an item for this photo?
$tpl = load_view_file('view/photo_item.tpl');
$return_url = $a->cmd;
- $like_tpl = load_view_file('view/like.tpl');
+ $like_tpl = load_view_file('view/lik_noshare.tpl');
$likebuttons = '';
'$id' => $item['id'],
'$likethis' => t("I like this \x28toggle\x29"),
'$nolike' => t("I don't like this \x28toggle\x29"),
+ '$share' => t('Share'),
'$wait' => t('Please wait')
));
}
$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'] .= '<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 : ''));
'$upload' => t('Upload photo'),
'$weblink' => t('Insert web link'),
'$youtube' => t('Insert YouTube video'),
+ '$video' => t('Insert Vorbis [.ogg] video'),
+ '$audio' => t('Insert Vorbis [.ogg] audio'),
'$setloc' => t('Set your location'),
'$noloc' => t('Clear browser location'),
'$wait' => t('Please wait'),
$cmnt_tpl = load_view_file('view/comment_item.tpl');
$like_tpl = load_view_file('view/like.tpl');
+ $noshare_tpl = load_view_file('view/like_noshare.tpl');
$tpl = load_view_file('view/wall_item.tpl');
if(can_write_wall($a,$a->profile['profile_uid'])) {
if($item['id'] == $item['parent']) {
- $likebuttons = replace_macros($like_tpl,array(
+ $likebuttons = replace_macros((($item['private']) ? $noshare_tpl : $like_tpl),array(
'$id' => $item['id'],
'$likethis' => t("I like this \x28toggle\x29"),
'$nolike' => t("I don't like this \x28toggle\x29"),
+ '$share' => t('Share'),
'$wait' => t('Please wait')
));
}
);
// Update global directory in background
- $url = $_SESSION['my_url'];
+ $url = $a->get_baseurl() . '/profile/' . $a->user['nickname'];
if($url && strlen(get_config('system','directory_submit_url')))
proc_run('php',"include/directory.php","$url");
}
$region = notags(trim($_POST['region']));
$postal_code = notags(trim($_POST['postal_code']));
$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']));
if($marital != $orig[0]['marital'])
$maritalchanged = true;
`homepage` = '%s',
`politic` = '%s',
`religion` = '%s',
- `keywords` = '%s',
+ `pub_keywords` = '%s',
+ `prv_keywords` = '%s',
`about` = '%s',
`interest` = '%s',
`contact` = '%s',
dbesc($homepage),
dbesc($politic),
dbesc($religion),
- dbesc($keywords),
+ dbesc($pub_keywords),
+ dbesc($prv_keywords),
dbesc($about),
dbesc($interest),
dbesc($contact),
'$homepage' => $r[0]['homepage'],
'$politic' => $r[0]['politic'],
'$religion' => $r[0]['religion'],
- '$keywords' => $r[0]['keywords'],
+ '$pub_keywords' => $r[0]['pub_keywords'],
+ '$prv_keywords' => $r[0]['prv_keywords'],
'$music' => $r[0]['music'],
'$book' => $r[0]['book'],
'$tv' => $r[0]['tv'],
$oidlabel = t("Your OpenID \x28optional\x29: ");
}
- $realpeople = t('Members of this network prefer to communicate with real people who use their real names.');
+ // I set this and got even more fake names than before...
+
+ $realpeople = ''; // t('Members of this network prefer to communicate with real people who use their real names.');
if(get_config('system','publish_all')) {
$profile_publish_reg = '<input type="hidden" name="profile_publish_reg" value="1" />';
$a->set_pager_total($r[0]['total']);
if(! $r[0]['total']) {
- notice('No results.');
+ notice( t('No results.') . EOL);
return $o;
}
}
}
-
- if(! $r[0]['total']) {
- notice('No results.');
- return $o;
- }
-
-
$o .= paginate($a);
return $o;
$defloc = ((x($_POST,'defloc')) ? notags(trim($_POST['defloc'])) : '');
$openid = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
$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);
$publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0);
$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($email),
dbesc($openid),
intval($allow_location),
dbesc($theme),
intval($maxreq),
+ intval($expire),
dbesc($openidserver),
intval(local_user())
);
$defloc = $a->user['default-location'];
$openid = $a->user['openid'];
$maxreq = $a->user['maxreq'];
+ $expire = ((intval($a->user['expire'])) ? $a->user['expire'] : '');
if(! strlen($a->user['timezone']))
$timezone = date_default_timezone_get();
'$sel_notify4' => (($notify & NOTIFY_COMMENT) ? ' checked="checked" ' : ''),
'$sel_notify5' => (($notify & NOTIFY_MAIL) ? ' checked="checked" ' : ''),
'$maxreq' => $maxreq,
+ '$expire' => $expire,
'$theme' => $theme_selector,
'$pagetype' => $pagetype
));
--- /dev/null
+<?php
+
+require_once('bbcode.php');
+
+function share_init(&$a) {
+
+ $post_id = (($a->argc > 1) ? intval($a->argv[1]) : 0);
+ if((! $post_id) || (! local_user()))
+ killme();
+
+ $r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1",
+ intval($post_id)
+ );
+ if(! count($r) || $r[0]['private'])
+ killme();
+
+ $o = '';
+
+ $o .= '♲ <a href="' . $r[0]['author-link'] . '">' . $r[0]['author-name'] . '</a><br />';
+ $o .= prepare_body($r[0]);
+ echo $o . '<br />';
+ killme();
+}
\ No newline at end of file
`k` CHAR( 255 ) NOT NULL PRIMARY KEY ,
`v` TEXT NOT NULL,
`updated` DATETIME NOT NULL
- ) ENGINE = MYISAM DEFAULT CHARSET=utf8;");
+ ) ENGINE = MYISAM DEFAULT CHARSET=utf8 ");
}
function update_1039() {
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` ");
+}
+
+
}
}
+ function jotVideoURL() {
+ reply = prompt("Please enter a video(.ogg) link/URL:");
+ if(reply && reply.length) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,'[video]' + reply + '[/video]');
+ }
+ }
+
+ function jotAudioURL() {
+ reply = prompt("Please enter an audio(.ogg) link/URL:");
+ if(reply && reply.length) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,'[audio]' + reply + '[/audio]');
+ }
+ }
+
function jotGetLocation() {
reply = prompt("Wo bist du im Moment?", $('#jot-location').val());
if(reply && reply.length) {
}
}
+ function jotShare(id) {
+ $('#like-rotator-' + id).show();
+ $.get('share/' + id, function(data) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,data);
+ $('#like-rotator-' + id).hide();
+ $(window).scrollTop(0);
+ });
+ }
+
+
function linkdropper(event) {
var linkFound = event.dataTransfer.types.contains("text/uri-list");
</div>
<div id="profile-edit-religion-end"></div>
-<div id="profile-edit-keywords-wrapper" >
-<label id="profile-edit-keywords-label" for="profile-edit-keywords" >Keywords: </label>
-<input type="text" size="32" name="keywords" id="profile-edit-keywords" title="Example: fishing photography software" value="$keywords" />
-</div><div id="profile-edit-keywords-desc">(Used for searching public profiles, never shown to others)</div>
-<div id="profile-edit-keywords-end"></div>
+<div id="profile-edit-pubkeywords-wrapper" >
+<label id="profile-edit-pubkeywords-label" for="profile-edit-pubkeywords" >Public Keywords: </label>
+<input type="text" size="32" name="pubkeywords" id="profile-edit-pubkeywords" title="Example: fishing photography software" value="$pub_keywords" />
+</div><div id="profile-edit-pubkeywords-desc">(Used for suggesting potential friends, can be seen by others)</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 id="settings-default-perms" class="settings-default-perms" >
- <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >⇩ $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-select" style="display: none;" >
</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" >
<input type="submit" name="submit" class="settings-submit" value="Submit" />
</div>
}
}
+ function jotVideoURL() {
+ reply = prompt("Please enter a video(.ogg) link/URL:");
+ if(reply && reply.length) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,'[video]' + reply + '[/video]');
+ }
+ }
+
+ function jotAudioURL() {
+ reply = prompt("Please enter an audio(.ogg) link/URL:");
+ if(reply && reply.length) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,'[audio]' + reply + '[/audio]');
+ }
+ }
+
+
function jotGetLocation() {
reply = prompt("Where are you right now?", $('#jot-location').val());
if(reply && reply.length) {
}
}
+ function jotShare(id) {
+ $('#like-rotator-' + id).show();
+ $.get('share/' + id, function(data) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,data);
+ $('#like-rotator-' + id).hide();
+ $(window).scrollTop(0);
+ });
+ }
function linkdropper(event) {
var linkFound = event.dataTransfer.types.contains("text/uri-list");
</div>
<div id="profile-edit-religion-end"></div>
-<div id="profile-edit-keywords-wrapper" >
-<label id="profile-edit-keywords-label" for="profile-edit-keywords" >Keywords: </label>
-<input type="text" size="32" name="keywords" id="profile-edit-keywords" title="Example: fishing photography software" value="$keywords" />
-</div><div id="profile-edit-keywords-desc">(Used for searching public profiles, never shown to others)</div>
-<div id="profile-edit-keywords-end"></div>
+<div id="profile-edit-pubkeywords-wrapper" >
+<label id="profile-edit-pubkeywords-label" for="profile-edit-pubkeywords" >Public Keywords: </label>
+<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-pubkeywords-desc">(Used for suggesting potential friends, can be seen by others)</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" >
$profile_in_net_dir
-
<div id="settings-default-perms" class="settings-default-perms" >
- <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >⇩ $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-select" style="display: none;" >
</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" >
<input type="submit" name="submit" class="settings-submit" value="Submit" />
</div>
}
}
+ function jotVideoURL() {
+ reply = prompt("Please enter a video(.ogg) link/URL:");
+ if(reply && reply.length) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,'[video]' + reply + '[/video]');
+ }
+ }
+
+ function jotAudioURL() {
+ reply = prompt("Please enter an audio(.ogg) link/URL:");
+ if(reply && reply.length) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,'[audio]' + reply + '[/audio]');
+ }
+ }
+
function jotGetLocation() {
reply = prompt("Where are you right now?", $('#jot-location').val());
if(reply && reply.length) {
}
}
+ function jotShare(id) {
+ $('#like-rotator-' + id).show();
+ $.get('share/' + id, function(data) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,data);
+ $('#like-rotator-' + id).hide();
+ $(window).scrollTop(0);
+ });
+ }
+
function linkdropper(event) {
var linkFound = event.dataTransfer.types.contains("text/uri-list");
</div>
<div id="profile-edit-religion-end"></div>
-<div id="profile-edit-keywords-wrapper" >
-<label id="profile-edit-keywords-label" for="profile-edit-keywords" >Keywords: </label>
-<input type="text" size="32" name="keywords" id="profile-edit-keywords" title="Example: fishing photography software" value="$keywords" />
-</div><div id="profile-edit-keywords-desc">(Used for searching public profiles, never shown to others)</div>
-<div id="profile-edit-keywords-end"></div>
+<div id="profile-edit-pubkeywords-wrapper" >
+<label id="profile-edit-pubkeywords-label" for="profile-edit-pubkeywords" >Public Keywords: </label>
+<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-pubkeywords-desc">(Used for suggesting potential friends, can be seen by others)</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 id="settings-default-perms" class="settings-default-perms" >
- <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >⇩ $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-select" style="display: none;" >
</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" >
<input type="submit" name="submit" class="settings-submit" value="Submit" />
</div>
$a->strings['next'] = 'next';
$a->strings[' likes this.'] = ' aime ça.';
$a->strings[' doesn\'t like this.'] = ' n\'aime pas ça.';
-$a->strings['people'] = 'personne(s)';
-$a->strings['like this.'] = 'aime(nt) ça.';
-$a->strings['don\'t like this.'] = 'n\'aime(nt) pas ça.';
+$a->strings['people'] = 'personnes';
+$a->strings['like this.'] = 'aiment ça.';
+$a->strings['don\'t like this.'] = 'n\'aiment pas ça.';
$a->strings['and'] = 'et';
$a->strings[', and '] = ', et ';
-$a->strings[' other people'] = ' autre(s) personne(s)';
-$a->strings[' like this.'] = ' aime(nt) ça.';
-$a->strings[' don\'t like this.'] = ' n\'aime(nt) pas ça.';
+$a->strings[' other people'] = ' autres personnes';
+$a->strings[' like this.'] = ' aiment ça.';
+$a->strings[' don\'t like this.'] = ' n\'aiment pas ça.';
$a->strings['No contacts'] = 'Aucun contact';
$a->strings['Contacts'] = 'Contacts';
$a->strings['View Contacts'] = 'Voir les contacts';
}
}
+ function jotVideoURL() {
+ reply = prompt("Please enter a video(.ogg) link/URL:");
+ if(reply && reply.length) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,'[video]' + reply + '[/video]');
+ }
+ }
+
+ function jotAudioURL() {
+ reply = prompt("Please enter an audio(.ogg) link/URL:");
+ if(reply && reply.length) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,'[audio]' + reply + '[/audio]');
+ }
+ }
+
function jotGetLocation() {
reply = prompt("Dove ti trovi ora?", $('#jot-location').val());
if(reply && reply.length) {
}
}
+ function jotShare(id) {
+ $('#like-rotator-' + id).show();
+ $.get('share/' + id, function(data) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,data);
+ $('#like-rotator-' + id).hide();
+ $(window).scrollTop(0);
+ });
+ }
+
function linkdropper(event) {
var linkFound = event.dataTransfer.types.contains("text/uri-list");
</div>
<div id="profile-edit-religion-end"></div>
-<div id="profile-edit-keywords-wrapper" >
-<label id="profile-edit-keywords-label" for="profile-edit-keywords" >Parole chiave: </label>
-<input type="text" size="32" name="keywords" id="profile-edit-keywords" title="Esempio: pescare fotografia software" value="$keywords" />
-</div><div id="profile-edit-keywords-desc">(Usati per la ricerca dei profili pubblci, mai mostrati agli altri)</div>
-<div id="profile-edit-keywords-end"></div>
+<div id="profile-edit-pubkeywords-wrapper" >
+<label id="profile-edit-pubkeywords-label" for="profile-edit-pubkeywords" >[Public] Parole chiave: </label>
+<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-pubkeywords-desc">(Used for suggesting potential friends, can be seen by others)</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 id="settings-default-perms" class="settings-default-perms" >
- <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >⇩ $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-select" style="display: none;" >
</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" >
<input type="submit" name="submit" class="settings-submit" value="Aggiorna" />
</div>
<img id="profile-link" src="images/link-icon.gif" alt="$weblink" title="$weblink" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink();" />
</div>
<div id="profile-youtube-wrapper" style="display: $visitor;" >
- <img id="profile-video" src="images/youtube_icon.gif" alt="$youtube" title="$youtube" onclick="jotGetVideo();" />
+ <img id="profile-youtube" src="images/youtube_icon.gif" alt="$youtube" title="$youtube" onclick="jotGetVideo();" />
+ </div>
+ <div id="profile-video-wrapper" style="display: $visitor;" >
+ <img id="profile-video" src="images/video.gif" alt="$video" title="$video" onclick="jotVideoURL();" />
+ </div>
+ <div id="profile-audio-wrapper" style="display: $visitor;" >
+ <img id="profile-audio" src="images/audio.gif" alt="$audio" title="$audio" onclick="jotAudioURL();" />
</div>
<div id="profile-location-wrapper" style="display: $visitor;" >
<img id="profile-location" src="images/globe.gif" alt="$setloc" title="$setloc" onclick="jotGetLocation();" />
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
<img src="images/like.gif" alt="$likethis" title="$likethis" onclick="dolike($id,'like');" />
<img src="images/dislike.gif" alt="$nolike" title="$nolike" onclick="dolike($id,'dislike');" />
+ <img src="images/share.gif" alt="$share" title="$share" class="wall-item-share-buttons" onclick="jotShare($id);" />
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
</div>
--- /dev/null
+<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
+ <img src="images/like.gif" alt="$likethis" title="$likethis" onclick="dolike($id,'like');" />
+ <img src="images/dislike.gif" alt="$nolike" title="$nolike" onclick="dolike($id,'dislike');" />
+ <img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
+ </div>
/* from default */
#jot-perms-icon,
#profile-location,
-#profile-nolocation,
+#profile-nolocation,
+#profile-youtube,
#profile-video,
+#profile-audio,
#profile-link,
#wall-image-upload,
#profile-upload-wrapper,
margin-bottom: 30px;
}
+#settings-expire-end {
+ margin-bottom: 30px;
+}
+
#settings-username-end,
#settings-email-end,
#settings-nick-end,
#profile-edit-sexual-label,
#profile-edit-politic-label,
#profile-edit-religion-label,
-#profile-edit-keywords-label,
+#profile-edit-pubkeywords-label,
+#profile-edit-prvkeywords-label,
#profile-edit-homepage-label {
float: left;
width: 175px;
#sexual-select,
#profile-edit-politic,
#profile-edit-religion,
-#profile-edit-keywords,
+#profile-edit-pubkeywords,
+#profile-edit-prvkeywords,
#profile-in-dir-yes,
#profile-in-dir-no,
#profile-in-netdir-yes,
#profile-edit-pdesc-desc,
-#profile-edit-keywords-desc {
+#profile-edit-pubkeywords-desc,
+#profile-edit-prvkeywords-desc {
float: left;
margin-left: 20px;
}
#profile-edit-sexual-end,
#profile-edit-politic-end,
#profile-edit-religion-end,
-#profile-edit-keywords-end,
+#profile-edit-pubkeywords-end,
+#profile-edit-prvkeywords-end,
#profile-edit-homepage-end,
#profile-in-dir-break,
#profile-in-dir-end,
cursor: pointer;
}
+.wall-item-share-buttons {
+ margin-left: 10px;
+}
+
.wall-item-links-wrapper {
float: left;
}
float: left;
margin-left: 20px;
}
+#profile-video-wrapper {
+ float: left;
+ margin-left: 20px;
+}
+#profile-audio-wrapper {
+ float: left;
+ margin-left: 20px;
+}
#profile-location-wrapper {
float: left;
margin-left: 20px;
#profile-jot-perms {
float: left;
- margin-left: 200px;
+ margin-left: 150px;
font-weight: bold;
font-size: 1.2em;
}
margin-top: 20px;
}
+#photo-prev-link, #photo-next-link {
+ padding: 10px;
+ float: left;
+}
+
+#photo-photo {
+ float: left;
+}
+
+#photo-photo-end {
+ clear: both;
+}
+
#jot-perms-icon,
#profile-location,
-#profile-nolocation,
-#profile-video,
+#profile-nolocation,
+#profile-youtube,
+#profile-video,
+#profile-audio,
#profile-link,
#wall-image-upload,
#profile-upload-wrapper,
margin-bottom: 30px;
}
+#settings-expire-end {
+ margin-bottom: 30px;
+}
+
#settings-username-end,
#settings-email-end,
#settings-nick-end,
#profile-edit-sexual-label,
#profile-edit-politic-label,
#profile-edit-religion-label,
-#profile-edit-keywords-label,
+#profile-edit-pubkeywords-label,
+#profile-edit-prvkeywords-label,
#profile-edit-homepage-label {
float: left;
width: 175px;
#sexual-select,
#profile-edit-politic,
#profile-edit-religion,
-#profile-edit-keywords,
+#profile-edit-pubkeywords,
+#profile-edit-prvkeywords,
#profile-in-dir-yes,
#profile-in-dir-no,
#profile-in-netdir-yes,
margin-left: 20px;
}
-#profile-edit-keywords-desc {
+#profile-edit-pubkeywords-desc,
+#profile-edit-prvkeywords-desc {
float: left;
margin-left: 20px;
}
#profile-edit-sexual-end,
#profile-edit-politic-end,
#profile-edit-religion-end,
-#profile-edit-keywords-end,
+#profile-edit-pubkeywords-end,
+#profile-edit-prvkeywords-end,
#profile-edit-homepage-end,
#profile-in-dir-break,
#profile-in-dir-end,
border-right: 2px solid #fff;
}
+.wall-item-share-buttons {
+ margin-left: 5px;
+}
+
.wall-item-links-wrapper {
float: left;
}
float: left;
margin-left: 20px;
}
+#profile-video-wrapper {
+ float: left;
+ margin-left: 20px;
+}
+#profile-audio-wrapper {
+ float: left;
+ margin-left: 20px;
+}
#profile-location-wrapper {
float: left;
margin-left: 20px;
#profile-jot-perms {
float: left;
- margin-left: 200px;
+ margin-left: 150px;
font-weight: bold;
font-size: 1.2em;
}
margin-top: 20px;
}
+
+#photo-prev-link, #photo-next-link {
+ padding: 10px;
+ float: left;
+}
+
+#photo-photo {
+ float: left;
+}
+
+#photo-photo-end {
+ clear: both;
+}
+