/** * Display the widget * * @param unknown_type $args * @param unknown_type $instance */ public function widget($args, $instance) { global $post, $wp_query; $catgrp =& AVH_EC_Singleton::getInstance('AVH_EC_Category_Group'); $options = $this->core->getOptions(); $row = array(); if (is_home()) { $special_page = 'home_group'; } elseif (is_category()) { $special_page = 'category_group'; } elseif (is_day()) { $special_page = 'day_group'; } elseif (is_month()) { $special_page = 'month_group'; } elseif (is_year()) { $special_page = 'year_group'; } elseif (is_author()) { $special_page = 'author_group'; } elseif (is_search()) { $special_page = 'search_group'; } else { $special_page = 'none'; } $toDisplay = false; if ('none' == $special_page) { $terms = wp_get_object_terms($post->ID, $catgrp->taxonomy_name); if (!empty($terms)) { $selected_catgroups = unserialize($instance['post_group_category']); foreach ($terms as $key => $value) { if ($selected_catgroups === false || array_key_exists($value->term_id, $selected_catgroups)) { if (!$this->getWidgetDoneCatGroup($value->term_id)) { $row = $value; $group_found = true; break; } } } } else { $options = $this->core->options; $no_cat_group = $options['cat_group']['no_group']; $row = get_term_by('id', $no_cat_group, $catgrp->taxonomy_name); $group_found = true; } } else { if ('category_group' == $special_page) { $tax_meta = get_option($this->core->db_options_tax_meta); $term = $wp_query->get_queried_object(); if (isset($tax_meta[$term->taxonomy][$term->term_id]['category_group_term_id'])) { $sp_category_group_id = $tax_meta[$term->taxonomy][$term->term_id]['category_group_term_id']; } else { $sp_category_group = $this->catgrp->getGroupByCategoryID($term->term_id); $sp_category_group_id = $sp_category_group->term_id; } } else { $sp_category_group_id = $options['sp_cat_group'][$special_page]; } $row = get_term_by('id', $sp_category_group_id, $catgrp->taxonomy_name); // Returns false when non-existance. (empty(false)=true) $group_found = true; } if ($group_found) { $toDisplay = true; $category_group_id_none = $this->catgrp->getTermIDBy('slug', 'none'); $selected_catgroups = unserialize($instance['post_group_category']); if ($category_group_id_none == $row->term_id) { $toDisplay = false; } elseif (!(false == $selected_catgroups || array_key_exists($row->term_id, $selected_catgroups))) { $toDisplay = false; } elseif ($special_page != 'none' && $this->getWidgetDoneCatGroup($sp_category_group_id)) { $toDisplay = false; } } if ($toDisplay) { extract($args); $c = $instance['count']; $e = $instance['hide_empty']; $h = $instance['hierarchical']; $use_desc_for_title = $instance['use_desc_for_title']; $s = isset($instance['sort_column']) ? $instance['sort_column'] : 'name'; $o = isset($instance['sort_order']) ? $instance['sort_order'] : 'asc'; $r = $instance['rssfeed'] ? 'RSS' : ''; $i = $instance['rssimage'] ? $instance['rssimage'] : ''; if (empty($r)) { $i = ''; } $style = empty($instance['style']) ? 'list' : $instance['style']; $group_id = $row->term_id; $cats = $catgrp->getCategoriesFromGroup($group_id); if (empty($instance['title'])) { $title = $catgrp->getWidgetTitleForGroup($group_id); if (!$title) { $title = __('Categories', 'avh-ec'); } } else { $title = $instance['title']; } $title = apply_filters('widget_title', $title); $included_cats = implode(',', $cats); $show_option_none = __('Select Category', 'avh-ec'); if ($options['general']['alternative_name_select_category']) { $show_option_none = $options['general']['alternative_name_select_category']; } $cat_args = array('include' => $included_cats, 'orderby' => $s, 'order' => $o, 'show_count' => $c, 'use_desc_for_title' => $use_desc_for_title, 'hide_empty' => $e, 'hierarchical' => $h, 'title_li' => '', 'show_option_none' => $show_option_none, 'feed' => $r, 'feed_image' => $i, 'name' => 'extended-categories-select-group-' . $this->number); echo $before_widget; echo $this->core->comment; echo $before_title . $title . $after_title; if ($style == 'list') { echo '<ul>'; $this->core->avh_wp_list_categories($cat_args, true); echo '</ul>'; } else { $this->core->avh_wp_dropdown_categories($cat_args, true); echo '<script type=\'text/javascript\'>' . "\n"; echo '/* <![CDATA[ */' . "\n"; echo ' var ec_dropdown_' . $this->number . ' = document.getElementById("extended-categories-select-group-' . $this->number . '");' . "\n"; echo ' function ec_onCatChange_' . $this->number . '() {' . "\n"; echo ' if (ec_dropdown_' . $this->number . '.options[ec_dropdown_' . $this->number . '.selectedIndex].value > 0) {' . "\n"; echo ' location.href = "' . get_option('home') . '/?cat="+ec_dropdown_' . $this->number . '.options[ec_dropdown_' . $this->number . '.selectedIndex].value;' . "\n"; echo ' }' . "\n"; echo ' }' . "\n"; echo ' ec_dropdown_' . $this->number . '.onchange = ec_onCatChange_' . $this->number . ';' . "\n"; echo '/* ]]> */' . "\n"; echo '</script>' . "\n"; } echo $after_widget; } }
/** * Display the widget * * @param unknown_type $args * @param unknown_type $instance */ function widget($args, $instance) { extract($args); $selectedonly = $instance['selectedonly'] ? true : false; $c = $instance['count'] ? true : false; $h = $instance['hierarchical'] ? true : false; $d = $instance['depth'] ? $instance['depth'] : 0; $e = $instance['hide_empty'] ? true : false; $use_desc_for_title = $instance['use_desc_for_title'] ? true : false; $s = $instance['sort_column'] ? $instance['sort_column'] : 'name'; $o = $instance['sort_order'] ? $instance['sort_order'] : 'asc'; $r = $instance['rssfeed'] ? 'RSS' : ''; $i = $instance['rssimage'] ? $instance['rssimage'] : ''; $invert = $instance['invert_included'] ? true : false; if (empty($r)) { $i = ''; } if (empty($d)) { $d = 0; } $title = apply_filters('widget_title', empty($instance['title']) ? __('Categories', 'avh-ec') : $instance['title']); $style = empty($instance['style']) ? 'list' : $instance['style']; $included_cats = ''; if ($instance['post_category']) { $post_category = unserialize($instance['post_category']); $children = array(); if (!$instance['selectedonly']) { foreach ($post_category as $cat_id) { $children = array_merge($children, get_term_children($cat_id, 'category')); } } $included_cats = implode(",", array_merge($post_category, $children)); } if ($invert) { $inc_exc = 'exclude'; } else { $inc_exc = 'include'; } $options = $this->core->getOptions(); $show_option_none = __('Select Category', 'avh-ec'); if ($options['general']['alternative_name_select_category']) { $show_option_none = $options['general']['alternative_name_select_category']; } $cat_args = array($inc_exc => $included_cats, 'orderby' => $s, 'order' => $o, 'show_count' => $c, 'use_desc_for_title' => $use_desc_for_title, 'hide_empty' => $e, 'hierarchical' => $h, 'depth' => $d, 'title_li' => '', 'show_option_none' => $show_option_none, 'feed' => $r, 'feed_image' => $i, 'name' => 'extended-categories-select-' . $this->number); echo $before_widget; echo $this->core->comment; echo $before_title . $title . $after_title; if ($style == 'list') { echo '<ul>'; $this->core->avh_wp_list_categories($cat_args, $selectedonly); echo '</ul>'; } else { $this->core->avh_wp_dropdown_categories($cat_args, $selectedonly); echo '<script type=\'text/javascript\'>' . "\n"; echo '/* <![CDATA[ */' . "\n"; echo ' var ec_dropdown_' . $this->number . ' = document.getElementById("extended-categories-select-' . $this->number . '");' . "\n"; echo ' function ec_onCatChange_' . $this->number . '() {' . "\n"; echo ' if ( ec_dropdown_' . $this->number . '.options[ec_dropdown_' . $this->number . '.selectedIndex].value > 0 ) {' . "\n"; echo ' location.href = "' . get_option('home') . '/?cat="+ec_dropdown_' . $this->number . '.options[ec_dropdown_' . $this->number . '.selectedIndex].value;' . "\n"; echo ' }' . "\n"; echo ' }' . "\n"; echo ' ec_dropdown_' . $this->number . '.onchange = ec_onCatChange_' . $this->number . ';' . "\n"; echo '/* ]]> */' . "\n"; echo '</script>' . "\n"; } echo $after_widget; }