add owner's birthday information to feed (if allowed to)
This commit is contained in:
		| @@ -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); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user