diaspora birthday notifications
This commit is contained in:
		
							
								
								
									
										17
									
								
								boot.php
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								boot.php
									
									
									
									
									
								
							| @@ -10,7 +10,7 @@ require_once('include/nav.php'); | ||||
| define ( 'FRIENDIKA_PLATFORM',     'Free Friendika'); | ||||
| define ( 'FRIENDIKA_VERSION',      '2.3.1133' ); | ||||
| define ( 'DFRN_PROTOCOL_VERSION',  '2.21'    ); | ||||
| define ( 'DB_UPDATE_VERSION',      1095      ); | ||||
| define ( 'DB_UPDATE_VERSION',      1096      ); | ||||
|  | ||||
| define ( 'EOL',                    "<br />\r\n"     ); | ||||
| define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' ); | ||||
| @@ -974,6 +974,7 @@ function get_birthdays() { | ||||
| 		return $o; | ||||
|  | ||||
| 	$bd_format = t('g A l F d') ; // 8 AM Friday January 18 | ||||
| 	$bd_short = t('F d'); | ||||
|  | ||||
| 	$r = q("SELECT `event`.*, `event`.`id` AS `eid`, `contact`.* FROM `event`  | ||||
| 		LEFT JOIN `contact` ON `contact`.`id` = `event`.`cid`  | ||||
| @@ -993,7 +994,7 @@ function get_birthdays() { | ||||
| 		if($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-adjust">' . t("\x28Adjusted for local time\x29") . '</div>'; | ||||
| 			$o .= '<div id="birthday-title-end"></div>'; | ||||
|  | ||||
| 			foreach($r as $rr) { | ||||
| @@ -1001,10 +1002,16 @@ function get_birthdays() { | ||||
| 					continue; | ||||
| 				$now = strtotime('now'); | ||||
| 				$today = (((strtotime($rr['start'] . ' +00:00') < $now) && (strtotime($rr['finish'] . ' +00:00') > $now)) ? true : false);  | ||||
| 				$sparkle = ''; | ||||
| 				$url = $rr['url']; | ||||
| 				if($rr['network'] === NETWORK_DFRN) { | ||||
| 					$sparkle = " sparkle"; | ||||
| 					$url = $a->get_baseurl() . '/redir/'  . $rr['cid']; | ||||
| 				} | ||||
| 	 | ||||
| 				$o .= '<div class="birthday-list" id="birthday-' . $rr['eid'] . '"><a class="sparkle" target="redir" href="'  | ||||
| 				. $a->get_baseurl() . '/redir/'  . $rr['cid'] . '">' . $rr['name'] . '</a> '  | ||||
| 				. day_translate(datetime_convert('UTC', $a->timezone, $rr['start'], $bd_format)) . (($today) ?  ' ' . t('[today]') : '') | ||||
| 				$o .= '<div class="birthday-list" id="birthday-' . $rr['eid'] . '"><a class="birthday-link$sparkle" target="redir" href="'  | ||||
| 				. $url . '">' . $rr['name'] . '</a> '  | ||||
| 				. day_translate(datetime_convert('UTC', $a->timezone, $rr['start'], $rr['adjust'] ? $bd_format : $bd_short)) . (($today) ?  ' ' . t('[today]') : '') | ||||
| 				. '</div>' ; | ||||
| 			} | ||||
| 			$o .= '</div></div>'; | ||||
|   | ||||
| @@ -96,6 +96,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( | ||||
|   `info` mediumtext NOT NULL, | ||||
|   `profile-id` int(11) NOT NULL DEFAULT '0', | ||||
|   `bdyear` CHAR( 4 ) NOT NULL COMMENT 'birthday notify flag', | ||||
|   `bd` date NOT NULL, | ||||
|   PRIMARY KEY (`id`), | ||||
|   KEY `uid` (`uid`), | ||||
|   KEY `self` (`self`), | ||||
|   | ||||
| @@ -393,3 +393,57 @@ function cal($y = 0,$m = 0, $links = false, $class='') { | ||||
|    | ||||
|   return $o; | ||||
| }} | ||||
|  | ||||
|  | ||||
| function update_contact_birthdays() { | ||||
|  | ||||
| 	// This only handles foreign or alien networks where a birthday has been provided. | ||||
| 	// In-network birthdays are handled within local_delivery | ||||
|  | ||||
| 	$r = q("SELECT * FROM contact WHERE `bd` != '' AND `bd` != '0000-00-00' AND SUBSTRING(`bd`,1,4) != `bdyear` "); | ||||
| 	if(count($r)) { | ||||
| 		foreach($r as $rr) { | ||||
|  | ||||
| 			logger('update_contact_birthday: ' . $rr['bd']); | ||||
|  | ||||
| 			$nextbd = datetime_convert('UTC','UTC','now','Y') . substr($rr['bd'],4); | ||||
|  | ||||
| 			/** | ||||
| 			 * | ||||
| 			 * Add new birthday event for this person | ||||
| 			 * | ||||
| 			 * $bdtext is just a readable placeholder in case the event is shared | ||||
| 			 * with others. We will replace it during presentation to our $importer | ||||
| 			 * to contain a sparkle link and perhaps a photo.  | ||||
| 			 * | ||||
| 			 */ | ||||
| 			  | ||||
| 			$bdtext = t('Birthday:') . ' [url=' . $rr['url'] . ']' . $rr['name'] . '[/url]' ; | ||||
|  | ||||
|  | ||||
| 			$r = q("INSERT INTO `event` (`uid`,`cid`,`created`,`edited`,`start`,`finish`,`desc`,`type`,`adjust`) | ||||
| 				VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%d' ) ", | ||||
| 				intval($rr['uid']), | ||||
| 			 	intval($rr['id']), | ||||
| 				dbesc(datetime_convert()), | ||||
| 				dbesc(datetime_convert()), | ||||
| 				dbesc(datetime_convert('UTC','UTC', $nextbd)), | ||||
| 				dbesc(datetime_convert('UTC','UTC', $nextbd . ' + 1 day ')), | ||||
| 				dbesc($bdtext), | ||||
| 				dbesc('birthday'), | ||||
| 				intval(0) | ||||
| 			); | ||||
| 			 | ||||
|  | ||||
| 			// update bdyear | ||||
|  | ||||
| 			q("UPDATE `contact` SET `bdyear` = '%s', `bd` = '%s' WHERE `uid` = %d AND `id` = %d LIMIT 1", | ||||
| 				dbesc(substr($nextbd,0,4)), | ||||
| 				dbesc($nextbd), | ||||
| 				intval($rr['uid']), | ||||
| 				intval($rr['id']) | ||||
| 			); | ||||
|  | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -1024,9 +1024,11 @@ function diaspora_profile($importer,$xml) { | ||||
|  | ||||
| 	$images = import_profile_photo($image_url,$importer['uid'],$contact['id']); | ||||
| 	 | ||||
| 	// TODO handle birthdays - even though we don't know the original timezone (grrr.) | ||||
| 	// Generic birthday. We don't know the timezone. The year is irrelevant.  | ||||
|  | ||||
| 	$r = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1", | ||||
| 	$birthday = datetime_convert('UTC','UTC',$birthday,'Y-m-d'); | ||||
|  | ||||
| 	$r = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' , `bd` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1", | ||||
| 		dbesc($name), | ||||
| 		dbesc(datetime_convert()), | ||||
| 		dbesc($images[0]), | ||||
| @@ -1034,7 +1036,8 @@ function diaspora_profile($importer,$xml) { | ||||
| 		dbesc($images[2]), | ||||
| 		dbesc(datetime_convert()), | ||||
| 		intval($contact['id']), | ||||
| 		intval($importer['uid']) | ||||
| 		intval($importer['uid']), | ||||
| 		dbesc($birthday) | ||||
| 	);  | ||||
| 	if($r) { | ||||
| 		if($oldphotos) { | ||||
|   | ||||
| @@ -50,12 +50,15 @@ function poller_run($argv, $argc){ | ||||
|  | ||||
| 	 | ||||
|  | ||||
| 	// once daily run expire in background | ||||
| 	// once daily run birthday_updates and then expire in background | ||||
|  | ||||
| 	$d1 = get_config('system','last_expire_day'); | ||||
| 	$d2 = intval(datetime_convert('UTC','UTC','now','d')); | ||||
|  | ||||
| 	if($d2 != intval($d1)) { | ||||
|  | ||||
| 		update_contact_birthdays(); | ||||
|  | ||||
| 		set_config('system','last_expire_day',$d2); | ||||
| 		proc_run('php','include/expire.php'); | ||||
| 	} | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| <?php | ||||
|  | ||||
| define( 'UPDATE_VERSION' , 1095 ); | ||||
| define( 'UPDATE_VERSION' , 1096 ); | ||||
|  | ||||
| /** | ||||
|  * | ||||
| @@ -791,3 +791,7 @@ function update_1093() { | ||||
| function update_1094() { | ||||
| 	q("ALTER TABLE `item` ADD `postopts` TEXT NOT NULL AFTER `target` "); | ||||
| } | ||||
|  | ||||
| function update_1095() { | ||||
| 	q("ALTER TABLE `contact` ADD `bd` DATE NOT NULL AFTER `bdyear` "); | ||||
| } | ||||
|   | ||||
| @@ -2105,10 +2105,17 @@ margin-left: 0px; | ||||
| .openid { | ||||
| 	background: url(login-bg.gif) no-repeat; | ||||
| 	background-position: 0 50%; | ||||
| 	padding-left: 18px; | ||||
| 	padding-left: 18px !important; | ||||
| 	width: 385px; | ||||
| } | ||||
|  | ||||
| .openid { | ||||
| 	width: 150px !important; | ||||
| } | ||||
| #login-password { | ||||
| 	width: 168px !important; | ||||
| } | ||||
|  | ||||
| #profile-tabs-wrapper { | ||||
| 	padding-top: 10px; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user