'ajax_calendar_widget', 'description' => __( 'AJAX Powered Calendar', 'ajax-calendar' ) );
$control_ops = array( 'width' => 300, 'height' => 300 );
$this->WP_Widget( 'ajax-calendar', __( 'AJAX Calendar', 'ajax-calendar' ), $widget_ops, $control_ops );
add_action( 'template_redirect', array( &$this, 'template_redirect' ) );
}
function template_redirect() {
if ( is_date() && isset( $_GET['ajax'] ) && $_GET['ajax'] == 'true' ) {
$settings = $this->get_settings();
$settings = $settings[$this->number];
$instance = wp_parse_args( $settings, array( 'title' => __( 'AJAX Calendar', 'ajax-calendar' ), 'category_id' => '' ) );
$this->category_ids = array_filter( explode( ',', $instance['category_id'] ) );
echo $this->get_calendar();
die();
}
}
/**
* Display the widget
*
* @param string $args Widget arguments
* @param string $instance Widget instance
* @return void
**/
function widget( $args, $instance ) {
extract( $args );
$instance = wp_parse_args( (array)$instance, array( 'title' => __( 'AJAX Calendar', 'ajax-calendar' ), 'category_id' => '' ) );
$title = apply_filters( 'widget_title', $instance['title'] );
$category_id = $instance['category_id'];
$this->category_ids = array_filter( explode( ',', $category_id ) );
echo $before_widget;
if ( $title )
echo $before_title . stripslashes( $title ) . $after_title;
echo $this->get_calendar();
// MicroAJAX: http://www.blackmac.de/index.php?/archives/31-Smallest-JavaScript-AJAX-library-ever!.html
?>
category_ids ) ) {
global $wpdb;
$query = str_replace( 'WHERE', "LEFT JOIN {$wpdb->prefix}term_relationships ON {$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id INNER JOIN {$wpdb->prefix}term_taxonomy ON ({$wpdb->prefix}term_relationships.term_taxonomy_id = {$wpdb->prefix}term_taxonomy.term_taxonomy_id AND {$wpdb->prefix}term_taxonomy.taxonomy='category') WHERE", $query );
if ( strpos( $query, 'ORDER' ) !== false )
$query = str_replace( "ORDER", "AND {$wpdb->prefix}term_taxonomy.term_id IN (".implode (',', $this->category_ids ).') ORDER', $query );
else
$query .= "AND {$wpdb->prefix}term_taxonomy.term_id IN (".implode (',', $this->category_ids ).')';
}
return $query;
}
/**
* Display config interface
*
* @param string $instance Widget instance
* @return void
**/
function form( $instance ) {
$instance = wp_parse_args( (array)$instance, array( 'title' => __( 'AJAX Calendar', 'ajax-calendar' ), 'category_id' => '' ) );
$title = stripslashes( $instance['title'] );
$category_id = $instance['category_id'];
?>
__( 'AJAX Calendar', 'ajax-calendar' ), 'category_id' => '' ) );
$instance['title'] = wp_filter_nohtml_kses( $new_instance['title'] );
$instance['category_id'] = implode( ',', array_filter( array_map( 'intval', explode( ',', $new_instance['category_id'] ) ) ) );
return $instance;
}
}
function register_ajax_calendar_widget() {
register_widget( 'AJAX_Calendar_Widget' );
}
add_action( 'widgets_init', 'register_ajax_calendar_widget' );
function ajax_calendar ($categories = '') {
// $calendar = AJAX_Calendar::get ();
// $calendar->show ( $categories );
}