fu: Close-up of Fu, bringing a scoop of water to her mouth (Default)
fu ([personal profile] fu) wrote in [site community profile] changelog2010-06-28 09:54 am

[dw-free] provide user methods for check_rel usage

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

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

Use $u->has_banned( $remote ), instead of LJ::is_banned( $remote, $u ), or
$u->is_banned( $remote ). Note the confusing inconsistent argument order.
Also, code modernization.

Patch by [personal profile] kareila.

Files modified:
  • cgi-bin/LJ/Poll.pm
  • cgi-bin/LJ/Tags.pm
  • cgi-bin/LJ/Talk.pm
  • cgi-bin/LJ/User.pm
  • cgi-bin/communitylib.pl
  • cgi-bin/ljprotocol.pl
  • cgi-bin/ljrelation.pl
  • htdocs/community/join.bml
  • htdocs/tools/endpoints/changerelation.bml
  • htdocs/tools/endpoints/ctxpopup.bml
  • htdocs/tools/popsubscriptions.bml
--------------------------------------------------------------------------------
diff -r 4ea4957bcb9f -r 44a1463f4850 cgi-bin/LJ/Poll.pm
--- a/cgi-bin/LJ/Poll.pm	Mon Jun 28 16:50:56 2010 +0800
+++ b/cgi-bin/LJ/Poll.pm	Mon Jun 28 18:00:21 2010 +0800
@@ -1136,13 +1136,12 @@ sub can_vote {
     # owner can do anything
     return 1 if $remote && $remote->userid == $self->posterid;
 
-    my $is_friend = $remote && $self->journal->trusts_or_has_member( $remote );
+    my $trusted = $remote && $self->journal->trusts_or_has_member( $remote );
 
-    return 0 if $self->whovote eq "trusted" && !$is_friend;
+    return 0 if $self->whovote eq "trusted" && !$trusted;
 
-    if (LJ::is_banned($remote, $self->journalid) || LJ::is_banned($remote, $self->posterid)) {
-        return 0;
-    }
+    return 0 if $self->journal->has_banned( $remote )
+             or $self->poster->has_banned( $remote );
 
     if ($self->is_createdate_restricted) {
         my $propval = $self->prop("createdate");
diff -r 4ea4957bcb9f -r 44a1463f4850 cgi-bin/LJ/Tags.pm
--- a/cgi-bin/LJ/Tags.pm	Mon Jun 28 16:50:56 2010 +0800
+++ b/cgi-bin/LJ/Tags.pm	Mon Jun 28 18:00:21 2010 +0800
@@ -473,7 +473,7 @@ sub can_add_tags {
     my $remote = LJ::want_user(shift);
     return undef unless $u && $remote;
     return undef unless $remote->is_person;
-    return undef if LJ::is_banned($remote, $u);
+    return undef if $u->has_banned( $remote );
 
     # get permission hashref and check it; note that we fall back to the control
     # permission, which will allow people to add even if they can't add by default
@@ -491,9 +491,10 @@ sub can_add_entry_tags {
 
     return undef unless $remote && $entry;
     return undef unless $remote->is_personal;
-    return undef if $remote->is_banned( $entry->journal );
 
     my $journal = $entry->journal;
+    return undef if $journal->has_banned( $remote );
+
     my $perms = LJ::Tags::get_permission_levels( $journal );
 
     # specific case: are we the author of this entry, or otherwise an admin of the journal?
@@ -528,7 +529,7 @@ sub can_control_tags {
     my $remote = LJ::want_user(shift);
     return undef unless $u && $remote;
     return undef unless $remote->is_person;
-    return undef if LJ::is_banned($remote, $u);
+    return undef if $u->has_banned( $remote );
 
     # get permission hashref and check it
     my $perms = LJ::Tags::get_permission_levels($u);
diff -r 4ea4957bcb9f -r 44a1463f4850 cgi-bin/LJ/Talk.pm
--- a/cgi-bin/LJ/Talk.pm	Mon Jun 28 16:50:56 2010 +0800
+++ b/cgi-bin/LJ/Talk.pm	Mon Jun 28 18:00:21 2010 +0800
@@ -1331,7 +1331,7 @@ sub talkform {
 
         $ret .= "<tr valign='middle' id='ljuser_row'>";
 
-        if ( LJ::is_banned( $remote, $journalu ) ) {
+        if ( $journalu->has_banned( $remote ) ) {
             $ret .= $bantext->( 'user' );
         } else {
             $ret .= "<td align='center'><img src='$LJ::IMGPREFIX/silk/identity/user.png'  onclick='handleRadios(1);' /></td>";
@@ -1427,7 +1427,7 @@ sub talkform {
                                             $journalu->trusts( $remote ) )
                ) {
                 $ret .= "<tr valign='middle' id='oidli' name='oidli'>";
-                if ( LJ::is_banned( $remote, $journalu ) ) {
+                if ( $journalu->has_banned( $remote ) ) {
                     $ret .= $bantext->( 'openid' );
                 } else {
                     $ret .= "<td align='center'><img src='$LJ::IMGPREFIX/silk/identity/openid.png' onclick='handleRadios(4);' /></td>";
@@ -1529,7 +1529,7 @@ sub talkform {
         # Don't worry about a real href since js hides the row anyway
         my $other_user = "<script language='JavaScript'>if (document.getElementById) {document.write(\"&nbsp;<a href='#' onClick='otherLJUser();return false;'>[other]</a>\");}</script>";
 
-        if ( LJ::is_banned( $remote, $journalu ) ) {
+        if ( $journalu->has_banned( $remote ) ) {
             $ret .= $bantext->( 'user', $other_user );
         } else {
             $ret .= "<td align='center'><img src='$LJ::IMGPREFIX/silk/identity/user.png'  onclick='handleRadios(1);' /></td>";
@@ -3009,9 +3009,7 @@ sub init {
             $up = LJ::load_user($form->{'userpost'});
             if ($up) {
                 ### see if the user is banned from posting here
-                if (LJ::is_banned($up, $journalu)) {
-                    $mlerr->("$SC.error.banned");
-                }
+                $mlerr->("$SC.error.banned") if $journalu->has_banned( $up );
 
                 # TEMP until we have better openid support
                 if ($up->is_identity && $journalu->{'opt_whocanreply'} eq "reg") {
@@ -3076,7 +3074,7 @@ sub init {
             $up = $remote;
 
             ### see if the user is banned from posting here
-            $mlerr->("$SC.error.banned") if (LJ::is_banned($up, $journalu));
+            $mlerr->("$SC.error.banned") if $journalu->has_banned( $up );
 
             if ($form->{'oiddo_login'}) {
                 $up->make_login_session($form->{'exptype'}, $form->{'ipfixed'});
diff -r 4ea4957bcb9f -r 44a1463f4850 cgi-bin/LJ/User.pm
--- a/cgi-bin/LJ/User.pm	Mon Jun 28 16:50:56 2010 +0800
+++ b/cgi-bin/LJ/User.pm	Mon Jun 28 18:00:21 2010 +0800
@@ -3227,10 +3227,15 @@ sub ban_user_multi {
 
 
 # return if $target is banned from $u's journal
-*has_banned = \&is_banned;
-sub is_banned {
-    my ($u, $target) = @_;
-    return LJ::is_banned($target->userid, $u->userid);
+sub has_banned {
+    my ( $u, $target ) = @_;
+
+    my $uid = LJ::want_userid( $u );
+    my $jid = LJ::want_userid( $target );
+    return 1 unless $uid && $jid;
+    return 0 if $uid == $jid;  # can't ban yourself
+
+    return LJ::check_rel( $uid, $jid, 'B' );
 }
 
 
diff -r 4ea4957bcb9f -r 44a1463f4850 cgi-bin/communitylib.pl
--- a/cgi-bin/communitylib.pl	Mon Jun 28 16:50:56 2010 +0800
+++ b/cgi-bin/communitylib.pl	Mon Jun 28 18:00:21 2010 +0800
@@ -76,7 +76,7 @@ sub send_comm_invite {
     return undef unless $u && $cu && $mu;
 
     # step 1: if the user has banned the community, don't accept the invite
-    return LJ::error('comm_user_has_banned') if LJ::is_banned($cu, $u);
+    return LJ::error('comm_user_has_banned') if $u->has_banned( $cu );
 
     # step 2: lazily clean out old community invites.
     return LJ::error('db') unless $u->writer;
diff -r 4ea4957bcb9f -r 44a1463f4850 cgi-bin/ljprotocol.pl
--- a/cgi-bin/ljprotocol.pl	Mon Jun 28 16:50:56 2010 +0800
+++ b/cgi-bin/ljprotocol.pl	Mon Jun 28 18:00:21 2010 +0800
@@ -1213,8 +1213,7 @@ sub postevent
 
     # make sure this user isn't banned from posting here (if
     # this is a community journal)
-    return fail($err,151) if
-        LJ::is_banned($posterid, $ownerid);
+    return fail($err,151) if $uowner->has_banned( $u );
 
     # don't allow backdated posts in communities
     return fail($err,152) if
diff -r 4ea4957bcb9f -r 44a1463f4850 cgi-bin/ljrelation.pl
--- a/cgi-bin/ljrelation.pl	Mon Jun 28 16:50:56 2010 +0800
+++ b/cgi-bin/ljrelation.pl	Mon Jun 28 18:00:21 2010 +0800
@@ -13,28 +13,6 @@
 
 package LJ;
 use strict;
-
-# <LJFUNC>
-# name: LJ::is_banned
-# des: Checks to see if a user is banned from a journal.
-# returns: boolean; 1 if "user" is banned from "journal"
-# args: user, journal
-# des-user: User hashref or userid.
-# des-journal: Journal hashref or userid.
-# </LJFUNC>
-sub is_banned {
-    # get user and journal ids
-    my $uid = LJ::want_userid(shift);
-    my $jid = LJ::want_userid(shift);
-    return 1 unless $uid && $jid;
-
-    # for speed: common case is non-community posting and replies
-    # in own journal.  avoid db hit.
-    return 0 if ($uid == $jid);
-
-    # edge from journal -> user
-    return LJ::check_rel($jid, $uid, 'B');
-}
 
 # <LJFUNC>
 # name: LJ::get_reluser_id
diff -r 4ea4957bcb9f -r 44a1463f4850 htdocs/community/join.bml
--- a/htdocs/community/join.bml	Mon Jun 28 16:50:56 2010 +0800
+++ b/htdocs/community/join.bml	Mon Jun 28 18:00:21 2010 +0800
@@ -53,7 +53,7 @@ body<=
 
     # ensure this user isn't banned
     return "<?h1 $ML{'Sorry'} h1?><?p $ML{'.label.banned'} p?>"
-        if LJ::is_banned($remote, $cu);
+        if $cu->has_banned( $remote );
 
     # and make sure they're not already a member
     return "<?h1 $ML{'Error'} h1?><?p $ML{'.error.already.member'} p?>"
diff -r 4ea4957bcb9f -r 44a1463f4850 htdocs/tools/endpoints/changerelation.bml
--- a/htdocs/tools/endpoints/changerelation.bml	Mon Jun 28 16:50:56 2010 +0800
+++ b/htdocs/tools/endpoints/changerelation.bml	Mon Jun 28 18:00:21 2010 +0800
@@ -105,11 +105,11 @@ _c?>
         $success = $remote->ban_user($ban_user);
         LJ::Hooks::run_hooks('ban_set', $remote, $ban_user);
 
-        #$ret{is_banned} = $remote->is_banned($ban_user) ? 1 : 0;
+        #$ret{is_banned} = $remote->has_banned($ban_user) ? 1 : 0;
     } elsif ( $action eq 'setUnban' ) {
         my $unban_user = LJ::load_user($target);
         $success = $remote->unban_user_multi($unban_user->{userid});
-        #$ret{is_banned} = $remote->is_banned($unban_user) ? 1 : 0;
+        #$ret{is_banned} = $remote->has_banned($unban_user) ? 1 : 0;
     } else {
         return $err->("Invalid action $action");
     }
diff -r 4ea4957bcb9f -r 44a1463f4850 htdocs/tools/endpoints/ctxpopup.bml
--- a/htdocs/tools/endpoints/ctxpopup.bml	Mon Jun 28 16:50:56 2010 +0800
+++ b/htdocs/tools/endpoints/ctxpopup.bml	Mon Jun 28 18:00:21 2010 +0800
@@ -138,8 +138,7 @@ _c?>
     my %extrainfo = LJ::Hooks::run_hook("ctxpopup_extra_info", $u);
     %ret = (%ret, %extrainfo);
 
-    $ret{is_banned} = LJ::is_banned($u,$remote) ? 1 : 0
-        if $remote && $u;
+    $ret{is_banned} = $remote->has_banned( $u ) ? 1 : 0 if $remote;
 
     $ret{success} = 1;
     return LJ::js_dumper(\%ret);
diff -r 4ea4957bcb9f -r 44a1463f4850 htdocs/tools/popsubscriptions.bml
--- a/htdocs/tools/popsubscriptions.bml	Mon Jun 28 16:50:56 2010 +0800
+++ b/htdocs/tools/popsubscriptions.bml	Mon Jun 28 18:00:21 2010 +0800
@@ -127,7 +127,7 @@ body<=
         my $popuser = $popusers->{$uid};
 
         # don't show inactive accounts, or banned accounts
-        next if $uid == $remote_id || $popuser->is_inactive || $remote->is_banned( $popuser, $remote);
+        next if $uid == $remote_id || $popuser->is_inactive || $remote->has_banned( $popuser );
 
         # sort userids into arrays
         if ( $numberpersonal < $maximum && $popuser->is_personal ) {
--------------------------------------------------------------------------------

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