diff options
author | Jason Oster <parasytic@users.sourceforge.net> | 2010-02-04 21:48:14 +0000 |
---|---|---|
committer | Jason Oster <parasytic@users.sourceforge.net> | 2010-02-04 21:48:14 +0000 |
commit | a59d9bbd30ce6516a5b3544e00bb2f059e06bca2 (patch) | |
tree | 2af720014c65208be20e40919810ce7d0611f53b /functions/parse | |
parent | 3cb1cbe20d1c9bf544c5b5b2292f5ca8eb0b9d2e (diff) | |
download | phpicalendar-a59d9bbd30ce6516a5b3544e00bb2f059e06bca2.tar.gz phpicalendar-a59d9bbd30ce6516a5b3544e00bb2f059e06bca2.tar.bz2 phpicalendar-a59d9bbd30ce6516a5b3544e00bb2f059e06bca2.zip |
Fix missing variable in last patch
Diffstat (limited to 'functions/parse')
-rw-r--r-- | functions/parse/recur_functions.php | 85 |
1 files changed, 43 insertions, 42 deletions
diff --git a/functions/parse/recur_functions.php b/functions/parse/recur_functions.php index 08b2bb1..ceab4e4 100644 --- a/functions/parse/recur_functions.php +++ b/functions/parse/recur_functions.php @@ -10,12 +10,12 @@ We will use two kinds of functions - those that restrict the date to allowed val function add_recur($times,$freq=''){ global $recur_data; - global $count, $mArray_begin, $mArray_end, $except_dates, $start_date, $start_date_unixtime,$end_range_unixtime,$until_unixtime, $day_offset, $current_view; + global $count, $mArray_begin, $mArray_end, $except_dates, $start_date, $start_date_unixtime,$end_range_unixtime,$until_unixtime, $day_offset, $current_view; if (!is_array($times)) $times = array($times); /* BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, BYHOUR, BYMINUTE, BYSECOND and BYSETPOS */ #dump_times($times); if ($current_view != 'search'){ - $times = restrict_bymonth($times,$freq); + $times = restrict_bymonth($times,$freq); # $times = restrict_byweekno($times,$freq); $times = restrict_byyearday($times,$freq); $times = restrict_bymonthday($times,$freq); @@ -23,28 +23,28 @@ function add_recur($times,$freq=''){ if($start_date_unixtime > $mArray_begin) $times[] = $start_date_unixtime; $times = restrict_bysetpos($times,$freq);#echo "restrict_bysetpos"; $times = array_unique($times); - sort($times); + sort($times); } $until_date = date("Ymd",$end_range_unixtime); - foreach ($times as $time){ + foreach ($times as $time){ #echo "time:". date("Ymd",$time)." $until_date<br>\n"; if (!isset($time) || $time == '') continue; $date = date("Ymd",$time); $time = strtotime("$date 12:00:00"); - # day offset fixes shifts across day boundaries due to time diffs. + # day offset fixes shifts across day boundaries due to time diffs. # These are already fixed for the initial instance, but need to be fixed for recurrences if (date("Ymd", $time) != $start_date) $time = $time + $day_offset * (24*60*60); - if(isset($time) + if(isset($time) && $time != '' - && !in_array($time, $recur_data) - && !in_array($date, $except_dates) - && $time <= $until_unixtime - && $time >= $start_date_unixtime + && !in_array($time, $recur_data) + && !in_array($date, $except_dates) + && $time <= $until_unixtime + && $time >= $start_date_unixtime && $date <= $until_date - ){ + ){ $count--; #echo "\n.$count\n"; - if($time >= $mArray_begin - && $time <= $mArray_end + if($time >= $mArray_begin + && $time <= $mArray_end && $count >= 0 ) $recur_data[] = $time; } @@ -55,14 +55,14 @@ function add_recur($times,$freq=''){ function expand_bymonth($time){ global $bymonth, $byweekno, $bymonthday, $year, $start_unixtime, $freq_type; if(!empty($byweekno)) return $time; - if(empty($bymonth)) $bymonth = array(date("m", $start_unixtime)); + if(empty($bymonth)) $bymonth = array(date("m", $start_unixtime)); $d = date("d",$start_unixtime); if (!empty($bymonthday)) $d = 1; - foreach ($bymonth as $m){ + foreach ($bymonth as $m){ $time = mktime(12,0,0,$m,$d,$year); #echo "exm:".date("Ymd",$time)."\n"; $times[] = $time; - } - return $times; + } + return $times; } function expand_byweekno($times){ global $byweekno, $year, $freq_type, $wkst, $wkst3char; @@ -72,8 +72,8 @@ function expand_byweekno($times){ if ($freq_type != 'year') return $times; if (empty($byweekno)) return $times; $total_weeks = date("W",mktime(12,0,0,12,24,$year) ) +1; - $w1_start = strtotime("this $wkst3char", mktime(12,0,0,1,1,$year) ); - foreach($byweekno as $weekno){ + $w1_start = strtotime("this $wkst3char", mktime(12,0,0,1,1,$year) ); + foreach($byweekno as $weekno){ if($weekno < 0) $weekno = $weekno + $total_weeks; #echo "\n $wkst3char w1st:".date("Ymd", $w1_start)." ".date("Ymd", mktime(12,0,0,1,1,$year))." weekno:$weekno"; $new_times[] = strtotime("+".(($weekno-1)*7)."days",$w1_start); @@ -85,15 +85,15 @@ function expand_byweekno($times){ function expand_byyearday($times){ global $byyearday, $year; if (empty($byyearday)) return $times; - $py = $year-1; + $py = $year-1; $ny = $year+1; $new_times = array(); - foreach($times as $time){ + foreach($times as $time){ foreach($byyearday as $yearday){ if($yearday > 0){ $day = strtotime("+$yearday days Dec 31, $py");#echo "\n".date("Ymd",$day)." = +$yearday days Dec 31, $py"; }else $day = strtotime("Jan 1 $ny $yearday days"); if(date("Y",$day == $year)) $new_times[] = $day; - } + } } # dump_times($new_times); return $new_times; @@ -102,14 +102,14 @@ function expand_byyearday($times){ function expand_bymonthday($times){ global $bymonthday, $year; if (empty($bymonthday)) return $times; - foreach($times as $time){ + foreach($times as $time){ $month = date('m',$time); - foreach($bymonthday as $monthday){ + foreach($bymonthday as $monthday){ if($monthday < 0) $monthday = date("t",$time) + $monthday +1; $new_times[] = mktime(12,0,0,$month,$monthday,$year); #echo "monthday:$monthday\n"; - } - } + } + } return $new_times; } @@ -131,21 +131,22 @@ function expand_byday($time){ switch($freq_type){ case 'week': #need to find the first day of the appropriate week. - $next_date_time = strtotime("this $on_day",strtotime($the_sunday)) + (12 * 60 * 60); - $times[] = $next_date_time; + $next_date_time = strtotime("this $on_day",strtotime($the_sunday)) + (12 * 60 * 60); + $times[] = $next_date_time; break; case 'month': $time = mktime(12,0,0,$month,1,$year); case 'year': if(empty($byweekno)){ $week_arr = array(1,2,3,4,5); - if(isset($byday_arr[2]) && $byday_arr[2] !='') $week_arr = array($byday_arr[2]); + if(isset($byday_arr[2]) && $byday_arr[2] !='') $week_arr = array($byday_arr[2]); $month_start = strtotime(date("Ym01",$time)) - (24 * 60 * 60); $month_end = strtotime(date("Ymt",$time))+ (36 * 60 * 60); if($freq_type == 'year' && empty($bymonth)){ $month_start = mktime(12,0,0,1,0,$year); $month_end = mktime(12,0,0,1,1,$year+1); } + $month_start_day = strtolower(date("D", $month_start)); foreach($week_arr as $week){ #echo "<pre>$summary ".$byday_arr[1].$week.$on_day." st:".date("Ymd",$month_start)." t:".date("Ymd",$time)."\n"; if($byday_arr[1] == '-') $next_date_time = strtotime($byday_arr[1].$week.$on_day,$month_end); @@ -157,17 +158,17 @@ function expand_byday($time){ $next_date_time = strtotime($byday_arr[1] . $week . $on_day, ($month_start + $special_offset)); } # check that we're still in the same month - if (date("m",$next_date_time) == date("m",$time) ) $times[] = $next_date_time; + if (date("m",$next_date_time) == date("m",$time) ) $times[] = $next_date_time; } }else{ # byweekno should act like freq_type = week - $next_date_time = strtotime("this $on_day",strtotime($the_sunday)) + (12 * 60 * 60); - $times[] = $next_date_time; + $next_date_time = strtotime("this $on_day",strtotime($the_sunday)) + (12 * 60 * 60); + $times[] = $next_date_time; } break; default: $month_start = strtotime(date("Ym01",$time)); - $next_date_time = strtotime($byday_arr[1].$byday_arr[2].$on_day, $month_start); + $next_date_time = strtotime($byday_arr[1].$byday_arr[2].$on_day, $month_start); } } #echo "exp byday";dump_times($times); @@ -179,9 +180,9 @@ function restrict_bymonth($times,$freq=''){ global $bymonth, $byyearday; if (empty($bymonth) || !empty($byyearday)) return $times; $new_times=array(); - foreach ($times as $time){ + foreach ($times as $time){ if(in_array(date("m", $time), $bymonth)) $new_times[] = $time; - } + } return $new_times; } function restrict_byweekno($times,$freq=''){ @@ -201,12 +202,12 @@ function restrict_byyearday($times,$freq=''){ if($yearday < 0){ $yearday = 365 + $yearday +1; if(date("L",$time)) $yearday += 1; - } + } $yearday_arr[] = $yearday; } # date(z,$time) gives 0 for Jan 1 if(in_array((date("z", $time)+1), $yearday_arr)) $new_times[] = $time; - } + } return $new_times; } @@ -218,9 +219,9 @@ function restrict_bymonthday($times,$freq=''){ foreach ($bymonthday as $monthday){ if($monthday < 0) $monthday = date("t",$time) + $monthday +1; $monthday_arr[] = $monthday; - } + } if(in_array(date("j", $time), $monthday_arr)) $new_times[] = $time; - } + } return $new_times; } function restrict_byday($times,$freq=''){ @@ -238,18 +239,18 @@ function restrict_byday($times,$freq=''){ } $new_times=array(); foreach ($times as $time) if(in_array(strtolower(date("D", $time)), $byday3)) $new_times[] = $time; - return $new_times; + return $new_times; } function restrict_bysetpos($times,$freq=''){ global $bysetpos; if(empty($bysetpos)) return $times; sort($times); - $new_times=array(); + $new_times=array(); foreach($bysetpos as $setpos){ $new_times[] = implode('',array_slice($times, $setpos, 1)); } - return $new_times; + return $new_times; } # for diagnostics |