Changeset 20
- Timestamp:
- 04/06/05 20:23:49 (4 years ago)
- Files:
-
- all-keywords/trunk/all-keywords.pl (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
all-keywords/trunk/all-keywords.pl
r1 r20 1 1 # A plugin for adding keywords-handling tags 2 2 # 3 # Release 0.1 0 (Mar 16, 2005)3 # Release 0.11 (Mar 20, 2005) 4 4 # 5 5 # This software is provided as-is. You may use it for commercial or … … 15 15 require MT::Plugin; 16 16 my $plugin = new MT::Plugin(); 17 $plugin->name("AllKeywords Plugin 0.1 0");17 $plugin->name("AllKeywords Plugin 0.11"); 18 18 $plugin->description("Add MTAllKeywords tags for listing blog-wide keywords and entry keywords"); 19 19 $plugin->doc_link("http://as-is.net/hacks/2005/03/allkeywords_plugin.html"); … … 41 41 # delimiter option (default = space characters) 42 42 my $delimiter = $args->{delimiter} || ''; 43 # case_sensitive option (0/1, default = 1) 44 my $case_sensitive = $args->{case_sensitive} || 1; 43 45 44 46 my $blog_id = $ctx->stash('blog_id'); … … 49 51 while (my $e = $iter->()) { 50 52 next unless $e->keywords; 53 my $e_keywords = $case_sensitive ? $e->keywords : lc $e->keywords; 51 54 my @keywords = $delimiter ? 52 split($delimiter, lc $e->keywords) : split(/\s+/, lc $e->keywords);55 split($delimiter, $e_keywords) : split(/\s+/, $e_keywords); 53 56 foreach my $keyword (@keywords) { 54 57 if (exists($all_keywords{$keyword})) { … … 85 88 foreach (@list) { 86 89 last if $lastn && $i >= $lastn; 87 $ctx->stash('all_keyword', ucfirst $_);90 $ctx->stash('all_keyword', $case_sensitive ? $_ : ucfirst $_); 88 91 $ctx->stash('all_keyword_count', $all_keywords{$_}); 89 92 defined(my $out = $builder->build($ctx, $tokens)) … … 103 106 # delimiter option (default = space characters) 104 107 my $delimiter = $args->{delimiter} || ''; 105 108 # case_sensitive option (0/1, default = 1) 109 my $case_sensitive = $args->{case_sensitive} || 1; 110 111 my $e_keywords = $case_sensitive ? $e->keywords : lc $e->keywords; 106 112 my @keywords = $delimiter ? 107 split($delimiter, lc $e->keywords) : split(/\s+/, lc $e->keywords);113 split($delimiter, $e_keywords) : split(/\s+/, $e_keywords); 108 114 my $res = ''; 109 115 my $builder = $ctx->stash('builder'); … … 112 118 $ctx->stash('all_keywords_total', $total); 113 119 $ctx->stash('all_keywords_total_sum', $total); 114 for my $keyword(@keywords) {115 $ctx->stash('all_keyword', ucfirst $keyword);120 foreach (@keywords) { 121 $ctx->stash('all_keyword', $case_sensitive ? $_ : ucfirst $_); 116 122 $ctx->stash('all_keyword_count', 1); 117 123 defined(my $out = $builder->build($ctx, $tokens)) … … 145 151 # delimiter option (default = space characters) 146 152 my $delimiter = $args->{delimiter} || ''; 153 # case_sensitive option (0/1, default = 0) 154 my $case_sensitive = $args->{case_sensitive} || 0; 147 155 # sort_by option (title/status/created_on/modified_on/author_id/excerpt, default = created_on) 148 156 my $sort_by = $args->{sort_by} || 'created_on'; … … 159 167 direction => $sort_order }); 160 168 my @entries; 169 $keywords = lc $keywords unless $case_sensitive; 161 170 my @patterns = $delimiter ? 162 split($delimiter, lc $keywords) : split(/\s+/, lc$keywords);171 split($delimiter, $keywords) : split(/\s+/, $keywords); 163 172 my $i = 0; 164 173 while (my $e = $iter->()) { 165 174 last if $lastn && $i >= $lastn; 166 175 next unless $e->keywords; 167 my @e_keywords = $delimiter ? 168 split($delimiter, lc $e->keywords) : split(/\s+/, lc $e->keywords); 176 my $e_keywords = $case_sensitive ? $e->keywords : lc $e->keywords; 177 my @keywords = $delimiter ? 178 split($delimiter, $e_keywords) : split(/\s+/, $e_keywords); 169 179 my $check = 1; 170 180 foreach my $pattern (@patterns) { 171 unless (scalar grep { $_ eq $pattern } @ e_keywords) {181 unless (scalar grep { $_ eq $pattern } @keywords) { 172 182 $check = 0; 173 183 last; … … 213 223 # delimiter option (default = space characters) 214 224 my $delimiter = $args->{delimiter} || ''; 225 # case_sensitive option (0/1, default = 0) 226 my $case_sensitive = $args->{case_sensitive} || 0; 215 227 # lastn option (default = 0, no cutoff) 216 228 my $lastn = $args->{lastn} || 0; 217 229 230 my $entry_keywords = $case_sensitive ? $entry->keywords : lc $entry->keywords; 218 231 my @patterns = $delimiter ? 219 split($delimiter, lc $entry->keywords) : split(/\s+/, lc $entry->keywords);232 split($delimiter, $entry_keywords) : split(/\s+/, $entry_keywords); 220 233 221 234 my $blog_id = $ctx->stash('blog_id'); … … 230 243 next unless $e->keywords; 231 244 next if $e->id == $entry->id; 232 my @e_keywords = $delimiter ? 233 split($delimiter, lc $e->keywords) : split(/\s+/, lc $e->keywords); 245 my $e_keywords = $case_sensitive ? $e->keywords : lc $e->keywords; 246 my @keywords = $delimiter ? 247 split($delimiter, $e_keywords) : split(/\s+/, $e_keywords); 234 248 my $count = 0; 235 249 foreach my $pattern (@patterns) { 236 $count++ if (scalar grep { $_ eq $pattern } @ e_keywords);250 $count++ if (scalar grep { $_ eq $pattern } @keywords); 237 251 } 238 252 if ($count) {
