diaspora birthday notifications
This commit is contained in:
parent
05e26e4895
commit
af6ab38100
17
boot.php
17
boot.php
|
@ -10,7 +10,7 @@ require_once('include/nav.php');
|
||||||
define ( 'FRIENDIKA_PLATFORM', 'Free Friendika');
|
define ( 'FRIENDIKA_PLATFORM', 'Free Friendika');
|
||||||
define ( 'FRIENDIKA_VERSION', '2.3.1133' );
|
define ( 'FRIENDIKA_VERSION', '2.3.1133' );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
|
||||||
define ( 'DB_UPDATE_VERSION', 1095 );
|
define ( 'DB_UPDATE_VERSION', 1096 );
|
||||||
|
|
||||||
define ( 'EOL', "<br />\r\n" );
|
define ( 'EOL', "<br />\r\n" );
|
||||||
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
||||||
|
@ -974,6 +974,7 @@ function get_birthdays() {
|
||||||
return $o;
|
return $o;
|
||||||
|
|
||||||
$bd_format = t('g A l F d') ; // 8 AM Friday January 18
|
$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`
|
$r = q("SELECT `event`.*, `event`.`id` AS `eid`, `contact`.* FROM `event`
|
||||||
LEFT JOIN `contact` ON `contact`.`id` = `event`.`cid`
|
LEFT JOIN `contact` ON `contact`.`id` = `event`.`cid`
|
||||||
|
@ -993,7 +994,7 @@ function get_birthdays() {
|
||||||
if($total) {
|
if($total) {
|
||||||
$o .= '<div id="birthday-notice" class="birthday-notice fakelink" onclick=openClose(\'birthday-wrapper\'); >' . t('Birthday Reminders') . ' ' . '(' . $total . ')' . '</div>';
|
$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-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>';
|
$o .= '<div id="birthday-title-end"></div>';
|
||||||
|
|
||||||
foreach($r as $rr) {
|
foreach($r as $rr) {
|
||||||
|
@ -1001,10 +1002,16 @@ function get_birthdays() {
|
||||||
continue;
|
continue;
|
||||||
$now = strtotime('now');
|
$now = strtotime('now');
|
||||||
$today = (((strtotime($rr['start'] . ' +00:00') < $now) && (strtotime($rr['finish'] . ' +00:00') > $now)) ? true : false);
|
$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="'
|
$o .= '<div class="birthday-list" id="birthday-' . $rr['eid'] . '"><a class="birthday-link$sparkle" target="redir" href="'
|
||||||
. $a->get_baseurl() . '/redir/' . $rr['cid'] . '">' . $rr['name'] . '</a> '
|
. $url . '">' . $rr['name'] . '</a> '
|
||||||
. day_translate(datetime_convert('UTC', $a->timezone, $rr['start'], $bd_format)) . (($today) ? ' ' . t('[today]') : '')
|
. day_translate(datetime_convert('UTC', $a->timezone, $rr['start'], $rr['adjust'] ? $bd_format : $bd_short)) . (($today) ? ' ' . t('[today]') : '')
|
||||||
. '</div>' ;
|
. '</div>' ;
|
||||||
}
|
}
|
||||||
$o .= '</div></div>';
|
$o .= '</div></div>';
|
||||||
|
|
|
@ -96,6 +96,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
|
||||||
`info` mediumtext NOT NULL,
|
`info` mediumtext NOT NULL,
|
||||||
`profile-id` int(11) NOT NULL DEFAULT '0',
|
`profile-id` int(11) NOT NULL DEFAULT '0',
|
||||||
`bdyear` CHAR( 4 ) NOT NULL COMMENT 'birthday notify flag',
|
`bdyear` CHAR( 4 ) NOT NULL COMMENT 'birthday notify flag',
|
||||||
|
`bd` date NOT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
KEY `uid` (`uid`),
|
KEY `uid` (`uid`),
|
||||||
KEY `self` (`self`),
|
KEY `self` (`self`),
|
||||||
|
|
|
@ -393,3 +393,57 @@ function cal($y = 0,$m = 0, $links = false, $class='') {
|
||||||
|
|
||||||
return $o;
|
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']);
|
$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($name),
|
||||||
dbesc(datetime_convert()),
|
dbesc(datetime_convert()),
|
||||||
dbesc($images[0]),
|
dbesc($images[0]),
|
||||||
|
@ -1034,7 +1036,8 @@ function diaspora_profile($importer,$xml) {
|
||||||
dbesc($images[2]),
|
dbesc($images[2]),
|
||||||
dbesc(datetime_convert()),
|
dbesc(datetime_convert()),
|
||||||
intval($contact['id']),
|
intval($contact['id']),
|
||||||
intval($importer['uid'])
|
intval($importer['uid']),
|
||||||
|
dbesc($birthday)
|
||||||
);
|
);
|
||||||
if($r) {
|
if($r) {
|
||||||
if($oldphotos) {
|
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');
|
$d1 = get_config('system','last_expire_day');
|
||||||
$d2 = intval(datetime_convert('UTC','UTC','now','d'));
|
$d2 = intval(datetime_convert('UTC','UTC','now','d'));
|
||||||
|
|
||||||
if($d2 != intval($d1)) {
|
if($d2 != intval($d1)) {
|
||||||
|
|
||||||
|
update_contact_birthdays();
|
||||||
|
|
||||||
set_config('system','last_expire_day',$d2);
|
set_config('system','last_expire_day',$d2);
|
||||||
proc_run('php','include/expire.php');
|
proc_run('php','include/expire.php');
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
define( 'UPDATE_VERSION' , 1095 );
|
define( 'UPDATE_VERSION' , 1096 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -791,3 +791,7 @@ function update_1093() {
|
||||||
function update_1094() {
|
function update_1094() {
|
||||||
q("ALTER TABLE `item` ADD `postopts` TEXT NOT NULL AFTER `target` ");
|
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 {
|
.openid {
|
||||||
background: url(login-bg.gif) no-repeat;
|
background: url(login-bg.gif) no-repeat;
|
||||||
background-position: 0 50%;
|
background-position: 0 50%;
|
||||||
padding-left: 18px;
|
padding-left: 18px !important;
|
||||||
width: 385px;
|
width: 385px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.openid {
|
||||||
|
width: 150px !important;
|
||||||
|
}
|
||||||
|
#login-password {
|
||||||
|
width: 168px !important;
|
||||||
|
}
|
||||||
|
|
||||||
#profile-tabs-wrapper {
|
#profile-tabs-wrapper {
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue