mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-22 23:00:56 +01:00
some more role related fixes: updating participants, if quantity or role changes
This commit is contained in:
parent
a41aceaaae
commit
0a1a7f4637
@ -131,7 +131,8 @@ class calendar_boupdate extends calendar_bo
|
|||||||
$quantity = $users = array();
|
$quantity = $users = array();
|
||||||
foreach($event['participants'] as $uid => $status)
|
foreach($event['participants'] as $uid => $status)
|
||||||
{
|
{
|
||||||
if ($status[0] == 'R') continue; // ignore rejected participants
|
calendar_so::split_status($status,$q,$r);
|
||||||
|
if ($status == 'R') continue; // ignore rejected participants
|
||||||
|
|
||||||
if ($uid < 0) // group, check it's members too
|
if ($uid < 0) // group, check it's members too
|
||||||
{
|
{
|
||||||
@ -141,7 +142,7 @@ class calendar_boupdate extends calendar_bo
|
|||||||
$users[] = $uid;
|
$users[] = $uid;
|
||||||
if (in_array($uid[0],$types_with_quantity))
|
if (in_array($uid[0],$types_with_quantity))
|
||||||
{
|
{
|
||||||
$quantity[$uid] = max(1,(int) substr($status,2));
|
$quantity[$uid] = $q;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$overlapping_events =& $this->search(array(
|
$overlapping_events =& $this->search(array(
|
||||||
@ -677,7 +678,8 @@ class calendar_boupdate extends calendar_bo
|
|||||||
*/
|
*/
|
||||||
function save($event, $ignore_acl=false)
|
function save($event, $ignore_acl=false)
|
||||||
{
|
{
|
||||||
//error_log(__METHOD__."(".str_replace(array("\n",' '),'',print_r($event,true)).",$etag)");
|
//echo '<p>'.__METHOD__.'('.array2string($event).",$ignore_acl)</p>\n";
|
||||||
|
//error_log(__METHOD__.'('.array2string($event).",$etag)");
|
||||||
// check if user has the permission to update / create the event
|
// check if user has the permission to update / create the event
|
||||||
if (!$ignore_acl && ($event['id'] && !$this->check_perms(EGW_ACL_EDIT,$event['id']) ||
|
if (!$ignore_acl && ($event['id'] && !$this->check_perms(EGW_ACL_EDIT,$event['id']) ||
|
||||||
!$event['id'] && !$this->check_perms(EGW_ACL_EDIT,0,$event['owner']) &&
|
!$event['id'] && !$this->check_perms(EGW_ACL_EDIT,0,$event['owner']) &&
|
||||||
|
@ -513,8 +513,8 @@ ORDER BY cal_user_type, cal_usre_id
|
|||||||
$minimum_uid_length = 8;
|
$minimum_uid_length = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
//echo '<p>'.__METHOD__."(,$change_since) event="; _debug_array($event);
|
//echo '<p>'.__METHOD__.'('.array2string($event).",$change_since) event="; _debug_array($event);
|
||||||
//error_log(__METHOD__."(".str_replace(array("\n",' '),'',print_r($event,true)).",$set_recurrences,$change_since,$etag)");
|
//error_log(__METHOD__.'('.array2string($event).",$set_recurrences,$change_since,$etag)");
|
||||||
|
|
||||||
$cal_id = (int) $event['id'];
|
$cal_id = (int) $event['id'];
|
||||||
unset($event['id']);
|
unset($event['id']);
|
||||||
@ -911,17 +911,19 @@ ORDER BY cal_user_type, cal_usre_id
|
|||||||
}
|
}
|
||||||
|
|
||||||
// existing participants must not be updated
|
// existing participants must not be updated
|
||||||
foreach($this->db->select($this->user_table,'DISTINCT cal_user_type,cal_user_id',$where,__LINE__,__FILE__,false,'','calendar') as $row)
|
foreach($this->db->select($this->user_table,'DISTINCT cal_user_type,cal_user_id,cal_quantity,cal_role',$where,__LINE__,__FILE__,false,'','calendar') as $row)
|
||||||
{
|
{
|
||||||
$existing_participants[] = self::combine_user($row['cal_user_type'],$row['cal_user_id']);
|
$existing_participants[self::combine_user($row['cal_user_type'],$row['cal_user_id'])] = self::combine_status('',$row['cal_quantity'],$row['cal_role']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!count($recurrences)) $recurrences[] = 0; // insert the default one
|
if (!count($recurrences)) $recurrences[] = 0; // insert the default one
|
||||||
|
|
||||||
foreach($participants as $uid => $status)
|
foreach($participants as $uid => $status)
|
||||||
{
|
{
|
||||||
if (in_array($uid,$existing_participants)) continue; // don't update existing participants
|
if (isset($existing_participants[$uid]) && substr($status,1) == $existing_participants[$uid])
|
||||||
|
{
|
||||||
|
continue; // dont update existing participants, if quantity or role is not changed
|
||||||
|
}
|
||||||
$id = null;
|
$id = null;
|
||||||
self::split_user($uid,$type,$id);
|
self::split_user($uid,$type,$id);
|
||||||
self::split_status($status,$quantity,$role);
|
self::split_status($status,$quantity,$role);
|
||||||
|
Loading…
Reference in New Issue
Block a user