fu: Close-up of Fu, bringing a scoop of water to her mouth (Default)
fu ([personal profile] fu) wrote in [site community profile] changelog2010-10-29 05:47 am

[dw-free] Make sitekeywords table case sensitive

[commit: http://hg.dwscoalition.org/dw-free/rev/45b3c265fe97]

http://bugs.dwscoalition.org/show_bug.cgi?id=3174

Allow mixed case for sitekeywords.

Patch by [personal profile] exor674.

Files modified:
  • bin/upgrading/update-db-general.pl
  • cgi-bin/DW/VirtualGift.pm
  • cgi-bin/ljlib.pl
--------------------------------------------------------------------------------
diff -r 9b600c7ae8fc -r 45b3c265fe97 bin/upgrading/update-db-general.pl
--- a/bin/upgrading/update-db-general.pl	Thu Oct 28 08:19:28 2010 -0500
+++ b/bin/upgrading/update-db-general.pl	Fri Oct 29 13:47:24 2010 +0800
@@ -2997,7 +2997,7 @@ register_tablecreate('sitekeywords', <<'
 register_tablecreate('sitekeywords', <<'EOC');
 CREATE TABLE sitekeywords (
     kwid INT(10) UNSIGNED NOT NULL,
-    keyword VARCHAR(255) NOT NULL,
+    keyword VARCHAR(255) BINARY NOT NULL,
 
     PRIMARY KEY (kwid),
     UNIQUE KEY (keyword)
@@ -3917,6 +3917,11 @@ EOF
         }
     }
 
+    unless ( column_type( 'sitekeywords', 'keyword' ) =~ /BINARY/ ) {
+        do_alter( 'sitekeywords',
+                  q{ALTER TABLE sitekeywords MODIFY keyword VARCHAR(255) BINARY NOT NULL} );
+    }
+
 });
 
 
diff -r 9b600c7ae8fc -r 45b3c265fe97 cgi-bin/DW/VirtualGift.pm
--- a/cgi-bin/DW/VirtualGift.pm	Thu Oct 28 08:19:28 2010 -0500
+++ b/cgi-bin/DW/VirtualGift.pm	Fri Oct 29 13:47:24 2010 +0800
@@ -290,7 +290,7 @@ sub tags {
         foreach my $tag ( @valid_tags ) {
             next if $dbtags{$tag};
             # try to create the tag if it didn't already exist
-            my $tagid = LJ::get_sitekeyword_id( $tag, $autovivify );
+            my $tagid = LJ::get_sitekeyword_id( $tag, $autovivify, allowmixedcase => 1 );
             return $error->( LJ::Lang::ml( 'vgift.error.tags.create',
                 { tag => LJ::ehtml( $tag ) } ) ) unless $tagid;
             $dbtags{$tag} = $tagid;
@@ -387,7 +387,7 @@ sub alter_tag {
 
 sub create_tag {
     my ( $self, $tagname ) = @_;
-    return LJ::get_sitekeyword_id( $tagname, 1 );
+    return LJ::get_sitekeyword_id( $tagname, 1, allowmixedcase => 1 );
 }
 
 sub _addremove_tagpriv {
@@ -559,7 +559,7 @@ sub img_mogkey {
 # tagnames and interests are both in sitekeywords
 sub get_tagname { return LJ::get_interest( $_[1] ) }
 
-sub get_tagid { return LJ::get_sitekeyword_id( $_[1], 0 ) }
+sub get_tagid { return LJ::get_sitekeyword_id( $_[1], 0, allowmixedcase => 1 ) }
 
 sub can_be_approved_by {
     my ( $self, $u ) = @_;
diff -r 9b600c7ae8fc -r 45b3c265fe97 cgi-bin/ljlib.pl
--- a/cgi-bin/ljlib.pl	Thu Oct 28 08:19:28 2010 -0500
+++ b/cgi-bin/ljlib.pl	Fri Oct 29 13:47:24 2010 +0800
@@ -1524,13 +1524,13 @@ sub get_interest {
 #                 style -- yes, do automatically create the keyword.
 # </LJFUNC>
 sub get_sitekeyword_id {
-    my ( $kw, $autovivify ) = @_;
+    my ( $kw, $autovivify, %opts ) = @_;
     $autovivify = 1 unless defined $autovivify;
 
     # setup the keyword for use
     return 0 unless $kw =~ /\S/;
     $kw = LJ::trim( LJ::text_trim( LJ::trim( $kw ), LJ::BMAX_SITEKEYWORD, LJ::CMAX_SITEKEYWORD ) );
-    $kw = LJ::utf8_lc( $kw );
+    $kw = LJ::utf8_lc( $kw ) unless $opts{allowmixedcase};
 
     # get the keyword and insert it if necessary
     my $dbr = LJ::get_db_reader();
--------------------------------------------------------------------------------

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org