Changeset 815

Show
Ignore:
Timestamp:
02/01/04 02:00:26 (5 years ago)
Author:
jverber
Message:

Reduced the number of queries in cat_rows and list_cats.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/wp-admin/admin-functions.php

    r800 r815  
    33 
    44// Dandy new recursive multiple category stuff. 
    5 function cat_rows($parent = 0, $level = 0) { 
     5function cat_rows($parent = 0, $level = 0, $categories = 0) { 
    66    global $wpdb, $tablecategories, $tablepost2cat, $bgcolor; 
    7     $categories = $wpdb->get_results("SELECT * FROM $tablecategories WHERE category_parent = $parent ORDER BY cat_name"); 
     7    if (!$categories) { 
     8        $categories = $wpdb->get_results("SELECT * FROM $tablecategories ORDER BY cat_name"); 
     9    } 
    810    if ($categories) { 
    911        foreach ($categories as $category) { 
    10             $count = $wpdb->get_var("SELECT COUNT(post_id) FROM $tablepost2cat WHERE category_id = $category->cat_ID"); 
    11             $pad = str_repeat('— ', $level); 
     12            if ($category->category_parent == $parent) { 
     13                $count = $wpdb->get_var("SELECT COUNT(post_id) FROM $tablepost2cat WHERE category_id = $category->cat_ID"); 
     14                $pad = str_repeat('— ', $level); 
    1215 
    13         $bgcolor = ('#eee' == $bgcolor) ? 'none' : '#eee'; 
    14         echo "<tr style='background-color: $bgcolor'><td>$pad $category->cat_name</td> 
    15         <td>$category->category_description</td> 
    16         <td>$count</td> 
    17         <td><a href='categories.php?action=edit&amp;cat_ID=$category->cat_ID' class='edit'>Edit</a></td><td><a href='categories.php?action=Delete&amp;cat_ID=$category->cat_ID' onclick=\"return confirm('You are about to delete the category \'". addslashes($category->cat_name) ."\' and all its posts will go to the default category.\\n  \'OK\' to delete, \'Cancel\' to stop.')\" class='delete'>Delete</a></td> 
    18         </tr>"; 
     16               $bgcolor = ('#eee' == $bgcolor) ? 'none' : '#eee'; 
     17               echo "<tr style='background-color: $bgcolor'><td>$pad $category->cat_name</td> 
     18               <td>$category->category_description</td> 
     19               <td>$count</td> 
     20               <td><a href='categories.php?action=edit&amp;cat_ID=$category->cat_ID' class='edit'>Edit</a></td><td><a href='categories.php?action=Delete&amp;cat_ID=$category->cat_ID' onclick=\"return confirm('You are about to delete the category \'". addslashes($category->cat_name) ."\' and all its posts will go to the default category.\\n  \'OK\' to delete, \'Cancel\' to stop.')\" class='delete'>Delete</a></td> 
     21               </tr>"; 
    1922                cat_rows($category->cat_ID, $level + 1); 
     23            } 
    2024        } 
    2125    } else { 
     
    2428} 
    2529 
    26 function wp_dropdown_cats($currentcat, $currentparent = 0, $parent = 0, $level = 0) { 
     30function wp_dropdown_cats($currentcat, $currentparent = 0, $parent = 0, $level = 0, $categories = 0) { 
    2731    global $wpdb, $tablecategories, $tablepost2cat, $bgcolor; 
    28     $categories = $wpdb->get_results("SELECT * FROM $tablecategories WHERE category_parent = $parent ORDER BY cat_name"); 
     32    if (!$categories) { 
     33        $categories = $wpdb->get_results("SELECT * FROM $tablecategories ORDER BY cat_name"); 
     34    } 
    2935    if ($categories) { 
    30         foreach ($categories as $category) { if ($currentcat != $category->cat_ID) { 
     36        foreach ($categories as $category) { if ($currentcat != $category->cat_ID && $parent == $category->category_parent) { 
    3137            $count = $wpdb->get_var("SELECT COUNT(post_id) FROM $tablepost2cat WHERE category_id = $category->cat_ID"); 
    3238            $pad = str_repeat('&#8211; ', $level); 
     
    3541                echo " selected='selected'"; 
    3642            echo ">$pad$category->cat_name</option>"; 
    37             if ($currentcat != $category->cat_ID) 
    38                 wp_dropdown_cats($currentcat, $currentparent, $category->cat_ID, $level + 1); 
     43            wp_dropdown_cats($currentcat, $currentparent, $category->cat_ID, $level + 1, $categories); 
    3944        } } 
    4045    } else {