function eme_update_events_for_recurrence($event, $recurrence)
{
    global $wpdb, $eme_timezone;
    $events_table = $wpdb->prefix . EVENTS_TBNAME;
    $matching_days = eme_get_recurrence_days($recurrence);
    //print_r($matching_days);
    sort($matching_days);
    $eme_date_obj1 = new ExpressiveDate($event['event_start_date'] . " " . $event['event_start_time'], $eme_timezone);
    if ($event['event_end_date'] == '') {
        $duration_days_event = 0;
    } else {
        $eme_date_obj2 = new ExpressiveDate($event['event_end_date'] . " " . $event['event_end_time'], $eme_timezone);
        $duration_days_event = abs($eme_date_obj2->getDifferenceInDays($eme_date_obj1));
    }
    // 2 steps for updating events for a recurrence:
    // First step: check the existing events and if they still match the recurrence days, update them
    //       otherwise delete the old event
    // Reason for doing this: we want to keep possible booking data for a recurrent event as well
    // and just deleting all current events for a recurrence and inserting new ones would break the link
    // between booking id and event id
    // Second step: check all days of the recurrence and if no event exists yet, insert it
    $sql = $wpdb->prepare("SELECT * FROM {$events_table} WHERE recurrence_id = %d", $recurrence['recurrence_id']);
    $events = $wpdb->get_results($sql, ARRAY_A);
    $eme_date_obj = new ExpressiveDate(null, $eme_timezone);
    // Doing step 1
    foreach ($events as $existing_event) {
        $update_done = 0;
        foreach ($matching_days as $day) {
            $eme_date_obj->setTimestamp($day);
            $event_start_date = $eme_date_obj->getDate();
            if (!$update_done && $existing_event['event_start_date'] == $event_start_date) {
                $event['event_start_date'] = $existing_event['event_start_date'];
                $eme_date_obj->addDays($duration_days_event);
                $event['event_end_date'] = $eme_date_obj->getDate();
                eme_db_update_event($event, $existing_event['event_id'], 1);
                $update_done = 1;
                continue;
            }
        }
        if (!$update_done) {
            eme_db_delete_event($existing_event, 1);
        }
    }
    // Doing step 2
    foreach ($matching_days as $day) {
        $insert_needed = 1;
        $eme_date_obj->setTimestamp($day);
        $event['event_start_date'] = $eme_date_obj->getDate();
        $eme_date_obj->addDays($duration_days_event);
        $event['event_end_date'] = $eme_date_obj->getDate();
        foreach ($events as $existing_event) {
            if ($insert_needed && $existing_event['event_start_date'] == $event['event_start_date']) {
                $insert_needed = 0;
            }
        }
        if ($insert_needed == 1) {
            eme_db_insert_event($event, 1);
        }
    }
    return 1;
}