Make WordPress Core


Ignore:
Timestamp:
04/22/2008 09:06:00 PM (17 years ago)
Author:
ryan
Message:

Convert Walker classes to pass as reference. Props mdawaffe. fixes #6796 for 2.5

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.5/wp-includes/classes.php

    r7551 r7770  
    396396
    397397    //abstract callbacks
    398     function start_lvl($output) { return $output; }
    399     function end_lvl($output)   { return $output; }
    400     function start_el($output)  { return $output; }
    401     function end_el($output)    { return $output; }
     398    function start_lvl(&$output) {}
     399    function end_lvl(&$output)   {}
     400    function start_el(&$output)  {}
     401    function end_el(&$output)    {}
    402402
    403403    /*
     
    405405     * otherwise, display the element and its children
    406406     */
    407     function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, $output ) {
    408 
    409         if ( !$element)
    410             return $output;
     407    function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
     408
     409        if ( !$element )
     410            return;
    411411
    412412        $id_field = $this->db_fields['id'];
     
    414414
    415415        //display this element
    416         $cb_args = array_merge( array($output, $element, $depth), $args);
    417         $output = call_user_func_array(array(&$this, 'start_el'), $cb_args);
     416        $cb_args = array_merge( array(&$output, $element, $depth), $args);
     417        call_user_func_array(array(&$this, 'start_el'), $cb_args);
    418418
    419419        if ( $max_depth == 0 ||
     
    428428                        $newlevel = true;
    429429                        //start the child delimiter
    430                         $cb_args = array_merge( array($output, $depth), $args);
    431                         $output = call_user_func_array(array(&$this, 'start_lvl'), $cb_args);
     430                        $cb_args = array_merge( array(&$output, $depth), $args);
     431                        call_user_func_array(array(&$this, 'start_lvl'), $cb_args);
    432432                    }
    433433
    434434                    array_splice( $children_elements, $i, 1 );
    435                     $output = $this->display_element( $child, $children_elements, $max_depth, $depth + 1, $args, $output );
     435                    $this->display_element( $child, $children_elements, $max_depth, $depth + 1, $args, $output );
    436436                    $i = -1;
    437437                }
     
    441441        if ( isset($newlevel) && $newlevel ){
    442442            //end the child delimiter
    443             $cb_args = array_merge( array($output, $depth), $args);
    444             $output = call_user_func_array(array(&$this, 'end_lvl'), $cb_args);
     443            $cb_args = array_merge( array(&$output, $depth), $args);
     444            call_user_func_array(array(&$this, 'end_lvl'), $cb_args);
    445445        }
    446446
    447447        //end this element
    448         $cb_args = array_merge( array($output, $element, $depth), $args);
    449         $output = call_user_func_array(array(&$this, 'end_el'), $cb_args);
    450 
    451         return $output;
     448        $cb_args = array_merge( array(&$output, $element, $depth), $args);
     449        call_user_func_array(array(&$this, 'end_el'), $cb_args);
    452450    }
    453451
     
    477475            $empty_array = array();
    478476            foreach ( $elements as $e )
    479                 $output = $this->display_element( $e, $empty_array, 1, 0, $args, $output );
     477                $this->display_element( $e, $empty_array, 1, 0, $args, $output );
    480478            return $output;
    481479        }
     
    513511
    514512        foreach ( $top_level_elements as $e )
    515             $output = $this->display_element( $e, $children_elements, $max_depth, 0, $args, $output );
     513            $this->display_element( $e, $children_elements, $max_depth, 0, $args, $output );
    516514
    517515        /*
     
    522520            $empty_array = array();
    523521            foreach ( $children_elements as $orphan_e )
    524                 $output = $this->display_element( $orphan_e, $empty_array, 1, 0, $args, $output );
     522                $this->display_element( $orphan_e, $empty_array, 1, 0, $args, $output );
    525523         }
    526524         return $output;
     
    532530    var $db_fields = array ('parent' => 'post_parent', 'id' => 'ID'); //TODO: decouple this
    533531
    534     function start_lvl($output, $depth) {
     532    function start_lvl(&$output, $depth) {
    535533        $indent = str_repeat("\t", $depth);
    536534        $output .= "\n$indent<ul>\n";
    537         return $output;
    538     }
    539 
    540     function end_lvl($output, $depth) {
     535    }
     536
     537    function end_lvl(&$output, $depth) {
    541538        $indent = str_repeat("\t", $depth);
    542539        $output .= "$indent</ul>\n";
    543         return $output;
    544     }
    545 
    546     function start_el($output, $page, $depth, $current_page, $args) {
     540    }
     541
     542    function start_el(&$output, $page, $depth, $current_page, $args) {
    547543        if ( $depth )
    548544            $indent = str_repeat("\t", $depth);
     
    572568            $output .= " " . mysql2date($date_format, $time);
    573569        }
    574 
    575         return $output;
    576     }
    577 
    578     function end_el($output, $page, $depth) {
     570    }
     571
     572    function end_el(&$output, $page, $depth) {
    579573        $output .= "</li>\n";
    580 
    581         return $output;
    582574    }
    583575
     
    588580    var $db_fields = array ('parent' => 'post_parent', 'id' => 'ID'); //TODO: decouple this
    589581
    590     function start_el($output, $page, $depth, $args) {
    591                 $pad = str_repeat('&nbsp;', $depth * 3);
    592 
    593                 $output .= "\t<option value=\"$page->ID\"";
    594                 if ( $page->ID == $args['selected'] )
    595                                 $output .= ' selected="selected"';
    596                 $output .= '>';
    597                 $title = wp_specialchars($page->post_title);
    598                 $output .= "$pad$title";
    599                 $output .= "</option>\n";
    600 
    601                 return $output;
     582    function start_el(&$output, $page, $depth, $args) {
     583        $pad = str_repeat('&nbsp;', $depth * 3);
     584
     585        $output .= "\t<option value=\"$page->ID\"";
     586        if ( $page->ID == $args['selected'] )
     587            $output .= ' selected="selected"';
     588        $output .= '>';
     589        $title = wp_specialchars($page->post_title);
     590        $output .= "$pad$title";
     591        $output .= "</option>\n";
    602592    }
    603593}
     
    607597    var $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this
    608598
    609     function start_lvl($output, $depth, $args) {
     599    function start_lvl(&$output, $depth, $args) {
    610600        if ( 'list' != $args['style'] )
    611             return $output;
     601            return;
    612602
    613603        $indent = str_repeat("\t", $depth);
    614604        $output .= "$indent<ul class='children'>\n";
    615         return $output;
    616     }
    617 
    618     function end_lvl($output, $depth, $args) {
     605    }
     606
     607    function end_lvl(&$output, $depth, $args) {
    619608        if ( 'list' != $args['style'] )
    620             return $output;
     609            return;
    621610
    622611        $indent = str_repeat("\t", $depth);
    623612        $output .= "$indent</ul>\n";
    624         return $output;
    625     }
    626 
    627     function start_el($output, $category, $depth, $args) {
     613    }
     614
     615    function start_el(&$output, $category, $depth, $args) {
    628616        extract($args);
    629617
     
    688676            $output .= "\t$link<br />\n";
    689677        }
    690 
    691         return $output;
    692     }
    693 
    694     function end_el($output, $page, $depth, $args) {
     678    }
     679
     680    function end_el(&$output, $page, $depth, $args) {
    695681        if ( 'list' != $args['style'] )
    696             return $output;
     682            return;
    697683
    698684        $output .= "</li>\n";
    699         return $output;
    700685    }
    701686
     
    706691    var $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this
    707692
    708     function start_el($output, $category, $depth, $args) {
     693    function start_el(&$output, $category, $depth, $args) {
    709694        $pad = str_repeat('&nbsp;', $depth * 3);
    710695
     
    722707        }
    723708        $output .= "</option>\n";
    724 
    725         return $output;
    726709    }
    727710}
Note: See TracChangeset for help on using the changeset viewer.