mark: A photo of Mark kneeling on top of the Taal Volcano in the Philippines. It was a long hike. (Default)
Mark Smith ([staff profile] mark) wrote in [site community profile] changelog2009-09-20 06:25 pm

[dw-free] interests / keywords cleanup

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

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

Move LJ::get_keyword_id to a LJ::User method.

Patch by [personal profile] kareila.

Files modified:
  • cgi-bin/LJ/User.pm
  • cgi-bin/LJ/Userpic.pm
  • cgi-bin/ljlib.pl
  • cgi-bin/ljmemories.pl
  • cgi-bin/taglib.pl
  • htdocs/tools/memadd.bml
--------------------------------------------------------------------------------
diff -r 4d8bd333d94e -r f1133de2d63a cgi-bin/LJ/User.pm
--- a/cgi-bin/LJ/User.pm	Sun Sep 20 09:15:19 2009 +0000
+++ b/cgi-bin/LJ/User.pm	Sun Sep 20 18:24:59 2009 +0000
@@ -4624,6 +4624,57 @@ sub can_add_tags_to {
 }
 
 
+# <LJFUNC>
+# name: LJ::User::get_keyword_id
+# class:
+# des: Get the id for a keyword.
+# args: uuid, keyword, autovivify?
+# des-uuid: User object or userid to use.
+# des-keyword: A string keyword to get the id of.
+# returns: Returns a kwid into [dbtable[userkeywords]].
+#          If the keyword doesn't exist, it is automatically created for you.
+# des-autovivify: If present and 1, automatically create keyword.
+#                 If present and 0, do not automatically create the keyword.
+#                 If not present, default behavior is the old
+#                 style -- yes, do automatically create the keyword.
+# </LJFUNC>
+sub get_keyword_id
+{
+    my ( $u, $kw, $autovivify ) = @_;
+    $u = LJ::want_user( $u );
+    return undef unless $u;
+    $autovivify = 1 unless defined $autovivify;
+
+    # setup the keyword for use
+    return 0 unless $kw =~ /\S/;
+    $kw = LJ::text_trim( $kw, LJ::BMAX_KEYWORD, LJ::CMAX_KEYWORD );
+
+    # get the keyword and insert it if necessary
+    my $kwid = $u->selectrow_array( 'SELECT kwid FROM userkeywords WHERE userid = ? AND keyword = ?',
+                                    undef, $u->userid, $kw ) + 0;
+    if ( $autovivify && ! $kwid ) {
+        # create a new keyword
+        $kwid = LJ::alloc_user_counter( $u, 'K' );
+        return undef unless $kwid;
+
+        # attempt to insert the keyword
+        my $rv = $u->do( "INSERT IGNORE INTO userkeywords (userid, kwid, keyword) VALUES (?, ?, ?)",
+                         undef, $u->userid, $kwid, $kw ) + 0;
+        return undef if $u->err;
+
+        # at this point, if $rv is 0, the keyword is already there so try again
+        unless ( $rv ) {
+            $kwid = $u->selectrow_array( 'SELECT kwid FROM userkeywords WHERE userid = ? AND keyword = ?',
+                                         undef, $u->userid, $kw ) + 0;
+        }
+
+        # nuke cache
+        $u->memc_delete( 'kws' );
+    }
+    return $kwid;
+}
+
+
 sub tags {
     my $u = shift;
 
diff -r 4d8bd333d94e -r f1133de2d63a cgi-bin/LJ/Userpic.pm
--- a/cgi-bin/LJ/Userpic.pm	Sun Sep 20 09:15:19 2009 +0000
+++ b/cgi-bin/LJ/Userpic.pm	Sun Sep 20 18:24:59 2009 +0000
@@ -879,7 +879,7 @@ sub set_keywords {
     my $picid = $self->{picid};
 
     foreach my $kw (@keywords) {
-        my $kwid = LJ::get_keyword_id( $u, $kw );
+        my $kwid = $u->get_keyword_id( $kw );
         next unless $kwid; # TODO: fire some warning that keyword was bogus
 
         if (++$c > $LJ::MAX_USERPIC_KEYWORDS) {
diff -r 4d8bd333d94e -r f1133de2d63a cgi-bin/ljlib.pl
--- a/cgi-bin/ljlib.pl	Sun Sep 20 09:15:19 2009 +0000
+++ b/cgi-bin/ljlib.pl	Sun Sep 20 18:24:59 2009 +0000
@@ -1501,66 +1501,6 @@ sub cmd_buffer_add
 }
 
 
-# <LJFUNC>
-# name: LJ::get_keyword_id
-# class:
-# des: Get the id for a keyword.
-# args: uuid?, keyword, autovivify?
-# des-uuid: User object or userid to use.
-# des-keyword: A string keyword to get the id of.
-# returns: Returns a kwid into [dbtable[userkeywords]].
-#          If the keyword doesn't exist, it is automatically created for you.
-# des-autovivify: If present and 1, automatically create keyword.
-#                 If present and 0, do not automatically create the keyword.
-#                 If not present, default behavior is the old
-#                 style -- yes, do automatically create the keyword.
-# </LJFUNC>
-sub get_keyword_id
-{
-    &nodb;
-
-    # see if we got a user? if so we use userkeywords on a cluster
-    my $u;
-    if (@_ >= 2) {
-        $u = LJ::want_user(shift);
-        return undef unless $u;
-    }
-
-    my ($kw, $autovivify) = @_;
-    $autovivify = 1 unless defined $autovivify;
-
-    # setup the keyword for use
-    unless ($kw =~ /\S/) { return 0; }
-    $kw = LJ::text_trim($kw, LJ::BMAX_KEYWORD, LJ::CMAX_KEYWORD);
-
-    # get the keyword and insert it if necessary
-    my $kwid;
-    if ( $u ) {
-        $kwid = $u->selectrow_array('SELECT kwid FROM userkeywords WHERE userid = ? AND keyword = ?',
-                                    undef, $u->{userid}, $kw) + 0;
-        if ($autovivify && ! $kwid) {
-            # create a new keyword
-            $kwid = LJ::alloc_user_counter($u, 'K');
-            return undef unless $kwid;
-
-            # attempt to insert the keyword
-            my $rv = $u->do("INSERT IGNORE INTO userkeywords (userid, kwid, keyword) VALUES (?, ?, ?)",
-                            undef, $u->{userid}, $kwid, $kw) + 0;
-            return undef if $u->err;
-
-            # at this point, if $rv is 0, the keyword is already there so try again
-            unless ($rv) {
-                $kwid = $u->selectrow_array('SELECT kwid FROM userkeywords WHERE userid = ? AND keyword = ?',
-                                            undef, $u->{userid}, $kw) + 0;
-            }
-
-            # nuke cache
-            LJ::MemCache::delete([ $u->{userid}, "kws:$u->{userid}" ]);
-        }
-    }
-    return $kwid;
-}
-
 sub get_interest {
     my $intid = shift
         or return undef;
diff -r 4d8bd333d94e -r f1133de2d63a cgi-bin/ljmemories.pl
--- a/cgi-bin/ljmemories.pl	Sun Sep 20 09:15:19 2009 +0000
+++ b/cgi-bin/ljmemories.pl	Sun Sep 20 18:24:59 2009 +0000
@@ -56,7 +56,7 @@ sub create {
     $journalid += 0;
     $ditemid += 0;
     $security ||= 'public';
-    $kwids ||= [ LJ::get_keyword_id($u, '*') ]; # * means no category
+    $kwids ||= [ $u->get_keyword_id( '*' ) ]; # * means no category
     $des = LJ::trim($des);
     return undef unless $userid && $journalid && $ditemid && $des && $security && @$kwids;
     return undef unless $security =~ /^(?:public|friends|private)$/;
diff -r 4d8bd333d94e -r f1133de2d63a cgi-bin/taglib.pl
--- a/cgi-bin/taglib.pl	Sun Sep 20 09:15:19 2009 +0000
+++ b/cgi-bin/taglib.pl	Sun Sep 20 18:24:59 2009 +0000
@@ -730,7 +730,7 @@ sub update_logtags {
         # and turn everything into ids
         $opts->{"${verb}_ids"} ||= [];
         foreach my $kw (@{$opts->{$verb} || []}) {
-            my $kwid = LJ::get_keyword_id($u, $kw, $can_control);
+            my $kwid = $u->get_keyword_id( $kw, $can_control );
             if ($can_control) {
                 # error if we failed to create
                 return undef unless $kwid;
@@ -1065,7 +1065,7 @@ sub create_usertag {
 
     my %res;
     foreach my $tag (@$tags) {
-        my $kwid = LJ::get_keyword_id($u, $tag);
+        my $kwid = $u->get_keyword_id( $tag );
         return undef unless $kwid;
 
         $res{$tag} = $kwid;
@@ -1125,7 +1125,7 @@ sub delete_usertag {
         my $tag = LJ::Tags::validate_tag($val);
         return undef unless $tag;
 
-        $kwid = LJ::get_keyword_id($u, $tag, 0);
+        $kwid = $u->get_keyword_id( $tag, 0 );
     } elsif ($type eq 'id') {
         $kwid = $val + 0;
     }
@@ -1213,14 +1213,14 @@ sub rename_usertag {
         my $val = LJ::Tags::validate_tag($oldkw);
         return $err->( LJ::Lang::ml( 'taglib.error.invalid', { tagname => LJ::ehtml( $oldkw ) } ) )
             unless $val;
-        $kwid = LJ::get_keyword_id($u, $val, 0);
+        $kwid = $u->get_keyword_id( $val, 0 );
     } elsif ($type eq 'id') {
         $kwid = $oldkw + 0;
     }
     return $err->() unless $kwid;
 
     # see if this is already a keyword
-    my $newkwid = LJ::get_keyword_id($u, $newname);
+    my $newkwid = $u->get_keyword_id( $newname );
     return undef unless $newkwid;
 
     # see if the tag we're renaming TO already exists as a keyword,
@@ -1293,7 +1293,7 @@ sub set_usertag_display {
         return undef unless $var;
 
         # do not auto-vivify but get the keyword id
-        $kwid = LJ::get_keyword_id($u, $var, 0);
+        $kwid = $u->get_keyword_id( $var, 0 );
     }
     return undef unless $kwid;
 
diff -r 4d8bd333d94e -r f1133de2d63a htdocs/tools/memadd.bml
--- a/htdocs/tools/memadd.bml	Sun Sep 20 09:15:19 2009 +0000
+++ b/htdocs/tools/memadd.bml	Sun Sep 20 18:24:59 2009 +0000
@@ -313,7 +313,7 @@
                 return;
             }
 
-            my $kwid = LJ::get_keyword_id($memoryu, $kw);
+            my $kwid = $memoryu->get_keyword_id( $kw );
             $needflush = 1 unless defined $exist_kw->{$kwid};
             push @kwid, $kwid;
         }
--------------------------------------------------------------------------------

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
No Subject Icon Selected
More info about formatting

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