mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-29 11:23:54 +01:00
allow to use $skip_notify="NOPUSH" for calendar_bo::(update|set_status|update_status|delete) to NOT send push updates
this can and should be used for massive calendar updates to avoid a hugh wave of push messages and responses from clients/browsers to request full calendar data (which is not pushed)
This commit is contained in:
parent
f07aacaeaf
commit
8db07c9a34
@ -94,7 +94,7 @@ class calendar_boupdate extends calendar_bo
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* updates or creates an event, it (optionaly) checks for conflicts and sends the necessary notifications
|
* updates or creates an event, it (optionally) checks for conflicts and sends the necessary notifications
|
||||||
*
|
*
|
||||||
* @param array &$event event-array, on return some values might be changed due to set defaults
|
* @param array &$event event-array, on return some values might be changed due to set defaults
|
||||||
* @param boolean $ignore_conflicts =false just ignore conflicts or do a conflict check and return the conflicting events
|
* @param boolean $ignore_conflicts =false just ignore conflicts or do a conflict check and return the conflicting events
|
||||||
@ -102,9 +102,10 @@ class calendar_boupdate extends calendar_bo
|
|||||||
* @param boolean $ignore_acl =false should we ignore the acl
|
* @param boolean $ignore_acl =false should we ignore the acl
|
||||||
* @param boolean $updateTS =true update the content history of the event (ignored, as updating timestamps is required for sync!)
|
* @param boolean $updateTS =true update the content history of the event (ignored, as updating timestamps is required for sync!)
|
||||||
* @param array &$messages=null messages about because of missing ACL removed participants or categories
|
* @param array &$messages=null messages about because of missing ACL removed participants or categories
|
||||||
* @param boolean $skip_notification =false true: send NO notifications, default false = send them
|
* @param boolean|"NOPUSH" $skip_notification =false true: send NO notifications, default false = send them,
|
||||||
|
* "NOPUSH": also do NOT send push notifications / call Link::notifiy(), which still happens for true
|
||||||
* @return mixed on success: int $cal_id > 0, on error false or array with conflicting events (only if $check_conflicts)
|
* @return mixed on success: int $cal_id > 0, on error false or array with conflicting events (only if $check_conflicts)
|
||||||
* Please note: the events are not garantied to be readable by the user (no read grant or private)!
|
* Please note: the events are not guarantied to be readable by the user (no read grant or private)!
|
||||||
*
|
*
|
||||||
* @ToDo current conflict checking code does NOT cope quantity-wise correct with multiple non-overlapping
|
* @ToDo current conflict checking code does NOT cope quantity-wise correct with multiple non-overlapping
|
||||||
* events overlapping the event to store: the quantity sum is used, even as the events dont overlap!
|
* events overlapping the event to store: the quantity sum is used, even as the events dont overlap!
|
||||||
@ -314,7 +315,10 @@ class calendar_boupdate extends calendar_bo
|
|||||||
}
|
}
|
||||||
|
|
||||||
// notify the link-class about the update, as other apps may be subscribed to it
|
// notify the link-class about the update, as other apps may be subscribed to it
|
||||||
|
if ($skip_notification !== "NOPUSH")
|
||||||
|
{
|
||||||
Link::notify_update('calendar', $cal_id, $event, $update_type);
|
Link::notify_update('calendar', $cal_id, $event, $update_type);
|
||||||
|
}
|
||||||
|
|
||||||
return $cal_id;
|
return $cal_id;
|
||||||
}
|
}
|
||||||
@ -1785,8 +1789,9 @@ class calendar_boupdate extends calendar_bo
|
|||||||
* @param int $recur_date =0 date to change, or 0 = all since now
|
* @param int $recur_date =0 date to change, or 0 = all since now
|
||||||
* @param boolean $ignore_acl =false do not check the permisions for the $uid, if true
|
* @param boolean $ignore_acl =false do not check the permisions for the $uid, if true
|
||||||
* @param boolean $updateTS =true update the content history of the event
|
* @param boolean $updateTS =true update the content history of the event
|
||||||
* DEPRECATED: we allways (have to) update timestamp, as they are required for sync!
|
* DEPRECATED: we always (have to) update timestamp, as they are required for sync!
|
||||||
* @param boolean $skip_notification =false true: do not send notification messages
|
* @param boolean|"NOPUSH" $skip_notification =false true: send NO notifications, default false = send them,
|
||||||
|
* "NOPUSH": also do NOT send push notifications / call Link::notifiy(), which still happens for true
|
||||||
* @return int number of changed recurrences
|
* @return int number of changed recurrences
|
||||||
*/
|
*/
|
||||||
function set_status($event,$uid,$status,$recur_date=0,$ignore_acl=false,$updateTS=true,$skip_notification=false)
|
function set_status($event,$uid,$status,$recur_date=0,$ignore_acl=false,$updateTS=true,$skip_notification=false)
|
||||||
@ -1847,8 +1852,11 @@ class calendar_boupdate extends calendar_bo
|
|||||||
$tracking->track($event, $old_event ?: null);
|
$tracking->track($event, $old_event ?: null);
|
||||||
}
|
}
|
||||||
// notify the link-class about the update, as other apps may be subscribed to it
|
// notify the link-class about the update, as other apps may be subscribed to it
|
||||||
|
if ($skip_notification !== "NOPUSH")
|
||||||
|
{
|
||||||
Link::notify_update('calendar', $cal_id, $event, "update");
|
Link::notify_update('calendar', $cal_id, $event, "update");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return $Ok;
|
return $Ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1858,7 +1866,8 @@ class calendar_boupdate extends calendar_bo
|
|||||||
* @param array $new_event event-array with the new stati
|
* @param array $new_event event-array with the new stati
|
||||||
* @param array $old_event event-array with the old stati
|
* @param array $old_event event-array with the old stati
|
||||||
* @param int $recur_date =0 date to change, or 0 = all since now
|
* @param int $recur_date =0 date to change, or 0 = all since now
|
||||||
* @param boolean $skip_notification Do not send notifications. Parameter passed on to set_status().
|
* @param boolean|"NOPUSH" $skip_notification =false true: send NO notifications, default false = send them,
|
||||||
|
* "NOPUSH": also do NOT send push notifications / call Link::notifiy(), which still happens for true
|
||||||
*/
|
*/
|
||||||
function update_status($new_event, $old_event , $recur_date=0, $skip_notification=false)
|
function update_status($new_event, $old_event , $recur_date=0, $skip_notification=false)
|
||||||
{
|
{
|
||||||
@ -1884,8 +1893,11 @@ class calendar_boupdate extends calendar_bo
|
|||||||
}
|
}
|
||||||
|
|
||||||
// notify the link-class about the update, as other apps may be subscribed to it
|
// notify the link-class about the update, as other apps may be subscribed to it
|
||||||
|
if ($skip_notification !== "NOPUSH")
|
||||||
|
{
|
||||||
Link::notify_update('calendar',$new_event['id'],$new_event,"update");
|
Link::notify_update('calendar',$new_event['id'],$new_event,"update");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* deletes an event
|
* deletes an event
|
||||||
@ -1893,7 +1905,8 @@ class calendar_boupdate extends calendar_bo
|
|||||||
* @param int $cal_id id of the event to delete
|
* @param int $cal_id id of the event to delete
|
||||||
* @param int $recur_date =0 if a single event from a series should be deleted, its date
|
* @param int $recur_date =0 if a single event from a series should be deleted, its date
|
||||||
* @param boolean $ignore_acl =false true for no ACL check, default do ACL check
|
* @param boolean $ignore_acl =false true for no ACL check, default do ACL check
|
||||||
* @param boolean|array $skip_notification =false or array with uid to skip eg. [5,'eemail@example.org']
|
* @param boolean|array|"NOPUSH" $skip_notification =false or array with uid to skip eg. [5,'eemail@example.org']
|
||||||
|
* "NOPUSH": also do NOT send push notifications / call Link::notifiy(), which still happens for true
|
||||||
* @param boolean $delete_exceptions =true true: delete, false: keep exceptions (with new UID)
|
* @param boolean $delete_exceptions =true true: delete, false: keep exceptions (with new UID)
|
||||||
* @param int &$exceptions_kept=null on return number of kept exceptions
|
* @param int &$exceptions_kept=null on return number of kept exceptions
|
||||||
* @return boolean true on success, false on error (usually permission denied)
|
* @return boolean true on success, false on error (usually permission denied)
|
||||||
@ -2002,8 +2015,8 @@ class calendar_boupdate extends calendar_bo
|
|||||||
$event['recur_exception'][] = $recur_date;
|
$event['recur_exception'][] = $recur_date;
|
||||||
$this->save($event);// updates the content-history
|
$this->save($event);// updates the content-history
|
||||||
|
|
||||||
// for "real" push, need to push delete of recurence
|
// for "real" push, need to push delete of recurrence
|
||||||
if (!Api\Json\Push::onlyFallback())
|
if (!Api\Json\Push::onlyFallback() && $skip_notification !== "NOPUSH")
|
||||||
{
|
{
|
||||||
Api\Link::notify_update('calendar', $cal_id.':'.$recur_date, $event, 'delete');
|
Api\Link::notify_update('calendar', $cal_id.':'.$recur_date, $event, 'delete');
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user