Merge pull request #3119 from annando/1701-bugfix-events
Bugfix: Avoid duplicated birthday events
This commit is contained in:
commit
0b5ef73d4a
3 changed files with 49 additions and 7 deletions
|
@ -571,6 +571,17 @@ function update_contact_birthdays() {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Check for duplicates
|
||||||
|
$s = q("SELECT `id` FROM `event` WHERE `uid` = %d AND `cid` = %d AND `start` = '%s' AND `type` = '%s' LIMIT 1",
|
||||||
|
intval($rr['uid']),
|
||||||
|
intval($rr['id']),
|
||||||
|
dbesc(datetime_convert('UTC','UTC', $nextbd)),
|
||||||
|
dbesc('birthday'));
|
||||||
|
|
||||||
|
if (dbm::is_result($s)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$bdtext = sprintf( t('%s\'s birthday'), $rr['name']);
|
$bdtext = sprintf( t('%s\'s birthday'), $rr['name']);
|
||||||
$bdtext2 = sprintf( t('Happy Birthday %s'), ' [url=' . $rr['url'] . ']' . $rr['name'] . '[/url]') ;
|
$bdtext2 = sprintf( t('Happy Birthday %s'), ' [url=' . $rr['url'] . ']' . $rr['name'] . '[/url]') ;
|
||||||
|
|
||||||
|
|
|
@ -1105,12 +1105,22 @@ class dfrn {
|
||||||
*/
|
*/
|
||||||
private function birthday_event($contact, $birthday) {
|
private function birthday_event($contact, $birthday) {
|
||||||
|
|
||||||
|
// Check for duplicates
|
||||||
|
$r = q("SELECT `id` FROM `event` WHERE `uid` = %d AND `cid` = %d AND `start` = '%s' AND `type` = '%s' LIMIT 1",
|
||||||
|
intval($contact["uid"]),
|
||||||
|
intval($contact["id"]),
|
||||||
|
dbesc(datetime_convert("UTC","UTC", $birthday)),
|
||||||
|
dbesc("birthday"));
|
||||||
|
|
||||||
|
if (dbm::is_result($r)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
logger("updating birthday: ".$birthday." for contact ".$contact["id"]);
|
logger("updating birthday: ".$birthday." for contact ".$contact["id"]);
|
||||||
|
|
||||||
$bdtext = sprintf(t("%s\'s birthday"), $contact["name"]);
|
$bdtext = sprintf(t("%s\'s birthday"), $contact["name"]);
|
||||||
$bdtext2 = sprintf(t("Happy Birthday %s"), " [url=".$contact["url"]."]".$contact["name"]."[/url]") ;
|
$bdtext2 = sprintf(t("Happy Birthday %s"), " [url=".$contact["url"]."]".$contact["name"]."[/url]") ;
|
||||||
|
|
||||||
|
|
||||||
$r = q("INSERT INTO `event` (`uid`,`cid`,`created`,`edited`,`start`,`finish`,`summary`,`desc`,`type`)
|
$r = q("INSERT INTO `event` (`uid`,`cid`,`created`,`edited`,`start`,`finish`,`summary`,`desc`,`type`)
|
||||||
VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
|
VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
|
||||||
intval($contact["uid"]),
|
intval($contact["uid"]),
|
||||||
|
|
|
@ -493,6 +493,26 @@ function get_event_strings() {
|
||||||
return $i18n;
|
return $i18n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// @todo We should replace this with a separate update function if there is some time left
|
||||||
|
/**
|
||||||
|
* @brief Removes duplicated birthday events
|
||||||
|
*
|
||||||
|
* @param array $dates Array of possibly duplicated events
|
||||||
|
* @return array Cleaned events
|
||||||
|
*/
|
||||||
|
function event_remove_duplicates($dates) {
|
||||||
|
$dates2 = array();
|
||||||
|
|
||||||
|
foreach ($dates AS $date) {
|
||||||
|
if ($date['type'] == 'birthday') {
|
||||||
|
$dates2[$date['uid']."-".$date['cid']."-".$date['start']] = $date;
|
||||||
|
} else {
|
||||||
|
$dates2[] = $date;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $dates2;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get an event by its event ID
|
* @brief Get an event by its event ID
|
||||||
*
|
*
|
||||||
|
@ -516,9 +536,9 @@ function event_by_id($owner_uid = 0, $event_params, $sql_extra = '') {
|
||||||
intval($event_params["event_id"])
|
intval($event_params["event_id"])
|
||||||
);
|
);
|
||||||
|
|
||||||
if (dbm::is_result($r))
|
if (dbm::is_result($r)) {
|
||||||
return $r;
|
return event_remove_duplicates($r);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -558,8 +578,9 @@ function events_by_date($owner_uid = 0, $event_params, $sql_extra = '') {
|
||||||
dbesc($event_params["adjust_finish"])
|
dbesc($event_params["adjust_finish"])
|
||||||
);
|
);
|
||||||
|
|
||||||
if (dbm::is_result($r))
|
if (dbm::is_result($r)) {
|
||||||
return $r;
|
return event_remove_duplicates($r);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue