* Addressbook - fix birthday cache was not cleared when birthday edited

This commit is contained in:
nathangray 2018-09-26 11:27:50 -06:00
parent 68b83de1ec
commit 4024db8353

View File

@ -1053,15 +1053,30 @@ class Contacts extends Contacts\Storage
if($isUpdate && $old['bday'] !== $to_write['bday'] || !$isUpdate && $to_write['bday'])
{
$year = (int) date('Y',time());
Cache::unsetInstance(__CLASS__,"birthday-$year-{$to_write['owner']}");
$this->clear_birthday_cache($year, $to_write['owner']);
$year++;
Cache::unsetInstance(__CLASS__,"birthday-$year-{$to_write['owner']}");
$this->clear_birthday_cache($year, $to_write['owner']);
}
}
return $this->error ? false : $contact['id'];
}
/**
* Since birthdays are cached for the instance for BIRTHDAY_CACHE_TIME, we
* need to clear them if a birthday changes.
*
* @param type $year
*/
protected function clear_birthday_cache($year, $owner)
{
// Cache is kept per-language, so clear them all
foreach(array_keys(Translation::get_installed_langs()) as $lang)
{
Cache::unsetInstance(__CLASS__,"birthday-$year-{$owner}-$lang");
}
}
/**
* Resize photo down to 240pixel width and returns it
*