nextcloud / nextcloud/calendar

Birthday Calendar isn’t synced to the normal calendar because the sync thinks Birthday calendars are disabled

Open
#4,962 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

0. to triage bug Feature: Birthday Calendar
Dominant language
JavaScript
Stars
1.2k
Forks
332
Avg merge
16h 13m
Merged PRs (30d)
137

Description

Steps to reproduce
  1. Import calendar and contacts(some of the contain birthdays) from a previous installation.
  2. Normal calendar and birthday calendar both appear for my user but birthday calendar is created.
Expected behavior

Birthday calendar is empty even though some contacts have birthdays, even in the nextcloud webcalendar so this has nothing to do with clients.

Actual behaviour

I expect the birthdays of my contacts to be automatically sync to the birthday calendar. I then tried manually sycing my users contacts to the birthday calendar.
occ dav:sync-birthday-calendar Hydranet

Then I got the following output/error:
In SyncBirthdayCalendar.php line 119:

Birthday calendars are disabled

I checked that file and a few lines above there(line 116) it shows what it checks for:
$isEnabled = $this->config->getAppValue(‘dav’, ‘generateBirthdayCalendar’, ‘yes’);

I went to check the database table for this user to verify the settings are correct:
±--------±------±-------------------------±------------+
| userid | appid | configkey | configvalue |
±--------±------±-------------------------±------------+
| Hydranet | dav | generateBirthdayCalendar | yes |
±--------±------±-------------------------±------------+

I finally found that under "Admin Settings → Groupware there was a slider for "Automatically generate birthday calendar” which was turned off, I turned it on and the birthdays of my contacts appeared in the birthday calendar. See attached screenshot of the setting I turned on.
Screenshot_20230206_131604

However it doesn't make any sense that nextcloud didn't pickup that I have a birthday calendar after having imported my contacts. I wouldn't expect if I import a calendar and my contacts that no birthday calendar should automatically be created if that slider for "Automatically generate birthday calendar” isn't turned on. In my case since after my fresh installation I imported my contacts and calendar the birthday calendar appeared so I assumed all was good but because of that import it seems that nextcloud thought I never enabled the birthday calendar.

So I think in short when someone imports a calendar and contacts that the birthday calendar should not be created as well. I do have to admit it's some months ago that I did this and I may have not remembered some details but thought it might help to report it.

Calendar app version

4.2.3

CalDAV-clients used

No response

Browser

No response

Client operating system

No response

Server operating system

RHEL9.1

Web server

Apache

Database engine version

MySQL

PHP engine version

PHP 8.1

Nextcloud version

25.0.3

Updated from an older installed version or fresh install

Updated from an older version

List of activated apps
Enabled:
  - activity: 2.17.0
  - bruteforcesettings: 2.5.0
  - calendar: 4.2.3
  - circles: 25.0.0
  - cloud_federation_api: 1.8.0
  - comments: 1.15.0
  - contacts: 5.1.0
  - contactsinteraction: 1.6.0
  - dashboard: 7.5.0
  - dav: 1.24.0
  - federatedfilesharing: 1.15.0
  - federation: 1.15.0
  - files: 1.20.1
  - files_pdfviewer: 2.6.0
  - files_rightclick: 1.4.0
  - files_sharing: 1.17.0
  - files_trashbin: 1.15.0
  - files_versions: 1.18.0
  - firstrunwizard: 2.14.0
  - logreader: 2.10.0
  - lookup_server_connector: 1.13.0
  - nextcloud_announcements: 1.14.0
  - notifications: 2.13.1
  - oauth2: 1.13.0
  - password_policy: 1.15.0
  - photos: 2.0.1
  - privacy: 1.9.0
  - provisioning_api: 1.15.0
  - recommendations: 1.4.0
  - related_resources: 1.0.4
  - serverinfo: 1.15.0
  - settings: 1.7.0
  - sharebymail: 1.15.0
  - support: 1.8.0
  - survey_client: 1.13.0
  - systemtags: 1.15.0
  - tasks: 0.14.5
  - text: 3.6.0
  - theming: 2.0.1
  - twofactor_backupcodes: 1.14.0
  - twofactor_totp: 7.0.0
  - updatenotification: 1.15.0
  - user_status: 1.5.0
  - viewer: 1.9.0
  - weather_status: 1.5.0
  - workflowengine: 2.7.0
Disabled:
  - admin_audit
  - encryption
  - event_update_notification: 2.0.0
  - files_external
  - news: 20.0.1
  - suspicious_login
  - user_ldap
Nextcloud configuration
{
    "system": {
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "nc.example.com"
        ],
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "25.0.3.2",
        "overwrite.cli.url": "https:\/\/nc.example.com",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpmode": "smtp",
        "mail_sendmailmode": "smtp",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpsecure": "tls",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "587",
        "maintenance": false,
        "theme": "",
        "loglevel": 2,
        "twofactor_enforced": "false",
        "twofactor_enforced_groups": [],
        "twofactor_enforced_excluded_groups": [],
        "default_phone_region": "NL",
        "memcache.local": "\\OC\\Memcache\\APCu"
    }
}
Web server error log

No response

Log file

No response

Browser log

No response

Additional info

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in SyncBirthdayCalendar.php around the generateBirthdayCalendar check near lines 116-119, then trace the calendar and contacts import flow described in the report. Reproduce with occ dav:sync-birthday-calendar and verify the imported contacts' birthdays are available without an inconsistent disabled state; add a regression test covering that scenario.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.