Bontiv-Sourceer source code viewer
Root | Help
./wordpress-bontivCalendar/calendarWidget.php
<?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&eacute;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&eacute;c&eacute;dent">&laquo; '.$lmonth[date('n', $previous) - 1].'</a></td>
        <td class="pad">&nbsp;</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].' &raquo;</a></td>
    </tr>
    </tfoot>
    <tbody>
    <tr>
'
;
       
$offset = date('N', $date) - 1;
        if (
$offset != 0)
            echo
"<td colspan=\"$offset\" class=\"pad\">&nbsp;</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\">&nbsp;</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&eacute;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&gt;Calendrier</p>";
    }

}
// class FooWidget

?>
Presented with Bontiv-Sourceer