Reccuring event with forbid past event edition

My users are not alowed to edit past events.
But when they want to modify a recuring event (to modify the future occurences) the editing page don’t open. So they have to modify each occurence one by one.
It will be better that in this case it modify the occurences from today to the end of it without modifying past occurences

if you want to modify recurring series starting from specific date, you should delete the original series, and create two new instead(one for unmodified part - from original start date, to the date of the edited occurence. and another for the modified part - starts from date of modified occurence, and ends when the original series should have ended). This is the only way to implement such behavior.
You can catch onEventSave event, do needed insertions and return false from the handler to prevent the default behavior

Hi, I’ve done something similar, the way I went about it was in the file that the data is being loaded from (eg. “load.php”), attach the “beforeProcessing” event (If memory serves the documentation mentions the event is used to delete series’).


In the delete_related function have something like:

function delete_related($action) {
    global $scheduler;
    $status = $action->get_status();
    if ($status == "deleted") {
        ...delete series code....
    } else {
        //Handle Series edited
        if ($action->get_value("event_pid") == 0) {
            $scheduler->sql->query("UPDATE events SET series_notes='".$action->get_value("series_notes")."' WHERE event_id='".$action->get_id()."' OR (event_pid='".$action->get_id()."' AND event_length > '" . strtotime($action->get_value("start_date"))."')");
        //Handle Occurrence edited
        } else {
            $scheduler->sql->query("UPDATE events SET series_notes='".$action->get_value("series_notes")."' WHERE event_id='".$action->get_value("event_pid") OR (event_pid='".$action->get_value("event_pid")."' AND event_length > '" . strtotime($action->get_value("start_date"))."')");

This basically equates to:
Allow series_notes to update it’s parent so any new events in the series (not occurrences already) will have the value , OR update any occurrence in the future (courtesy of the event_length comparison with the edited events start_date).

My code is alot more complex than that, I’ve tried to strip it down to the bare minimum, I hope this works for you or at least gives you some ideas to try out.