diff --git a/boot.php b/boot.php
index 2e83d371f..559cd8c32 100644
--- a/boot.php
+++ b/boot.php
@@ -9,9 +9,9 @@ require_once('include/nav.php');
require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica');
-define ( 'FRIENDICA_VERSION', '3.0.1361' );
+define ( 'FRIENDICA_VERSION', '3.0.1362' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
-define ( 'DB_UPDATE_VERSION', 1145 );
+define ( 'DB_UPDATE_VERSION', 1147 );
define ( 'EOL', "
\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
diff --git a/database.sql b/database.sql
index 48900839c..b20846bad 100644
--- a/database.sql
+++ b/database.sql
@@ -820,9 +820,11 @@ CREATE TABLE IF NOT EXISTS `profile` (
`region` char(255) NOT NULL,
`postal-code` char(32) NOT NULL,
`country-name` char(255) NOT NULL,
+ `hometown` char(255) NOT NULL,
`gender` char(32) NOT NULL,
`marital` char(255) NOT NULL,
`with` text NOT NULL,
+ `howlong` datetime NOT NULL default '0000-00-00 00:00:00',
`sexual` char(255) NOT NULL,
`politic` char(255) NOT NULL,
`religion` char(255) NOT NULL,
diff --git a/include/bbcode.php b/include/bbcode.php
index 85d310b75..efc362880 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -52,6 +52,8 @@ function bb_unspacefy_and_trim($st) {
function bbcode($Text,$preserve_nl = false) {
+ $a = get_app();
+
// Hide all [noparse] contained bbtags spacefying them
$Text = preg_replace_callback("/\[noparse\](.*?)\[\/noparse\]/ism", 'bb_spacefy',$Text);
@@ -114,6 +116,11 @@ function bbcode($Text,$preserve_nl = false) {
$Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $Text);
//$Text = preg_replace("/\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[\/url\]/ism", '$2', $Text);
+ // we may need to restrict this further if it picks up too many strays
+ // link acct:user@host to a webfinger profile redirector
+
+ $Text = preg_replace('/acct:(.*?)@(.*?)([ ,])/', 'acct:' . "$1@$2$3" . '',$Text);
// Perform MAIL Search
$Text = preg_replace("/\[mail\]([$MAILSearchString]*)\[\/mail\]/", '$1', $Text);
@@ -226,7 +233,7 @@ function bbcode($Text,$preserve_nl = false) {
$endlessloop = 0;
while ((strpos($Text, "[/quote]")!== false) and (strpos($Text, "[quote=") !== false) and (++$endlessloop < 20))
$Text = preg_replace("/\[quote=[\"\']*(.*?)[\"\']*\](.*?)\[\/quote\]/ism",
- "
" . $t_wrote . "
$2
",
+ "
" . $t_wrote . "$2
",
$Text);
// [img=widthxheight]image source[/img]
diff --git a/include/conversation.php b/include/conversation.php
index dc574ddff..a9c6287a9 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -173,6 +173,12 @@ function localize_item(&$item){
$item['body'] = str_replace($mtch[0],'@[url=' . zrl($mtch[1]). ']',$item['body']);
}
}
+ if(preg_match_all('/\[url=(.*?)\/photos\/(.*?)\/image\/(.*?)\]\[img(.*?)\]h(.*?)\[\/img\]\[\/url\]/is',$item['body'],$matches,PREG_SET_ORDER)) {
+logger('matched');
+ foreach($matches as $mtch) {
+ $item['body'] = str_replace($mtch[0],'[url=' . zrl($mtch[1] . '/photos/' . $mtch[2] . '/image/' . $mtch[3] ,true) . '][img' . $mtch[4] . ']h' . $mtch[5] . '[/img][/url]',$item['body']);
+ }
+ }
}
@@ -496,7 +502,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
// On the network page, I am the owner. On the display page it will be the profile owner.
// This will have been stored in $a->page_contact by our calling page.
- // Put this person on the left of the wall-to-wall notice.
+ // Put this person as the wall owner of the wall-to-wall notice.
$owner_url = zrl($a->page_contact['url']);
$owner_photo = $a->page_contact['thumb'];
@@ -504,23 +510,38 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
$template = $wallwall;
$commentww = 'ww';
}
- if((! $item['wall']) && (strlen($item['owner-link'])) && (! link_compare($item['owner-link'],$item['author-link']))) {
- // Could be anybody.
+ if((! $item['wall']) && $item['owner-link']) {
- $owner_url = $item['owner-link'];
- $owner_photo = $item['owner-avatar'];
- $owner_name = $item['owner-name'];
- $template = $wallwall;
- $commentww = 'ww';
- // If it is our contact, use a friendly redirect link
- if((link_compare($item['owner-link'],$item['url']))
- && ($item['network'] === NETWORK_DFRN)) {
- $owner_url = $redirect_url;
- $osparkle = ' sparkle';
+ $owner_linkmatch = (($item['owner-link']) && link_compare($item['owner-link'],$item['author-link']));
+ $alias_linkmatch = (($item['alias']) && link_compare($item['alias'],$item['author-link']));
+ $owner_namematch = (($item['owner-name']) && $item['owner-name'] == $item['author-name']);
+ if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) {
+
+ // The author url doesn't match the owner (typically the contact)
+ // and also doesn't match the contact alias.
+ // The name match is a hack to catch several weird cases where URLs are
+ // all over the park. It can be tricked, but this prevents you from
+ // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn
+ // well that it's the same Bob Smith.
+
+ // But it could be somebody else with the same name. It just isn't highly likely.
+
+
+ $owner_url = $item['owner-link'];
+ $owner_photo = $item['owner-avatar'];
+ $owner_name = $item['owner-name'];
+ $template = $wallwall;
+ $commentww = 'ww';
+ // If it is our contact, use a friendly redirect link
+ if((link_compare($item['owner-link'],$item['url']))
+ && ($item['network'] === NETWORK_DFRN)) {
+ $owner_url = $redirect_url;
+ $osparkle = ' sparkle';
+ }
+ else
+ $owner_url = zrl($owner_url);
}
- else
- $owner_url = zrl($owner_url);
}
}
diff --git a/include/datetime.php b/include/datetime.php
index f4dcfce62..3b1491e4d 100644
--- a/include/datetime.php
+++ b/include/datetime.php
@@ -244,7 +244,7 @@ function timesel($pre,$h,$m) {
// Limited to range of timestamps
if(! function_exists('relative_date')) {
-function relative_date($posted_date) {
+function relative_date($posted_date,$format = null) {
$localtime = datetime_convert('UTC',date_default_timezone_get(),$posted_date);
@@ -274,7 +274,9 @@ function relative_date($posted_date) {
if ($d >= 1) {
$r = round($d);
// translators - e.g. 22 hours ago, 1 minute ago
- return sprintf( t('%1$d %2$s ago'),$r, (($r == 1) ? $str[0] : $str[1]));
+ if(! $format)
+ $format = t('%1$d %2$s ago');
+ return sprintf( $format,$r, (($r == 1) ? $str[0] : $str[1]));
}
}
}}
diff --git a/include/enotify.php b/include/enotify.php
index f7ef74fac..fe0f128b6 100644
--- a/include/enotify.php
+++ b/include/enotify.php
@@ -20,6 +20,9 @@ function notification($params) {
$sender_name = $product;
$hostname = $a->get_hostname();
+ if(strpos($hostname,':'))
+ $hostname = substr($hostname,0,strpos($hostname,':'));
+
$sender_email = t('noreply') . '@' . $hostname;
$additional_mail_header = "";
diff --git a/include/follow.php b/include/follow.php
new file mode 100644
index 000000000..d92d7577d
--- /dev/null
+++ b/include/follow.php
@@ -0,0 +1,243 @@
+ false,'message' => '');
+
+ $a = get_app();
+
+ // remove ajax junk, e.g. Twitter
+
+ $url = str_replace('/#!/','/',$url);
+
+ if(! allowed_url($url)) {
+ $result['message'] = t('Disallowed profile URL.');
+ return $result;
+ }
+
+ if(! $url) {
+ $result['message'] = t('Connect URL missing.');
+ return $result;
+ }
+
+ $arr = array('url' => $url, 'contact' => array());
+
+ call_hooks('follow', $arr);
+
+ if(x($arr['contact'],'name'))
+ $ret = $arr['contact'];
+ else
+ $ret = probe_url($url);
+
+ if($ret['network'] === NETWORK_DFRN) {
+ if($interactive) {
+ if(strlen($a->path))
+ $myaddr = bin2hex($a->get_baseurl() . '/profile/' . $a->user['nickname']);
+ else
+ $myaddr = bin2hex($a->user['nickname'] . '@' . $a->get_hostname());
+
+ goaway($ret['request'] . "&addr=$myaddr");
+
+ // NOTREACHED
+ }
+ }
+ else {
+ if(get_config('system','dfrn_only')) {
+ $result['message'] = t('This site is not configured to allow communications with other networks.') . EOL;
+ $result['message'] != t('No compatible communication protocols or feeds were discovered.') . EOL;
+ return $result;
+ }
+ }
+
+ // This extra param just confuses things, remove it
+ if($ret['network'] === NETWORK_DIASPORA)
+ $ret['url'] = str_replace('?absolute=true','',$ret['url']);
+
+
+ // do we have enough information?
+
+ if(! ((x($ret,'name')) && (x($ret,'poll')) && ((x($ret,'url')) || (x($ret,'addr'))))) {
+ $result['message'] .= t('The profile address specified does not provide adequate information.') . EOL;
+ if(! x($ret,'poll'))
+ $result['message'] .= t('No compatible communication protocols or feeds were discovered.') . EOL;
+ if(! x($ret,'name'))
+ $result['message'] .= t('An author or name was not found.') . EOL;
+ if(! x($ret,'url'))
+ $result['message'] .= t('No browser URL could be matched to this address.') . EOL;
+ if(strpos($url,'@') !== false) {
+ $result['message'] .= t('Unable to match @-style Identity Address with a known protocol or email contact.') . EOL;
+ $result['message'] .= t('Use mailto: in front of address to force email check.') . EOL;
+ }
+ return $result;
+ }
+
+ if($ret['network'] === NETWORK_OSTATUS && get_config('system','ostatus_disabled')) {
+ $result['message'] .= t('The profile address specified belongs to a network which has been disabled on this site.') . EOL;
+ $ret['notify'] = '';
+ }
+
+ if(! $ret['notify']) {
+ $result['message'] .= t('Limited profile. This person will be unable to receive direct/personal notifications from you.') . EOL;
+ }
+
+ $writeable = ((($ret['network'] === NETWORK_OSTATUS) && ($ret['notify'])) ? 1 : 0);
+ $hidden = (($ret['network'] === NETWORK_MAIL) ? 1 : 0);
+
+ if($ret['network'] === NETWORK_MAIL) {
+ $writeable = 1;
+
+ }
+ if($ret['network'] === NETWORK_DIASPORA)
+ $writeable = 1;
+
+ // check if we already have a contact
+ // the poll url is more reliable than the profile url, as we may have
+ // indirect links or webfinger links
+
+ $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `poll` = '%s' LIMIT 1",
+ intval($uid),
+ dbesc($ret['poll'])
+ );
+
+
+ if(count($r)) {
+ // update contact
+ if($r[0]['rel'] == CONTACT_IS_FOLLOWER || ($network === NETWORK_DIASPORA && $r[0]['rel'] == CONTACT_IS_SHARING)) {
+ q("UPDATE `contact` SET `rel` = %d , `readonly` = 0 WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval(CONTACT_IS_FRIEND),
+ intval($r[0]['id']),
+ intval($uid)
+ );
+ }
+ }
+ else {
+
+ $new_relation = (($ret['network'] === NETWORK_MAIL) ? CONTACT_IS_FRIEND : CONTACT_IS_SHARING);
+ if($ret['network'] === NETWORK_DIASPORA)
+ $new_relation = CONTACT_IS_FOLLOWER;
+
+ // create contact record
+ $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `alias`, `batch`, `notify`, `poll`, `poco`, `name`, `nick`, `photo`, `network`, `pubkey`, `rel`, `priority`,
+ `writable`, `hidden`, `blocked`, `readonly`, `pending` )
+ VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, 0, 0, 0 ) ",
+ intval($uid),
+ dbesc(datetime_convert()),
+ dbesc($ret['url']),
+ dbesc(normalise_link($ret['url'])),
+ dbesc($ret['addr']),
+ dbesc($ret['alias']),
+ dbesc($ret['batch']),
+ dbesc($ret['notify']),
+ dbesc($ret['poll']),
+ dbesc($ret['poco']),
+ dbesc($ret['name']),
+ dbesc($ret['nick']),
+ dbesc($ret['photo']),
+ dbesc($ret['network']),
+ dbesc($ret['pubkey']),
+ intval($new_relation),
+ intval($ret['priority']),
+ intval($writeable),
+ intval($hidden)
+ );
+ }
+
+ $r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1",
+ dbesc($ret['url']),
+ intval($uid)
+ );
+
+ if(! count($r)) {
+ $result['message'] .= t('Unable to retrieve contact information.') . EOL;
+ return $result;
+ }
+
+ $contact = $r[0];
+ $contact_id = $r[0]['id'];
+
+
+ $g = q("select def_gid from user where uid = %d limit 1",
+ intval($uid)
+ );
+ if($g && intval($g[0]['def_gid'])) {
+ require_once('include/group.php');
+ group_add_member($uid,'',$contact_id,$g[0]['def_gid']);
+ }
+
+ require_once("Photo.php");
+
+ $photos = import_profile_photo($ret['photo'],$uid,$contact_id);
+
+ $r = q("UPDATE `contact` SET `photo` = '%s',
+ `thumb` = '%s',
+ `micro` = '%s',
+ `name-date` = '%s',
+ `uri-date` = '%s',
+ `avatar-date` = '%s'
+ WHERE `id` = %d LIMIT 1
+ ",
+ dbesc($photos[0]),
+ dbesc($photos[1]),
+ dbesc($photos[2]),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ intval($contact_id)
+ );
+
+
+ // pull feed and consume it, which should subscribe to the hub.
+
+ proc_run('php',"include/poller.php","$contact_id");
+
+ // create a follow slap
+
+ $tpl = get_markup_template('follow_slap.tpl');
+ $slap = replace_macros($tpl, array(
+ '$name' => $a->user['username'],
+ '$profile_page' => $a->get_baseurl() . '/profile/' . $a->user['nickname'],
+ '$photo' => $a->contact['photo'],
+ '$thumb' => $a->contact['thumb'],
+ '$published' => datetime_convert('UTC','UTC', 'now', ATOM_TIME),
+ '$item_id' => 'urn:X-dfrn:' . $a->get_hostname() . ':follow:' . random_string(),
+ '$title' => '',
+ '$type' => 'text',
+ '$content' => t('following'),
+ '$nick' => $a->user['nickname'],
+ '$verb' => ACTIVITY_FOLLOW,
+ '$ostat_follow' => ''
+ ));
+
+ $r = q("SELECT `contact`.*, `user`.* FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`
+ WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
+ intval($uid)
+ );
+
+ if(count($r)) {
+ if(($contact['network'] == NETWORK_OSTATUS) && (strlen($contact['notify']))) {
+ require_once('include/salmon.php');
+ slapper($r[0],$contact['notify'],$slap);
+ }
+ if($contact['network'] == NETWORK_DIASPORA) {
+ require_once('include/diaspora.php');
+ $ret = diaspora_share($a->user,$contact);
+ logger('mod_follow: diaspora_share returns: ' . $ret);
+ }
+ }
+
+ $result['success'] = true;
+ return $result;
+}
diff --git a/include/profile_advanced.php b/include/profile_advanced.php
index 8c2acd8e7..ffb45090b 100644
--- a/include/profile_advanced.php
+++ b/include/profile_advanced.php
@@ -39,11 +39,16 @@ function advanced_profile(&$a) {
if($a->profile['with']) $profile['marital']['with'] = $a->profile['with'];
+ if(strlen($a->profile['howlong']) && $a->profile['howlong'] !== '0000-00-00 00:00:00') {
+ $profile['howlong'] = relative_date($a->profile['howlong'], t('for %1$d %2$s'));
+ }
if($a->profile['sexual']) $profile['sexual'] = array( t('Sexual Preference:'), $a->profile['sexual'] );
if($a->profile['homepage']) $profile['homepage'] = array( t('Homepage:'), linkify($a->profile['homepage']) );
+ if($a->profile['hometown']) $profile['hometown'] = array( t('Hometown:'), linkify($a->profile['hometown']) );
+
if($a->profile['pub_keywords']) $profile['pub_keywords'] = array( t('Tags:'), $a->profile['pub_keywords']);
if($a->profile['politic']) $profile['politic'] = array( t('Political Views:'), $a->profile['politic']);
diff --git a/include/text.php b/include/text.php
index 376ac473d..d4a4d5580 100644
--- a/include/text.php
+++ b/include/text.php
@@ -891,6 +891,7 @@ function prepare_body($item,$attach = false) {
} else
$s = prepare_text($item['body']);
+
$prep_arr = array('item' => $item, 'html' => $s);
call_hooks('prepare_body', $prep_arr);
$s = $prep_arr['html'];
diff --git a/mod/acctlink.php b/mod/acctlink.php
new file mode 100644
index 000000000..a2365803a
--- /dev/null
+++ b/mod/acctlink.php
@@ -0,0 +1,16 @@
+ $url, 'contact' => array());
-
- call_hooks('follow', $arr);
-
- if(x($arr['contact'],'name'))
- $ret = $arr['contact'];
- else
- $ret = probe_url($url);
-
- if($ret['network'] === NETWORK_DFRN) {
- if(strlen($a->path))
- $myaddr = bin2hex($a->get_baseurl() . '/profile/' . $a->user['nickname']);
- else
- $myaddr = bin2hex($a->user['nickname'] . '@' . $a->get_hostname());
-
- goaway($ret['request'] . "&addr=$myaddr");
-
- // NOTREACHED
- }
- else {
- if(get_config('system','dfrn_only')) {
- notice( t('This site is not configured to allow communications with other networks.') . EOL);
- notice( t('No compatible communication protocols or feeds were discovered.') . EOL);
- goaway($return_url);
- }
- }
-
- // This extra param just confuses things, remove it
- if($ret['network'] === NETWORK_DIASPORA)
- $ret['url'] = str_replace('?absolute=true','',$ret['url']);
-
-
- // do we have enough information?
-
- if(! ((x($ret,'name')) && (x($ret,'poll')) && ((x($ret,'url')) || (x($ret,'addr'))))) {
- notice( t('The profile address specified does not provide adequate information.') . EOL);
- if(! x($ret,'poll'))
- notice( t('No compatible communication protocols or feeds were discovered.') . EOL);
- if(! x($ret,'name'))
- notice( t('An author or name was not found.') . EOL);
- if(! x($ret,'url'))
- notice( t('No browser URL could be matched to this address.') . EOL);
- if(strpos($url,'@') !== false) {
- notice( t('Unable to match @-style Identity Address with a known protocol or email contact.') . EOL);
- notice( t('Use mailto: in front of address to force email check.') . EOL);
- }
+ if($result['success'] == false) {
+ if($result['message'])
+ notice($result['message']);
goaway($return_url);
}
- if($ret['network'] === NETWORK_OSTATUS && get_config('system','ostatus_disabled')) {
- notice( t('The profile address specified belongs to a network which has been disabled on this site.') . EOL);
- $ret['notify'] = '';
- }
-
- if(! $ret['notify']) {
- notice( t('Limited profile. This person will be unable to receive direct/personal notifications from you.') . EOL);
- }
-
- $writeable = ((($ret['network'] === NETWORK_OSTATUS) && ($ret['notify'])) ? 1 : 0);
- $hidden = (($ret['network'] === NETWORK_MAIL) ? 1 : 0);
-
- if($ret['network'] === NETWORK_MAIL) {
- $writeable = 1;
-
- }
- if($ret['network'] === NETWORK_DIASPORA)
- $writeable = 1;
-
- // check if we already have a contact
- // the poll url is more reliable than the profile url, as we may have
- // indirect links or webfinger links
-
- $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `poll` = '%s' LIMIT 1",
- intval($uid),
- dbesc($ret['poll'])
- );
-
-
- if(count($r)) {
- // update contact
- if($r[0]['rel'] == CONTACT_IS_FOLLOWER || ($network === NETWORK_DIASPORA && $r[0]['rel'] == CONTACT_IS_SHARING)) {
- q("UPDATE `contact` SET `rel` = %d , `readonly` = 0 WHERE `id` = %d AND `uid` = %d LIMIT 1",
- intval(CONTACT_IS_FRIEND),
- intval($r[0]['id']),
- intval($uid)
- );
- }
- }
- else {
-
- $new_relation = (($ret['network'] === NETWORK_MAIL) ? CONTACT_IS_FRIEND : CONTACT_IS_SHARING);
- if($ret['network'] === NETWORK_DIASPORA)
- $new_relation = CONTACT_IS_FOLLOWER;
-
- // create contact record
- $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `alias`, `batch`, `notify`, `poll`, `poco`, `name`, `nick`, `photo`, `network`, `pubkey`, `rel`, `priority`,
- `writable`, `hidden`, `blocked`, `readonly`, `pending` )
- VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, 0, 0, 0 ) ",
- intval($uid),
- dbesc(datetime_convert()),
- dbesc($ret['url']),
- dbesc(normalise_link($ret['url'])),
- dbesc($ret['addr']),
- dbesc($ret['alias']),
- dbesc($ret['batch']),
- dbesc($ret['notify']),
- dbesc($ret['poll']),
- dbesc($ret['poco']),
- dbesc($ret['name']),
- dbesc($ret['nick']),
- dbesc($ret['photo']),
- dbesc($ret['network']),
- dbesc($ret['pubkey']),
- intval($new_relation),
- intval($ret['priority']),
- intval($writeable),
- intval($hidden)
- );
- }
-
- $r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1",
- dbesc($ret['url']),
- intval($uid)
- );
-
- if(! count($r)) {
- notice( t('Unable to retrieve contact information.') . EOL);
- goaway($return_url);
- // NOTREACHED
- }
-
- $contact = $r[0];
- $contact_id = $r[0]['id'];
-
-
- $g = q("select def_gid from user where uid = %d limit 1",
- intval($uid)
- );
- if($g && intval($g[0]['def_gid'])) {
- require_once('include/group.php');
- group_add_member($uid,'',$contact_id,$g[0]['def_gid']);
- }
-
- require_once("Photo.php");
-
- $photos = import_profile_photo($ret['photo'],$uid,$contact_id);
-
- $r = q("UPDATE `contact` SET `photo` = '%s',
- `thumb` = '%s',
- `micro` = '%s',
- `name-date` = '%s',
- `uri-date` = '%s',
- `avatar-date` = '%s'
- WHERE `id` = %d LIMIT 1
- ",
- dbesc($photos[0]),
- dbesc($photos[1]),
- dbesc($photos[2]),
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
- intval($contact_id)
- );
-
-
- // pull feed and consume it, which should subscribe to the hub.
-
- proc_run('php',"include/poller.php","$contact_id");
-
- // create a follow slap
-
- $tpl = get_markup_template('follow_slap.tpl');
- $slap = replace_macros($tpl, array(
- '$name' => $a->user['username'],
- '$profile_page' => $a->get_baseurl() . '/profile/' . $a->user['nickname'],
- '$photo' => $a->contact['photo'],
- '$thumb' => $a->contact['thumb'],
- '$published' => datetime_convert('UTC','UTC', 'now', ATOM_TIME),
- '$item_id' => 'urn:X-dfrn:' . $a->get_hostname() . ':follow:' . random_string(),
- '$title' => '',
- '$type' => 'text',
- '$content' => t('following'),
- '$nick' => $a->user['nickname'],
- '$verb' => ACTIVITY_FOLLOW,
- '$ostat_follow' => ''
- ));
-
- $r = q("SELECT `contact`.*, `user`.* FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`
- WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
- intval($uid)
- );
-
- if(count($r)) {
- if(($contact['network'] == NETWORK_OSTATUS) && (strlen($contact['notify']))) {
- require_once('include/salmon.php');
- slapper($r[0],$contact['notify'],$slap);
- }
- if($contact['network'] == NETWORK_DIASPORA) {
- require_once('include/diaspora.php');
- $ret = diaspora_share($a->user,$contact);
- logger('mod_follow: diaspora_share returns: ' . $ret);
- }
- }
+ info( t('Contact added') . EOL);
if(strstr($return_url,'contacts'))
goaway($a->get_baseurl() . '/contacts/' . $contact_id);
diff --git a/mod/network.php b/mod/network.php
index 7c4c1ac04..b998a3107 100644
--- a/mod/network.php
+++ b/mod/network.php
@@ -534,7 +534,7 @@ function network_content(&$a, $update = 0) {
$parents_str = implode(', ', $parents_arr);
$items = q("SELECT `item`.*, `item`.`id` AS `item_id`,
- `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`writable`,
+ `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`, `contact`.`writable`,
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
FROM `item`, `contact`
diff --git a/mod/notes.php b/mod/notes.php
index 703c898e6..625bbd2ee 100644
--- a/mod/notes.php
+++ b/mod/notes.php
@@ -117,7 +117,7 @@ function notes_content(&$a,$update = false) {
$parents_str = implode(', ', $parents_arr);
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
- `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`network`, `contact`.`rel`,
+ `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`network`, `contact`.`rel`,
`contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
diff --git a/mod/profile.php b/mod/profile.php
index 69f044e89..7658a9647 100644
--- a/mod/profile.php
+++ b/mod/profile.php
@@ -242,7 +242,7 @@ function profile_content(&$a, $update = 0) {
$parents_str = implode(', ', $parents_arr);
$items = q("SELECT `item`.*, `item`.`id` AS `item_id`,
- `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`network`, `contact`.`rel`,
+ `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`network`, `contact`.`rel`,
`contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
FROM `item`, `contact`
diff --git a/mod/profiles.php b/mod/profiles.php
index ca3890eb9..6a8ce9e1e 100644
--- a/mod/profiles.php
+++ b/mod/profiles.php
@@ -62,9 +62,15 @@ function profiles_post(&$a) {
$pub_keywords = notags(trim($_POST['pub_keywords']));
$prv_keywords = notags(trim($_POST['prv_keywords']));
$marital = notags(trim($_POST['marital']));
+ $howlong = notags(trim($_POST['howlong']));
$with = ((x($_POST,'with')) ? notags(trim($_POST['with'])) : '');
+ if(! strlen($howlong))
+ $howlong = '0000-00-00 00:00:00';
+ else
+ $howlong = datetime_convert(date_default_timezone_get(),'UTC',$howlong);
+
// linkify the relationship target if applicable
$withchanged = false;
@@ -120,6 +126,7 @@ function profiles_post(&$a) {
$sexual = notags(trim($_POST['sexual']));
$homepage = notags(trim($_POST['homepage']));
+ $hometown = notags(trim($_POST['hometown']));
$politic = notags(trim($_POST['politic']));
$religion = notags(trim($_POST['religion']));
@@ -207,8 +214,10 @@ function profiles_post(&$a) {
`country-name` = '%s',
`marital` = '%s',
`with` = '%s',
+ `howlong` = '%s',
`sexual` = '%s',
`homepage` = '%s',
+ `hometown` = '%s',
`politic` = '%s',
`religion` = '%s',
`pub_keywords` = '%s',
@@ -237,8 +246,10 @@ function profiles_post(&$a) {
dbesc($country_name),
dbesc($marital),
dbesc($with),
+ dbesc($howlong),
dbesc($sexual),
dbesc($homepage),
+ dbesc($hometown),
dbesc($politic),
dbesc($religion),
dbesc($pub_keywords),
@@ -558,8 +569,10 @@ function profiles_content(&$a) {
'$lbl_marital' => t('♥ Marital Status:'),
'$lbl_with' => t("Who: \x28if applicable\x29"),
'$lbl_ex1' => t('Examples: cathy123, Cathy Williams, cathy@example.com'),
+ '$lbl_howlong' => t('Since [date]:'),
'$lbl_sexual' => t('Sexual Preference:'),
'$lbl_homepage' => t('Homepage URL:'),
+ '$lbl_hometown' => t('Hometown:'),
'$lbl_politic' => t('Political Views:'),
'$lbl_religion' => t('Religious Views:'),
'$lbl_pubkey' => t('Public Keywords:'),
@@ -595,9 +608,11 @@ function profiles_content(&$a) {
'$gender' => gender_selector($r[0]['gender']),
'$marital' => marital_selector($r[0]['marital']),
'$with' => strip_tags($r[0]['with']),
+ '$howlong' => ($r[0]['howlong'] === '0000-00-00 00:00:00' ? '' : datetime_convert('UTC',date_default_timezone_get(),$r[0]['howlong'])),
'$sexual' => sexpref_selector($r[0]['sexual']),
'$about' => $r[0]['about'],
'$homepage' => $r[0]['homepage'],
+ '$hometown' => $r[0]['hometown'],
'$politic' => $r[0]['politic'],
'$religion' => $r[0]['religion'],
'$pub_keywords' => $r[0]['pub_keywords'],
diff --git a/mod/search.php b/mod/search.php
index 466ffc4c3..320ffddce 100644
--- a/mod/search.php
+++ b/mod/search.php
@@ -146,7 +146,7 @@ function search_content(&$a) {
}
$r = q("SELECT distinct(`item`.`uri`), `item`.*, `item`.`id` AS `item_id`,
- `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
+ `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`,
`contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
`user`.`nickname`
diff --git a/update.php b/update.php
index f94b89fd3..1b2098e6e 100644
--- a/update.php
+++ b/update.php
@@ -1,6 +1,6 @@
\n"
"Language-Team: LANGUAGE \n"
@@ -52,7 +52,7 @@ msgstr ""
#: ../../mod/message.php:96 ../../mod/allfriends.php:9
#: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53
#: ../../mod/follow.php:8 ../../mod/display.php:138 ../../mod/profiles.php:7
-#: ../../mod/profiles.php:374 ../../mod/delegate.php:6
+#: ../../mod/profiles.php:382 ../../mod/delegate.php:6
#: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81
#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:503
#: ../../include/items.php:3297 ../../index.php:306
@@ -131,7 +131,7 @@ msgstr ""
#: ../../mod/settings.php:762 ../../mod/settings.php:969
#: ../../mod/manage.php:109 ../../mod/group.php:85 ../../mod/admin.php:417
#: ../../mod/admin.php:653 ../../mod/admin.php:789 ../../mod/admin.php:988
-#: ../../mod/admin.php:1075 ../../mod/profiles.php:543
+#: ../../mod/admin.php:1075 ../../mod/profiles.php:551
#: ../../mod/invite.php:119 ../../addon/facebook/facebook.php:605
#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93
#: ../../addon/nsfw/nsfw.php:57 ../../addon/planets/planets.php:158
@@ -162,7 +162,7 @@ msgstr ""
#: ../../view/theme/diabook/theme.php:757
#: ../../view/theme/diabook/config.php:190
#: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70
-#: ../../include/conversation.php:559
+#: ../../include/conversation.php:574
msgid "Submit"
msgstr ""
@@ -331,8 +331,8 @@ msgstr ""
#: ../../mod/settings.php:914 ../../mod/settings.php:920
#: ../../mod/settings.php:956 ../../mod/settings.php:957
#: ../../mod/settings.php:958 ../../mod/settings.php:959
-#: ../../mod/settings.php:960 ../../mod/register.php:229
-#: ../../mod/profiles.php:520
+#: ../../mod/settings.php:960 ../../mod/register.php:234
+#: ../../mod/profiles.php:528
msgid "Yes"
msgstr ""
@@ -343,8 +343,8 @@ msgstr ""
#: ../../mod/settings.php:914 ../../mod/settings.php:920
#: ../../mod/settings.php:956 ../../mod/settings.php:957
#: ../../mod/settings.php:958 ../../mod/settings.php:959
-#: ../../mod/settings.php:960 ../../mod/register.php:230
-#: ../../mod/profiles.php:521
+#: ../../mod/settings.php:960 ../../mod/register.php:235
+#: ../../mod/profiles.php:529
msgid "No"
msgstr ""
@@ -378,8 +378,8 @@ msgstr ""
#: ../../mod/profile_photo.php:174 ../../mod/profile_photo.php:252
#: ../../mod/profile_photo.php:261
#: ../../addon/communityhome/communityhome.php:111
-#: ../../view/theme/diabook/theme.php:599 ../../include/user.php:292
-#: ../../include/user.php:299 ../../include/user.php:306
+#: ../../view/theme/diabook/theme.php:599 ../../include/user.php:294
+#: ../../include/user.php:301 ../../include/user.php:308
msgid "Profile Photos"
msgstr ""
@@ -527,44 +527,44 @@ msgstr ""
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
msgstr ""
-#: ../../mod/photos.php:1274 ../../include/conversation.php:533
+#: ../../mod/photos.php:1274 ../../include/conversation.php:548
msgid "I like this (toggle)"
msgstr ""
-#: ../../mod/photos.php:1275 ../../include/conversation.php:534
+#: ../../mod/photos.php:1275 ../../include/conversation.php:549
msgid "I don't like this (toggle)"
msgstr ""
-#: ../../mod/photos.php:1276 ../../include/conversation.php:968
+#: ../../mod/photos.php:1276 ../../include/conversation.php:983
msgid "Share"
msgstr ""
#: ../../mod/photos.php:1277 ../../mod/editpost.php:104
#: ../../mod/wallmessage.php:145 ../../mod/message.php:214
#: ../../mod/message.php:408 ../../include/conversation.php:365
-#: ../../include/conversation.php:710 ../../include/conversation.php:987
+#: ../../include/conversation.php:725 ../../include/conversation.php:1002
msgid "Please wait"
msgstr ""
#: ../../mod/photos.php:1293 ../../mod/photos.php:1333
-#: ../../mod/photos.php:1364 ../../include/conversation.php:556
+#: ../../mod/photos.php:1364 ../../include/conversation.php:571
msgid "This is you"
msgstr ""
#: ../../mod/photos.php:1295 ../../mod/photos.php:1335
-#: ../../mod/photos.php:1366 ../../include/conversation.php:558
+#: ../../mod/photos.php:1366 ../../include/conversation.php:573
#: ../../boot.php:514
msgid "Comment"
msgstr ""
#: ../../mod/photos.php:1297 ../../mod/editpost.php:125
-#: ../../include/conversation.php:568 ../../include/conversation.php:1005
+#: ../../include/conversation.php:583 ../../include/conversation.php:1020
msgid "Preview"
msgstr ""
#: ../../mod/photos.php:1394 ../../mod/settings.php:618
#: ../../mod/settings.php:699 ../../mod/group.php:168 ../../mod/admin.php:660
-#: ../../include/conversation.php:322 ../../include/conversation.php:588
+#: ../../include/conversation.php:322 ../../include/conversation.php:603
msgid "Delete"
msgstr ""
@@ -629,28 +629,28 @@ msgstr ""
msgid "Edit post"
msgstr ""
-#: ../../mod/editpost.php:80 ../../include/conversation.php:954
+#: ../../mod/editpost.php:80 ../../include/conversation.php:969
msgid "Post to Email"
msgstr ""
#: ../../mod/editpost.php:95 ../../mod/settings.php:617
-#: ../../include/conversation.php:575
+#: ../../include/conversation.php:590
msgid "Edit"
msgstr ""
#: ../../mod/editpost.php:96 ../../mod/wallmessage.php:143
#: ../../mod/message.php:212 ../../mod/message.php:406
-#: ../../include/conversation.php:969
+#: ../../include/conversation.php:984
msgid "Upload photo"
msgstr ""
-#: ../../mod/editpost.php:97 ../../include/conversation.php:971
+#: ../../mod/editpost.php:97 ../../include/conversation.php:986
msgid "Attach file"
msgstr ""
#: ../../mod/editpost.php:98 ../../mod/wallmessage.php:144
#: ../../mod/message.php:213 ../../mod/message.php:407
-#: ../../include/conversation.php:973
+#: ../../include/conversation.php:988
msgid "Insert web link"
msgstr ""
@@ -666,35 +666,35 @@ msgstr ""
msgid "Insert Vorbis [.ogg] audio"
msgstr ""
-#: ../../mod/editpost.php:102 ../../include/conversation.php:979
+#: ../../mod/editpost.php:102 ../../include/conversation.php:994
msgid "Set your location"
msgstr ""
-#: ../../mod/editpost.php:103 ../../include/conversation.php:981
+#: ../../mod/editpost.php:103 ../../include/conversation.php:996
msgid "Clear browser location"
msgstr ""
-#: ../../mod/editpost.php:105 ../../include/conversation.php:988
+#: ../../mod/editpost.php:105 ../../include/conversation.php:1003
msgid "Permission settings"
msgstr ""
-#: ../../mod/editpost.php:113 ../../include/conversation.php:997
+#: ../../mod/editpost.php:113 ../../include/conversation.php:1012
msgid "CC: email addresses"
msgstr ""
-#: ../../mod/editpost.php:114 ../../include/conversation.php:998
+#: ../../mod/editpost.php:114 ../../include/conversation.php:1013
msgid "Public post"
msgstr ""
-#: ../../mod/editpost.php:117 ../../include/conversation.php:984
+#: ../../mod/editpost.php:117 ../../include/conversation.php:999
msgid "Set title"
msgstr ""
-#: ../../mod/editpost.php:119 ../../include/conversation.php:986
+#: ../../mod/editpost.php:119 ../../include/conversation.php:1001
msgid "Categories (comma-separated list)"
msgstr ""
-#: ../../mod/editpost.php:120 ../../include/conversation.php:1000
+#: ../../mod/editpost.php:120 ../../include/conversation.php:1015
msgid "Example: bob@example.com, mary@example.com"
msgstr ""
@@ -1708,7 +1708,7 @@ msgid "Password reset requested at %s"
msgstr ""
#: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107
-#: ../../mod/register.php:85 ../../mod/register.php:139
+#: ../../mod/register.php:90 ../../mod/register.php:144
#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752
#: ../../addon/facebook/facebook.php:688
#: ../../addon/facebook/facebook.php:1178
@@ -2439,7 +2439,7 @@ msgid "No recipient."
msgstr ""
#: ../../mod/wallmessage.php:124 ../../mod/message.php:171
-#: ../../include/conversation.php:922
+#: ../../include/conversation.php:937
msgid "Please enter a link URL:"
msgstr ""
@@ -2648,7 +2648,7 @@ msgid "Profile Visibility Editor"
msgstr ""
#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128
-#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:74
+#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:77
#: ../../include/nav.php:50 ../../boot.php:1505
msgid "Profile"
msgstr ""
@@ -2669,91 +2669,91 @@ msgstr ""
msgid "View Contacts"
msgstr ""
-#: ../../mod/register.php:83 ../../mod/regmod.php:52
+#: ../../mod/register.php:88 ../../mod/regmod.php:52
#, php-format
msgid "Registration details for %s"
msgstr ""
-#: ../../mod/register.php:91
+#: ../../mod/register.php:96
msgid ""
"Registration successful. Please check your email for further instructions."
msgstr ""
-#: ../../mod/register.php:95
+#: ../../mod/register.php:100
msgid "Failed to send email message. Here is the message that failed."
msgstr ""
-#: ../../mod/register.php:100
+#: ../../mod/register.php:105
msgid "Your registration can not be processed."
msgstr ""
-#: ../../mod/register.php:137
+#: ../../mod/register.php:142
#, php-format
msgid "Registration request at %s"
msgstr ""
-#: ../../mod/register.php:146
+#: ../../mod/register.php:151
msgid "Your registration is pending approval by the site owner."
msgstr ""
-#: ../../mod/register.php:184
+#: ../../mod/register.php:189
msgid ""
"This site has exceeded the number of allowed daily account registrations. "
"Please try again tomorrow."
msgstr ""
-#: ../../mod/register.php:210
+#: ../../mod/register.php:215
msgid ""
"You may (optionally) fill in this form via OpenID by supplying your OpenID "
"and clicking 'Register'."
msgstr ""
-#: ../../mod/register.php:211
+#: ../../mod/register.php:216
msgid ""
"If you are not familiar with OpenID, please leave that field blank and fill "
"in the rest of the items."
msgstr ""
-#: ../../mod/register.php:212
+#: ../../mod/register.php:217
msgid "Your OpenID (optional): "
msgstr ""
-#: ../../mod/register.php:226
+#: ../../mod/register.php:231
msgid "Include your profile in member directory?"
msgstr ""
-#: ../../mod/register.php:246
+#: ../../mod/register.php:251
msgid "Membership on this site is by invitation only."
msgstr ""
-#: ../../mod/register.php:247
+#: ../../mod/register.php:252
msgid "Your invitation ID: "
msgstr ""
-#: ../../mod/register.php:250 ../../mod/admin.php:418
+#: ../../mod/register.php:255 ../../mod/admin.php:418
msgid "Registration"
msgstr ""
-#: ../../mod/register.php:258
+#: ../../mod/register.php:263
msgid "Your Full Name (e.g. Joe Smith): "
msgstr ""
-#: ../../mod/register.php:259
+#: ../../mod/register.php:264
msgid "Your Email Address: "
msgstr ""
-#: ../../mod/register.php:260
+#: ../../mod/register.php:265
msgid ""
"Choose a profile nickname. This must begin with a text character. Your "
"profile address on this site will then be 'nickname@$sitename"
"strong>'."
msgstr ""
-#: ../../mod/register.php:261
+#: ../../mod/register.php:266
msgid "Choose a nickname: "
msgstr ""
-#: ../../mod/register.php:264 ../../include/nav.php:81 ../../boot.php:792
+#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:792
msgid "Register"
msgstr ""
@@ -3746,8 +3746,8 @@ msgstr ""
msgid "Search"
msgstr ""
-#: ../../mod/profiles.php:21 ../../mod/profiles.php:384
-#: ../../mod/profiles.php:498 ../../mod/dfrn_confirm.php:62
+#: ../../mod/profiles.php:21 ../../mod/profiles.php:392
+#: ../../mod/profiles.php:506 ../../mod/dfrn_confirm.php:62
msgid "Profile not found."
msgstr ""
@@ -3755,281 +3755,285 @@ msgstr ""
msgid "Profile Name is required."
msgstr ""
-#: ../../mod/profiles.php:145
+#: ../../mod/profiles.php:151
msgid "Marital Status"
msgstr ""
-#: ../../mod/profiles.php:149
+#: ../../mod/profiles.php:155
msgid "Romantic Partner"
msgstr ""
-#: ../../mod/profiles.php:153
+#: ../../mod/profiles.php:159
msgid "Work/Employment"
msgstr ""
-#: ../../mod/profiles.php:156
+#: ../../mod/profiles.php:162
msgid "Religion"
msgstr ""
-#: ../../mod/profiles.php:160
+#: ../../mod/profiles.php:166
msgid "Political Views"
msgstr ""
-#: ../../mod/profiles.php:164
+#: ../../mod/profiles.php:170
msgid "Gender"
msgstr ""
-#: ../../mod/profiles.php:168
+#: ../../mod/profiles.php:174
msgid "Sexual Preference"
msgstr ""
-#: ../../mod/profiles.php:172
+#: ../../mod/profiles.php:178
msgid "Homepage"
msgstr ""
-#: ../../mod/profiles.php:176
+#: ../../mod/profiles.php:182
msgid "Interests"
msgstr ""
-#: ../../mod/profiles.php:180
+#: ../../mod/profiles.php:186
msgid "Address"
msgstr ""
-#: ../../mod/profiles.php:187
+#: ../../mod/profiles.php:193
msgid "Location"
msgstr ""
-#: ../../mod/profiles.php:262
+#: ../../mod/profiles.php:270
msgid "Profile updated."
msgstr ""
-#: ../../mod/profiles.php:329
+#: ../../mod/profiles.php:337
msgid " and "
msgstr ""
-#: ../../mod/profiles.php:337
+#: ../../mod/profiles.php:345
msgid "public profile"
msgstr ""
-#: ../../mod/profiles.php:340
+#: ../../mod/profiles.php:348
#, php-format
msgid "%1$s changed %2$s to “%3$s”"
msgstr ""
-#: ../../mod/profiles.php:341
+#: ../../mod/profiles.php:349
#, php-format
msgid " - Visit %1$s's %2$s"
msgstr ""
-#: ../../mod/profiles.php:344
+#: ../../mod/profiles.php:352
#, php-format
msgid "%1$s has an updated %2$s, changing %3$s."
msgstr ""
-#: ../../mod/profiles.php:403
+#: ../../mod/profiles.php:411
msgid "Profile deleted."
msgstr ""
-#: ../../mod/profiles.php:421 ../../mod/profiles.php:455
+#: ../../mod/profiles.php:429 ../../mod/profiles.php:463
msgid "Profile-"
msgstr ""
-#: ../../mod/profiles.php:440 ../../mod/profiles.php:482
+#: ../../mod/profiles.php:448 ../../mod/profiles.php:490
msgid "New profile created."
msgstr ""
-#: ../../mod/profiles.php:461
+#: ../../mod/profiles.php:469
msgid "Profile unavailable to clone."
msgstr ""
-#: ../../mod/profiles.php:519
+#: ../../mod/profiles.php:527
msgid "Hide your contact/friend list from viewers of this profile?"
msgstr ""
-#: ../../mod/profiles.php:542
+#: ../../mod/profiles.php:550
msgid "Edit Profile Details"
msgstr ""
-#: ../../mod/profiles.php:544
+#: ../../mod/profiles.php:552
msgid "View this profile"
msgstr ""
-#: ../../mod/profiles.php:545
+#: ../../mod/profiles.php:553
msgid "Create a new profile using these settings"
msgstr ""
-#: ../../mod/profiles.php:546
+#: ../../mod/profiles.php:554
msgid "Clone this profile"
msgstr ""
-#: ../../mod/profiles.php:547
+#: ../../mod/profiles.php:555
msgid "Delete this profile"
msgstr ""
-#: ../../mod/profiles.php:548
+#: ../../mod/profiles.php:556
msgid "Profile Name:"
msgstr ""
-#: ../../mod/profiles.php:549
+#: ../../mod/profiles.php:557
msgid "Your Full Name:"
msgstr ""
-#: ../../mod/profiles.php:550
+#: ../../mod/profiles.php:558
msgid "Title/Description:"
msgstr ""
-#: ../../mod/profiles.php:551
+#: ../../mod/profiles.php:559
msgid "Your Gender:"
msgstr ""
-#: ../../mod/profiles.php:552
+#: ../../mod/profiles.php:560
#, php-format
msgid "Birthday (%s):"
msgstr ""
-#: ../../mod/profiles.php:553
+#: ../../mod/profiles.php:561
msgid "Street Address:"
msgstr ""
-#: ../../mod/profiles.php:554
+#: ../../mod/profiles.php:562
msgid "Locality/City:"
msgstr ""
-#: ../../mod/profiles.php:555
+#: ../../mod/profiles.php:563
msgid "Postal/Zip Code:"
msgstr ""
-#: ../../mod/profiles.php:556
+#: ../../mod/profiles.php:564
msgid "Country:"
msgstr ""
-#: ../../mod/profiles.php:557
+#: ../../mod/profiles.php:565
msgid "Region/State:"
msgstr ""
-#: ../../mod/profiles.php:558
+#: ../../mod/profiles.php:566
msgid "♥ Marital Status:"
msgstr ""
-#: ../../mod/profiles.php:559
+#: ../../mod/profiles.php:567
msgid "Who: (if applicable)"
msgstr ""
-#: ../../mod/profiles.php:560
+#: ../../mod/profiles.php:568
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr ""
-#: ../../mod/profiles.php:561 ../../include/profile_advanced.php:43
+#: ../../mod/profiles.php:569
+msgid "Since [date]:"
+msgstr ""
+
+#: ../../mod/profiles.php:570 ../../include/profile_advanced.php:46
msgid "Sexual Preference:"
msgstr ""
-#: ../../mod/profiles.php:562
+#: ../../mod/profiles.php:571
msgid "Homepage URL:"
msgstr ""
-#: ../../mod/profiles.php:563 ../../include/profile_advanced.php:49
+#: ../../mod/profiles.php:572 ../../include/profile_advanced.php:52
msgid "Political Views:"
msgstr ""
-#: ../../mod/profiles.php:564
+#: ../../mod/profiles.php:573
msgid "Religious Views:"
msgstr ""
-#: ../../mod/profiles.php:565
+#: ../../mod/profiles.php:574
msgid "Public Keywords:"
msgstr ""
-#: ../../mod/profiles.php:566
+#: ../../mod/profiles.php:575
msgid "Private Keywords:"
msgstr ""
-#: ../../mod/profiles.php:567
+#: ../../mod/profiles.php:576
msgid "Example: fishing photography software"
msgstr ""
-#: ../../mod/profiles.php:568
+#: ../../mod/profiles.php:577
msgid "(Used for suggesting potential friends, can be seen by others)"
msgstr ""
-#: ../../mod/profiles.php:569
+#: ../../mod/profiles.php:578
msgid "(Used for searching profiles, never shown to others)"
msgstr ""
-#: ../../mod/profiles.php:570
+#: ../../mod/profiles.php:579
msgid "Tell us about yourself..."
msgstr ""
-#: ../../mod/profiles.php:571
+#: ../../mod/profiles.php:580
msgid "Hobbies/Interests"
msgstr ""
-#: ../../mod/profiles.php:572
+#: ../../mod/profiles.php:581
msgid "Contact information and Social Networks"
msgstr ""
-#: ../../mod/profiles.php:573
+#: ../../mod/profiles.php:582
msgid "Musical interests"
msgstr ""
-#: ../../mod/profiles.php:574
+#: ../../mod/profiles.php:583
msgid "Books, literature"
msgstr ""
-#: ../../mod/profiles.php:575
+#: ../../mod/profiles.php:584
msgid "Television"
msgstr ""
-#: ../../mod/profiles.php:576
+#: ../../mod/profiles.php:585
msgid "Film/dance/culture/entertainment"
msgstr ""
-#: ../../mod/profiles.php:577
+#: ../../mod/profiles.php:586
msgid "Love/romance"
msgstr ""
-#: ../../mod/profiles.php:578
+#: ../../mod/profiles.php:587
msgid "Work/employment"
msgstr ""
-#: ../../mod/profiles.php:579
+#: ../../mod/profiles.php:588
msgid "School/education"
msgstr ""
-#: ../../mod/profiles.php:584
+#: ../../mod/profiles.php:593
msgid ""
"This is your public profile.
It may "
"be visible to anybody using the internet."
msgstr ""
-#: ../../mod/profiles.php:594 ../../mod/directory.php:111
+#: ../../mod/profiles.php:603 ../../mod/directory.php:111
msgid "Age: "
msgstr ""
-#: ../../mod/profiles.php:629
+#: ../../mod/profiles.php:639
msgid "Edit/Manage Profiles"
msgstr ""
-#: ../../mod/profiles.php:630 ../../boot.php:1066
+#: ../../mod/profiles.php:640 ../../boot.php:1066
msgid "Change profile photo"
msgstr ""
-#: ../../mod/profiles.php:631 ../../boot.php:1067
+#: ../../mod/profiles.php:641 ../../boot.php:1067
msgid "Create New Profile"
msgstr ""
-#: ../../mod/profiles.php:642 ../../boot.php:1077
+#: ../../mod/profiles.php:652 ../../boot.php:1077
msgid "Profile Image"
msgstr ""
-#: ../../mod/profiles.php:644 ../../boot.php:1080
+#: ../../mod/profiles.php:654 ../../boot.php:1080
msgid "visible to everybody"
msgstr ""
-#: ../../mod/profiles.php:645 ../../boot.php:1081
+#: ../../mod/profiles.php:655 ../../boot.php:1081
msgid "Edit visibility"
msgstr ""
-#: ../../mod/filer.php:29 ../../include/conversation.php:926
+#: ../../mod/filer.php:29 ../../include/conversation.php:941
msgid "Save to Folder:"
msgstr ""
@@ -5838,7 +5842,7 @@ msgstr ""
msgid "j F"
msgstr ""
-#: ../../include/profile_advanced.php:30 ../../include/datetime.php:448
+#: ../../include/profile_advanced.php:30 ../../include/datetime.php:450
#: ../../include/items.php:1423
msgid "Birthday:"
msgstr ""
@@ -5851,55 +5855,60 @@ msgstr ""
msgid "Status:"
msgstr ""
-#: ../../include/profile_advanced.php:45 ../../boot.php:1107
+#: ../../include/profile_advanced.php:43
+#, php-format
+msgid "for %1$d %2$s"
+msgstr ""
+
+#: ../../include/profile_advanced.php:48 ../../boot.php:1107
msgid "Homepage:"
msgstr ""
-#: ../../include/profile_advanced.php:47
+#: ../../include/profile_advanced.php:50
msgid "Tags:"
msgstr ""
-#: ../../include/profile_advanced.php:51
+#: ../../include/profile_advanced.php:54
msgid "Religion:"
msgstr ""
-#: ../../include/profile_advanced.php:53
+#: ../../include/profile_advanced.php:56
msgid "About:"
msgstr ""
-#: ../../include/profile_advanced.php:55
+#: ../../include/profile_advanced.php:58
msgid "Hobbies/Interests:"
msgstr ""
-#: ../../include/profile_advanced.php:57
+#: ../../include/profile_advanced.php:60
msgid "Contact information and Social Networks:"
msgstr ""
-#: ../../include/profile_advanced.php:59
+#: ../../include/profile_advanced.php:62
msgid "Musical interests:"
msgstr ""
-#: ../../include/profile_advanced.php:61
+#: ../../include/profile_advanced.php:64
msgid "Books, literature:"
msgstr ""
-#: ../../include/profile_advanced.php:63
+#: ../../include/profile_advanced.php:66
msgid "Television:"
msgstr ""
-#: ../../include/profile_advanced.php:65
+#: ../../include/profile_advanced.php:68
msgid "Film/dance/culture/entertainment:"
msgstr ""
-#: ../../include/profile_advanced.php:67
+#: ../../include/profile_advanced.php:70
msgid "Love/Romance:"
msgstr ""
-#: ../../include/profile_advanced.php:69
+#: ../../include/profile_advanced.php:72
msgid "Work/employment:"
msgstr ""
-#: ../../include/profile_advanced.php:71
+#: ../../include/profile_advanced.php:74
msgid "School/education:"
msgstr ""
@@ -6119,7 +6128,7 @@ msgstr ""
msgid "Sex Addict"
msgstr ""
-#: ../../include/profile_selectors.php:42 ../../include/user.php:270
+#: ../../include/profile_selectors.php:42 ../../include/user.php:272
msgid "Friends"
msgstr ""
@@ -6351,7 +6360,7 @@ msgstr ""
msgid "Click to open/close"
msgstr ""
-#: ../../include/text.php:1095 ../../include/user.php:228
+#: ../../include/text.php:1095 ../../include/user.php:230
msgid "default"
msgstr ""
@@ -6688,7 +6697,7 @@ msgstr ""
msgid "seconds"
msgstr ""
-#: ../../include/datetime.php:277
+#: ../../include/datetime.php:278
#, php-format
msgid "%1$d %2$s ago"
msgstr ""
@@ -6923,71 +6932,71 @@ msgstr ""
msgid "link"
msgstr ""
-#: ../../include/user.php:36
+#: ../../include/user.php:38
msgid "An invitation is required."
msgstr ""
-#: ../../include/user.php:41
+#: ../../include/user.php:43
msgid "Invitation could not be verified."
msgstr ""
-#: ../../include/user.php:49
+#: ../../include/user.php:51
msgid "Invalid OpenID url"
msgstr ""
-#: ../../include/user.php:64
+#: ../../include/user.php:66
msgid "Please enter the required information."
msgstr ""
-#: ../../include/user.php:78
+#: ../../include/user.php:80
msgid "Please use a shorter name."
msgstr ""
-#: ../../include/user.php:80
+#: ../../include/user.php:82
msgid "Name too short."
msgstr ""
-#: ../../include/user.php:95
+#: ../../include/user.php:97
msgid "That doesn't appear to be your full (First Last) name."
msgstr ""
-#: ../../include/user.php:100
+#: ../../include/user.php:102
msgid "Your email domain is not among those allowed on this site."
msgstr ""
-#: ../../include/user.php:103
+#: ../../include/user.php:105
msgid "Not a valid email address."
msgstr ""
-#: ../../include/user.php:113
+#: ../../include/user.php:115
msgid "Cannot use that email."
msgstr ""
-#: ../../include/user.php:119
+#: ../../include/user.php:121
msgid ""
"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
"must also begin with a letter."
msgstr ""
-#: ../../include/user.php:125 ../../include/user.php:217
+#: ../../include/user.php:127 ../../include/user.php:219
msgid "Nickname is already registered. Please choose another."
msgstr ""
-#: ../../include/user.php:135
+#: ../../include/user.php:137
msgid ""
"Nickname was once registered here and may not be re-used. Please choose "
"another."
msgstr ""
-#: ../../include/user.php:151
+#: ../../include/user.php:153
msgid "SERIOUS ERROR: Generation of security keys failed."
msgstr ""
-#: ../../include/user.php:203
+#: ../../include/user.php:205
msgid "An error occurred during registration. Please try again."
msgstr ""
-#: ../../include/user.php:238
+#: ../../include/user.php:240
msgid "An error occurred creating your default profile. Please try again."
msgstr ""
@@ -7013,30 +7022,30 @@ msgstr ""
msgid "stopped following"
msgstr ""
-#: ../../include/Contact.php:203 ../../include/conversation.php:821
+#: ../../include/Contact.php:203 ../../include/conversation.php:836
msgid "View Status"
msgstr ""
-#: ../../include/Contact.php:204 ../../include/conversation.php:822
+#: ../../include/Contact.php:204 ../../include/conversation.php:837
msgid "View Profile"
msgstr ""
-#: ../../include/Contact.php:205 ../../include/conversation.php:823
+#: ../../include/Contact.php:205 ../../include/conversation.php:838
msgid "View Photos"
msgstr ""
#: ../../include/Contact.php:206 ../../include/Contact.php:219
-#: ../../include/conversation.php:824
+#: ../../include/conversation.php:839
msgid "Network Posts"
msgstr ""
#: ../../include/Contact.php:207 ../../include/Contact.php:219
-#: ../../include/conversation.php:825
+#: ../../include/conversation.php:840
msgid "Edit Contact"
msgstr ""
#: ../../include/Contact.php:208 ../../include/Contact.php:219
-#: ../../include/conversation.php:826
+#: ../../include/conversation.php:841
msgid "Send PM"
msgstr ""
@@ -7049,17 +7058,17 @@ msgstr ""
msgid "%1$s marked %2$s's %3$s as favorite"
msgstr ""
-#: ../../include/conversation.php:321 ../../include/conversation.php:587
+#: ../../include/conversation.php:321 ../../include/conversation.php:602
msgid "Select"
msgstr ""
-#: ../../include/conversation.php:338 ../../include/conversation.php:680
-#: ../../include/conversation.php:681
+#: ../../include/conversation.php:338 ../../include/conversation.php:695
+#: ../../include/conversation.php:696
#, php-format
msgid "View %s's profile @ %s"
msgstr ""
-#: ../../include/conversation.php:348 ../../include/conversation.php:692
+#: ../../include/conversation.php:348 ../../include/conversation.php:707
#, php-format
msgid "%s from %s"
msgstr ""
@@ -7075,190 +7084,190 @@ msgid_plural "%d comments"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:533
+#: ../../include/conversation.php:548
msgid "like"
msgstr ""
-#: ../../include/conversation.php:534
+#: ../../include/conversation.php:549
msgid "dislike"
msgstr ""
-#: ../../include/conversation.php:536
+#: ../../include/conversation.php:551
msgid "Share this"
msgstr ""
-#: ../../include/conversation.php:536
+#: ../../include/conversation.php:551
msgid "share"
msgstr ""
-#: ../../include/conversation.php:560
+#: ../../include/conversation.php:575
msgid "Bold"
msgstr ""
-#: ../../include/conversation.php:561
+#: ../../include/conversation.php:576
msgid "Italic"
msgstr ""
-#: ../../include/conversation.php:562
+#: ../../include/conversation.php:577
msgid "Underline"
msgstr ""
-#: ../../include/conversation.php:563
+#: ../../include/conversation.php:578
msgid "Quote"
msgstr ""
-#: ../../include/conversation.php:564
+#: ../../include/conversation.php:579
msgid "Code"
msgstr ""
-#: ../../include/conversation.php:565
+#: ../../include/conversation.php:580
msgid "Image"
msgstr ""
-#: ../../include/conversation.php:566
+#: ../../include/conversation.php:581
msgid "Link"
msgstr ""
-#: ../../include/conversation.php:567
+#: ../../include/conversation.php:582
msgid "Video"
msgstr ""
-#: ../../include/conversation.php:600
+#: ../../include/conversation.php:615
msgid "add star"
msgstr ""
-#: ../../include/conversation.php:601
+#: ../../include/conversation.php:616
msgid "remove star"
msgstr ""
-#: ../../include/conversation.php:602
+#: ../../include/conversation.php:617
msgid "toggle star status"
msgstr ""
-#: ../../include/conversation.php:605
+#: ../../include/conversation.php:620
msgid "starred"
msgstr ""
-#: ../../include/conversation.php:606
+#: ../../include/conversation.php:621
msgid "add tag"
msgstr ""
-#: ../../include/conversation.php:610
+#: ../../include/conversation.php:625
msgid "save to folder"
msgstr ""
-#: ../../include/conversation.php:682
+#: ../../include/conversation.php:697
msgid "to"
msgstr ""
-#: ../../include/conversation.php:683
+#: ../../include/conversation.php:698
msgid "Wall-to-Wall"
msgstr ""
-#: ../../include/conversation.php:684
+#: ../../include/conversation.php:699
msgid "via Wall-To-Wall:"
msgstr ""
-#: ../../include/conversation.php:729
+#: ../../include/conversation.php:744
msgid "Delete Selected Items"
msgstr ""
-#: ../../include/conversation.php:880
-#, php-format
-msgid "%s likes this."
-msgstr ""
-
-#: ../../include/conversation.php:880
-#, php-format
-msgid "%s doesn't like this."
-msgstr ""
-
-#: ../../include/conversation.php:884
-#, php-format
-msgid "%2$d people like this."
-msgstr ""
-
-#: ../../include/conversation.php:886
-#, php-format
-msgid "%2$d people don't like this."
-msgstr ""
-
-#: ../../include/conversation.php:892
-msgid "and"
-msgstr ""
-
#: ../../include/conversation.php:895
#, php-format
+msgid "%s likes this."
+msgstr ""
+
+#: ../../include/conversation.php:895
+#, php-format
+msgid "%s doesn't like this."
+msgstr ""
+
+#: ../../include/conversation.php:899
+#, php-format
+msgid "%2$d people like this."
+msgstr ""
+
+#: ../../include/conversation.php:901
+#, php-format
+msgid "%2$d people don't like this."
+msgstr ""
+
+#: ../../include/conversation.php:907
+msgid "and"
+msgstr ""
+
+#: ../../include/conversation.php:910
+#, php-format
msgid ", and %d other people"
msgstr ""
-#: ../../include/conversation.php:896
+#: ../../include/conversation.php:911
#, php-format
msgid "%s like this."
msgstr ""
-#: ../../include/conversation.php:896
+#: ../../include/conversation.php:911
#, php-format
msgid "%s don't like this."
msgstr ""
-#: ../../include/conversation.php:921
+#: ../../include/conversation.php:936
msgid "Visible to everybody"
msgstr ""
-#: ../../include/conversation.php:923
+#: ../../include/conversation.php:938
msgid "Please enter a video link/URL:"
msgstr ""
-#: ../../include/conversation.php:924
+#: ../../include/conversation.php:939
msgid "Please enter an audio link/URL:"
msgstr ""
-#: ../../include/conversation.php:925
+#: ../../include/conversation.php:940
msgid "Tag term:"
msgstr ""
-#: ../../include/conversation.php:927
+#: ../../include/conversation.php:942
msgid "Where are you right now?"
msgstr ""
-#: ../../include/conversation.php:970
+#: ../../include/conversation.php:985
msgid "upload photo"
msgstr ""
-#: ../../include/conversation.php:972
+#: ../../include/conversation.php:987
msgid "attach file"
msgstr ""
-#: ../../include/conversation.php:974
+#: ../../include/conversation.php:989
msgid "web link"
msgstr ""
-#: ../../include/conversation.php:975
+#: ../../include/conversation.php:990
msgid "Insert video link"
msgstr ""
-#: ../../include/conversation.php:976
+#: ../../include/conversation.php:991
msgid "video link"
msgstr ""
-#: ../../include/conversation.php:977
+#: ../../include/conversation.php:992
msgid "Insert audio link"
msgstr ""
-#: ../../include/conversation.php:978
+#: ../../include/conversation.php:993
msgid "audio link"
msgstr ""
-#: ../../include/conversation.php:980
+#: ../../include/conversation.php:995
msgid "set location"
msgstr ""
-#: ../../include/conversation.php:982
+#: ../../include/conversation.php:997
msgid "clear location"
msgstr ""
-#: ../../include/conversation.php:989
+#: ../../include/conversation.php:1004
msgid "permissions"
msgstr ""
diff --git a/view/profile_advanced.tpl b/view/profile_advanced.tpl
index 470404fc3..0b8f31f43 100644
--- a/view/profile_advanced.tpl
+++ b/view/profile_advanced.tpl
@@ -29,7 +29,7 @@
{{ if $profile.marital }}
- ♥ $profile.marital.0
- - $profile.marital.1 {{ if $profile.marital.with }}($profile.marital.with){{ endif }}
+ - $profile.marital.1{{ if $profile.marital.with }} ($profile.marital.with){{ endif }}{{ if $profile.howlong }} $profile.howlong{{ endif }}
{{ endif }}
@@ -54,6 +54,13 @@
{{ endif }}
+{{ if $profile.hometown }}
+
+ - $profile.hometown.0
+ - $profile.hometown.1
+
+{{ endif }}
+
{{ if $profile.politic }}
- $profile.politic.0
diff --git a/view/profile_edit.tpl b/view/profile_edit.tpl
index 2139fcf13..ad34b9956 100644
--- a/view/profile_edit.tpl
+++ b/view/profile_edit.tpl
@@ -97,6 +97,12 @@ $hide_friends
+
+
+
+
+
+
@@ -108,6 +114,9 @@ $marital
+
+
+
diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css
index 5854ccc02..ab660888f 100644
--- a/view/theme/duepuntozero/style.css
+++ b/view/theme/duepuntozero/style.css
@@ -679,7 +679,8 @@ input#dfrn-url {
#profile-edit-religion-label,
#profile-edit-pubkeywords-label,
#profile-edit-prvkeywords-label,
-#profile-edit-homepage-label {
+#profile-edit-homepage-label,
+#profile-edit-hometown-label {
float: left;
width: 175px;
}
@@ -774,7 +775,7 @@ input#dfrn-url {
}
-#profile-edit-homepage {
+#profile-edit-homepage, #profile-edit-hometown {
float: left;
margin-bottom: 35px;
}
@@ -814,6 +815,7 @@ input#dfrn-url {
#profile-edit-pubkeywords-end,
#profile-edit-prvkeywords-end,
#profile-edit-homepage-end,
+#profile-edit-hometown-end,
#profile-in-dir-break,
#profile-in-dir-end,
#profile-in-netdir-break,