afuna: Cat under a blanket. Text: "Cats are just little people with Fur and Fangs" (Default)
afuna ([personal profile] afuna) wrote in [site community profile] changelog2009-08-29 01:10 pm

[dw-free] privilege function cleanup

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

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

Migrate LJ::check_priv to $u->check_priv; remove redundant checks for (priv,
"*"); style compliance.

Patch by [personal profile] kareila.

Files modified:
  • bin/upgrading/make_system.pl
  • cgi-bin/LJ/Console/Command/AllowOpenProxy.pm
  • cgi-bin/LJ/Console/Command/BanList.pm
  • cgi-bin/LJ/Console/Command/ChangeCommunityAdmin.pm
  • cgi-bin/LJ/Console/Command/ChangeJournalStatus.pm
  • cgi-bin/LJ/Console/Command/ChangeJournalType.pm
  • cgi-bin/LJ/Console/Command/Comment.pm
  • cgi-bin/LJ/Console/Command/Community.pm
  • cgi-bin/LJ/Console/Command/EmailAlias.pm
  • cgi-bin/LJ/Console/Command/Entry.pm
  • cgi-bin/LJ/Console/Command/ExpungeUserpic.pm
  • cgi-bin/LJ/Console/Command/FaqCat.pm
  • cgi-bin/LJ/Console/Command/FindUserCluster.pm
  • cgi-bin/LJ/Console/Command/Finduser.pm
  • cgi-bin/LJ/Console/Command/GetMaintainer.pm
  • cgi-bin/LJ/Console/Command/GetModerator.pm
  • cgi-bin/LJ/Console/Command/Infohistory.pm
  • cgi-bin/LJ/Console/Command/MakeInvites.pm
  • cgi-bin/LJ/Console/Command/MoodthemePublic.pm
  • cgi-bin/LJ/Console/Command/Priv.pm
  • cgi-bin/LJ/Console/Command/PrivPackage.pm
  • cgi-bin/LJ/Console/Command/ResetEmail.pm
  • cgi-bin/LJ/Console/Command/ResetPassword.pm
  • cgi-bin/LJ/Console/Command/Set.pm
  • cgi-bin/LJ/Console/Command/SetBadpassword.pm
  • cgi-bin/LJ/Console/Command/Suspend.pm
  • cgi-bin/LJ/Console/Command/SynEdit.pm
  • cgi-bin/LJ/Console/Command/SynMerge.pm
  • cgi-bin/LJ/Console/Command/SysbanAdd.pm
  • cgi-bin/LJ/Console/Command/Unsuspend.pm
  • cgi-bin/LJ/Entry.pm
  • cgi-bin/LJ/S2/DayPage.pm
  • cgi-bin/LJ/S2/EntryPage.pm
  • cgi-bin/LJ/S2/MonthPage.pm
  • cgi-bin/LJ/S2/RecentPage.pm
  • cgi-bin/LJ/SynSuck.pm
  • cgi-bin/LJ/User.pm
  • cgi-bin/supportlib.pl
  • htdocs/admin/capedit.bml
  • htdocs/admin/clusterstatus.bml
  • htdocs/admin/dupkiller.bml
  • htdocs/admin/entryprops.bml
  • htdocs/admin/faq/faqedit.bml
  • htdocs/admin/faq/index.bml
  • htdocs/admin/fileedit/index.bml
  • htdocs/admin/index.bml
  • htdocs/admin/invitecodes.bml
  • htdocs/admin/invites/distribute.bml
  • htdocs/admin/invites/requests.bml
  • htdocs/admin/invites/review.bml
  • htdocs/admin/logout_user.bml
  • htdocs/admin/memcache.bml
  • htdocs/admin/memcache_view.bml
  • htdocs/admin/mysql_status.bml
  • htdocs/admin/navtag.bml
  • htdocs/admin/pay/import.bml
  • htdocs/admin/pay/index.bml
  • htdocs/admin/pay/view.bml
  • htdocs/admin/priv/index.bml
  • htdocs/admin/propedit.bml
  • htdocs/admin/qotd/add.bml
  • htdocs/admin/qotd/manage.bml
  • htdocs/admin/recent_comments.bml
  • htdocs/admin/schema/index.bml
  • htdocs/admin/schools/edit.bml
  • htdocs/admin/schools/merge.bml
  • htdocs/admin/schools/pending.bml
  • htdocs/admin/schools/rename.bml
  • htdocs/admin/sitemessages/add.bml
  • htdocs/admin/sitemessages/manage.bml
  • htdocs/admin/spamreports.bml
  • htdocs/admin/stats.bml
  • htdocs/admin/statushistory.bml
  • htdocs/admin/sysban.bml
  • htdocs/admin/userlog.bml
  • htdocs/allpics.bml
  • htdocs/community/settings.bml
  • htdocs/customize/advanced/layerbrowse.bml
  • htdocs/customize/advanced/layers.bml
  • htdocs/customize/advanced/layersource.bml
  • htdocs/customize/advanced/styles.bml
  • htdocs/manage/logins.bml
  • htdocs/misc/entry_redirect.bml
  • htdocs/register.bml
  • htdocs/support/actmulti.bml
  • htdocs/support/faqbrowse.bml
  • htdocs/support/help.bml
  • htdocs/support/history.bml
  • htdocs/support/see_request.bml
  • htdocs/support/stock_answers.bml
  • htdocs/talkread.bml
  • htdocs/tools/recent_email.bml
  • htdocs/tools/recent_emailposts.bml
  • htdocs/translate/editpage.bml
  • htdocs/translate/search.bml
  • htdocs/userinfo.bml
  • htdocs/view/index.bml
  • t/console-priv.t
  • t/privs.t
--------------------------------------------------------------------------------
diff -r 585a9167642b -r 051ef3de84ec bin/upgrading/make_system.pl
--- a/bin/upgrading/make_system.pl	Sat Aug 29 12:54:41 2009 +0000
+++ b/bin/upgrading/make_system.pl	Sat Aug 29 13:08:42 2009 +0000
@@ -37,7 +37,7 @@ unless ($u) {
 }
 
 print "Giving 'system' account 'admin' priv on all areas...\n";
-if (LJ::check_priv($u, "admin", "*")) {
+if ( $u->has_priv( "admin", "*" ) ) {
     print "Already has it.\n";
 } else {
     my $sth = $dbh->prepare("INSERT INTO priv_map (userid, prlid, arg) ".
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/AllowOpenProxy.pm
--- a/cgi-bin/LJ/Console/Command/AllowOpenProxy.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/AllowOpenProxy.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -17,7 +17,7 @@ sub usage { '<ip> [ <forever> ]' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "allowopenproxy");
+    return $remote ? $remote->has_priv( "allowopenproxy" ) : 0;
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/BanList.pm
--- a/cgi-bin/LJ/Console/Command/BanList.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/BanList.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -35,7 +35,7 @@ sub execute {
             unless $journal;
 
         return $self->error("You are not a maintainer of this account")
-            unless LJ::can_manage($remote, $journal) || LJ::check_priv($remote, "finduser");
+            unless LJ::can_manage( $remote, $journal ) || ( $remote && $remote->has_priv( "finduser" ) );
     }
 
     my $banids = LJ::load_rel_user($journal, 'B') || [];
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/ChangeCommunityAdmin.pm
--- a/cgi-bin/LJ/Console/Command/ChangeCommunityAdmin.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/ChangeCommunityAdmin.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -17,7 +17,7 @@ sub usage { '<community> <new_owner>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "communityxfer");
+    return $remote && $remote->has_priv( "communityxfer" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/ChangeJournalStatus.pm
--- a/cgi-bin/LJ/Console/Command/ChangeJournalStatus.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/ChangeJournalStatus.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -17,7 +17,7 @@ sub usage { '<account> <status>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "siteadmin", "users");
+    return $remote && $remote->has_priv( "siteadmin", "users" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/ChangeJournalType.pm
--- a/cgi-bin/LJ/Console/Command/ChangeJournalType.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/ChangeJournalType.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -19,7 +19,7 @@ sub usage { '<journal> <type> <owner> [f
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "changejournaltype") || $LJ::IS_DEV_SERVER;
+    return ( $remote && $remote->has_priv( "changejournaltype" ) ) || $LJ::IS_DEV_SERVER;
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/Comment.pm
--- a/cgi-bin/LJ/Console/Command/Comment.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/Comment.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -18,7 +18,7 @@ sub usage { '<action> <url> <reason>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "deletetalk");
+    return $remote && $remote->has_priv( "deletetalk" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/Community.pm
--- a/cgi-bin/LJ/Console/Command/Community.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/Community.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -40,7 +40,7 @@ sub execute {
     return $self->error("Unknown user: $user")
         unless $target;
 
-    my $can_add = LJ::can_manage($remote, $comm) || LJ::check_priv($remote, "sharedjournal", "*");
+    my $can_add = LJ::can_manage( $remote, $comm ) || ( $remote && $remote->has_priv( "sharedjournal", "*" ) );
     my $can_remove = $can_add || LJ::u_equals($remote, $target);
 
     return $self->error("You cannot add users to this community.")
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/EmailAlias.pm
--- a/cgi-bin/LJ/Console/Command/EmailAlias.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/EmailAlias.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -18,7 +18,7 @@ sub usage { '<action> <alias> [ <value> 
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "reset_email");
+    return $remote && $remote->has_priv( "reset_email" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/Entry.pm
--- a/cgi-bin/LJ/Console/Command/Entry.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/Entry.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -18,7 +18,7 @@ sub usage { '<action> <url> <reason>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "deletetalk");
+    return $remote && $remote->has_priv( "deletetalk" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/ExpungeUserpic.pm
--- a/cgi-bin/LJ/Console/Command/ExpungeUserpic.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/ExpungeUserpic.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -16,7 +16,7 @@ sub usage { '<url>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "siteadmin", "userpics");
+    return $remote && $remote->has_priv( "siteadmin", "userpics" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/FaqCat.pm
--- a/cgi-bin/LJ/Console/Command/FaqCat.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/FaqCat.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -66,7 +66,7 @@ sub execute {
     my $remote = LJ::get_remote();
     # anything from this point on requires a priv
     return $self->error("You are not authorized to run this command.")
-        unless LJ::check_priv($remote, "faqcat");
+        unless $remote && $remote->has_priv( "faqcat" );
 
     if ($command eq "delete") {
         my $catkey = shift @args;
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/FindUserCluster.pm
--- a/cgi-bin/LJ/Console/Command/FindUserCluster.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/FindUserCluster.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -16,7 +16,7 @@ sub usage { '<user>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "supportviewscreened") || LJ::check_priv($remote, "supporthelp");
+    return $remote && ( $remote->has_priv( "supportviewscreened" ) || $remote->has_priv( "supporthelp" ) );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/Finduser.pm
--- a/cgi-bin/LJ/Console/Command/Finduser.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/Finduser.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -17,7 +17,7 @@ sub usage { '<criteria> <data>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "finduser");
+    return $remote && $remote->has_priv( "finduser" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/GetMaintainer.pm
--- a/cgi-bin/LJ/Console/Command/GetMaintainer.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/GetMaintainer.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -16,7 +16,7 @@ sub usage { '<user>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "finduser");
+    return $remote && $remote->has_priv( "finduser" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/GetModerator.pm
--- a/cgi-bin/LJ/Console/Command/GetModerator.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/GetModerator.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -16,7 +16,7 @@ sub usage { '<user>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "finduser");
+    return $remote && $remote->has_priv( "finduser" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/Infohistory.pm
--- a/cgi-bin/LJ/Console/Command/Infohistory.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/Infohistory.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -16,7 +16,7 @@ sub usage { '<user>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "finduser", "infohistory");
+    return $remote && $remote->has_priv( "finduser", "infohistory" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/MakeInvites.pm
--- a/cgi-bin/LJ/Console/Command/MakeInvites.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/MakeInvites.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -20,7 +20,7 @@ sub usage { '<username> <count> <reason>
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "payments");
+    return $remote && $remote->has_priv( "payments" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/MoodthemePublic.pm
--- a/cgi-bin/LJ/Console/Command/MoodthemePublic.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/MoodthemePublic.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -17,7 +17,7 @@ sub usage { '<themeid> <setting>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "moodthememanager");
+    return $remote && $remote->has_priv( "moodthememanager" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/Priv.pm
--- a/cgi-bin/LJ/Console/Command/Priv.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/Priv.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -18,7 +18,7 @@ sub usage { '<action> <privs> <usernames
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "admin") || $LJ::IS_DEV_SERVER;
+    return ( $remote && $remote->has_priv( "admin" ) ) || $LJ::IS_DEV_SERVER;
 }
 
 sub execute {
@@ -53,7 +53,7 @@ sub execute {
     my $remote = LJ::get_remote();
     foreach my $pair (@privs) {
         my ($priv, $arg) = @$pair;
-        unless (LJ::check_priv($remote, "admin", "$priv") || LJ::check_priv($remote, "admin", "$priv/$arg")) {
+        unless ( $remote && ( $remote->has_priv( "admin", "$priv" ) || $remote->has_priv( "admin", "$priv/$arg" ) ) ) {
             $self->error("You are not permitted to $action $priv:$arg");
             next;
         }
@@ -81,21 +81,21 @@ sub execute {
             my $shmsg;
             my $rv;
             if ($action eq "grant") {
-                if (LJ::check_priv($u, $priv, $arg)) {
+                if ( $u && $u->has_priv( $priv, $arg ) ) {
                     $self->error("$user already has $priv:$arg");
                     next;
                 }
                 $rv = $u->grant_priv($priv, $arg);
                 $shmsg = "Granting: '$priv' with arg '$arg'";
             } elsif ($action eq "revoke") {
-                unless (LJ::check_priv($u, $priv, $arg)) {
+                unless ( $u && $u->has_priv( $priv, $arg ) ) {
                     $self->error("$user does not have $priv:$arg");
                     next;
                 }
                 $rv = $u->revoke_priv($priv, $arg);
                 $shmsg = "Denying: '$priv' with arg '$arg'";
             } else {
-                unless (LJ::check_priv($u, $priv)) {
+                unless ( $u && $u->has_priv( $priv ) ) {
                     $self->error("$user does not have any $priv privs");
                     next;
                 }
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/PrivPackage.pm
--- a/cgi-bin/LJ/Console/Command/PrivPackage.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/PrivPackage.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -18,7 +18,7 @@ sub usage { '<command> [ <package> [ <ar
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "admin");
+    return $remote && $remote->has_priv( "admin" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/ResetEmail.pm
--- a/cgi-bin/LJ/Console/Command/ResetEmail.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/ResetEmail.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -18,7 +18,7 @@ sub usage { '<user> <value> <reason>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "reset_email");
+    return $remote && $remote->has_priv( "reset_email" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/ResetPassword.pm
--- a/cgi-bin/LJ/Console/Command/ResetPassword.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/ResetPassword.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -17,7 +17,7 @@ sub usage { '<user> <reason>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "reset_password");
+    return $remote && $remote->has_priv( "reset_password" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/Set.pm
--- a/cgi-bin/LJ/Console/Command/Set.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/Set.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -39,7 +39,7 @@ sub execute {
         return $self->error("Invalid account: $name")
             unless $journal;
         return $self->error("You are not permitted to change this journal's settings.")
-            unless LJ::can_manage($remote, $journal) || LJ::check_priv($remote, "siteadmin", "propedit");
+            unless LJ::can_manage( $remote, $journal ) || ( $remote && $remote->has_priv( "siteadmin", "propedit" ) );
     }
 
     my ($key, $value) = @args;
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/SetBadpassword.pm
--- a/cgi-bin/LJ/Console/Command/SetBadpassword.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/SetBadpassword.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -18,7 +18,7 @@ sub usage { '<user> <state> <reason>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "suspend");
+    return $remote && $remote->has_priv( "suspend" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/Suspend.pm
--- a/cgi-bin/LJ/Console/Command/Suspend.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/Suspend.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -17,7 +17,7 @@ sub usage { '<username or email address 
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "suspend");
+    return $remote && $remote->has_priv( "suspend" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/SynEdit.pm
--- a/cgi-bin/LJ/Console/Command/SynEdit.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/SynEdit.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -17,7 +17,7 @@ sub usage { '<user> <newurl>' }
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "syn_edit");
+    return $remote && $remote->has_priv( "syn_edit" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/SynMerge.pm
--- a/cgi-bin/LJ/Console/Command/SynMerge.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/SynMerge.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -18,7 +18,7 @@ sub usage { '<from_user> "to" <to_user> 
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "syn_edit");
+    return $remote && $remote->has_priv( "syn_edit" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/SysbanAdd.pm
--- a/cgi-bin/LJ/Console/Command/SysbanAdd.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/SysbanAdd.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -19,7 +19,7 @@ sub usage { '<what> <value> [ <days> ] [
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "sysban");
+    return $remote && $remote->has_priv( "sysban" );
 }
 
 sub execute {
@@ -30,7 +30,7 @@ sub execute {
 
     my $remote = LJ::get_remote();
     return $self->error("You cannot create these ban types")
-        unless LJ::check_priv($remote, "sysban", $what);
+        unless $remote && $remote->has_priv( "sysban", $what );
 
     my $err = LJ::sysban_validate($what, $value);
     return $self->error($err) if $err;
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Console/Command/Unsuspend.pm
--- a/cgi-bin/LJ/Console/Command/Unsuspend.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/Unsuspend.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -17,7 +17,7 @@ sub usage { '<username or email address 
 
 sub can_execute {
     my $remote = LJ::get_remote();
-    return LJ::check_priv($remote, "suspend");
+    return $remote && $remote->has_priv( "suspend" );
 }
 
 sub execute {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/Entry.pm
--- a/cgi-bin/LJ/Entry.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/Entry.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -732,9 +732,9 @@ sub visible_to
     return 0 unless $self->valid;
 
     my ($viewall, $viewsome) = (0, 0);
-    if ($canview) {
-        $viewall = LJ::check_priv($remote, 'canview', '*');
-        $viewsome = $viewall || LJ::check_priv($remote, 'canview', 'suspended');
+    if ( LJ::isu( $remote ) && $canview ) {
+        $viewall = $remote->has_priv( 'canview', '*' );
+        $viewsome = $viewall || $remote->has_priv( 'canview', 'suspended' );
     }
 
     # can see anything with viewall
@@ -742,7 +742,7 @@ sub visible_to
 
     # can't see anything unless the journal is visible
     # unless you have viewsome. then, other restrictions apply
-    if (!$viewsome) {
+    unless ( $viewsome ) {
         return 0 if $self->journal->is_inactive;
 
         # can't see anything by suspended users
@@ -969,7 +969,7 @@ sub is_suspended_for {
     my $u = shift;
 
     return 0 unless $self->is_suspended;
-    return 0 if LJ::check_priv($u, 'canview', 'suspended');
+    return 0 if LJ::isu($u) && $u->has_priv( 'canview', 'suspended' );
     return 0 if LJ::isu($u) && $u->equals($self->poster);
     return 1;
 }
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/S2/DayPage.pm
--- a/cgi-bin/LJ/S2/DayPage.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/S2/DayPage.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -49,11 +49,11 @@ sub DayPage
     if ($remote) {
 
         # do they have the viewall priv?
-        if ($get->{'viewall'} && LJ::check_priv($remote, "canview", "suspended")) {
+        if ( $get->{viewall} && $remote->has_priv( "canview", "suspended" ) ) {
             LJ::statushistory_add($u->{'userid'}, $remote->{'userid'},
                                   "viewall", "day: $user, statusvis: $u->{'statusvis'}");
-            $viewall = LJ::check_priv($remote, 'canview', '*');
-            $viewsome = $viewall || LJ::check_priv($remote, 'canview', 'suspended');
+            $viewall = $remote->has_priv( 'canview', '*' );
+            $viewsome = $viewall || $remote->has_priv( 'canview', 'suspended' );
         }
 
         if ($remote->{'userid'} == $u->{'userid'} || $viewall) {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/S2/EntryPage.pm
--- a/cgi-bin/LJ/S2/EntryPage.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/S2/EntryPage.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -19,11 +19,11 @@ sub EntryPage
 
     # setup viewall options
     my ($viewall, $viewsome) = (0, 0);
-    if ($get->{viewall} && LJ::check_priv($remote, 'canview', 'suspended')) {
+    if ( $get->{viewall} && $remote && $remote->has_priv( 'canview', 'suspended' ) ) {
         # we don't log here, as we don't know what entry we're viewing yet.  the logging
         # is done when we call EntryPage_entry below.
-        $viewall = LJ::check_priv($remote, 'canview', '*');
-        $viewsome = $viewall || LJ::check_priv($remote, 'canview', 'suspended');
+        $viewall = $remote->has_priv( 'canview', '*' );
+        $viewsome = $viewall || $remote->has_priv( 'canview', 'suspended' );
     }
 
     my ($entry, $s2entry) = EntryPage_entry($u, $remote, $opts);
@@ -403,13 +403,13 @@ sub EntryPage_entry
     my $userlite_poster  = UserLite($pu);
 
     # do they have the viewall priv?
-    my $canview = $get->{'viewall'} && LJ::check_priv($remote, "canview");
+    my $canview = $get->{viewall} && $remote && $remote->has_priv( "canview" );
     my ($viewall, $viewsome) = (0, 0);
     if ($canview) {
         LJ::statushistory_add($u->{'userid'}, $remote->{'userid'},
                               "viewall", "entry: $u->{'user'}, itemid: $itemid, statusvis: $u->{'statusvis'}");
-        $viewall = LJ::check_priv($remote, 'canview', '*');
-        $viewsome = $viewall || LJ::check_priv($remote, 'canview', 'suspended');
+        $viewall = $remote->has_priv( 'canview', '*' );
+        $viewsome = $viewall || $remote->has_priv( 'canview', 'suspended' );
     }
 
     # check using normal rules
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/S2/MonthPage.pm
--- a/cgi-bin/LJ/S2/MonthPage.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/S2/MonthPage.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -49,11 +49,11 @@ sub MonthPage
     if ($remote) {
 
         # do they have the viewall priv?
-        if ($get->{'viewall'} && LJ::check_priv($remote, "canview", "suspended")) {
+        if ( $get->{viewall} && $remote && $remote->has_priv( "canview", "suspended" ) ) {
             LJ::statushistory_add($u->{'userid'}, $remote->{'userid'},
                                   "viewall", "month: $user, statusvis: $u->{'statusvis'}");
-            $viewall = LJ::check_priv($remote, 'canview', '*');
-            $viewsome = $viewall || LJ::check_priv($remote, 'canview', 'suspended');
+            $viewall = $remote->has_priv( 'canview', '*' );
+            $viewsome = $viewall || $remote->has_priv( 'canview', 'suspended' );
         }
 
         if ($remote->{'userid'} == $u->{'userid'} || $viewall) {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/S2/RecentPage.pm
--- a/cgi-bin/LJ/S2/RecentPage.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/S2/RecentPage.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -76,11 +76,11 @@ sub RecentPage
     # do they want to view all entries, regardless of security?
     my $viewall = 0;
     my $viewsome = 0;
-    if ($get->{'viewall'} && LJ::check_priv($remote, "canview", "suspended")) {
+    if ( $get->{viewall} && $remote && $remote->has_priv( "canview", "suspended" ) ) {
         LJ::statushistory_add($u->{'userid'}, $remote->{'userid'},
                               "viewall", "lastn: $user, statusvis: $u->{'statusvis'}");
-        $viewall = LJ::check_priv($remote, 'canview', '*');
-        $viewsome = $viewall || LJ::check_priv($remote, 'canview', 'suspended');
+        $viewall = $remote->has_priv( 'canview', '*' );
+        $viewsome = $viewall || $remote->has_priv( 'canview', 'suspended' );
     }
 
     ## load the itemids
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/SynSuck.pm
--- a/cgi-bin/LJ/SynSuck.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/SynSuck.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -75,7 +75,7 @@ sub get_content {
     my ($content, $too_big);
     my $max_size = $LJ::SYNSUCK_MAX_SIZE || 150; # in kb
     my $syn_u = LJ::load_user($user);
-    if ($syn_u && LJ::check_priv($syn_u, "siteadmin", "largefeedsize")) {
+    if ( $syn_u && $syn_u->has_priv( "siteadmin", "largefeedsize" ) ) {
         $max_size = $LJ::SYNSUCK_LARGE_MAX_SIZE || 300; # in kb
     }
     my $res = eval {
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/LJ/User.pm
--- a/cgi-bin/LJ/User.pm	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/LJ/User.pm	Sat Aug 29 13:08:42 2009 +0000
@@ -1605,9 +1605,10 @@ sub show_raw_errors {
     return 1 if $LJ::IS_DEV_SERVER;
     return 1 if $LJ::ENABLE_BETA_TOOLS;
 
-    return 1 if LJ::check_priv($u, "supporthelp");
-    return 1 if LJ::check_priv($u, "supportviewscreened");
-    return 1 if LJ::check_priv($u, "siteadmin");
+    return 0 unless LJ::isu( $u );
+    return 1 if $u->has_priv( "supporthelp" );
+    return 1 if $u->has_priv( "supportviewscreened" );
+    return 1 if $u->has_priv( "siteadmin" );
 
     return 0;
 }
@@ -4190,19 +4191,12 @@ sub set_password {
 ###  22. Priv-Related Functions
 
 
-sub has_priv {
-    my ( $u, $priv, $arg ) = @_;
-
-    # FIXME: migrate check_priv here and have users call this instead
-    return LJ::check_priv( $u, $priv, $arg );
-}
-
 sub grant_priv {
     my ($u, $priv, $arg) = @_;
     $arg ||= "";
     my $dbh = LJ::get_db_writer();
 
-    return 1 if LJ::check_priv($u, $priv, $arg);
+    return 1 if $u->has_priv( $priv, $arg );
 
     my $privid = $dbh->selectrow_array("SELECT prlid FROM priv_list".
                                        " WHERE privcode = ?", undef, $priv);
@@ -4216,12 +4210,41 @@ sub grant_priv {
     return 1;
 }
 
+sub has_priv {
+    my ( $u, $priv, $arg ) = @_;
+
+    LJ::load_user_privs($u, $priv)
+        unless $u->{'_privloaded'}->{$priv};
+
+    # no access if they don't have the priv
+    return 0 unless defined $u->{'_priv'}->{$priv};
+
+    # at this point we know they have the priv
+    return 1 unless defined $arg;
+
+    # check if they have the right arguments
+    return 1 if defined $u->{'_priv'}->{$priv}->{$arg};
+    return 1 if defined $u->{'_priv'}->{$priv}->{"*"};
+
+    # don't have the right argument
+    return 0;
+}
+
+sub priv_args
+{
+    my ( $u, $priv ) = @_;
+    return unless $priv && $u->has_priv( $priv );
+    # returns hash of form { arg => 1 }
+    return %{ $u->{'_priv'}->{$priv} };
+}
+
+
 sub revoke_priv {
     my ($u, $priv, $arg) = @_;
     $arg ||="";
     my $dbh = LJ::get_db_writer();
 
-    return 1 unless LJ::check_priv($u, $priv, $arg);
+    return 1 unless $u->has_priv( $priv, $arg );
 
     my $privid = $dbh->selectrow_array("SELECT prlid FROM priv_list".
                                        " WHERE privcode = ?", undef, $priv);
@@ -7492,45 +7515,6 @@ sub set_password {
 ###  22. Priv-Related Functions
 
 # <LJFUNC>
-# name: LJ::check_priv
-# des: Check to see if a user has a certain privilege.
-# info: Usually this is used to check the privs of a $remote user.
-#       See [func[LJ::get_remote]].  As such, a $u argument of undef
-#       is okay to pass: 0 will be returned, as an unknown user can't
-#       have any rights.
-# args: dbarg?, u, priv, arg?
-# des-priv: Priv name to check for (see [dbtable[priv_list]])
-# des-arg: Optional argument.  If defined, function only returns true
-#          when $remote has a priv of type $priv also with arg $arg, not
-#          just any priv of type $priv, which is the behavior without
-#          an $arg. Arg can be "*", for all args.
-# returns: boolean; true if user has privilege
-# </LJFUNC>
-sub check_priv
-{
-    &nodb;
-    my ($u, $priv, $arg) = @_;
-    return 0 unless $u;
-
-    LJ::load_user_privs($u, $priv)
-        unless $u->{'_privloaded'}->{$priv};
-
-    # no access if they don't have the priv
-    return 0 unless defined $u->{'_priv'}->{$priv};
-
-    # at this point we know they have the priv
-    return 1 unless defined $arg;
-
-    # check if they have the right arguments
-    return 1 if defined $u->{'_priv'}->{$priv}->{$arg};
-    return 1 if defined $u->{'_priv'}->{$priv}->{"*"};
-
-    # don't have the right argument
-    return 0;
-}
-
-
-# <LJFUNC>
 # name: LJ::load_user_privs
 # class:
 # des: loads all of the given privs for a given user into a hashref, inside
@@ -7594,7 +7578,7 @@ sub get_daycounts
         # do they have the viewall priv?
         my $r = eval { Apache->request; }; # web context
         my %getargs = $r->args if $r;
-        if (defined $getargs{'viewall'} and $getargs{'viewall'} eq '1' and LJ::check_priv($remote, 'canview', '*')) {
+        if ( defined $getargs{'viewall'} and $getargs{'viewall'} eq '1' and ( $remote && $remote->has_priv( 'canview', '*' ) ) ) {
             $viewall = 1;
             LJ::statushistory_add( $u->userid, $remote->userid,
                 "viewall", "calendar" );
@@ -8066,8 +8050,8 @@ sub make_journal
 
     }
 
-    unless ($geta->{'viewall'} && LJ::check_priv($remote, "canview", "suspended") ||
-            $opts->{'pathextra'} =~ m!/(\d+)/stylesheet$!) { # don't check style sheets
+    unless ( $geta->{'viewall'} && $remote && $remote->has_priv( "canview", "suspended" ) ||
+             $opts->{'pathextra'} =~ m!/(\d+)/stylesheet$! ) { # don't check style sheets
         if ( $u->is_deleted ) {
             my $warning;
 
@@ -8169,39 +8153,4 @@ sub add_friend    { confess 'LJ::add_fri
 sub add_friend    { confess 'LJ::add_friend has been deprecated.';    }
 sub remove_friend { confess 'LJ::remove_friend has been deprecated.'; }
 
-
-# <LJFUNC>
-# name: LJ::remote_has_priv
-# class:
-# des: Check to see if the given remote user has a certain privilege.
-# info: <strong>Deprecated</strong>.  You should
-#       use [func[LJ::load_user_privs]] + [func[LJ::check_priv]], instead.
-# FIXME: Check what calls this and kill it.
-# args:
-# des-:
-# returns:
-# </LJFUNC>
-sub remote_has_priv
-{
-    &nodb;
-    my $remote = shift;
-    my $privcode = shift;     # required.  priv code to check for.
-    my $ref = shift;  # optional, arrayref or hashref to populate
-    return 0 unless ($remote);
-
-    ### authentication done.  time to authorize...
-
-    my $dbr = LJ::get_db_reader();
-    my $sth = $dbr->prepare("SELECT pm.arg FROM priv_map pm, priv_list pl WHERE pm.prlid=pl.prlid AND pl.privcode=? AND pm.userid=?");
-    $sth->execute( $privcode, $remote->userid );
-
-    my $match = 0;
-    if (ref $ref eq "ARRAY") { @$ref = (); }
-    if (ref $ref eq "HASH") { %$ref = (); }
-    while (my ($arg) = $sth->fetchrow_array) {
-        $match++;
-        if (ref $ref eq "ARRAY") { push @$ref, $arg; }
-        if (ref $ref eq "HASH") { $ref->{$arg} = 1; }
-    }
-    return $match;
-}
+1;
diff -r 585a9167642b -r 051ef3de84ec cgi-bin/supportlib.pl
--- a/cgi-bin/supportlib.pl	Sat Aug 29 12:54:41 2009 +0000
+++ b/cgi-bin/supportlib.pl	Sat Aug 29 13:08:42 2009 +0000
@@ -87,7 +87,7 @@ sub has_any_support_priv {
     my $u = shift;
     return 0 unless $u;
     foreach my $support_priv (@SUPPORT_PRIVS) {
-        return 1 if LJ::check_priv($u, $support_priv);
+        return 1 if $u->has_priv( $support_priv );
     }
     return 0;
 }
@@ -152,10 +152,10 @@ sub can_see_helper
         if (can_help($sp, $remote)) {
             return 1;
         }
-        if (LJ::check_priv($remote, "supportviewinternal", $sp->{_cat}->{'catkey'})) {
+        if ( $remote && $remote->has_priv( "supportviewinternal", $sp->{_cat}->{'catkey'} ) ) {
             return 1;
         }
-        if (LJ::check_priv($remote, "supportviewscreened", $sp->{_cat}->{'catkey'})) {
+        if ( $remote && $remote->has_priv( "supportviewscreened", $sp->{_cat}->{'catkey'} ) ) {
             return 1;
         }
         return 0;
@@ -174,8 +174,8 @@ sub can_read_cat
 {
     my ($cat, $remote) = @_;
     return unless ($cat);
-    return ($cat->{'public_read'} ||
-            LJ::check_priv($remote, "supportread", $cat->{'catkey'}));
+    return ( $cat->{'public_read'} ||
+             ( $remote && $remote->has_priv( "supportread", $cat->{'catkey'} ) ) );
 }
 
 *can_bounce = \&can_close_cat;
@@ -185,8 +185,8 @@ sub can_close_cat
 sub can_close_cat
 {
     my ($sp, $remote) = @_;
-    return 1 if $sp->{_cat}->{public_read} && LJ::check_priv($remote, 'supportclose', '');
-    return 1 if LJ::check_priv($remote, 'supportclose', $sp->{_cat}->{catkey});
+    return 1 if $sp->{_cat}->{public_read} && $remote && $remote->has_priv( 'supportclose', '' );
+    return 1 if $remote && $remote->has_priv( 'supportclose', $sp->{_cat}->{catkey} );
     return 0;
 }
 
@@ -255,8 +255,8 @@ sub support_check_priv
     my ($sp, $remote, $priv) = @_;
     return 1 if can_help($sp, $remote);
     return 0 unless can_read_cat($sp->{_cat}, $remote);
-    return 1 if LJ::check_priv($remote, $priv, '') && $sp->{_cat}->{public_read};
-    return 1 if LJ::check_priv($remote, $priv, $sp->{_cat}->{catkey});
+    return 1 if $remote && $remote->has_priv( $priv, '' ) && $sp->{_cat}->{public_read};
+    return 1 if $remote && $remote->has_priv( $priv, $sp->{_cat}->{catkey} );
     return 0;
 }
 
@@ -266,7 +266,7 @@ sub can_read_internal
 {
     my ($sp, $remote) = @_;
     return 1 if LJ::Support::support_check_priv($sp, $remote, 'supportviewinternal');
-    return 1 if LJ::check_priv($remote, "supportread", $sp->{_cat}->{catkey}."+");
+    return 1 if $remote && $remote->has_priv( "supportread", $sp->{_cat}->{catkey} . "+" );
     return 0;
 }
 
@@ -299,13 +299,11 @@ sub can_help
 {
     my ($sp, $remote) = @_;
     if ($sp->{_cat}->{'public_read'}) {
-        if ($sp->{_cat}->{'public_help'}) {
-            return 1;
-        }
-        if (LJ::check_priv($remote, "supporthelp", "")) { return 1; }
+        return 1 if $sp->{_cat}->{'public_help'};
+        return 1 if $remote && $remote->has_priv( "supporthelp", "" );
     }
     my $catkey = $sp->{_cat}->{'catkey'};
-    if (LJ::check_priv($remote, "supporthelp", $catkey)) { return 1; }
+    return 1 if $remote && $remote->has_priv( "supporthelp", $catkey );
     return 0;
 }
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/capedit.bml
--- a/htdocs/admin/capedit.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/capedit.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -12,7 +12,7 @@
 
  return "<?needlogin?>" unless $remote;
  return BML::ml ( "admin.noprivserror", { numpriv => $numprivs, needprivs => "<b>"  . join(", ", @display_privs) . "</b>"} )
-   unless $LJ::IS_DEV_SERVER || LJ::check_priv($remote, "admin", "*");
+   unless $LJ::IS_DEV_SERVER || $remote->has_priv( "admin", "*" );
 
  $mode ||= $FORM{'user'} ? "viewuser" : "intro";
 
@@ -36,7 +36,7 @@
          unless (LJ::did_post());
 
      return"<b>Error:</b> You don't have access to change a user's capability class."
-         unless $LJ::IS_DEV_SERVER || LJ::check_priv($remote, "admin", "*");
+         unless $LJ::IS_DEV_SERVER || ( $remote && $remote->has_priv( "admin", "*" ) );
 
      unless ($u) {
          $ret .= "Unknown user.\n";
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/clusterstatus.bml
--- a/htdocs/admin/clusterstatus.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/clusterstatus.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -11,7 +11,7 @@ body<=
 
     return "<?needlogin?>" unless $remote;
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join (", ", @display_privs) . "</b>" } )
-        unless LJ::check_priv($remote, "supporthelp");
+        unless $remote->has_priv( "supporthelp" );
 
     my $ret;
     foreach my $cid (@LJ::CLUSTERS) {
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/dupkiller.bml
--- a/htdocs/admin/dupkiller.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/dupkiller.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -12,7 +12,7 @@
 
     return "<?needlogin?>" unless $remote;
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @display_privs) . "</b>"} )
-        unless LJ::check_priv($remote, "supporthelp");
+        unless $remote->has_priv( "supporthelp" );
 
     unless (LJ::did_post()) {
 	$ret .= "<h1>duplicate entry killer</h1>\n";
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/entryprops.bml
--- a/htdocs/admin/entryprops.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/entryprops.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -11,7 +11,7 @@ body<=
     my $numprivs = @display_privs;
 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @display_privs) . "</b>"} )
-        unless $LJ::IS_DEV_SERVER || LJ::check_priv($remote, "canview", "entryprops");
+        unless $LJ::IS_DEV_SERVER || ( $remote && $remote->has_priv( "canview", "entryprops" ) );
 
     $ret .= "<form method='POST'>";
     $ret .= "View properties for URL: ";
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/faq/faqedit.bml
--- a/htdocs/admin/faq/faqedit.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/faq/faqedit.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -17,10 +17,7 @@ body<=
     my $ret = "";
 
     my $dbh = LJ::get_db_writer();
-
     my $remote = LJ::get_remote();
-    my %ac_edit;
-    my %ac_add;
 
     my @display_privs = ( "faqadd", "faqedit" );
     my $numprivs =  @display_privs;
@@ -28,10 +25,11 @@ body<=
     return "<?needlogin?>" unless $remote;
     
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @display_privs) . "</b>"} )
-        unless LJ::check_priv($remote, "faqadd") || LJ::check_priv($remote, "faqedit");
+        unless $remote->has_priv( "faqadd" ) || $remote->has_priv( "faqedit" );
 
-    LJ::remote_has_priv( $remote, "faqadd", \%ac_add );
-    LJ::remote_has_priv( $remote, "faqedit", \%ac_edit );
+    my %ac_add  = $remote->priv_args( "faqadd" );
+    my %ac_edit = $remote->priv_args( "faqedit" );
+
     my $faqd = LJ::Lang::get_dom( "faq" );
     my $rlang = LJ::Lang::get_root_lang( $faqd );
     my ( $faqcat, $sortorder, $question, $summary, $answer, $has_summary );
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/faq/index.bml
--- a/htdocs/admin/faq/index.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/faq/index.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -16,12 +16,10 @@ body<=
 
     return "<?needlogin?>" unless $remote;
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @display_privs) . "</b>"} )
-        unless LJ::check_priv($remote, "faqadd") || LJ::check_priv($remote, "faqedit");
+        unless $remote->has_priv( "faqadd" ) || $remote->has_priv( "faqedit" );
 
-    my %ac_add;
-    my %ac_edit;
-    LJ::remote_has_priv( $remote, "faqadd", \%ac_add );
-    LJ::remote_has_priv( $remote, "faqedit", \%ac_edit );
+    my %ac_add  = $remote->priv_args( "faqadd" );
+    my %ac_edit = $remote->priv_args( "faqedit" );
 
     my $ret = "";
     $ret .= "<a href='faqedit'>[Add to FAQ]</a>\n"
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/fileedit/index.bml
--- a/htdocs/admin/fileedit/index.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/fileedit/index.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -9,13 +9,13 @@
  my @display_privs = ( "fileedit" );
  my $numprivs = @display_privs;
 
- my %files = ();  # keys: files remote user has access to, value: 1
  my $INC_DIR = $LJ::BML_INC_DIR_ADMIN || $LJ::BML_INC_DIR || "$LJ::HTDOCS/inc";
 
  return "<?needlogin?>" unless $remote;
  return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @display_privs) . "</b>"})
-     unless (LJ::remote_has_priv($remote, "fileedit", \%files));
- 
+     unless $remote->has_priv( "fileedit" );
+
+ my %files = $remote->priv_args( "fileedit" );
 
  my $valid_filename = sub 
  {
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/index.bml
--- a/htdocs/admin/index.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/index.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -113,7 +113,7 @@ body<=
 
     $ret .= "<ul>\n";
 
-    my $adminstar = LJ::check_priv( $remote, 'admin', '*' );
+    my $adminstar = $remote && $remote->has_priv( 'admin', '*' );
     foreach my $page ( @adminpages ) {
         my ( $path, $name, $description, $privs ) = @{$page};
         my $showpage = 0;
@@ -122,7 +122,7 @@ body<=
         foreach my $priv ( @{$privs} ) {
             my $result = ( ref( $priv ) eq "CODE" ?
                              ( $priv->() )[0] :
-                             LJ::check_priv( $remote, split( /:/, $priv ) ) );
+                             $remote && $remote->has_priv( split( /:/, $priv ) ) );
             my $displayedpriv = ( ref( $priv ) eq "CODE" ? ( $priv->() )[1] : $priv );
             push( @gotprivs,   $displayedpriv ) if $result;
             push( @needsprivs, $displayedpriv ) if !$result;
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/invitecodes.bml
--- a/htdocs/admin/invitecodes.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/invitecodes.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -16,7 +16,7 @@ body<=
         unless $remote;
 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv( $remote, "finduser", "codetrace" );    
+        unless $remote->has_priv( "finduser", "codetrace" );
 
     my $ret;
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/invites/distribute.bml
--- a/htdocs/admin/invites/distribute.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/invites/distribute.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -20,7 +20,7 @@ body<=
     return LJ::error_noremote() unless $remote;
 
     return BML::redirect( $LJ::SITEROOT )
-        unless LJ::check_priv( $remote, 'payments' );
+        unless $remote->has_priv( 'payments' );
 
     my $ret;
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/invites/requests.bml
--- a/htdocs/admin/invites/requests.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/invites/requests.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -22,7 +22,7 @@ body<=
     return "<?needlogin?>" unless $remote;
 
     return "You are not authorized to view this page."
-        unless LJ::check_priv( $remote, "payments" );
+        unless $remote->has_priv( "payments" );
 
     my $ret;
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/invites/review.bml
--- a/htdocs/admin/invites/review.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/invites/review.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -24,7 +24,7 @@ body<=
     return "<?needlogin?>" unless $remote;
 
     return "You are not authorized to view this page."
-        unless LJ::check_priv( $remote, "payments" );    
+        unless $remote->has_priv( "payments" );
 
     my $ret;
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/logout_user.bml
--- a/htdocs/admin/logout_user.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/logout_user.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -15,7 +15,7 @@ body<=
 
     return "<?needlogin?>" unless $remote;
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($remote, 'suspend');
+        unless $remote->has_priv( 'suspend' );
 
     my $ret = "";
     
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/memcache.bml
--- a/htdocs/admin/memcache.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/memcache.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -13,7 +13,7 @@
 
     return "<?needlogin?>" unless $u;
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($u, "siteadmin", "memcacheview");
+        unless $u->has_priv( "siteadmin", "memcacheview" );
 
     my $prev_hits = $u ? LJ::MemCache::get([$u->{'userid'},"mcrate:$u->{'userid'}"]) : undef;
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/memcache_view.bml
--- a/htdocs/admin/memcache_view.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/memcache_view.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -15,7 +15,7 @@
 
  return "<?needlogin?>" unless $remote;
  return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-     unless (LJ::check_priv($remote, "siteadmin", "memcacheview") || $LJ::IS_DEV_SERVER);
+     unless $remote->has_priv( "siteadmin", "memcacheview" ) || $LJ::IS_DEV_SERVER;
 
  return "<b>Error:</b> No memcache servers defined."
      unless @LJ::MEMCACHE_SERVERS;
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/mysql_status.bml
--- a/htdocs/admin/mysql_status.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/mysql_status.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -8,7 +8,7 @@
 
  return "<?needlogin?>" unless $remote;
  return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-     unless (LJ::check_priv($remote, "siteadmin", "mysqlstatus"));
+     unless $remote->has_priv( "siteadmin", "mysqlstatus" );
 
  my $dbh = LJ::get_db_writer();
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/navtag.bml
--- a/htdocs/admin/navtag.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/navtag.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -19,7 +19,7 @@
     return "<?needlogin?>" unless $remote;
 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($remote, 'siteadmin', 'navtag');
+        unless $remote->has_priv( 'siteadmin', 'navtag' );
 
     do "LJ/NavTag.pm";
     #use LJ::NavTag;
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/pay/import.bml
--- a/htdocs/admin/pay/import.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/pay/import.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -15,7 +15,7 @@
 
     return "<?needlogin?>" unless $remote;
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($remote, 'payments');
+        unless $remote->has_priv( 'payments' );
 
     my $body = '<h1>Payment Status Import Tool</h1>';
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/pay/index.bml
--- a/htdocs/admin/pay/index.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/pay/index.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -13,7 +13,7 @@
 
     return "<?needlogin?>" unless $remote; 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($remote, 'payments');
+        unless $remote->has_priv( 'payments' );
 
     my $body = '<h1>Payment Manager</h1>';
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/pay/view.bml
--- a/htdocs/admin/pay/view.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/pay/view.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -13,7 +13,7 @@
 
     return "<?needlogin?>" unless $remote; 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($remote, 'payments');
+        unless $remote->has_priv( 'payments' );
 
     # FIXME: there should be a better page for this or something
     if ( my $acid = $GET{striptimefrom} ) {
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/priv/index.bml
--- a/htdocs/admin/priv/index.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/priv/index.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -76,7 +76,8 @@
      my ($remote, $priv, $arg) = @_;
      return 0 unless defined $priv;
      return 1 if $LJ::DEBUG{"unrestricted_priv_grant"};
-     return LJ::check_priv($remote, 'admin', $priv) || LJ::check_priv($remote, 'admin', '*') || LJ::check_priv($remote, 'admin', "$priv/$arg");
+     return 0 unless LJ::isu( $remote );
+     return $remote->has_priv( 'admin', $priv ) || $remote->has_priv( 'admin', "$priv/$arg" );
  }
 
  if ($mode eq "userchange" || $mode eq "privchange")
@@ -118,7 +119,7 @@
 
              if ($privcode) {
                  if (remote_can_grant($remote, $privcode, $arg)) {
-                     if (LJ::check_priv($u, $privcode, $arg)) {
+                     if ( $u && $u->has_priv( $privcode, $arg ) ) {
                          $ret .= "ERROR: User already has specified priv <b>$privcode $arg</b>.<br />";
                      } else {
                          my $qarg = $dbh->quote($arg);
@@ -143,7 +144,7 @@
              my $privcode = $priv{$privid}->{'privcode'};
              if ($privcode) {
                  if (remote_can_grant($remote, $privcode, $arg)) {
-                     if (LJ::check_priv($u, $privcode, $arg)) {
+                     if ( $u && $u->has_priv( $privcode, $arg ) ) {
                          $ret .= "ERROR: User already has specified priv <b>$privcode $arg</b>.<br />";
                      }
                      elsif ($userid && $privid) {
@@ -215,7 +216,7 @@
      }
      $ret .= "</table>";
 
-     if (LJ::check_priv($remote, 'admin')) {
+     if ( $remote && $remote->has_priv( 'admin' ) ) {
          $ret .= "<p>Grant <b>$user</b> privilege:<div style='margin-left: 20px;'>\n";
          $ret .= "<select name='grantpriv'><option value='' selected='1'></option>";
          foreach my $priv (@privs) {
@@ -228,7 +229,7 @@
      }
 
      $ret .= "<p>\n";
-     if (LJ::check_priv($remote, 'admin')) {
+     if ( $remote && $remote->has_priv( 'admin') ) {
          $ret .=  "<input type=\"submit\" value=\"Make Changes\" />";
      }
      $ret .= " <input type=\"submit\" name=\"submit:refresh\" value=\"Just Refresh\" />";
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/propedit.bml
--- a/htdocs/admin/propedit.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/propedit.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -19,8 +19,8 @@ body<=
 
     my $temp;
     my $remote = LJ::get_remote();
-    my $is_admin = LJ::check_priv( $remote, "canview", "userprops" );
-    my $can_save = LJ::check_priv( $remote, "siteadmin", "propedit" );
+    my $is_admin = $remote && $remote->has_priv( "canview", "userprops" );
+    my $can_save = $remote && $remote->has_priv( "siteadmin", "propedit" );
 
     my @displayprivs = ( "canview:userprops", "canview:*" );
     my $numprivs = @displayprivs;
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/qotd/add.bml
--- a/htdocs/admin/qotd/add.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/qotd/add.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -14,7 +14,7 @@ body<=
         unless $remote;
 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($remote, 'siteadmin', 'qotd') || $LJ::IS_DEV_SERVER;
+        unless $remote->has_priv( 'siteadmin', 'qotd' ) || $LJ::IS_DEV_SERVER;
 
     my $ret = "";
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/qotd/manage.bml
--- a/htdocs/admin/qotd/manage.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/qotd/manage.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -15,7 +15,7 @@ body<=
     my $numprivs = @displayprivs;
 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($remote, 'siteadmin', 'qotd') || $LJ::IS_DEV_SERVER;
+        unless $remote && $remote->has_priv( 'siteadmin', 'qotd' ) || $LJ::IS_DEV_SERVER;
 
     my $ret = "";
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/recent_comments.bml
--- a/htdocs/admin/recent_comments.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/recent_comments.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -12,7 +12,7 @@
 
     return "<?needlogin?>" unless $remote;
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($remote, "siteadmin", "commentview");
+        unless $remote->has_priv( "siteadmin", "commentview" );
 
     my $user = $GET{'user'};
     my $u;
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/schema/index.bml
--- a/htdocs/admin/schema/index.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/schema/index.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -14,7 +14,7 @@ body<=
 
  return "<?needlogin?>" unless $remote;
  my $can_doc = 0;
- if (LJ::remote_has_priv($remote, "schemadoc")) { $can_doc = 1; }
+ $can_doc = 1 if $remote->has_priv( "schemadoc" );
  return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
      unless ($can_doc); 
  
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/schools/edit.bml
--- a/htdocs/admin/schools/edit.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/schools/edit.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -34,7 +34,7 @@ body<=
     my $numprivs = @displayprivs;
 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless (LJ::check_priv($remote, 'siteadmin', 'school'));
+        unless $remote && $remote->has_priv( 'siteadmin', 'school' );
 
     my $sid = LJ::did_post() ? $POST{sid} : $GET{sid};
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/schools/merge.bml
--- a/htdocs/admin/schools/merge.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/schools/merge.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -21,7 +21,7 @@ body<=
     my $numprivs = @displayprivs;
 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-       unless LJ::check_priv($remote, 'siteadmin', 'school');
+       unless $remote && $remote->has_priv( 'siteadmin', 'school' );
 
     $ret .= "<?p [ <a href='index'>&lt;&lt; Back to Admin Index</a> ] p?>";
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/schools/pending.bml
--- a/htdocs/admin/schools/pending.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/schools/pending.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -34,7 +34,7 @@ body<=
     my $numprivs = @displayprivs;
 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless (LJ::check_priv($remote, 'siteadmin', 'school'));
+        unless $remote && $remote->has_priv( 'siteadmin', 'school' );
 
     my $getextra = '';
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/schools/rename.bml
--- a/htdocs/admin/schools/rename.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/schools/rename.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -19,7 +19,7 @@ body<=
     my $numprivs = @displayprivs;
 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($remote, 'siteadmin', 'school');
+        unless $remote && $remote->has_priv( 'siteadmin', 'school' );
 
     $ret .= "<?p [ <a href='index'>&lt;&lt; Back to Admin Index</a> ] p?>";
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/sitemessages/add.bml
--- a/htdocs/admin/sitemessages/add.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/sitemessages/add.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -14,7 +14,7 @@ body<=
     my @displayprivs = ( "siteadmin:sitemessages", "siteadmin:*" );
     my $numprivs = @displayprivs;
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($remote, 'siteadmin', 'sitemessages') || $LJ::IS_DEV_SERVER;
+        unless $remote && $remote->has_priv( 'siteadmin', 'sitemessages' ) || $LJ::IS_DEV_SERVER;
 
     my $ret = "";
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/sitemessages/manage.bml
--- a/htdocs/admin/sitemessages/manage.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/sitemessages/manage.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -15,7 +15,7 @@ body<=
     my $numprivs = @displayprivs;
 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($remote, 'siteadmin', 'sitemessages') || $LJ::IS_DEV_SERVER;
+        unless $remote && $remote->has_priv( 'siteadmin', 'sitemessages' ) || $LJ::IS_DEV_SERVER;
 
     my $ret = "";
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/spamreports.bml
--- a/htdocs/admin/spamreports.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/spamreports.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -40,7 +40,7 @@
     my $numprivs = @displayprivs;
 
     return $error->(BML::ml("admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} ))
-        unless LJ::check_priv($remote, 'siteadmin', 'spamreports');
+        unless $remote && $remote->has_priv( 'siteadmin', 'spamreports' );
 
     # show the top 10 spam reports by IP
     my $mode = lc($GET{mode} || $POST{mode});
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/stats.bml
--- a/htdocs/admin/stats.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/stats.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -29,7 +29,7 @@ body<=
     my $numprivs = @display_privs;
 
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join( ", ", @display_privs ) . "</b>"} )
-        unless $LJ::IS_DEV_SERVER || LJ::check_priv( $remote, "payments" );
+        unless $LJ::IS_DEV_SERVER || ( $remote && $remote->has_priv( "payments" ) );
 
     my $ret;
     
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/statushistory.bml
--- a/htdocs/admin/statushistory.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/statushistory.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -15,7 +15,7 @@
 
     return "<?needlogin?>" unless $remote;
     return BML::ml( "admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless (LJ::check_priv($remote, "historyview") || $LJ::IS_DEV_SERVER);
+        unless $remote->has_priv( "historyview" ) || $LJ::IS_DEV_SERVER;
 
     my $ret;
 
@@ -89,8 +89,8 @@
     while (my $hist = $sth->fetchrow_hashref) {
         # see if they can see this item: either they have unarged historyview or
         # they have historyview:shtype
-        next unless LJ::check_priv($remote, 'historyview', '') ||
-                    LJ::check_priv($remote, 'historyview', $hist->{shtype});
+        next unless $remote && ( $remote->has_priv( 'historyview', '' ) ||
+                    $remote->has_priv( 'historyview', $hist->{shtype} ) );
 
         $ret .= "<tr>";
         foreach (qw(user admin shtype shdate notes)) {
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/sysban.bml
--- a/htdocs/admin/sysban.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/sysban.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -42,13 +42,10 @@ body<=
     my $numprivs = @displayprivs;
 
     return BML::ml("admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv( $remote, $priv );
+        unless $remote && $remote->has_priv( $priv );
 
-    LJ::load_user_privs($remote, $priv)
-        unless $remote->{'_privloaded'}->{$priv};
-    
     my @sysban_privs;
-    foreach my $arg ( keys %{ $remote->{'_priv'}->{$priv} } ) {
+    foreach my $arg ( keys $remote->priv_args( $priv ) ) {
         if ( $arg eq '*' ) {
             push @sysban_privs, @all_sb_args;
         } else {
@@ -208,8 +205,7 @@ FORM
 
         return $err->("No note field!") unless $note; 
         return $err->("You do not have the correct privileges") unless 
-            ( LJ::check_priv( $remote, $priv, '*' ) ||
-              LJ::check_priv( $remote, $priv, $bantype ) );
+            $remote && $remote->has_priv( $priv, $bantype );
 
         my $notvalid = LJ::sysban_validate( $bantype, $value );
         return $err->("Ban not valid: $notvalid") if $notvalid;
diff -r 585a9167642b -r 051ef3de84ec htdocs/admin/userlog.bml
--- a/htdocs/admin/userlog.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/admin/userlog.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -34,8 +34,7 @@ body<=
     my $numprivs = @displayprivs;
 
     return BML::ml("admin.noprivserror", { numprivs => $numprivs, needprivs => "<b>" . join(", ", @displayprivs) . "</b>"} )
-        unless LJ::check_priv($remote, 'canview', 'userlog') ||
-               LJ::check_priv($remote, 'canview', '*');
+        unless $remote && $remote->has_priv( 'canview', 'userlog' );
 
     my $user = LJ::canonical_username($POST{user} || $GET{user});
 
diff -r 585a9167642b -r 051ef3de84ec htdocs/allpics.bml
--- a/htdocs/allpics.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/allpics.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -50,7 +50,7 @@
 
     # no need for viewsome, due to the fact that none of this is private anyway.  just
     # allow anybody with any version of viewall to see userpics for non-V statusvis users
-    if ($GET{viewall} && LJ::check_priv($remote, 'canview', 'suspended')) {
+    if ( $GET{viewall} && $remote && $remote->has_priv( 'canview', 'suspended' ) ) {
         LJ::statushistory_add($u->{'userid'}, $remote->{'userid'},
                               "viewall", "allpics: $u->{'user'}, statusvis: " . $u->statusvis);
     } else {
@@ -120,8 +120,8 @@
     my $defaultpicid = $u ? $u->{'defaultpicid'} : undef;
 
     # allow support to view inactive userpics for debugging
-    my $view_inactive = $GET{inactive} && (LJ::check_priv($remote, "supportviewscreened") ||
-                                           LJ::check_priv($remote, "supporthelp"));
+    my $view_inactive = $GET{inactive} && $remote &&
+                        ( $remote->has_priv( "supportviewscreened" ) || $remote->has_priv( "supporthelp" ) );
     $view_inactive ||= $can_manage;
 
     push @allpics, $info->{'pic'}->{$u->{'defaultpicid'}} if $defaultpicid;
diff -r 585a9167642b -r 051ef3de84ec htdocs/community/settings.bml
--- a/htdocs/community/settings.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/community/settings.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -81,7 +81,7 @@ body<=
         }
 
         # disallow changing the journal type if the journal has entries
-        if ($mode eq 'create' && !%errors && !LJ::check_priv($remote, "changejournaltype", "")) {
+        if ( $mode eq 'create' && !%errors && ( !$remote || !$remote->has_priv( "changejournaltype", "" ) ) ) {
             my $count;
             my $userid=$cu->{'userid'}+0;
             
diff -r 585a9167642b -r 051ef3de84ec htdocs/customize/advanced/layerbrowse.bml
--- a/htdocs/customize/advanced/layerbrowse.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/customize/advanced/layerbrowse.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -117,9 +117,9 @@
         $layerinfo->{$id}->{'source_viewable'} : undef;
 
     # do they have access?
-    my $isadmin = !defined $pub->{$id} &&                          # public styles are pulled from the system
-                  (LJ::check_priv($remote, 'canview', 'styles') || # account, so we don't want to check privileges
-                   LJ::check_priv($remote, 'canview', '*'));       # in case they're private styles
+    my $isadmin = ! defined $pub->{$id} && $remote && $remote->has_priv( 'canview', 'styles' );
+    # public styles are pulled from the system account, so we don't
+    # want to check privileges in case they're private styles
     return $err->($ML{'.error.cantviewlayer'})
         unless defined $pub->{$id} || $srcview == 1 ||
                LJ::can_manage($remote, $layer->{'userid'}) ||
diff -r 585a9167642b -r 051ef3de84ec htdocs/customize/advanced/layers.bml
--- a/htdocs/customize/advanced/layers.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/customize/advanced/layers.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -47,7 +47,7 @@
 
     # if we don't have a u, maybe they're an admin and can view stuff anyway?
     my $noactions = 0;
-    my $viewall = LJ::check_priv($remote, 'canview', 'styles') || LJ::check_priv($remote, 'canview', '*');
+    my $viewall = $remote && $remote->has_priv( 'canview', 'styles' );
 
     if ($GET{user} && $viewall) {
         return $err->($ML{'.error.cantuseonsystem'})
diff -r 585a9167642b -r 051ef3de84ec htdocs/customize/advanced/layersource.bml
--- a/htdocs/customize/advanced/layersource.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/customize/advanced/layersource.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -26,9 +26,9 @@
         $layerinfo->{$id}->{'source_viewable'} : undef;
 
     # authorized to view this layer?
-    my $isadmin = !defined $pub->{$id} &&                          # public styles are pulled from the system
-                  (LJ::check_priv($remote, 'canview', 'styles') || # account, so we don't want to check privileges
-                   LJ::check_priv($remote, 'canview', '*'));       # in case they're private styles
+    my $isadmin = ! defined $pub->{$id} && $remote && $remote->has_priv( 'canview', 'styles' );
+    # public styles are pulled from the system account, so we don't
+    # want to check privileges in case they're private styles
     return $err->($ML{'/customize/advanced/layerbrowse.bml.error.cantviewlayer'})
         unless defined $pub->{$id} && (! defined $srcview || $srcview != 0) ||
                $srcview == 1 ||
diff -r 585a9167642b -r 051ef3de84ec htdocs/customize/advanced/styles.bml
--- a/htdocs/customize/advanced/styles.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/customize/advanced/styles.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -37,7 +37,7 @@
 
     # if we don't have a u, maybe they're an admin and can view stuff anyway?
     my $noactions = 0;
-    my $viewall = LJ::check_priv($remote, 'canview', 'styles') || LJ::check_priv($remote, 'canview', '*');
+    my $viewall = $remote && $remote->has_priv( 'canview', 'styles' );
 
     if ($GET{user} && $viewall) {
         return $err->($ML{'.error.cantuseonsystem'})
diff -r 585a9167642b -r 051ef3de84ec htdocs/manage/logins.bml
--- a/htdocs/manage/logins.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/manage/logins.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -17,8 +17,7 @@ body<=
 
     my $body = my $user = '';
     my $adminmode = 0;
-    if (LJ::check_priv($u, 'canview', 'sessions') ||
-        LJ::check_priv($u, 'canview', '*')) {
+    if ( $u && $u->has_priv( 'canview', 'sessions' ) ) {
         $user = LJ::canonical_username($GET{'user'} || $POST{'user'});
         $body .= "<form method='GET' action='logins'>\n";
         $body .= "<label for='user'>$ML{'.user'} ";
diff -r 585a9167642b -r 051ef3de84ec htdocs/misc/entry_redirect.bml
--- a/htdocs/misc/entry_redirect.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/misc/entry_redirect.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -4,7 +4,7 @@
     use vars qw(%GET);
 
     my $remote = LJ::get_remote();
-    return "Not authorized" unless LJ::check_priv($remote, "siteadmin", "entry_redirect");
+    return "Not authorized" unless $remote && $remote->has_priv( "siteadmin", "entry_redirect" );
 
     my $u = LJ::load_user($GET{user}) || LJ::load_userid($GET{userid});
     return "Invalid username/userid" unless $u;
diff -r 585a9167642b -r 051ef3de84ec htdocs/register.bml
--- a/htdocs/register.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/register.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -29,7 +29,7 @@ body<=
          unless $foru;
 
      return "<?p $ML{'.error.noaccess'} p?>"
-         unless (LJ::check_priv($remote, "siteadmin", "users") || LJ::check_priv($remote, "siteadmin", "*"));
+         unless $remote && $remote->has_priv( "siteadmin", "users" );
 
      return "<?p $ML{'.error.valid'} p?>"
          if $foru->is_validated;
diff -r 585a9167642b -r 051ef3de84ec htdocs/support/actmulti.bml
--- a/htdocs/support/actmulti.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/support/actmulti.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -26,8 +26,8 @@ body<=
     # what action are they trying to take?
     if ($POST{'action:close'}) {
         my $can_close = 0;
-        $can_close = 1 if LJ::check_priv($remote, 'supportclose', $cat->{catkey});
-        $can_close = 1 if $cat->{public_read} && LJ::check_priv($remote, 'supportclose', '');
+        $can_close = 1 if $remote && $remote->has_priv( 'supportclose', $cat->{catkey} );
+        $can_close = 1 if $cat->{public_read} && $remote && $remote->has_priv( 'supportclose', '' );
         return "<?h1 $ML{'.error'} h1?><?p $ML{'.not.have.access'} p?>" unless $can_close;
 
         # now close all of these requests
diff -r 585a9167642b -r 051ef3de84ec htdocs/support/faqbrowse.bml
--- a/htdocs/support/faqbrowse.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/support/faqbrowse.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -214,14 +214,13 @@ body<=
         }
 
         $backfaqcat = $f->faqcat;
-        if (LJ::check_priv($remote, "faqedit", "*") ||
-            LJ::check_priv($remote, "faqedit", $backfaqcat))
+        if ( $remote && $remote->has_priv( "faqedit", $backfaqcat ) )
         {
             $$body .= "<p align=\"right\"><a href=\"/admin/faq/faqedit?id=$faqid\">$ML{'.edit.faq'}</a></p>";
         }
 
         # this is incredibly ugly. i'm sorry.
-        if ($altlang && LJ::check_priv($remote, "translate", $curlang)) {
+        if ( $altlang && $remote && $remote->has_priv( "translate", $curlang ) ) {
             my @itids;
             push @itids, LJ::Lang::get_itemid($mld->{'dmid'}, "$faqid.$_")
                 foreach qw(1question 3summary 2answer);
diff -r 585a9167642b -r 051ef3de84ec htdocs/support/help.bml
--- a/htdocs/support/help.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/support/help.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -65,8 +65,8 @@ body<=
  # determine if user can close stuff
  my $can_close = 0;
  if ($remote && $state =~ /(?:green|open)/ && $filtercat && $filtercat !~ /^_/) {
-     $can_close = 1 if LJ::check_priv($remote, 'supportclose', $filtercat);        # private cats/only this cat
-     $can_close = 1 if $fcat->{public_read} && LJ::check_priv($remote, 'supportclose', ''); # public cats
+     $can_close = 1 if $remote && $remote->has_priv( 'supportclose', $filtercat );        # private cats/only this cat
+     $can_close = 1 if $fcat->{public_read} && $remote && $remote->has_priv( 'supportclose', '' ); # public cats
  }
 
  my $append;
@@ -219,7 +219,7 @@ body<=
  $ret .= " $ML{'.requests.type'}: <select name='cat'>";
  $ret .= "<option value=\"\">($ML{'.cat.all'})</option>";
  my @filter_cats = LJ::Support::filter_cats($remote, $cats);
- if (LJ::check_priv($remote, "supportread")) {
+ if ( $remote && $remote->has_priv( "supportread" ) ) {
      unshift @filter_cats, { 'catkey' => '_nonpublic',
                              'catname' => '(Private)' };
      unshift @filter_cats, { 'catkey' => '_nonprivate',
diff -r 585a9167642b -r 051ef3de84ec htdocs/support/history.bml
--- a/htdocs/support/history.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/support/history.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -11,7 +11,7 @@ body<=
 
     # supporthelp anywhere lets them in
     return "You are not authorized to view this page."
-        unless LJ::check_priv($remote, 'supporthelp');
+        unless $remote && $remote->has_priv( 'supporthelp' );
 
     my $ret;
     if ($GET{user} || $GET{email} || $GET{userid}) {
diff -r 585a9167642b -r 051ef3de84ec htdocs/support/see_request.bml
--- a/htdocs/support/see_request.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/support/see_request.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -321,9 +321,9 @@ body<=
         # helpers can always find this information anyway just by taking
         # more steps.  Show email history link if they have finduser and
         # thus once again could get this information anyway.
-        my $has_sh = LJ::check_priv($remote, 'supporthelp');
-        my $has_fu = LJ::check_priv($remote, 'finduser');
-        my $has_vs = LJ::check_priv($remote, 'supportviewscreened');
+        my $has_sh = $remote && $remote->has_priv( 'supporthelp' );
+        my $has_fu = $remote && $remote->has_priv( 'finduser' );
+        my $has_vs = $remote && $remote->has_priv( 'supportviewscreened' );
 
         my %show_history = (
                             user  => $has_sh,
@@ -347,7 +347,7 @@ body<=
     $ret .= "</td></tr>\n";
 
     # uniq
-    if (LJ::check_priv($remote, 'sysban', 'uniq') || LJ::check_priv($remote, "canview", "userlog")) {
+    if ( $remote && ( $remote->has_priv( 'sysban', 'uniq' ) || $remote->has_priv( 'canview', 'userlog' ) ) ) {
         my $uniq = $props->{'uniq'} || "<i>$ML{'.none'}</i>";
         $ret .= "<tr><td valign='bottom' align='right'><b>$ML{'.uniq'}</b></td><td>$uniq</td></tr>\n";
     }
@@ -405,8 +405,7 @@ body<=
 
         # if the user has siteadmin:users or siteadmin:* show them link to resend validation email?
         my $extraval = sub {
-            return '' unless LJ::check_priv($remote, 'siteadmin', 'users') ||
-                             LJ::check_priv($remote, 'siteadmin', '*');
+            return '' unless $remote && $remote->has_priv( 'siteadmin', 'users' );
             return " (<a href='$LJ::SITEROOT/register?foruser=$u->{user}'>$ML{'.resend.validation.email'}</a>)";
         };
 
@@ -420,8 +419,8 @@ body<=
         $ret .= "<br />$ML{'.scheme'}: <b>" . ($u->{schemepref} ? $u->{schemepref} : "default") . "</b>; ";
         $ret .= "$ML{'.language'}: <b>" . ($u->{browselang} ? $u->{browselang} : "default") . "</b>";
 
-        my $view_history = LJ::check_priv($remote, 'historyview');
-        my $view_userlog = LJ::check_priv($remote, 'canview', 'userlog') || LJ::check_priv($remote, 'canview', '*');
+        my $view_history = $remote && $remote->has_priv( 'historyview' );
+        my $view_userlog = $remote && $remote->has_priv( 'canview', 'userlog' );
 
         if ($view_history || $view_userlog) {
             $ret .= "<br />$ML{'.view'}: ";
@@ -451,7 +450,7 @@ body<=
         20 => "2",
         30 => "3",
     );
-    my $can_see_tier = LJ::check_priv($remote, "supporthelp") || LJ::check_priv($remote, "supportviewscreened") ? 1 : 0;
+    my $can_see_tier = $remote && ( $remote->has_priv( "supporthelp" ) || $remote->has_priv( "supportviewscreened" ) );
     if (LJ::is_enabled("support_response_tier") && $can_see_tier) {
         my $latest_timelogged = 0;
         my $latest_timelogged_tier = 0;
diff -r 585a9167642b -r 051ef3de84ec htdocs/support/stock_answers.bml
--- a/htdocs/support/stock_answers.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/support/stock_answers.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -20,9 +20,8 @@ body<=
 
     # editing is based on ability to grant supporthelp.  and throw an error if they
     # posted but can't edit.
-    my $canedit = ($spcatid && LJ::check_priv($remote, 'admin', "supporthelp/$cats->{$spcatid}->{catkey}")) ||
-                  LJ::check_priv($remote, 'admin', 'supporthelp') ||
-                  LJ::check_priv($remote, 'admin', '*');
+    my $canedit = ( $spcatid && $remote && $remote->has_priv( 'admin', "supporthelp/$cats->{$spcatid}->{catkey}" ) ) ||
+                  ( $remote && $remote->has_priv( 'admin', 'supporthelp' ) );
     if (LJ::did_post()) {
         return "<?h1 $ML{'Error'} h1?> $ML{'error.invalidform'}" unless LJ::check_form_auth();
         return "<?h1 $ML{'.error'} h1?><?p $ML{'.not.have.access.to.actions'} p?>"
diff -r 585a9167642b -r 051ef3de84ec htdocs/talkread.bml
--- a/htdocs/talkread.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/talkread.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -155,11 +155,11 @@ body<=
     # set viewall/viewsome
     my $viewall = 0;
     my $viewsome = 0;
-    if ($GET{viewall} && LJ::check_priv($remote, 'canview', 'suspended')) {
+    if ( $GET{viewall} && $remote && $remote->has_priv( 'canview', 'suspended' ) ) {
         LJ::statushistory_add($u->{'userid'}, $remote->{'userid'},
                               "viewall", "entry: $u->{'user'}, itemid: $item->{'itemid'}, statusvis: " . $u->statusvis);
-        $viewall = LJ::check_priv($remote, 'canview', '*');
-        $viewsome = $viewall || LJ::check_priv($remote, 'canview', 'suspended');
+        $viewall = $remote && $remote->has_priv( 'canview', '*' );
+        $viewsome = $viewall || ( $remote && $remote->has_priv( 'canview', 'suspended' ) );
     }
 
     # check for deleted/suspended/security
diff -r 585a9167642b -r 051ef3de84ec htdocs/tools/recent_email.bml
--- a/htdocs/tools/recent_email.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/tools/recent_email.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -8,7 +8,7 @@ body<=
     my $u = LJ::get_remote()
         or return "<?needlogin?>";
 
-    my $is_admin = LJ::check_priv($u, "siteadmin", "emailqueue");
+    my $is_admin = $u->has_priv( "siteadmin", "emailqueue" );
 
     # temporary until the information displayed on this page can be expanded
     return "You do not have access to use this page."
diff -r 585a9167642b -r 051ef3de84ec htdocs/tools/recent_emailposts.bml
--- a/htdocs/tools/recent_emailposts.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/tools/recent_emailposts.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -48,7 +48,7 @@ body<=
     my $remote = LJ::get_remote();
     return "<?needlogin?>" unless $remote;
 
-    my $admin = LJ::check_priv($remote, 'supporthelp');
+    my $admin = $remote->has_priv( 'supporthelp' );
 
     my $u;
     if ( $admin ) {
diff -r 585a9167642b -r 051ef3de84ec htdocs/translate/editpage.bml
--- a/htdocs/translate/editpage.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/translate/editpage.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -25,10 +25,9 @@
  my ($sth, $ret);
 
  my $remote = LJ::get_remote();
- my $can_edit = (LJ::check_priv($remote, "translate", "*") ||
-                 LJ::check_priv($remote, "translate", $l->{'lncode'}));
- my $can_delete = LJ::check_priv($remote, "translate", "[itemdelete]");
- my $can_rename = LJ::check_priv($remote, "translate", "[itemrename]");
+ my $can_edit   = $remote && $remote->has_priv( "translate", $l->{'lncode'} );
+ my $can_delete = $remote && $remote->has_priv( "translate", "[itemdelete]" );
+ my $can_rename = $remote && $remote->has_priv( "translate", "[itemrename]" );
 
  # Extra checkboxes for default language and root language (DW: en_DW and en)
  my $extra_checkboxes = $l->{'lncode'} eq $LJ::DEFAULT_LANG || !defined $lp;
diff -r 585a9167642b -r 051ef3de84ec htdocs/translate/search.bml
--- a/htdocs/translate/search.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/translate/search.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -30,9 +30,8 @@
     {
         my $remote = LJ::get_remote();
         return "This search type is restricted to $l->{'lnname'} translators." unless
-            (LJ::check_priv($remote, "translate", "*") ||
-             LJ::check_priv($remote, "translate", $l->{'lncode'}) ||
-             LJ::check_priv($remote, "faqedit", "*")); # FAQ admins can search too
+            $remote && ( $remote->has_priv( "translate", $l->{'lncode'} ) ||
+                         $remote->has_priv( "faqedit", "*" ) ); # FAQ admins can search too
 
         my $qtext = $dbr->quote($FORM{'searchtext'});
         my $dmid = $FORM{'searchdomain'}+0;
diff -r 585a9167642b -r 051ef3de84ec htdocs/userinfo.bml
--- a/htdocs/userinfo.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/userinfo.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -52,7 +52,7 @@ body<=
         $u = LJ::load_userid( $userid );
 
         # only users with finduser can view profiles by userid (excluding identity accounts)
-        unless ( LJ::check_priv( $remote, 'finduser' ) || ( $GET{t} eq "I" && $u && $u->is_identity ) ) {
+        unless ( ( $remote && $remote->has_priv( 'finduser' ) ) || ( $GET{t} eq "I" && $u && $u->is_identity ) ) {
             $title = $ML{'Error'};
             return $ML{'.label.reqfinduser'};
         }
@@ -127,8 +127,8 @@ body<=
 
     # can't view suspended/deleted profiles unless you have viewall
     my $viewall = 0;
-    if ( $GET{viewall} && LJ::check_priv( $remote, "canview", "suspended" ) ) {
-        $viewall = LJ::check_priv( $remote, 'canview', '*' ) ? 1 : 0;
+    if ( $GET{viewall} && $remote && $remote->has_priv( "canview", "suspended" ) ) {
+        $viewall = $remote->has_priv( 'canview', '*' ) ? 1 : 0;
         LJ::statushistory_add( $u->id, $remote->id, "viewall", "userinfo: " . $u->user . ", statusvis: " . $u->statusvis );
     } else {
         if ( $u->is_suspended ) {
diff -r 585a9167642b -r 051ef3de84ec htdocs/view/index.bml
--- a/htdocs/view/index.bml	Sat Aug 29 12:54:41 2009 +0000
+++ b/htdocs/view/index.bml	Sat Aug 29 13:08:42 2009 +0000
@@ -56,11 +56,11 @@
     # do they have the viewall priv?
     my $viewall = 0;
     my $viewsome = 0;
-    if ($GET{'viewall'} && LJ::check_priv($remote, "canview")) {
+    if ( $GET{'viewall'} && $remote && $remote->has_priv( "canview" ) ) {
         LJ::statushistory_add($u->{'userid'}, $remote->{'userid'},
                               "viewall", "month: $u->{'user'}, statusvis: " . $u->statusvis);
-        $viewall = LJ::check_priv($remote, 'canview', '*');
-        $viewsome = $viewall || LJ::check_priv($remote, 'canview', 'suspended');
+        $viewall = $remote->has_priv( 'canview', '*' );
+        $viewsome = $viewall || $remote->has_priv( 'canview', 'suspended' );
 
     # check for deleted/suspended
     } else {
diff -r 585a9167642b -r 051ef3de84ec t/console-priv.t
--- a/t/console-priv.t	Sat Aug 29 12:54:41 2009 +0000
+++ b/t/console-priv.t	Sat Aug 29 13:08:42 2009 +0000
@@ -43,21 +43,21 @@ is($run->("priv_package list $pkg"),
 # one user, one priv
 is($run->("priv grant supporthelp:test " . $u2->user),
    "info: Granting: 'supporthelp' with arg 'test' for user '" . $u2->user . "'.");
-ok(LJ::check_priv($u2, "supporthelp", "test"), "has priv");
+ok($u2->has_priv( "supporthelp", "test" ), "has priv");
 
 is($run->("priv revoke supporthelp:test " . $u2->user),
    "info: Denying: 'supporthelp' with arg 'test' for user '" . $u2->user . "'.");
-ok(!LJ::check_priv($u2, "supporthelp", "test"), "no longer privved");
+ok(!$u2->has_priv( "supporthelp", "test" ), "no longer privved");
 
 is($run->("priv grant supporthelp:test,supporthelp:bananas " . $u2->user),
    "info: Granting: 'supporthelp' with arg 'test' for user '" . $u2->user . "'.\n"
    . "info: Granting: 'supporthelp' with arg 'bananas' for user '" . $u2->user . "'.");
-ok(LJ::check_priv($u2, "supporthelp", "test"), "has priv");
-ok(LJ::check_priv($u2, "supporthelp", "bananas"), "has priv");
+ok($u2->has_priv( "supporthelp", "test" ), "has priv");
+ok($u2->has_priv( "supporthelp", "bananas" ), "has priv");
 
 is($run->("priv revoke_all supporthelp " . $u2->user),
    "info: Denying: 'supporthelp' with all args for user '" . $u2->user . "'.");
-ok(!LJ::check_priv($u2, "supporthelp"), "no longer has priv");
+ok(!$u2->has_priv( "supporthelp" ), "no longer has priv");
 
 is($run->("priv revoke supporthelp " . $u2->user),
    "error: You must explicitly specify an empty argument when revoking a priv.\n"
diff -r 585a9167642b -r 051ef3de84ec t/privs.t
--- a/t/privs.t	Sat Aug 29 12:54:41 2009 +0000
+++ b/t/privs.t	Sat Aug 29 13:08:42 2009 +0000
@@ -9,10 +9,10 @@ use LJ::Test qw (temp_user);
 # check that it requires a login
 my $u = temp_user();
 
-is(LJ::check_priv($u, "supporthelp", "*"), 0, "Normal user doesn't have privs");
+is($u->has_priv( "supporthelp", "*" ), 0, "Normal user doesn't have privs");
 
 is($u->grant_priv("supporthelp", "*"), 1, "Granted user the priv");
-is(LJ::check_priv($u, "supporthelp", "*"), 1, "User has priv");
+is($u->has_priv( "supporthelp", "*" ), 1, "User has priv");
 
 is($u->revoke_priv("supporthelp", "*"), 1, "Revoked the priv from the user");
-is(LJ::check_priv($u, "supporthelp", "*"), 0, "User no longer has the priv");
+is($u->has_priv( "supporthelp", "*" ), 0, "User no longer has the priv");
--------------------------------------------------------------------------------