--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-content/plugins/event-calendar/template-functions.php Wed Feb 03 15:37:20 2010 +0000
@@ -0,0 +1,820 @@
+<?php
+/*
+Copyright (c) 2005-2008, Alex Tingle. $Revision: 287 $
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+
+/** Report an error if EventCalendar not yet installed. */
+function ec3_check_installed($title)
+{
+ global $ec3;
+ if(!$ec3->event_category)
+ {?>
+ <div style="background-color:black; color:red; border:2px solid red; padding:1em">
+ <div style="font-size:large"><?php echo $title; ?></div>
+ <?php _e('You must choose an event category.','ec3'); ?>
+ <a style="color:red; text-decoration:underline" href="<?php echo
+ get_option('home');?>/wp-admin/options-general.php?page=ec3_admin">
+ <?php _e('Go to Event Calendar Options','ec3'); ?>
+ </a>
+ </div>
+ <?php
+ }
+ return $ec3->event_category;
+}
+
+
+/** Calculate the header (days of week). */
+function ec3_util_thead()
+{
+ global
+ $ec3,
+ $weekday,
+ $weekday_abbrev,
+ $weekday_initial;
+
+ $result="<thead><tr>\n";
+
+ $start_of_week =intval( get_option('start_of_week') );
+ for($i=0; $i<7; $i++)
+ {
+ $full_day_name=$weekday[ ($i+$start_of_week) % 7 ];
+ if(3==$ec3->day_length)
+ $display_day_name=$weekday_abbrev[$full_day_name];
+ elseif($ec3->day_length<3)
+ $display_day_name=$weekday_initial[$full_day_name];
+ else
+ $display_day_name=$full_day_name;
+ $result.="\t<th abbr='$full_day_name' scope='col' title='$full_day_name'>"
+ . "$display_day_name</th>\n";
+ }
+
+ $result.="</tr></thead>\n";
+ return $result;
+}
+
+
+/** Echos the event calendar navigation controls. */
+/* modified by samuel huron 05/01/2010 */
+function ec3_get_calendar_nav($date,$num_months)
+{
+ global $ec3;
+ echo "<table class='nav'><tbody><tr>\n";
+
+ // Previous
+ $prev=$date->prev_month();
+ echo "\t<td id='prev'><a id='ec3_prev' href='" . $prev->month_link() . "'"
+ . '>« ' . $prev->month_abbrev() . "</a></td>\n";
+
+ // --------------------------------------------------------------------------
+ // start modified by sam
+
+ /*
+ // iCalendar link.
+ $webcal=get_option('home') . "/?ec3_ical";
+ // Macintosh always understands webcal:// protocol.
+ // It's hard to guess on other platforms, so stick to http://
+ if(strstr($_SERVER['HTTP_USER_AGENT'],'Mac OS X'))
+ $webcal=preg_replace('/^http:/','webcal:',$webcal);
+ echo "\t <a id='ec3_publish' href='$webcal'"
+ . " title='" . __('Subscribe to iCalendar.','ec3') ."'>\n"
+ . "\t <img src='$ec3->myfiles/publish.gif' alt='iCalendar' />\n"
+ . "\t </a>\n";*/
+ echo "\t</td>\n";
+ // -------------------------------------------------------------------------- stop
+
+
+ // Next
+ $next=$date->plus_months($num_months);
+ echo "\t<td id='next'><a id='ec3_next' href='" . $next->month_link() . "'"
+ . '>' . $next->month_abbrev() . " »</a></td>\n";
+
+ echo "</tr></tbody></table>\n";
+}
+
+
+/** Generates an array of all 'ec3_Day's between the start of
+ * begin_month & end_month. Indexed by day_id.
+ * month_id is in the form: ec3_<year_num>_<month_num> */
+function ec3_util_calendar_days($begin_month_id,$end_month_id)
+{
+ $begin_date=date('Y-m-d 00:00:00',ec3_dayid2php($begin_month_id));
+ $end_date =date('Y-m-d 00:00:00',ec3_dayid2php($end_month_id));
+ global $ec3, $wpdb;
+
+ $sql=
+ "SELECT DISTINCT
+ id,
+ post_title,
+ GREATEST(start,'$begin_date') AS start_date,
+ LEAST(end,'$end_date') AS end_date,
+ allday,
+ 1 AS is_event
+ FROM $wpdb->posts,$ec3->schedule
+ WHERE post_status='publish'
+ AND post_type='post'
+ AND post_id=id
+ AND end>='$begin_date'
+ AND start<'$end_date'";
+ if(!$ec3->show_only_events)
+ {
+ // We are interested in normal posts, as well as events.
+ $sql="( $sql ) UNION
+ ( SELECT DISTINCT
+ id,
+ post_title,
+ post_date AS start_date,
+ post_date AS end_date,
+ 0 AS allday,
+ 0 AS is_event
+ FROM $wpdb->posts
+ WHERE post_status='publish'
+ AND post_type='post'
+ AND post_date>='$begin_date'
+ AND post_date<'$end_date'
+ AND post_date<NOW()
+ )";
+ }
+ $sql.=' ORDER BY id, allday DESC, start_date, is_event DESC';
+ $calendar_entries = $wpdb->get_results($sql);
+
+ $calendar_days = array(); // result
+ if(!$calendar_entries)
+ return $calendar_days;
+
+ // In advanced mode, we don't want to show events as blog posts in the cal.
+ $ignore_post_ids=array();
+ if($ec3->advanced && !$ec3->show_only_events)
+ {
+ foreach($calendar_entries as $ent)
+ if($ent->is_event)
+ $ignore_post_ids[] = $ent->id;
+ }
+
+ $current_post_id=0;
+ $current_day_id ='';
+ $time_format=get_option('time_format');
+ $allday=str_replace(' ',' ',__('all day','ec3')); // #160==nbsp
+ foreach($calendar_entries as $ent)
+ {
+ if(!$ent->is_event && in_array($ent->id,$ignore_post_ids))
+ continue;
+ if($current_post_id!=$ent->id)
+ {
+ $current_post_id=$ent->id;
+ $current_day_id='';
+ }
+ $date=ec3_mysql2date($ent->start_date);
+ $end_date=ec3_mysql2date($ent->end_date);
+ while(true)
+ {
+ $day_id=$date->day_id();
+ if($current_day_id==$day_id)
+ break;
+ $current_day_id=$day_id;
+ if(empty($calendar_days[$day_id]))
+ $calendar_days[$day_id] = new ec3_Day();
+
+ if($ent->allday)
+ $time=$allday;
+ else
+ $time=mysql2date($time_format,$ent->start_date);
+ //?? Should only record start time on FIRST day.
+ $calendar_days[$day_id]->add_post($ent->post_title,$time,$ent->is_event);
+ if($date->to_unixdate()==$end_date->to_unixdate())
+ break;
+ $date->increment_day();
+ }
+ }
+ return $calendar_days;
+}
+
+/** Echos one event calendar month table. */
+function ec3_get_calendar_month($date,$calendar_days,$thead)
+{
+ global $ec3;
+ //
+ // Table start.
+ $title=
+ sprintf(__('View posts for %1$s %2$s'),$date->month_name(),$date->year_num);
+ echo "<table id='" . $date->month_id() . "' >\n<caption>"
+ . '<a href="' . $date->month_link() . '" title="' . $title . '">'
+ . $date->month_name() . ' ' . $date->year_num . "</a></caption>\n";
+ echo $thead;
+
+ //
+ // Table body
+ echo "<tbody>\n\t<tr>";
+
+ $days_in_month =$date->days_in_month();
+ $week_day=( $date->week_day() + 7 - intval(get_option('start_of_week')) ) % 7;
+ $col =0;
+
+ while(True)
+ {
+ if($col>6)
+ {
+ echo "</tr>\n\t<tr>";
+ $col=0;
+ }
+ if($col<$week_day)
+ {
+ // insert padding
+ $pad=$week_day-$col;
+ echo "<td colspan='$pad' class='pad'> </td>";
+ $col=$week_day;
+ }
+ // insert day
+ $day_id = $date->day_id();
+ echo "<td id='$day_id'";
+
+ if(array_key_exists($day_id,$calendar_days))
+ {
+ echo ' class="ec3_postday';
+ if($calendar_days[$day_id]->is_event)
+ echo ' ec3_eventday';
+ echo '">';
+ echo '<a href="' . $date->day_link()
+ . '" title="' . $calendar_days[$day_id]->get_titles() . '"';
+ if($calendar_days[$day_id]->is_event)
+ echo ' class="eventday"';
+ echo ">$date->day_num</a>";
+ }
+ else
+ {
+ echo '>' . $date->day_num;
+ }
+
+ echo '</td>';
+
+ $col++;
+ $date->increment_day();
+ if(1==$date->day_num)
+ break;
+ $week_day=($week_day+1) % 7;
+ }
+ // insert padding
+ $pad=7-$col;
+ if($pad>1)
+ echo "<td colspan='$pad' class='pad' style='vertical-align:bottom'>"
+ . "<a href='http://blog.firetree.net/?ec3_version=$ec3->version'"
+ . " title='Event Calendar $ec3->version'"
+ . ($ec3->hide_logo? " style='display:none'>": ">")
+ . "<span class='ec3_ec'><span>EC</span></span></a></td>";
+ elseif($pad)
+ echo "<td colspan='$pad' class='pad'> </td>";
+
+ echo "</tr>\n</tbody>\n</table> <!-- LA --> ";
+}
+
+
+/** Template function. Call this from your template to insert the
+ * Event Calendar. */
+function ec3_get_calendar()
+{
+ if(!ec3_check_installed(__('Event Calendar','ec3')))
+ return;
+ global $ec3;
+
+ // Can't cope with more than one calendar on the same page. Everything has
+ // a unique ID, so it can't be duplicated.
+ // Simple fix for problem: Just ignore all calls after the first.
+ $ec3->call_count++;
+ if($ec3->call_count>1)
+ {
+ echo "<!-- You can only have one Event Calendar on each page. -->\n";
+ return;
+ }
+
+ echo "<div id='wp-calendar'>\n";
+
+ $this_month = new ec3_Date();
+
+ // Display navigation panel.
+ if(0==$ec3->navigation)
+ ec3_get_calendar_nav($this_month,$ec3->num_months);
+
+ // Get entries
+ $end_month=$this_month->plus_months($ec3->num_months);
+ $calendar_days =
+ ec3_util_calendar_days(
+ $this_month->month_id(),
+ $end_month->month_id()
+ );
+
+ // Display months.
+ $thead=ec3_util_thead();
+ for($i=0; $i<$ec3->num_months; $i++)
+ {
+ $next_month=$this_month->next_month();
+ ec3_get_calendar_month($this_month,$calendar_days,$thead);
+ $this_month=$next_month;
+ }
+
+ // ------------------------------
+ //modified
+
+ echo "</div>\n";
+
+ // Display navigation panel.
+ if(1==$ec3->navigation)
+ ec3_get_calendar_nav(new ec3_Date(),$ec3->num_months);
+
+
+ if(!$ec3->disable_popups)
+ echo "\t<script type='text/javascript' src='"
+ . $ec3->myfiles . "/popup.js'></script>\n";
+}
+
+
+/** Substitutes placeholders like '%key%' in $format with 'value' from $data
+ * array. */
+function ec3_format_str($format,$data)
+{
+ foreach($data as $k=>$v)
+ $format=str_replace("%$k%",$v,$format);
+ echo ("<!-- ".$k."".$v." -->");
+ return $format;
+}
+
+
+define('EC3_DEFAULT_TEMPLATE_EVENT','<a href="%LINK%">%TITLE% (%TIME%)</a>');
+define('EC3_DEFAULT_TEMPLATE_DAY', '%DATE% :');
+define('EC3_DEFAULT_DATE_FORMAT', 'j F');
+define('EC3_DEFAULT_TEMPLATE_MONTH','');
+define('EC3_DEFAULT_MONTH_FORMAT', 'F Y');
+
+/** Template function. Call this from your template to insert a list of
+ * forthcoming events. Available template variables are:
+ * - template_day: %DATE% %SINCE% (only with Time Since plugin)
+ * - template_event: %DATE% %TIME% %LINK% %TITLE% %AUTHOR%
+ */
+
+// version racine
+ function ec3_get_events(
+ $limit,
+ $template_event=EC3_DEFAULT_TEMPLATE_EVENT,
+ $template_day =EC3_DEFAULT_TEMPLATE_DAY,
+ $date_format =EC3_DEFAULT_DATE_FORMAT,
+ $template_month=EC3_DEFAULT_TEMPLATE_MONTH,
+ $month_format =EC3_DEFAULT_MONTH_FORMAT)
+{
+ if(!ec3_check_installed(__('Upcoming Events','ec3')))
+ return;
+ global $ec3,$wpdb,$wp_version;
+
+ // Parse $limit:
+ // NUMBER - limits number of posts
+ // NUMBER days - next NUMBER of days
+ if(empty($limit))
+ {
+ $limit_numposts='LIMIT 5';
+ }
+ elseif(preg_match('/^ *([0-9]+) *d(ays?)?/',$limit,$matches))
+ {
+ $secs=intval($matches[1])*24*3600;
+ $and_before="AND start<='".ec3_strftime('%Y-%m-%d',time()+$secs)."'";
+ }
+ elseif(intval($limit)<1)
+ {
+ $limit_numposts='LIMIT 5';
+ }
+ else
+ {
+ $limit_numposts='LIMIT '.intval($limit);
+ }
+
+ if(!$date_format)
+ $date_format=get_option('date_format');
+
+ // Find the upcoming events.
+ $calendar_entries = $wpdb->get_results(
+ "SELECT DISTINCT
+ p.id AS id,
+ post_title,
+ start,
+ u.$ec3->wp_user_nicename AS author,
+ allday
+ FROM $ec3->schedule s
+ LEFT JOIN $wpdb->posts p ON s.post_id=p.id
+ LEFT JOIN $wpdb->users u ON p.post_author = u.id
+ WHERE p.post_status='publish'
+ AND end>='$ec3->today' $and_before
+ ORDER BY start $limit_numposts"
+ );
+
+ echo "<ul class='ec3_events'>";
+ echo "<!-- Generated by Event Calendar v$ec3->version -->\n";
+ if($calendar_entries)
+ {
+ $time_format=get_option('time_format');
+ $current_month=false;
+ $current_date=false;
+ $data=array();
+ foreach($calendar_entries as $entry)
+ {
+ // To use %SINCE%, you need Dunstan's 'Time Since' plugin.
+ if(function_exists('time_since'))
+ $data['SINCE']=time_since( time(), ec3_to_time($entry->start) );
+
+ // Month changed?
+ $data['MONTH']=mysql2date($month_format,$entry->start);
+ if((!$current_month || $current_month!=$data['MONTH']) && $template_month)
+ {
+ if($current_date)
+ echo "</ul></li>\n";
+ if($current_month)
+ echo "</ul></li>\n";
+ echo "<li class='ec3_list ec3_list_month'>"
+ . ec3_format_str($template_month,$data)."\n<ul>\n";
+ $current_month=$data['MONTH'];
+ $current_date=false;
+ }
+
+ // Date changed?
+ $data['DATE'] =mysql2date($date_format, $entry->start);
+ if((!$current_date || $current_date!=$data['DATE']) && $template_day)
+ {
+ if($current_date)
+ echo "</ul></li>\n";
+ echo "<li class='ec3_list ec3_list_day'>"
+ . ec3_format_str($template_day,$data)."\n<ul>\n";
+ $current_date=$data['DATE'];
+ }
+
+ if($entry->allday)
+ $data['TIME']=__('all day','ec3');
+ else
+ $data['TIME']=mysql2date($time_format,$entry->start);
+
+ $data['TITLE'] =
+ htmlentities(
+ stripslashes(strip_tags($entry->post_title)),
+ ENT_QUOTES,get_option('blog_charset')
+ );
+ $data['LINK'] =get_permalink($entry->id);
+ $data['AUTHOR']=
+ htmlentities($entry->author,ENT_QUOTES,get_option('blog_charset'));
+ echo " <li>".ec3_format_str($template_event,$data)."</li>\n";
+ }
+ if($current_date)
+ echo "</ul></li>\n";
+ if($current_month)
+ echo "</ul></li>\n";
+ }
+ else
+ {
+ echo "<li>".__('No events.','ec3')."</li>\n";
+ }
+ echo "</ul>\n";
+}
+
+
+// version accordeon by samuel huron
+function ec3_get_events_acc(
+ $limit,
+ $template_event=EC3_DEFAULT_TEMPLATE_EVENT,
+ $template_day =EC3_DEFAULT_TEMPLATE_DAY,
+ $date_format =EC3_DEFAULT_DATE_FORMAT,
+ $template_month=EC3_DEFAULT_TEMPLATE_MONTH,
+ $month_format =EC3_DEFAULT_MONTH_FORMAT)
+{
+ if(!ec3_check_installed(__('Upcoming Events','ec3')))
+ return;
+ global $ec3,$wpdb,$wp_version;
+
+ // Parse $limit:
+ // NUMBER - limits number of posts
+ // NUMBER days - next NUMBER of days
+ if(empty($limit))
+ {
+ $limit_numposts='LIMIT 5';
+ }
+ elseif(preg_match('/^ *([0-9]+) *d(ays?)?/',$limit,$matches))
+ {
+ $secs=intval($matches[1])*24*3600;
+ $and_before="AND start<='".ec3_strftime('%Y-%m-%d',time()+$secs)."'";
+ }
+ elseif(intval($limit)<1)
+ {
+ $limit_numposts='LIMIT 5';
+ }
+ else
+ {
+ $limit_numposts='LIMIT '.intval($limit);
+ }
+
+ if(!$date_format)
+ $date_format=get_option('date_format');
+
+ // Find the upcoming events.
+ $calendar_entries = $wpdb->get_results(
+ "SELECT DISTINCT
+ p.id AS id,
+ post_title,
+ start,
+ u.$ec3->wp_user_nicename AS author,
+ allday
+ FROM $ec3->schedule s
+ LEFT JOIN $wpdb->posts p ON s.post_id=p.id
+ LEFT JOIN $wpdb->users u ON p.post_author = u.id
+ WHERE p.post_status='publish'
+ AND end>='$ec3->today' $and_before
+ ORDER BY start $limit_numposts"
+ );
+
+ echo "<!-- Generated by Event Calendar v$ec3->version Modified by samuel huron for acc integration -->\n";
+ echo "<ul id='accordion_nav'>";
+ // echo "<li id='test'>test</li>";
+ if($calendar_entries)
+ {
+ $time_format=get_option('time_format');
+ $current_month=false;
+ $current_date=false;
+ $data=array();
+ foreach($calendar_entries as $entry)
+ {
+ // To use %SINCE%, you need Dunstan's 'Time Since' plugin.
+ if(function_exists('time_since'))
+ $data['SINCE']=time_since( time(), ec3_to_time($entry->start) );
+
+ // Month changed?
+ $data['MONTH']=mysql2date($month_format,$entry->start);
+ if((!$current_month || $current_month!=$data['MONTH']) && $template_month)
+ {
+ if($current_date)
+ echo "</ul></li>\n";
+ if($current_month)
+ $id_accordion=str_replace(" ", "_",ec3_format_str($template_month,$data));
+ $id_accordion=str_replace(":", "",$id_accordion);
+ echo " </ul></li>\n";
+ echo "<li id='ec3_list ec3_list_month'> <a href='#".$id_accordion."' class='heading' >".ec3_format_str($template_month,$data)."</a> \n<ul id=".$id_accordion.">\n";
+ $current_month=$data['MONTH'];
+ $current_date=false;
+ }
+
+
+ // Date changed?
+ $data['DATE'] =mysql2date($date_format, $entry->start);
+ if((!$current_date || $current_date!=$data['DATE']) && $template_day)
+ {
+ if($current_date)
+ echo "</ul></li>\n";
+ $id_accordion=str_replace(" ", "_",ec3_format_str($template_day,$data));
+ $id_accordion=str_replace(":", "",$id_accordion);
+ echo "<li > <a href='#".$id_accordion."' class='heading' >".ec3_format_str($template_day,$data)."</a> \n <ul id=".$id_accordion.">\n";
+ $current_date=$data['DATE'];
+ }
+
+ if($entry->allday)
+ $data['TIME']=__('all day','ec3');
+ else
+ $data['TIME']=mysql2date($time_format,$entry->start);
+
+ $data['TITLE'] =
+ htmlentities(
+ stripslashes(strip_tags($entry->post_title)),
+ ENT_QUOTES,get_option('blog_charset')
+ );
+ $data['LINK'] =get_permalink($entry->id);
+ $data['AUTHOR']=
+ htmlentities($entry->author,ENT_QUOTES,get_option('blog_charset'));
+ echo " <li>".ec3_format_str($template_event,$data)."</li>\n";
+ }
+ if($current_date)
+ echo "</ul></li>\n";
+ if($current_month)
+ echo "</ul></li>\n";
+ }
+ else
+ {
+ echo "<li>".__('No events.','ec3')."</li>\n";
+ }
+ echo " \n </ul> \n <div class='ui-helper-clearfix'> </div>";
+}
+
+// version pour la home by samuel huron
+function ec3_get_events_home(
+ $limit,
+ $template_event=EC3_DEFAULT_TEMPLATE_EVENT,
+ $template_day =EC3_DEFAULT_TEMPLATE_DAY,
+ $date_format =EC3_DEFAULT_DATE_FORMAT,
+ $template_month=EC3_DEFAULT_TEMPLATE_MONTH,
+ $month_format =EC3_DEFAULT_MONTH_FORMAT)
+{
+ if(!ec3_check_installed(__('Upcoming Events','ec3')))
+ return;
+ global $ec3,$wpdb,$wp_version;
+
+ // Parse $limit:
+ // NUMBER - limits number of posts
+ // NUMBER days - next NUMBER of days
+ if(empty($limit))
+ {
+ $limit_numposts='LIMIT 5';
+ }
+ elseif(preg_match('/^ *([0-9]+) *d(ays?)?/',$limit,$matches))
+ {
+ $secs=intval($matches[1])*24*3600;
+ $and_before="AND start<='".ec3_strftime('%Y-%m-%d',time()+$secs)."'";
+ }
+ elseif(intval($limit)<1)
+ {
+ $limit_numposts='LIMIT 5';
+ }
+ else
+ {
+ $limit_numposts='LIMIT '.intval($limit);
+ }
+
+ if(!$date_format)
+ $date_format = get_option('date_format');
+
+ // echo("<!-- ".get_option('date_format')." -->");
+
+ // Find the upcoming events.
+ $calendar_entries = $wpdb->get_results(
+ "SELECT DISTINCT
+ p.id AS id,
+ post_title,
+ post_content,
+ start,
+ u.$ec3->wp_user_nicename AS author,
+ allday
+ FROM $ec3->schedule s
+ LEFT JOIN $wpdb->posts p ON s.post_id=p.id
+ LEFT JOIN $wpdb->users u ON p.post_author = u.id
+ WHERE p.post_status='publish'
+ AND end>='$ec3->today' $and_before
+ ORDER BY start $limit_numposts"
+ );
+
+ echo "<!-- Generated by Event Calendar v$ec3->version Modified by samuel huron for home integration -->\n";
+ echo "<ul>";
+ // echo "<li id='test'>test</li>";
+ if($calendar_entries)
+ {
+ $time_format=get_option('time_format');
+ $current_month=false;
+ $current_date=false;
+ $data=array();
+ foreach($calendar_entries as $entry)
+ {
+ // To use %SINCE%, you need Dunstan's 'Time Since' plugin.
+ if(function_exists('time_since'))
+ $data['SINCE']=time_since( time(), ec3_to_time($entry->start) );
+
+ // Month changed?
+ $data['MONTH']=mysql2date($month_format,$entry->start);
+ if((!$current_month || $current_month!=$data['MONTH']) && $template_month)
+ {
+ if($current_date)
+ echo "</ul></li>\n";
+ if($current_month)
+ $id_accordion=str_replace(" ", "_",ec3_format_str($template_month,$data));
+ $id_accordion=str_replace(":", "",$id_accordion);
+ echo " </ul></li>\n";
+ echo "<li id='ec3_list ec3_list_month'> ".ec3_format_str($template_month,$data)." \n<ul id=".$id_accordion.">\n";
+ echo "<!-- ".$data." -->";
+ $current_month=$data['MONTH'];
+ $current_date=false;
+ }
+
+
+ // Date changed?
+ $data['DATE'] =mysql2date($date_format, $entry->start);
+ if((!$current_date || $current_date!=$data['DATE']) && $template_day)
+ {
+ if($current_date)
+ echo "</ul></li>\n";
+ $id_accordion=str_replace(" ", "_",ec3_format_str($template_day,$data));
+ $id_accordion=str_replace(":", "",$id_accordion);
+ echo "<li > ".ec3_format_str($template_day,$data).$data['YEAR']." \n <ul id=".$id_accordion.">\n";
+ $current_date=$data['DATE'];
+ }
+
+ if($entry->allday)
+ $data['TIME']=__('all day','ec3');
+ else
+ $data['TIME']=mysql2date($time_format,$entry->start);
+
+ $data['TITLE'] =
+ htmlentities(
+ stripslashes(strip_tags($entry->post_title)),
+ ENT_QUOTES,get_option('blog_charset')
+ );
+ $data['RESUME'] =
+ htmlentities(
+ stripslashes(strip_tags(substr($entry->post_content,0,400)."[...]")),
+ ENT_QUOTES,get_option('blog_charset')
+ );
+ $data['LINK'] =get_permalink($entry->id);
+ $data['AUTHOR']=
+ htmlentities($entry->author,ENT_QUOTES,get_option('blog_charset'));
+ //echo " <li>".ec3_format_str($template_event,$data)."</li>\n";
+ echo " <a href='".$data['LINK']."' nicetitle='".$data['RESUME']."' >".$data['TITLE']."</a>\n";
+ }
+ if($current_date)
+ echo "</ul></li>\n";
+ if($current_month)
+ echo "</ul></li>\n";
+ }
+ else
+ {
+ echo "<li>".__('No events.','ec3')."</li>\n";
+ }
+ echo " \n </ul> \n";
+}
+
+
+define('EC3_DEFAULT_FORMAT_SINGLE','<tr><td colspan="3">%s</td></tr>');
+define('EC3_DEFAULT_FORMAT_RANGE','<tr><td class="ec3_start">%1$s</td>'
+ . '<td class="ec3_to">%3$s</td><td class="ec3_end">%2$s</td></tr>');
+define('EC3_DEFAULT_FORMAT_WRAPPER','<table class="ec3_schedule">%s</table>');
+
+/** Formats the schedule for the current post.
+ * Returns the HTML fragment as a string. */
+function ec3_get_schedule(
+ $format_single =EC3_DEFAULT_FORMAT_SINGLE,
+ $format_range =EC3_DEFAULT_FORMAT_RANGE,
+ $format_wrapper=EC3_DEFAULT_FORMAT_WRAPPER
+)
+{
+ global $ec3,$post;
+ // Should have been set by ec3_filter_the_posts()
+ if(!$post || !$post->ec3_schedule)
+ return '';
+ $result='';
+ $date_format=get_option('date_format');
+ $time_format=get_option('time_format');
+ $current=false;
+ foreach($post->ec3_schedule as $s)
+ {
+ $date_start=mysql2date($date_format,$s->start);
+ $date_end =mysql2date($date_format,$s->end);
+ $time_start=mysql2date($time_format,$s->start);
+ $time_end =mysql2date($time_format,$s->end);
+
+ if($s->allday)
+ {
+ if($date_start!=$date_end)
+ {
+ $result.=sprintf($format_range,$date_start,$date_end,__('to','ec3'));
+ }
+ elseif($date_start!=$current)
+ {
+ $current=$date_start;
+ $result.=sprintf($format_single,$date_start);
+ }
+ }
+ else
+ {
+ if($date_start!=$date_end)
+ {
+ $current=$date_start;
+ $result.=sprintf($format_range,
+ "$date_start $time_start","$date_end $time_end",__('to','ec3'));
+ }
+ else
+ {
+ if($date_start!=$current)
+ {
+ $current=$date_start;
+ $result.=sprintf($format_single,$date_start);
+ }
+ if($time_start==$time_end)
+ $result.=sprintf($format_single,$time_start);
+ else
+ $result.=sprintf($format_range,$time_start,$time_end,__('to','ec3'));
+ }
+ }
+ }
+ return sprintf($format_wrapper,$result);
+}
+
+
+/** Echos the schedule for the current post. */
+function ec3_the_schedule(
+ $format_single =EC3_DEFAULT_FORMAT_SINGLE,
+ $format_range =EC3_DEFAULT_FORMAT_RANGE,
+ $format_wrapper=EC3_DEFAULT_FORMAT_WRAPPER
+)
+{
+ echo ec3_get_schedule($format_single,$format_range,$format_wrapper);
+}
+
+?>