From: <ji...@us...> - 2005-11-12 07:57:45
|
Update of /cvsroot/phpicalendar/phpicalendar/rss In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24628/phpicalendar/rss Modified Files: rss.php Log Message: fix rss.php bugs and merge multiday events Index: rss.php =================================================================== RCS file: /cvsroot/phpicalendar/phpicalendar/rss/rss.php,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** rss.php 30 Oct 2005 07:34:35 -0000 1.29 --- rss.php 12 Nov 2005 07:57:37 -0000 1.30 *************** *** 10,23 **** *********************************************************************************/ define('BASE', '../'); - include(BASE.'functions/ical_parser.php'); ! if ($enable_rss != 'yes') { ! die ("RSS feeds are not enabled on this site."); ! } //set the range of days to return based on the view chosen $rssview = $_GET['rssview']; ! ! if (!$getdate){$getdate = date("Ymd");} switch ($rssview){ --- 10,24 ---- *********************************************************************************/ define('BASE', '../'); ! include_once(BASE.'functions/date_functions.php'); ! //set the range of days to return based on the view chosen $rssview = $_GET['rssview']; ! if (isset($_GET['getdate'])){ ! $getdate = $_GET['getdate']; ! }else{ ! $getdate = date("Ymd"); ! } switch ($rssview){ *************** *** 27,30 **** --- 28,36 ---- $theview = $lang['l_day']; break; + case 'week': + $fromdate = dateOfWeek($getdate, $week_start_day); + $todate = $fromdate + 6; + $theview = $lang['l_week']." of ".date('n/d/Y',strtotime($fromdate)); + break; case 'month': $parse_month = date ("Ym", strtotime($getdate)); *************** *** 36,40 **** case 'daysfrom': $fromdate = $getdate; ! $todate = $getdate + $_GET['days']; #print "from:$fromdate to: $todate<br>"; $theview = $_GET['days']." days from ".date('n/d/Y',strtotime($fromdate)); --- 42,46 ---- case 'daysfrom': $fromdate = $getdate; ! $todate = date("Ymd", strtotime($getdate) + $_GET['days']*60*60*24); #print "from:$fromdate to: $todate<br>"; $theview = $_GET['days']." days from ".date('n/d/Y',strtotime($fromdate)); *************** *** 42,46 **** case 'daysto': $todate = $getdate; ! $fromdate = $getdate - $_GET['days']; #print "from:$fromdate to: $todate<br>"; $theview = $_GET['days']." days before ".date('n/d/Y',strtotime($todate)); --- 48,52 ---- case 'daysto': $todate = $getdate; ! $fromdate = date("Ymd", strtotime($getdate) - $_GET['days']*60*60*24); #print "from:$fromdate to: $todate<br>"; $theview = $_GET['days']." days before ".date('n/d/Y',strtotime($todate)); *************** *** 55,61 **** $fromdate = dateOfWeek($getdate, $week_start_day); $todate = $fromdate + 6; ! $theview = $lang['l_week']." of ".date('n/d/Y',strtotime($fromdate)); } //Set calendar or calendar directory name for feed //Note that this depends on other modifications I've made to --- 61,75 ---- $fromdate = dateOfWeek($getdate, $week_start_day); $todate = $fromdate + 6; ! $theview = ""; } + #need to give ical_parser the most distant date to correctly set up master_array. + $getdate = $todate; + #echo "from:$fromdate to:$todate"; + include(BASE.'functions/ical_parser.php'); + if ($enable_rss != 'yes') { + die ("RSS feeds are not enabled on this site."); + } + //Set calendar or calendar directory name for feed //Note that this depends on other modifications I've made to *************** *** 96,100 **** $rss .= '<rss version="0.91">'."\n"; $rss .= '<channel>'."\n"; ! $rss .= '<title>'.$cal_displayname.' - '.$theview.'</title>'."\n"; $rss .= '<link>'.htmlspecialchars ("$default_path").'</link>'."\n"; $rss .= '<description>'.$cal_displayname.' '.$lang['l_calendar'].' - '.$theview.'</description>'."\n"; --- 110,116 ---- $rss .= '<rss version="0.91">'."\n"; $rss .= '<channel>'."\n"; ! $rss .= '<title>'.$cal_displayname; ! if ($theview !=""){$rss .= ' - '.$theview;} ! $rss .= "</title>\n"; $rss .= '<link>'.htmlspecialchars ("$default_path").'</link>'."\n"; $rss .= '<description>'.$cal_displayname.' '.$lang['l_calendar'].' - '.$theview.'</description>'."\n"; *************** *** 108,120 **** # I use it as a date, dist uses it as a time $i = 0; #day counter ! do { $thisdate=date('Ymd', strtotime($thisdate)); ! #echo "Date: $thisdate\n"; $dayofweek = localizeDate ("%a %b %e %Y", strtotime($thisdate)); if (isset($master_array[($thisdate)]) && sizeof($master_array[($thisdate)]) > 0) { foreach ($master_array[("$thisdate")] as $event_times) { ! foreach ($event_times as $val) { if(!$val["event_start"]){ $event_start = "All Day"; }else{ --- 124,142 ---- # I use it as a date, dist uses it as a time $i = 0; #day counter ! $uid_arr = array(); do { $thisdate=date('Ymd', strtotime($thisdate)); ! #echo "Date: $thisdate<br>\n"; $dayofweek = localizeDate ("%a %b %e %Y", strtotime($thisdate)); if (isset($master_array[($thisdate)]) && sizeof($master_array[($thisdate)]) > 0) { foreach ($master_array[("$thisdate")] as $event_times) { ! foreach ($event_times as $uid=>$val) { if(!$val["event_start"]){ + if (isset($uid_arr[$uid])){ + $uid_arr[$uid] .= "+$dayofweek" ; + continue; + }else{ + $uid_arr[$uid] = "$dayofweek" ; + } $event_start = "All Day"; }else{ *************** *** 126,129 **** --- 148,152 ---- $event_text = str_replace('&','&',$event_text); $event_text = str_replace('&amp;','&',$event_text); + $event_text = urlencode($event_text); #uncomment for shorter event text with ... # $event_text = word_wrap($event_text, 21, $tomorrows_events_lines); *************** *** 136,143 **** $rss_title = htmlspecialchars ("$dayofweek: $event_text"); $rss_link = htmlspecialchars ("$default_path/day.php?getdate=$thisdate&cal=$cal&cpath=$cpath"); - if ($description == '') $description = $event_text; $rss_description = htmlspecialchars ("$dayofweek $event_start: $description"); $rss .= '<item>'."\n"; $rss .= '<title>'.$rss_title.'</title>'."\n"; /* --- 159,167 ---- $rss_title = htmlspecialchars ("$dayofweek: $event_text"); $rss_link = htmlspecialchars ("$default_path/day.php?getdate=$thisdate&cal=$cal&cpath=$cpath"); $rss_description = htmlspecialchars ("$dayofweek $event_start: $description"); $rss .= '<item>'."\n"; + $rss .= '<uid>'.$uid.'</uid>'."\n"; + $rss .= '<event_start>'.$event_start.'</event_start>'."\n"; $rss .= '<title>'.$rss_title.'</title>'."\n"; /* *************** *** 174,177 **** --- 198,212 ---- $rss .= '</rss>'."\n"; + foreach ($uid_arr as $uid=>$date_range){ + #echo "date_range:$date_range<br>"; + + if(strpos($date_range,"+")>0){ + #echo "+ in date_range<br>"; + $temp = explode("+",$date_range); + $date_range = $temp[0].'-'.array_pop($temp); + } + $rss = str_replace("<uid>$uid</uid>\n<event_start>all day</event_start>","<uid>$uid</uid>\n<event_start>$date_range</event_start>", $rss); + + } header ("Content-Type: text/xml"); |