From 5bfb0ba4c2ee23366651e1e38d3964098f99f5cf Mon Sep 17 00:00:00 2001 From: Friendika Date: Thu, 13 Jan 2011 20:28:33 -0800 Subject: [PATCH] birthday notifications working --- boot.php | 58 +++++++++++++++++++++++++++++++ include/auth.php | 10 ++++-- index.php | 4 ++- mod/openid.php | 5 ++- mod/profile.php | 4 +++ view/theme/default/style.css | 24 +++++++++++++ view/theme/duepuntozero/style.css | 24 +++++++++++++ 7 files changed, 125 insertions(+), 4 deletions(-) diff --git a/boot.php b/boot.php index 46c5144815..7e71a38d9e 100644 --- a/boot.php +++ b/boot.php @@ -182,6 +182,7 @@ class App { public $strings; public $path; public $hooks; + public $timezone; public $interactive = true; @@ -2118,3 +2119,60 @@ function call_hooks($name, &$data = null) { } }} + +if(! function_exists('day_translate')) { +function day_translate($s) { + $ret = str_replace(array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'), + array( t('Monday'), t('Tuesday'), t('Wednesday'), t('Thursday'), t('Friday'), t('Saturday'), t('Sunday')), + $s); + + $ret = str_replace(array('January','February','March','April','May','June','July','August','September','October','November','December'), + array( t('January'), t('February'), t('March'), t('April'), t('May'), t('June'), t('July'), t('August'), t('September'), t('October'), t('November'), t('December')), + $ret); + + return $ret; +}} + +if(! function_exists('get_birthdays')) { +function get_birthdays() { + + $a = get_app(); + $o = ''; + + if(! local_user()) + return $o; + + $bd_format = get_config('system','birthday_format'); + if(! $bd_format) + $bd_format = 'g A l F d' ; // 8 AM Friday January 18 + + $r = q("SELECT `event`.*, `event`.`id` AS `eid`, `contact`.* FROM `event` + LEFT JOIN `contact` ON `contact`.`id` = `event`.`cid` + WHERE `event`.`uid` = %d AND `type` = 'birthday' AND `start` < '%s' AND `finish` > '%s' + ORDER BY `start` DESC ", + intval(local_user()), + dbesc(datetime_convert('UTC','UTC','now + 6 days')), + dbesc(datetime_convert('UTC','UTC','now')) + ); + + if($r && count($r)) { + $o .= '
' . t('Birthdays this week:') . '
'; + $o .= '
' . t("\x28Adjusted for local time\x29") . '
'; + $o .= '
'; + + foreach($r as $rr) { + $now = strtotime('now'); + $today = (((strtotime($rr['start']) < $now) && (strtotime($rr['finish']) > $now)) ? true : false); + + $o .= '
' . $rr['name'] . ' ' + . day_translate(datetime_convert('UTC', $a->timezone, $rr['start'], $bd_format)) . (($today) ? ' ' . t('[today]') : '') ; + } + + $o .= '
'; + } + + return $o; + +}} + diff --git a/include/auth.php b/include/auth.php index d2bcb68dc8..a0244571b3 100644 --- a/include/auth.php +++ b/include/auth.php @@ -53,8 +53,11 @@ if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-p $a->user = $r[0]; $_SESSION['theme'] = $a->user['theme']; $_SESSION['page_flags'] = $a->user['page-flags']; - if(strlen($a->user['timezone'])) + + if(strlen($a->user['timezone'])) { date_default_timezone_set($a->user['timezone']); + $a->timezone = $a->user['timezone']; + } $_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $a->user['nickname']; @@ -183,8 +186,11 @@ else { notice( t("Welcome back ") . $record['username'] . EOL); $a->user = $record; - if(strlen($a->user['timezone'])) + + if(strlen($a->user['timezone'])) { date_default_timezone_set($a->user['timezone']); + $a->timezone = $a->user['timezone']; + } $r = q("SELECT * FROM `contact` WHERE `uid` = %s AND `self` = 1 LIMIT 1", intval($_SESSION['uid'])); diff --git a/index.php b/index.php index 1c06967813..ae6a578cb4 100644 --- a/index.php +++ b/index.php @@ -71,7 +71,9 @@ if(! $install) { require_once("datetime.php"); -date_default_timezone_set(($default_timezone) ? $default_timezone : 'UTC'); +$a->timezone = (($default_timezone) ? $default_timezone : 'UTC'); + +date_default_timezone_set($a->timezone); $a->init_pagehead(); diff --git a/mod/openid.php b/mod/openid.php index 91efbbbc42..2e1025692d 100644 --- a/mod/openid.php +++ b/mod/openid.php @@ -72,8 +72,11 @@ function openid_content(&$a) { notice( t("Welcome back ") . $r[0]['username'] . EOL); $a->user = $r[0]; - if(strlen($a->user['timezone'])) + + if(strlen($a->user['timezone'])) { date_default_timezone_set($a->user['timezone']); + $a->timezone = $a->user['timezone']; + } $r = q("SELECT * FROM `contact` WHERE `uid` = %s AND `self` = 1 LIMIT 1", intval($_SESSION['uid'])); diff --git a/mod/profile.php b/mod/profile.php index e8eee810bf..9b8388177d 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -228,6 +228,10 @@ function profile_content(&$a, $update = 0) { ); + + if($is_owner && ! $update) + $o .= get_birthdays(); + $cmnt_tpl = load_view_file('view/comment_item.tpl'); $like_tpl = load_view_file('view/like.tpl'); diff --git a/view/theme/default/style.css b/view/theme/default/style.css index 240ace8960..fd14c6bddd 100644 --- a/view/theme/default/style.css +++ b/view/theme/default/style.css @@ -1957,3 +1957,27 @@ a.mail-list-link { #plugin-settings-link, #account-settings-link { margin-bottom: 25px; } + + +#birthday-title { + float: left; + font-weight: bold; +} + +#birthday-adjust { + float: left; + font-size: 75%; + margin-left: 10px; +} + +#birthday-title-end { + clear: both; +} + +.birthday-list { + margin-left: 15px; +} + +#birthday-wrapper { + margin-bottom: 15px; +} diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index f64ad3fb89..37670df01e 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -1854,3 +1854,27 @@ a.mail-list-link { font-size: 120%; font-weight: bold; } + + +#birthday-title { + float: left; + font-weight: bold; +} + +#birthday-adjust { + float: left; + font-size: 75%; + margin-left: 10px; +} + +#birthday-title-end { + clear: both; +} + +.birthday-list { + margin-left: 15px; +} + +#birthday-wrapper { + margin-bottom: 15px; +}