aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/items.php54
-rw-r--r--include/notifier.php3
-rw-r--r--mod/directory.php1
-rw-r--r--mod/profiles.php1
-rw-r--r--view/atom_feed.tpl1
-rw-r--r--view/profile_entry.tpl2
6 files changed, 55 insertions, 7 deletions
diff --git a/include/items.php b/include/items.php
index d267abe07..c63e5c208 100644
--- a/include/items.php
+++ b/include/items.php
@@ -2,7 +2,7 @@
require_once('bbcode.php');
-function get_feed_for(&$a, $dfrn_id, $owner_id, $last_update, $direction = 0) {
+function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) {
// default permissions - anonymous user
@@ -14,13 +14,14 @@ function get_feed_for(&$a, $dfrn_id, $owner_id, $last_update, $direction = 0) {
AND `deny_gid` = ''
";
- if(strlen($owner_id) && ! intval($owner_id)) {
- $r = q("SELECT `uid`, `nickname` FROM `user` WHERE `nickname` = '%s' LIMIT 1",
- dbesc($owner_id)
+ if(strlen($owner_nick) && ! intval($owner_nick)) {
+ $r = q("SELECT `uid`, `nickname`, `timezone` FROM `user` WHERE `nickname` = '%s' LIMIT 1",
+ dbesc($owner_nick)
);
if(count($r)) {
$owner_id = $r[0]['uid'];
$owner_nick = $r[0]['nickname'];
+ $owner_tz = $r[0]['timezone'];
}
}
@@ -34,6 +35,44 @@ function get_feed_for(&$a, $dfrn_id, $owner_id, $last_update, $direction = 0) {
else
killme();
+ /**
+ *
+ * Determine the next birthday, but only if the birthday is published
+ * in the default profile. We _could_ also look for a private profile that the
+ * recipient can see, but somebody could get mad at us if they start getting
+ * public birthday greetings when they haven't made this info public.
+ *
+ * Assuming we are able to publish this info, we are then going to convert
+ * the start time from the owner's timezone to UTC.
+ *
+ * This will potentially solve the problem found with some social networks
+ * where birthdays are converted to the viewer's timezone and salutations from
+ * elsewhere in the world show up on the wrong day. We will convert it to the
+ * viewer's timezone also, but first we are going to convert it from the birthday
+ * person's timezone to GMT - so the viewer may find the birthday starting at
+ * 6:00PM the day before, but that will correspond to midnight to the birthday person.
+ *
+ */
+
+ $birthday = '';
+
+ $p = q("SELECT `dob` FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1",
+ intval($owner_id)
+ );
+
+ if($p && count($p)) {
+ $tmp_dob = substr($p[0]['dob'],5);
+ if(intval($tmp_dob)) {
+ $y = datetime_convert($owner_tz,$owner_tz,'now','Y');
+ $bd = $y . '-' . $tmp_dob . ' 00:00';
+ $t_dob = strtotime($bd);
+ $now = strtotime(datetime_convert($owner_tz,$owner_tz,'now'));
+ if($t_dob < $now)
+ $bd = $y + 1 . '-' . $tmp_dob . ' 00:00';
+ $birthday = datetime_convert($owner_tz,'UTC',$bd,ATOM_TIME);
+ }
+ }
+
if($dfrn_id && $dfrn_id != '*') {
$sql_extra = '';
@@ -154,7 +193,8 @@ function get_feed_for(&$a, $dfrn_id, $owner_id, $last_update, $direction = 0) {
'$thumb' => xmlify($owner['thumb']),
'$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) ,
'$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) ,
- '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME))
+ '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME)) ,
+ '$birthday' => ((strlen($birthday)) ? '<dfrn:birthday>' . xmlify($birthday) . '</dfrn:birthday>' : '')
));
call_hooks('atom_feed', $atom);
@@ -452,6 +492,8 @@ function get_atom_elements($feed,$item) {
$body = $rawobj[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data'];
if(! $body)
$body = $rawobj[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['summary'][0]['data'];
+ // preserve a copy of the original body content in case we later need to parse out any microformat information, e.g. events
+ $res['object'] .= '<orig>' . xmlify($body) . '</orig>' . "\n";
if(strpos($body,'<')) {
$body = preg_replace('#<object[^>]+>.+?' . 'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?</object>#s',
@@ -489,6 +531,8 @@ function get_atom_elements($feed,$item) {
$body = $rawobj[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data'];
if(! $body)
$body = $rawobj[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['summary'][0]['data'];
+ // preserve a copy of the original body content in case we later need to parse out any microformat information, e.g. events
+ $res['object'] .= '<orig>' . xmlify($body) . '</orig>' . "\n";
if(strpos($body,'<')) {
$body = preg_replace('#<object[^>]+>.+?' . 'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?</object>#s',
diff --git a/include/notifier.php b/include/notifier.php
index aedc560b0..5bc21cf13 100644
--- a/include/notifier.php
+++ b/include/notifier.php
@@ -187,7 +187,8 @@
'$thumb' => xmlify($owner['thumb']),
'$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) ,
'$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) ,
- '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME))
+ '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME)) ,
+ '$birthday' => ''
));
if($cmd === 'mail') {
diff --git a/mod/directory.php b/mod/directory.php
index 82f2b79b3..f70cd6df8 100644
--- a/mod/directory.php
+++ b/mod/directory.php
@@ -1,4 +1,5 @@
<?php
+
function directory_init(&$a) {
$a->set_pager_itemspage(60);
}
diff --git a/mod/profiles.php b/mod/profiles.php
index 1c75dc0eb..3488c8687 100644
--- a/mod/profiles.php
+++ b/mod/profiles.php
@@ -401,6 +401,7 @@ function profiles_content(&$a) {
$o .= replace_macros($template, array(
'$photo' => $rr['thumb'],
'$id' => $rr['id'],
+ '$alt' => t('Profile Image'),
'$profile_name' => $rr['profile-name']
));
}
diff --git a/view/atom_feed.tpl b/view/atom_feed.tpl
index e993a622e..3b2df2f67 100644
--- a/view/atom_feed.tpl
+++ b/view/atom_feed.tpl
@@ -22,4 +22,5 @@
<uri dfrn:updated="$uridate" >$profile_page</uri>
<link rel="photo" type="image/jpeg" dfrn:updated="$picdate" media:width="175" media:height="175" href="$photo" />
<link rel="avatar" type="image/jpeg" dfrn:updated="$picdate" media:width="175" media:height="175" href="$photo" />
+ $birthday
</author>
diff --git a/view/profile_entry.tpl b/view/profile_entry.tpl
index 5c6952af6..c5b782660 100644
--- a/view/profile_entry.tpl
+++ b/view/profile_entry.tpl
@@ -1,7 +1,7 @@
<div class="profile-listing" >
<div class="profile-listing-photo-wrapper" >
-<a href="profiles/$id" class="profile-listing-edit-link"><img class="profile-listing-photo" id="profile-listing-photo-$id" src="$photo" alt="Profile Image" /></a>
+<a href="profiles/$id" class="profile-listing-edit-link"><img class="profile-listing-photo" id="profile-listing-photo-$id" src="$photo" alt="$alt" /></a>
</div>
<div class="profile-listing-photo-end"></div>
<div class="profile-listing-name" id="profile-listing-name-$id"><a href="profiles/$id" class="profile-listing-edit-link" >$profile_name</a></div>