Browse Source

Bugfix: Avoid duplicated birthday events

tags/3.5.1
Michael 3 years ago
parent
commit
cb0600976d
3 changed files with 48 additions and 7 deletions
  1. +11
    -0
      include/datetime.php
  2. +11
    -1
      include/dfrn.php
  3. +26
    -6
      include/event.php

+ 11
- 0
include/datetime.php View File

@@ -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']);
$bdtext2 = sprintf( t('Happy Birthday %s'), ' [url=' . $rr['url'] . ']' . $rr['name'] . '[/url]') ;



+ 11
- 1
include/dfrn.php View File

@@ -1105,12 +1105,22 @@ class dfrn {
*/
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"]);

$bdtext = sprintf(t("%s\'s birthday"), $contact["name"]);
$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`)
VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
intval($contact["uid"]),


+ 26
- 6
include/event.php View File

@@ -493,6 +493,25 @@ function get_event_strings() {
return $i18n;
}

/**
* @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
*
@@ -516,9 +535,9 @@ function event_by_id($owner_uid = 0, $event_params, $sql_extra = '') {
intval($event_params["event_id"])
);

if (dbm::is_result($r))
return $r;
if (dbm::is_result($r)) {
return event_remove_duplicates($r);
}
}

/**
@@ -558,8 +577,9 @@ function events_by_date($owner_uid = 0, $event_params, $sql_extra = '') {
dbesc($event_params["adjust_finish"])
);

if (dbm::is_result($r))
return $r;
if (dbm::is_result($r)) {
return event_remove_duplicates($r);
}
}

/**
@@ -568,7 +588,7 @@ function events_by_date($owner_uid = 0, $event_params, $sql_extra = '') {
* @param array $arr Event query array
* @return array Event array for the template
*/
function process_events ($arr) {
function process_events($arr) {
$events=array();

$last_date = '';


Loading…
Cancel
Save