Changeset 2097

Show
Ignore:
Timestamp:
04/25/08 03:51:54 (22 months ago)
Author:
bchoate
Message:

Support 'top' attribute for MTTags for dynamic publishing. BugId:68999

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/release-36/php/lib/block.mttags.php

    r1926 r2097  
    1515        $blog_id = $ctx->stash('blog_id'); 
    1616        $args['blog_id'] = $ctx->stash('blog_id'); 
     17        if (isset($args['top'])) { 
     18            $post_sort_by = $args['sort_by']; 
     19            $post_sort_order = $args['sort_order']; 
     20            $args['sort_by'] = 'rank'; 
     21            $args['sort_order'] = 'descend'; 
     22        } 
    1723        if (isset($args['sort_by'])) { 
    1824            $s = $args['sort_by']; 
     
    4854            if (isset($args['limit'])) { 
    4955                $tags = array_slice($tags, 0, $args['limit']); 
     56            } 
     57 
     58            // Handle ordering based on 'top' attribute 
     59            // implies sorting by rank/descend and limit by # requested 
     60            // then, resort based on attributes or sane defaults 
     61            if (isset($args['top'])) { 
     62                $tags = array_slice($tags, 0, $args['top']); 
     63                // now, resort by original sort order 
     64                $post_sort_by or $post_sort_by = 'name'; 
     65                if ($post_sort_by == 'name') { 
     66                    $post_sort_order or $post_sort_order = 'ascend'; 
     67                    require_once("MTUtil.php"); 
     68                    usort($tags, 'tagarray_name_sort'); 
     69                    if ($post_sort_order && ($post_sort_order == 'descend')) { 
     70                        $tags = array_reverse($tags); 
     71                    } 
     72                } elseif (($post_sort_by == 'rank') || ($post_sort_by == 'count')) { 
     73                    $post_sort_order or $post_sort_order = 'descend'; 
     74                    // we're already sorted by rank; just check if 
     75                    // order is not descending 
     76                    if ($post_sort_order != 'descend') { 
     77                        $tags = array_reverse($tags); 
     78                    } 
     79                } 
    5080            } 
    5181        } 
     
    83113    return $content; 
    84114} 
    85 ?>