]> git.mxchange.org Git - friendica.git/commitdiff
diaspora birthday notifications
authorFriendika <info@friendika.com>
Fri, 14 Oct 2011 07:20:37 +0000 (00:20 -0700)
committerFriendika <info@friendika.com>
Fri, 14 Oct 2011 07:20:37 +0000 (00:20 -0700)
boot.php
database.sql
include/datetime.php
include/diaspora.php
include/poller.php
update.php
view/theme/testbubble/style.css

index 376def64d27fa5d82effae787c0678026b066640..2f2a2127f6b36d33e94653b87f491acfca02a00a 100644 (file)
--- a/boot.php
+++ b/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>';
index ed92aa4c19fa5aa407d8728e22c9061c240708d1..2b9be34e06a59b632704450af9b280bd4b0d05b7 100644 (file)
@@ -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`),
index 3033b88afc816238ea7e0e4ada4b86fa92576c5b..087e6cb20dc2f1879838be38204544dea2444eb9 100644 (file)
@@ -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
index 7207daf0cd1c7b6e6a6c310736db3e4c2eac2936..2d9e2883d1b2975347a6fb163ed1fa7c72658e99 100644 (file)
@@ -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) {
index 427f8887ce92893394c2f49be07236856584772f..cef0647b596f50de31f6c6f49454deb38f37de96 100644 (file)
@@ -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');
        }
index 5d5190095cdc6d0ab229124fc5fe35a0fbdea89b..06bbb8b41fcb4ec6aeeb9f2ce694afe305f332c1 100644 (file)
@@ -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` ");
+}
index 74f0dfb41ce7a92a83a3661d82d82a9e2f2680f6..4a3edc163403e9d5f6d14589f89cbca621121e4f 100644 (file)
@@ -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;
 }