fixed bug [ 928146 ] No conflic warning on multi-day events:

now all days of an event get checked in a for-loop, not only the first one if its equal the last one ;-)
This commit is contained in:
Ralf Becker 2004-05-23 09:42:15 +00:00
parent eed94133c3
commit 29d855cc7d

View File

@ -1308,22 +1308,15 @@
return False; return False;
} }
function overlap($starttime,$endtime,$participants,$owner=0,$id=0,$restore_cache=False) function overlap($starttime,$endtime,$participants,$owner=0,$ids=0,$restore_cache=False)
{ {
// $retval = Array(); $retval = False;
// $ok = False;
/* This needs some attention.. by commenting this chunk of code it will fix bug #444265 */
if($restore_cache) if($restore_cache)
{ {
$temp_cache_events = $this->cached_events; $temp_cache_events = $this->cached_events;
} }
// $temp_start = (int)$GLOBALS['phpgw']->common->show_date($starttime,'Ymd');
// $temp_start_time = (int)($GLOBALS['phpgw']->common->show_date($starttime,'Hi');
// $temp_end = (int)$GLOBALS['phpgw']->common->show_date($endtime,'Ymd');
// $temp_end_time = (int)$GLOBALS['phpgw']->common->show_date($endtime,'Hi');
$temp_start = (int)(date('Ymd',$starttime)); $temp_start = (int)(date('Ymd',$starttime));
$temp_start_time = (int)(date('Hi',$starttime)); $temp_start_time = (int)(date('Hi',$starttime));
$temp_end = (int)(date('Ymd',$endtime)); $temp_end = (int)(date('Ymd',$endtime));
@ -1337,7 +1330,7 @@
$users = Array(); $users = Array();
if(count($participants)) if(count($participants))
{ {
while(list($user,$status) = each($participants)) foreach($participants as $user => $status)
{ {
$users[] = $user; $users[] = $user;
} }
@ -1359,43 +1352,37 @@
) )
); );
if($this->debug) for($ts = $starttime; $ts <= $endtime; $ts += 24*60*60)
{ {
echo '<!-- Possible Conflicts ('.($temp_start - 1).'): '.count($possible_conflicts[$temp_start - 1]).' -->'."\n"; $check_ymd = (int) date('Ymd',$ts);
echo '<!-- Possible Conflicts ('.$temp_start.'): '.count($possible_conflicts[$temp_start]).' '.count($id).' -->'."\n"; if (isset($possible_conflicts[$check_ymd]) && is_array($possible_conflicts[$check_ymd]) &&
} count($possible_conflicts[$check_ymd]))
if($possible_conflicts[$temp_start] || $possible_conflicts[$temp_end])
{
if($temp_start == $temp_end)
{ {
if($this->debug) if($this->debug)
{ {
echo '<!-- Temp_Start == Temp_End -->'."\n"; echo '<!-- Found '.count($possible_conflicts[$check_ymd]).' possible conflicts for date '.$check_ymd.' -->'."\n";
} }
@reset($possible_conflicts[$temp_start]); foreach($possible_conflicts[$check_ymd] as $event)
while(list($key,$event) = each($possible_conflicts[$temp_start]))
{ {
$found = False; $found = False;
if($id) if(is_array($ids))
{ {
@reset($id); foreach($ids as $event_id)
while(list($key,$event_id) = each($id))
{ {
if($this->debug) if($this->debug)
{ {
echo '<!-- $id['.$key.'] = '.$id[$key].' = '.$event_id.' -->'."\n"; echo '<!-- Checking '.$event['id'].' == '.$event_id.' -->'."\n";
echo '<!-- '.$event['id'].' == '.$event_id.' -->'."\n";
} }
if($event['id'] == $event_id) if($event['id'] == $event_id)
{ {
$found = True; $found = True; // conflict with original event, is no conflict
break;
} }
} }
} }
if($this->debug) if($this->debug)
{ {
echo '<!-- Item found: '.$found.' -->'."<br>\n"; echo '<!-- conflict with a different event: '.($found?'No':'Yes').' -->'."<br>\n";
} }
if(!$found) if(!$found)
{ {
@ -1432,16 +1419,10 @@
} }
} }
} }
else
{
$retval = False;
}
if($restore_cache) if($restore_cache)
{ {
$this->cached_events = $temp_cache_events; $this->cached_events = $temp_cache_events;
} }
return $retval; return $retval;
} }