<?php
/**
* FooWidget Class
*/
class bontivCalendar extends WP_Widget {
/** constructor */
function bontivCalendar() {
parent::WP_Widget(false, $name = 'bontivCalendar');
}
/** @see WP_Widget::widget */
function widget($args, $instance) {
global $wpdb;
extract( $args );
$title = apply_filters('widget_title', $instance['title']);
if ($title == null) $title = 'Calendrier';
$table_name = $wpdb->prefix . "bontivCalendar";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
$date = isset($_GET['d']) && $_GET['d']?(int) $_GET['d']:time();
$date = mktime(0,0,0,date('n', $date), 1, date('Y', $date));
$previous = mktime(0,0,0,date('n', $date) - 1 <= 0?12:date('n', $date) - 1, 1,date('n', $date) - 1 <= 0?date('Y', $date)-1:date('Y', $date));
$next = mktime(0,0,0,date('n', $date) + 1 >= 13?1:date('n', $date) + 1, 1,date('n', $date) + 1 >= 13?date('Y', $date)+1:date('Y', $date));
$month = array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Decembre');
$lmonth = array('Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Aou', 'Sep', 'Oct', 'Nov', 'Dec');
$day = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche');
$results = $wpdb->get_results( "SELECT * FROM `$table_name` ORDER BY `dateStart` DESC" );
$events = array();
foreach ($results as $evt){
if (!is_array($events[substr($evt->dateStart, 0, 10)]))
$events[substr($evt->dateStart, 0, 10)] = array();
array_push(&$events[substr($evt->dateStart, 0, 10)], $evt);
}
unset($results, $evt);
?>
<script type="text/javascript">
function display(date){
document.getElementById('primary-content').innerHTML = document.getElementById('calendar_' + date).innerHTML;
}
</script>
<style type="text/css">
.calendarInfo
{
display: none;
}
td.ActiveCalendar
{
background-color: #FFAAAA;
}
a.ActiveCalendar
{
color: #0000FF;
}
</style>
<?php
echo $before_widget;
echo $before_title . $title . $after_title;
//echo "<a href=\"javascript:void(0);\" onclick=\"document.getElementById('content').innerHTML = ''\">reset</a>";
echo '<table id="wp-calendar" summary="' . esc_attr__('Calendar') . '">
<caption>'.$month[date('n', $date)-1].' '.date('Y', $date).'</caption>
<thead>
<tr>
<th abbr="Lundi" scope="col" title="Lundi">L</th>
<th abbr="Mardi" scope="col" title="Mardi">Ma</th>
<th abbr="Mercredi" scope="col" title="Mercredi">Me</th>
<th abbr="Jeudi" scope="col" title="Jeudi">J</th>
<th abbr="Vendredi" scope="col" title="Vendredi">V</th>
<th abbr="Samedi" scope="col" title="Samedi">S</th>
<th abbr="Dimanche" scope="col" title="Dimanche">D</th>
</tr>
</thead>
<tfoot>
<tr>
<td abbr="'.$month[date('n', $previous) - 1].'" colspan="3" id="prev"><a href="?d='.$previous.'" title="Aller au mois précédent">« '.$lmonth[date('n', $previous) - 1].'</a></td>
<td class="pad"> </td>
<td abbr="'.$month[date('n', $next) - 1].'" colspan="3" id="next"><a href="?d='.$next.'" title="Aller au mois suivant">'.$lmonth[date('n', $next) - 1].' »</a></td>
</tr>
</tfoot>
<tbody>
<tr>
';
$offset = date('N', $date) - 1;
if ($offset != 0)
echo "<td colspan=\"$offset\" class=\"pad\"> </td>";
$days = date('t', $date);
for ($d = 1; $d <= $days; $d++)
{
echo "<td";
if (isset($events[date('Y-m-').str_pad($d, 2, '0', STR_PAD_LEFT)])) {
echo ' class="ActiveCalendar">';
echo '<a href="javascript:void(0);" class="ActiveCalendar" onclick="display(\''.date('Y-m-').str_pad($d, 2, '0', STR_PAD_LEFT).'\')">'.$d.'</a>';
}
else
echo '>'.$d;
echo "</td>";
if (($d + $offset) % 7 == 0)
echo "</tr>\r\n<tr>";
}
$endoffset = ($days + $offset) % 7;
if ($endoffset != 0)
echo "<td class=\"pad\" colspan=\"$endoffset\"> </td>";
echo "</tr>";
echo '</table>';
echo $after_widget;
foreach ($events as $id=>$list){
echo "<div class=\"calendarInfo\" id=\"calendar_$id\">";
$d = mktime(0,0,0, substr($id, 5, 2), substr($id, 8, 2), substr($id, 0, 4));
echo '<h2>Evénements du '.$day[date('w', $d)].' '.date('j', $d).' '.$month[date('n', $d) - 1].' '.date('Y', $d).'</h2>';
foreach ($list as $evt)
echo "<h3>$evt->title</h3>\r\n<p>$evt->text</p>";
echo "</div>";
}
}
/** @see WP_Widget::update */
function update($new_instance, $old_instance) {
return $new_instance;
}
/** @see WP_Widget::form */
function form($instance) {
$title = esc_attr($instance['title']);
echo '<p><label for="'.$this->get_field_id('title').'">'. _e('Title:').'<input class="widefat" id="'.$this->get_field_id('title').'" name="'.$this->get_field_name('title').'" type="text" value="'.$title.'" /></label></p>';
echo "<p>Pour administrer ce widget, rendez-vous sur: Modules>Calendrier</p>";
}
} // class FooWidget
?>