Ejemplo n.º 1
0
 /**
  * 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;
 }