so class STEP1: reverted wrong recurrence rebuild with $max. fixed not working move() method for egw_cal_user. fixed participant status orphans

This commit is contained in:
Christian Binder 2009-07-17 14:49:19 +00:00
parent 86db825cbf
commit e77ed49566

View File

@ -606,11 +606,9 @@ ORDER BY cal_user_type, cal_usre_id
$set_recurrences = (isset($event['cal_start']) && (int)$min != (int) $event['cal_start']) ||
$event['recur_type'] != $old_recur['recur_type'] || $event['recur_data'] != $old_recur['recur_data'] ||
(int)$event['recur_interval'] != (int)$old_recur['recur_interval'] || $event['recur_enddate'] != $old_recur['recur_enddate'] ||
count(array_diff($old_exceptions,$event['recur_exception'])); // exception deleted or added
$max = (int) $this->db->select($this->dates_table,'MAX(cal_start)',array('cal_id'=>$cal_id),__LINE__,__FILE__,false,'','calendar')->fetchColumn();
} else {
$max = 0;
count(array_diff($old_exceptions,$event['recur_exception'])); // exception deleted (jaytraxx: handling this better follows soon)
}
$event['recur_exception'] = empty($event['recur_exception']) ? null : implode(',',$event['recur_exception']);
unset($event[0]); // unset the 'etag=etag+1', as it's not in the repeats table
if($event['recur_type'] != MCAL_RECUR_NONE)
@ -623,21 +621,16 @@ ORDER BY cal_user_type, cal_usre_id
}
if ($set_recurrences)
{
if ((int)$min != (int)$event['cal_start'])
{
// We need to reset all recurrences
$max = -1;
}
// delete all, but the lowest dates record
$this->db->delete($this->dates_table,array(
'cal_id' => $cal_id,
'cal_start > '.(int)$min,
),__LINE__,__FILE__,'calendar');
// delete all user-records, with recur-date > old enddate
// delete all user-records, with recur-date != 0
$this->db->delete($this->user_table,array(
'cal_id' => $cal_id,
'cal_recur_date > '.(int)$max,
'cal_recur_date != 0',
),__LINE__,__FILE__,'calendar');
}
}
@ -753,7 +746,7 @@ ORDER BY cal_user_type, cal_usre_id
{
// move the recur-date of the participants
$this->db->query("UPDATE $this->user_table SET cal_recur_date=cal_recur_date+$move_start WHERE $where AND cal_recur_date ".
((int)$change_since ? '>= '.(int)$change_since : '!= 0') + " ORDER BY cal_recur_date DESC",__LINE__,__FILE__);
((int)$change_since ? '>= '.(int)$change_since : '!= 0') . " ORDER BY cal_recur_date DESC",__LINE__,__FILE__);
}
if ($move_start || $move_end)
{
@ -830,7 +823,6 @@ ORDER BY cal_user_type, cal_usre_id
if ($change_since !== false) // existing entries only
{
// delete not longer set participants
$where[0] = 'cal_recur_date=0';
$deleted = array();
foreach($this->db->select($this->user_table,'DISTINCT cal_user_type,cal_user_id,cal_quantity',$where,
__LINE__,__FILE__,false,'','calendar') as $row)
@ -848,7 +840,6 @@ ORDER BY cal_user_type, cal_usre_id
unset($participants[$uid]); // we don't touch them
}
}
unset($where[0]);
if (count($deleted))
{