functionise birthday
This commit is contained in:
parent
b96d6c015b
commit
0d9ed48738
3 changed files with 50 additions and 40 deletions
43
boot.php
43
boot.php
|
@ -2323,3 +2323,46 @@ function current_theme_url() {
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
if(! function_exists('feed_birthday')) {
|
||||||
|
function feed_birthday($uid,$tz) {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 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($uid)
|
||||||
|
);
|
||||||
|
|
||||||
|
if($p && count($p)) {
|
||||||
|
$tmp_dob = substr($p[0]['dob'],5);
|
||||||
|
if(intval($tmp_dob)) {
|
||||||
|
$y = datetime_convert($tz,$tz,'now','Y');
|
||||||
|
$bd = $y . '-' . $tmp_dob . ' 00:00';
|
||||||
|
$t_dob = strtotime($bd);
|
||||||
|
$now = strtotime(datetime_convert($tz,$tz,'now'));
|
||||||
|
if($t_dob < $now)
|
||||||
|
$bd = $y + 1 . '-' . $tmp_dob . ' 00:00';
|
||||||
|
$birthday = datetime_convert($tz,'UTC',$bd,ATOM_TIME);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $birthday;
|
||||||
|
}}
|
|
@ -37,44 +37,7 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0)
|
||||||
else
|
else
|
||||||
killme();
|
killme();
|
||||||
|
|
||||||
|
$birthday = feed_birthday($owner_id,$owner_tz);
|
||||||
/**
|
|
||||||
*
|
|
||||||
* 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 != '*') {
|
if($dfrn_id && $dfrn_id != '*') {
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ function notifier_run($argv, $argc){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$r = q("SELECT `contact`.*, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`, `user`.`page-flags`
|
$r = q("SELECT `contact`.*, `user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`, `user`.`page-flags`
|
||||||
FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid`
|
FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid`
|
||||||
WHERE `contact`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
|
WHERE `contact`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
|
||||||
intval($uid)
|
intval($uid)
|
||||||
|
@ -194,6 +194,10 @@ function notifier_run($argv, $argc){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$birthday = feed_birthday($owner['uid'],$owner['timezone']);
|
||||||
|
if($birthday)
|
||||||
|
$birthday = '<dfrn:birthday>' . xmlify($birthday) . '</dfrn:birthday>';
|
||||||
|
|
||||||
$atom .= replace_macros($feed_template, array(
|
$atom .= replace_macros($feed_template, array(
|
||||||
'$version' => xmlify(FRIENDIKA_VERSION),
|
'$version' => xmlify(FRIENDIKA_VERSION),
|
||||||
'$feed_id' => xmlify($a->get_baseurl() . '/profile/' . $owner['nickname'] ),
|
'$feed_id' => xmlify($a->get_baseurl() . '/profile/' . $owner['nickname'] ),
|
||||||
|
@ -208,7 +212,7 @@ function notifier_run($argv, $argc){
|
||||||
'$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) ,
|
'$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)) ,
|
'$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' => ''
|
'$birthday' => $birthday
|
||||||
));
|
));
|
||||||
|
|
||||||
if($cmd === 'mail') {
|
if($cmd === 'mail') {
|
||||||
|
|
Loading…
Reference in a new issue