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-11-26 05:17 am

[dw-free] remove LJ::can_view

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

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

Remove LJ::can_view in favor of LJ::Entry->visible_to, former was only used
in three places anyway.

Patch by [staff profile] mark.

Files modified:
  • cgi-bin/LJ/Talk.pm
  • cgi-bin/LJ/User.pm
  • htdocs/edittags.bml
--------------------------------------------------------------------------------
diff -r be43f2100215 -r 043f9a944c46 cgi-bin/LJ/Talk.pm
--- a/cgi-bin/LJ/Talk.pm	Thu Nov 26 05:06:52 2009 +0000
+++ b/cgi-bin/LJ/Talk.pm	Thu Nov 26 05:17:10 2009 +0000
@@ -253,27 +253,29 @@ sub check_viewable
         return 0;
     };
 
-    unless (LJ::can_view($remote, $item)) {
-        my $journal = LJ::load_userid( $item->{ownerid} );
-        my $journalname = $journal->username;
+    my $ent = LJ::Entry->new_from_item_hash( $item )
+        or die "Unable to construct entry object.\n";
+    return 1 if $ent->visible_to( $remote );
 
-        if (defined $remote) {
-            if ( $journal->is_community && ! $journal->is_closed_membership && $remote && $item->{security} ne "private" ) {
-                return $err->( BML::ml( 'talk.error.notauthorised.comm.open', { aopts => "href='$LJ::SITEROOT/community/join?comm=$journalname'" } ) );
-            } elsif ( $journal->is_community && $journal->is_closed_membership ) {
-                return $err->( BML::ml( 'talk.error.notauthorised.comm.closed' ) );
-            } else {
-                return $err->( BML::ml( 'talk.error.notauthorised' ) );
-            }
+    my $journal = LJ::load_userid( $item->{ownerid} );
+    my $journalname = $journal->username;
+
+    if (defined $remote) {
+        if ( $journal->is_community && ! $journal->is_closed_membership && $remote && $item->{security} ne "private" ) {
+            return $err->( BML::ml( 'talk.error.notauthorised.comm.open', { aopts => "href='$LJ::SITEROOT/community/join?comm=$journalname'" } ) );
+        } elsif ( $journal->is_community && $journal->is_closed_membership ) {
+            return $err->( BML::ml( 'talk.error.notauthorised.comm.closed' ) );
         } else {
-            my $r = BML::get_request();
-            my $host = $r->headers_in->{Host};
-            my $args = scalar $r->args;
-            my $querysep = $args ? "?" : "";
-            my $redir = LJ::eurl("http://" . $host . $r->uri . $querysep . $args);
+            return $err->( BML::ml( 'talk.error.notauthorised' ) );
+        }
+    } else {
+        my $r = BML::get_request();
+        my $host = $r->headers_in->{Host};
+        my $args = scalar $r->args;
+        my $querysep = $args ? "?" : "";
+        my $redir = LJ::eurl("http://" . $host . $r->uri . $querysep . $args);
 
-            return $err->(BML::redirect("$LJ::SITEROOT/?returnto=$redir&errmsg=notloggedin"));
-        }
+        return $err->(BML::redirect("$LJ::SITEROOT/?returnto=$redir&errmsg=notloggedin"));
     }
 
     return 1;
@@ -3087,9 +3089,11 @@ sub init {
     # check that user can even view this post, which is required
     # to reply to it
     ####  Check security before viewing this post
-    unless (LJ::can_view($up, $item)) {
-        $bmlerr->("$SC.error.mustlogin") unless (defined $up);
-        $bmlerr->("$SC.error.noauth");
+    my $ent = LJ::Entry->new_from_item_hash( $item )
+        or die "Unable to create entry object.\n";
+    unless ( $ent->visible_to( $up ) ) {
+        $bmlerr->( "$SC.error.mustlogin" ) unless defined $up;
+        $bmlerr->( "$SC.error.noauth" );
         return undef;
     }
 
diff -r be43f2100215 -r 043f9a944c46 cgi-bin/LJ/User.pm
--- a/cgi-bin/LJ/User.pm	Thu Nov 26 05:06:52 2009 +0000
+++ b/cgi-bin/LJ/User.pm	Thu Nov 26 05:17:10 2009 +0000
@@ -60,7 +60,7 @@ use LJ::S2Theme;
 ###  13. Community-Related Functions and Authas
 ###  14. Adult Content Functions
 ###  15. Email-Related Functions
-###  16. Entry-Related Functions
+###  16. (( there is no section 16 ))
 ###  17. Interest-Related Functions
 ###  18. Jabber-Related Functions
 ###  19. OpenID and Identity Functions
@@ -7680,72 +7680,6 @@ sub set_email {
 
 
 ########################################################################
-###  16. Entry-Related Functions
-
-# <LJFUNC>
-# name: LJ::can_view
-# des: Checks to see if the remote user can view a given journal entry.
-#      <b>Note:</b> This is meant for use on single entries at a time,
-#      not for calling many times on every entry in a journal.
-# returns: boolean; 1 if remote user can see item
-# args: remote, item
-# des-item: Hashref from the 'log' table.
-# </LJFUNC>
-sub can_view
-{
-
-# TODO: fold this into LJ::Entry->visible_to :(
-
-    &nodb;
-    my ( $remote, $item ) = @_;
-
-    # public is okay
-    return 1 if $item->{'security'} eq "public";
-
-    # must be logged in otherwise
-    return 0 unless $remote;
-
-    my $userid = int($item->{'ownerid'} || $item->{'journalid'});
-    my $remoteid = int( $remote->userid );
-
-    # owners can always see their own.
-    return 1 if $userid == $remoteid;
-
-    # should be 'usemask' or 'private' security from here out, otherwise
-    # assume it's something new and return 0
-    return 0 unless $item->{security} eq "usemask" || $item->{security} eq "private";
-
-    return 0 unless $remote->is_individual;
-
-    # this far down we have to load the user
-    my $u = LJ::want_user( $userid ) or return 0;
-
-    if ( $item->{security} eq "private" ) {
-        # other people can't read private on personal journals
-        return 0 if $u->is_individual;
-
-        # but community administrators can read private entries on communities
-        return 1 if $u->is_community && $remote->can_manage( $u );
-
-        # private entry on a community; we're not allowed to see this
-        return 0;
-    }
-
-    if ( $item->{security} eq "usemask" ) {
-        # check if it's a community and they're a member
-        return 1 if $u->is_community &&
-                    $remote->member_of( $u );
-    
-        # now load allowmask
-        my $allowed = ( $u->trustmask( $remoteid ) & int($item->{'allowmask'}) );
-        return $allowed ? 1 : 0;  # no need to return matching mask
-    }
-
-    return 0;
-}
-
-
-########################################################################
 ###  17. Interest-Related Functions
 
 sub interest_string_to_list {
diff -r be43f2100215 -r 043f9a944c46 htdocs/edittags.bml
--- a/htdocs/edittags.bml	Thu Nov 26 05:06:52 2009 +0000
+++ b/htdocs/edittags.bml	Thu Nov 26 05:17:10 2009 +0000
@@ -33,8 +33,11 @@ body<=
     my $logrow = LJ::get_log2_row($u, $jitemid);
     return $err->($ML{'.invalid.entry'}) unless $logrow;
     return $err->($ML{'.invalid.entry'}) unless $logrow->{anum} == $anum;
-    return $err->($ML{'.invalid.notauthorized'})
-        unless LJ::can_view($remote, $logrow);
+
+    my $ent = LJ::Entry->new_from_item_hash( $logrow )
+        or die "Unable to create entry object.\n";
+    return $err->( $ML{'.invalid.notauthorized'} )
+        unless $ent->visible_to( $remote );
 
     # poster must be visible too
     if ($logrow->{posterid} != $u->{userid}) {
--------------------------------------------------------------------------------

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