Make WordPress Core

Changeset 1328


Ignore:
Timestamp:
05/20/2004 02:07:55 PM (22 years ago)
Author:
emc3
Message:

Fixed list_cats support for hide_empty and optioncount. Also fixed indentation in that function.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/template-functions-category.php

    r1304 r1328  
    266266
    267267function list_cats($optionall = 1, $all = 'All', $sort_column = 'ID', $sort_order = 'asc', $file = '', $list = true, $optiondates = 0, $optioncount = 0, $hide_empty = 1, $use_desc_for_title = 1, $children=FALSE, $child_of=0, $categories=0, $recurse=0, $feed = '', $feed_image = '', $exclude = '') {
    268     global $tablecategories, $tableposts, $tablepost2cat, $wpdb, $category_posts;
    269     global $querystring_start, $querystring_equal, $querystring_separator;
    270     // Optiondates now works
    271     if ('' == $file) {
    272         $file = get_settings('home') . '/' . get_settings('blogfilename');
    273     }
     268        global $tablecategories, $tableposts, $tablepost2cat, $wpdb, $category_posts;
     269        global $querystring_start, $querystring_equal, $querystring_separator;
     270        // Optiondates now works
     271        if ('' == $file) {
     272                $file = get_settings('home') . '/' . get_settings('blogfilename');
     273        }
    274274
    275275        $exclusions = '';
    … …  
    283283        }
    284284
    285     if (intval($categories)==0){
    286         $sort_column = 'cat_'.$sort_column;
    287 
    288         $query  = "
    289             SELECT cat_ID, cat_name, category_nicename, category_description, category_parent
    290             FROM $tablecategories
    291             WHERE cat_ID > 0 $exclusions
    292             ORDER BY $sort_column $sort_order";
    293 
    294         $categories = $wpdb->get_results($query);
    295     }
    296     if (intval($hide_empty) == 1 && !isset($category_posts)) {
    297         $cat_counts = $wpdb->get_results("    SELECT cat_ID,
    298         COUNT($tablepost2cat.post_id) AS cat_count
    299         FROM $tablecategories
    300         INNER JOIN $tablepost2cat ON (cat_ID = category_id)
    301         INNER JOIN $tableposts ON (ID = post_id)
    302         WHERE post_status = 'publish' $exclusions
    303         GROUP BY category_id");
    304         foreach ($cat_counts as $cat_count) {
    305             $category_posts["$cat_count->cat_ID"] = $cat_count->cat_count;
    306         }
    307     }
    308    
    309     if (intval($optiondates) == 1) {
    310         $cat_dates = $wpdb->get_results("    SELECT cat_ID,
    311         DAYOFMONTH(MAX(post_date)) AS lastday, MONTH(MAX(post_date)) AS lastmonth
    312         FROM $tablecategories
    313         LEFT JOIN $tablepost2cat ON (cat_ID = category_id)
    314         LEFT JOIN $tableposts ON (ID = post_id)
    315         WHERE post_status = 'publish' $exclusions
    316         GROUP BY category_id");
    317         foreach ($cat_dates as $cat_date) {
    318             $category_lastday["$cat_date->cat_ID"] = $cat_date->lastday;
    319             $category_lastmonth["$cat_date->cat_ID"] = $cat_date->lastmonth;
    320         }
    321     }
    322    
    323     if (intval($optionall) == 1 && !$child_of && $categories) {
    324         $all = apply_filters('list_cats', $all);
    325         $link = "<a href=\"".$file.$querystring_start.'cat'.$querystring_equal.'all">'.$all."</a>";
    326         if ($list) {
    327             echo "\n\t<li>$link</li>";
    328         } else {
    329             echo "\t$link<br />\n";
    330         }
    331     }
    332    
    333     $num_found=0;
    334     $thelist = "";
    335    
    336     foreach ($categories as $category) {
    337         if ((intval($hide_empty) == 0 || isset($category_posts["$category->cat_ID"])) && (!$children || $category->category_parent == $child_of)) {
    338             $num_found++;
    339             $link = '<a href="'.get_category_link(0, $category->cat_ID, $category->category_nicename).'" ';
    340             if ($use_desc_for_title == 0 || empty($category->category_description)) {
    341                 $link .= 'title="'. sprintf(__("View all posts filed under %s"), htmlspecialchars($category->cat_name)) . '"';
    342             } else {
    343                 $link .= 'title="' . htmlspecialchars($category->category_description) . '"';
    344             }
    345             $link .= '>';
    346             $link .= stripslashes($category->cat_name).'</a>';
    347 
    348             if ( (! empty($feed_image)) || (! empty($feed)) ) {
    349                
    350                 $link .= ' ';
    351 
    352                 if (empty($feed_image)) {
    353                     $link .= '(';
    354                 }
    355 
    356                 $link .= '<a href="' . get_category_rss_link(0, $category->cat_ID, $category->category_nicename)  . '"';
    357 
    358                 if ( !empty($feed) ) {
    359                     $title =  ' title="' . stripslashes($feed) . '"';
    360                     $alt = ' alt="' . stripslashes($feed) . '"';
    361                     $name = stripslashes($feed);
    362                     $link .= $title;
    363                 }
    364 
    365                 $link .= '>';
    366 
    367                 if (! empty($feed_image)) {
    368                     $link .= "<img src=\"$feed_image\" border=\"0\"$alt$title" . ' />';
    369                 } else {
    370                     $link .= $name;
    371                 }
    372                
    373                 $link .= '</a>';
    374 
    375                 if (empty($feed_image)) {
    376                     $link .= ')';
    377                 }
    378             }
    379 
    380             if (intval($optioncount) == 1) {
    381                 $link .= ' ('.intval($category_posts["$category->cat_ID"]).')';
    382             }
    383             if (intval($optiondates) == 1) {
    384                 $link .= ' '.$category_lastday["$category->cat_ID"].'/'.$category_lastmonth["$category->cat_ID"];
    385             }
    386             if ($list) {
    387                 $thelist .= "\t<li>$link\n";
    388             } else {
    389                 $thelist .= "\t$link<br />\n";
    390             }
    391             if ($children) $thelist .= list_cats($optionall, $all, $sort_column, $sort_order, $file, $list, $optiondates, $optioncount, $hide_empty, $use_desc_for_title, $children, $category->cat_ID, $categories, 1, $feed, $feed_image, $exclude);
    392             if ($list) $thelist .= "</li>\n";
    393             }
    394     }
    395     if (!$num_found && !$child_of){
    396         if ($list) {
    397             $before = '<li>';
    398             $after = '</li>';
    399         }
    400         echo $before . __("No categories") . $after . "\n";
    401         return;
    402     }
    403     if ($list && $child_of && $num_found && $recurse) {
    404         $pre = "\t\t<ul class='children'>";
    405         $post = "\t\t</ul>\n";
    406     } else {
     285        if (intval($categories)==0){
     286                $sort_column = 'cat_'.$sort_column;
     287
     288                $query  = "
     289                        SELECT cat_ID, cat_name, category_nicename, category_description, category_parent
     290                        FROM $tablecategories
     291                        WHERE cat_ID > 0 $exclusions
     292                        ORDER BY $sort_column $sort_order";
     293
     294                $categories = $wpdb->get_results($query);
     295        }
     296        if (!count($category_posts)) {
     297                $cat_counts = $wpdb->get_results("      SELECT cat_ID,
     298                COUNT($tablepost2cat.post_id) AS cat_count
     299                FROM $tablecategories
     300                INNER JOIN $tablepost2cat ON (cat_ID = category_id)
     301                INNER JOIN $tableposts ON (ID = post_id)
     302                WHERE post_status = 'publish' $exclusions
     303                GROUP BY category_id");
     304                foreach ($cat_counts as $cat_count) {
     305                        if (1 != intval($hide_empty) || $cat_count > 0) {
     306                                $category_posts["$cat_count->cat_ID"] = $cat_count->cat_count;
     307                        }
     308                }
     309        }
     310       
     311        if (intval($optiondates) == 1) {
     312                $cat_dates = $wpdb->get_results("       SELECT cat_ID,
     313                DAYOFMONTH(MAX(post_date)) AS lastday, MONTH(MAX(post_date)) AS lastmonth
     314                FROM $tablecategories
     315                LEFT JOIN $tablepost2cat ON (cat_ID = category_id)
     316                LEFT JOIN $tableposts ON (ID = post_id)
     317                WHERE post_status = 'publish' $exclusions
     318                GROUP BY category_id");
     319                foreach ($cat_dates as $cat_date) {
     320                        $category_lastday["$cat_date->cat_ID"] = $cat_date->lastday;
     321                        $category_lastmonth["$cat_date->cat_ID"] = $cat_date->lastmonth;
     322                }
     323        }
     324       
     325        if (intval($optionall) == 1 && !$child_of && $categories) {
     326                $all = apply_filters('list_cats', $all);
     327                $link = "<a href=\"".$file.$querystring_start.'cat'.$querystring_equal.'all">'.$all."</a>";
     328                if ($list) {
     329                        echo "\n\t<li>$link</li>";
     330                } else {
     331                        echo "\t$link<br />\n";
     332                }
     333        }
     334       
     335        $num_found=0;
     336        $thelist = "";
     337       
     338        foreach ($categories as $category) {
     339                if ((intval($hide_empty) == 0 || isset($category_posts["$category->cat_ID"])) && (!$children || $category->category_parent == $child_of)) {
     340                        $num_found++;
     341                        $link = '<a href="'.get_category_link(0, $category->cat_ID, $category->category_nicename).'" ';
     342                        if ($use_desc_for_title == 0 || empty($category->category_description)) {
     343                                $link .= 'title="'. sprintf(__("View all posts filed under %s"), htmlspecialchars($category->cat_name)) . '"';
     344                        } else {
     345                                $link .= 'title="' . htmlspecialchars($category->category_description) . '"';
     346                        }
     347                        $link .= '>';
     348                        $link .= stripslashes($category->cat_name).'</a>';
     349
     350                        if ( (! empty($feed_image)) || (! empty($feed)) ) {
     351                               
     352                                $link .= ' ';
     353
     354                                if (empty($feed_image)) {
     355                                        $link .= '(';
     356                                }
     357
     358                                $link .= '<a href="' . get_category_rss_link(0, $category->cat_ID, $category->category_nicename)  . '"';
     359
     360                                if ( !empty($feed) ) {
     361                                        $title =  ' title="' . stripslashes($feed) . '"';
     362                                        $alt = ' alt="' . stripslashes($feed) . '"';
     363                                        $name = stripslashes($feed);
     364                                        $link .= $title;
     365                                }
     366
     367                                $link .= '>';
     368
     369                                if (! empty($feed_image)) {
     370                                        $link .= "<img src=\"$feed_image\" border=\"0\"$alt$title" . ' />';
     371                                } else {
     372                                        $link .= $name;
     373                                }
     374                               
     375                                $link .= '</a>';
     376
     377                                if (empty($feed_image)) {
     378                                        $link .= ')';
     379                                }
     380                        }
     381
     382                        if (intval($optioncount) == 1) {
     383                                $link .= ' ('.intval($category_posts["$category->cat_ID"]).')';
     384                        }
     385                        if (intval($optiondates) == 1) {
     386                                $link .= ' '.$category_lastday["$category->cat_ID"].'/'.$category_lastmonth["$category->cat_ID"];
     387                        }
     388                        if ($list) {
     389                                $thelist .= "\t<li>$link\n";
     390                        } else {
     391                                $thelist .= "\t$link<br />\n";
     392                        }
     393                        if ($children) $thelist .= list_cats($optionall, $all, $sort_column, $sort_order, $file, $list, $optiondates, $optioncount, $hide_empty, $use_desc_for_title, $children, $category->cat_ID, $categories, 1, $feed, $feed_image, $exclude);
     394                        if ($list) $thelist .= "</li>\n";
     395                        }
     396        }
     397        if (!$num_found && !$child_of){
     398                if ($list) {
     399                        $before = '<li>';
     400                        $after = '</li>';
     401                }
     402                echo $before . __("No categories") . $after . "\n";
     403                return;
     404        }
     405        if ($list && $child_of && $num_found && $recurse) {
     406                $pre = "\t\t<ul class='children'>";
     407                $post = "\t\t</ul>\n";
     408        } else {
    407409                $pre = $post = '';
    408410        }
    409     $thelist = $pre . $thelist . $post;
    410     if ($recurse) {
    411         return $thelist;
    412     }
    413     echo apply_filters('list_cats', $thelist);
     411        $thelist = $pre . $thelist . $post;
     412        if ($recurse) {
     413                return $thelist;
     414        }
     415        echo apply_filters('list_cats', $thelist);
    414416}
    415417
Note: See TracChangeset for help on using the changeset viewer.