diff options
author | Friendika <info@friendika.com> | 2011-10-14 00:20:37 -0700 |
---|---|---|
committer | Friendika <info@friendika.com> | 2011-10-14 00:20:37 -0700 |
commit | af6ab381000346f487d1b5b07623510640dd7ee5 (patch) | |
tree | 4cbe000aa2f095a01a7439bb07d793b2fc04b364 | |
parent | 05e26e489580c82d0db237771d159aed287c5f9b (diff) | |
download | volse-hubzilla-af6ab381000346f487d1b5b07623510640dd7ee5.tar.gz volse-hubzilla-af6ab381000346f487d1b5b07623510640dd7ee5.tar.bz2 volse-hubzilla-af6ab381000346f487d1b5b07623510640dd7ee5.zip |
diaspora birthday notifications
-rw-r--r-- | boot.php | 17 | ||||
-rw-r--r-- | database.sql | 1 | ||||
-rw-r--r-- | include/datetime.php | 54 | ||||
-rw-r--r-- | include/diaspora.php | 9 | ||||
-rw-r--r-- | include/poller.php | 5 | ||||
-rw-r--r-- | update.php | 6 | ||||
-rw-r--r-- | view/theme/testbubble/style.css | 9 |
7 files changed, 90 insertions, 11 deletions
@@ -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>'; diff --git a/database.sql b/database.sql index ed92aa4c1..2b9be34e0 100644 --- a/database.sql +++ b/database.sql @@ -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`), diff --git a/include/datetime.php b/include/datetime.php index 3033b88af..087e6cb20 100644 --- a/include/datetime.php +++ b/include/datetime.php @@ -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']) + ); + + } + } +}
\ No newline at end of file diff --git a/include/diaspora.php b/include/diaspora.php index 7207daf0c..2d9e2883d 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -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) { diff --git a/include/poller.php b/include/poller.php index 427f8887c..cef0647b5 100644 --- a/include/poller.php +++ b/include/poller.php @@ -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'); } diff --git a/update.php b/update.php index 5d5190095..06bbb8b41 100644 --- a/update.php +++ b/update.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` "); +} diff --git a/view/theme/testbubble/style.css b/view/theme/testbubble/style.css index 74f0dfb41..4a3edc163 100644 --- a/view/theme/testbubble/style.css +++ b/view/theme/testbubble/style.css @@ -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; } |