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-10-21 05:30 pm

[dw-free] migrate LJ::get_cap / $u->get_cap to specific user methods

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

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

Migrate a lot of get_cap calls to LJ::User method calls, part of our ongoing
code cleanup project.

Patch by [staff profile] denise.

Files modified:
  • cgi-bin/Apache/LiveJournal/Interface/S2.pm
  • cgi-bin/DW/Logic/LogItems.pm
  • cgi-bin/DW/Logic/MenuNav.pm
  • cgi-bin/DW/Setting/EmailAlias.pm
  • cgi-bin/DW/Setting/TxtMsgSetup.pm
  • cgi-bin/LJ/CProd/FriendsFriends.pm
  • cgi-bin/LJ/CProd/Polls.pm
  • cgi-bin/LJ/Comment.pm
  • cgi-bin/LJ/Console/Command/MoodthemeCreate.pm
  • cgi-bin/LJ/Console/Command/MoodthemeSetpic.pm
  • cgi-bin/LJ/Customize.pm
  • cgi-bin/LJ/Event/JournalNewComment.pm
  • cgi-bin/LJ/Event/NewUserpic.pm
  • cgi-bin/LJ/Event/PollVote.pm
  • cgi-bin/LJ/Event/RemovedFromCircle.pm
  • cgi-bin/LJ/S2.pm
  • cgi-bin/LJ/S2/EntryPage.pm
  • cgi-bin/LJ/Setting/Display/DomainMapping.pm
  • cgi-bin/LJ/Setting/DomainMapping.pm
  • cgi-bin/LJ/Setting/EmailPosting.pm
  • cgi-bin/LJ/Setting/NotifyWeblogs.pm
  • cgi-bin/LJ/Setting/SelfCommentEmail.pm
  • cgi-bin/LJ/User.pm
  • cgi-bin/LJ/Widget/UserpicDisplay.pm
  • cgi-bin/ljemailgateway.pl
  • cgi-bin/ljfeed.pl
  • cgi-bin/ljlib.pl
  • cgi-bin/ljprotocol.pl
  • cgi-bin/talklib.pl
  • cgi-bin/weblib.pl
  • htdocs/customize/advanced/layeredit.bml
  • htdocs/customize/advanced/layers.bml
  • htdocs/customize/advanced/styles.bml
  • htdocs/directory.bml
  • htdocs/directorysearch.bml
  • htdocs/editprivacy.bml
  • htdocs/interests.bml
  • htdocs/manage/circle/edit.bml
  • htdocs/manage/domain.bml
  • htdocs/manage/emailpost.bml
  • htdocs/manage/moodthemes.bml
  • htdocs/manage/profile/index.bml
  • htdocs/manage/subscriptions/user.bml
  • htdocs/poll/create.bml
  • htdocs/syn/index.bml
  • htdocs/talkread.bml
  • htdocs/tools/recent_email.bml
  • htdocs/tools/tellafriend.bml
  • htdocs/tools/textmessage.bml
--------------------------------------------------------------------------------
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/Apache/LiveJournal/Interface/S2.pm
--- a/cgi-bin/Apache/LiveJournal/Interface/S2.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/Apache/LiveJournal/Interface/S2.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -72,7 +72,7 @@ sub handler {
             unless LJ::can_manage($u, $lu);
 
         return error($r, 403, "Forbidden", "Your account type is not allowed to edit layers")
-            unless LJ::get_cap($u, "s2styles");
+            unless $u->can_create_s2_styles;
 
         # Read in the entity body to get the source
         my $len = $r->header_in("Content-length")+0;
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/DW/Logic/LogItems.pm
--- a/cgi-bin/DW/Logic/LogItems.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/DW/Logic/LogItems.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -63,7 +63,7 @@ sub watch_items
 
     # friendspage per day is allowed only for journals with the special cap 'friendspage_per_day'
     my $events_date = $args{events_date};
-    $events_date = '' unless $remote && $u->get_cap( 'friendspage_per_day' );
+    $events_date = '' unless $remote && $u->can_use_daily_readpage;
 
     my $filter  = $args{content_filter};
     my $max_age = $LJ::MAX_FRIENDS_VIEW_AGE || 3600*24*14;  # 2 week default.
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/DW/Logic/MenuNav.pm
--- a/cgi-bin/DW/Logic/MenuNav.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/DW/Logic/MenuNav.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -53,7 +53,7 @@ sub get_menu_navigation {
     my $loggedin = ( defined( $u ) && $u ) ? 1 : 0;
     my $loggedin_hasjournal = ( $loggedin && !$u->is_identity ) ? 1 : 0;
     my $loggedin_canjoincomms = ( $loggedin && $u->is_person ) ? 1 : 0;   # note the semantic difference
-    my $loggedin_hasnetwork = ( $loggedin && LJ::get_cap($u, "friendsfriendsview") ) ? 1 : 0;
+    my $loggedin_hasnetwork = ( $loggedin && $u->can_use_network_page ) ? 1 : 0;
     my $loggedin_ispaid = ( $loggedin && $u->is_paid ) ? 1 : 0;
     my $loggedout = $loggedin ? 0 : 1;
     my $always = 1;
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/DW/Setting/EmailAlias.pm
--- a/cgi-bin/DW/Setting/EmailAlias.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/DW/Setting/EmailAlias.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -23,7 +23,7 @@ use warnings;
 
 sub should_render {
     my ( $class, $u ) = @_;
-    return $u && LJ::get_cap( $u, 'useremail' ) ? 1 : 0;
+    return $u && $u->can_have_email_alias;
 }
 
 sub label {
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/DW/Setting/TxtMsgSetup.pm
--- a/cgi-bin/DW/Setting/TxtMsgSetup.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/DW/Setting/TxtMsgSetup.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -23,7 +23,7 @@ use warnings;
 
 sub should_render {
     my ( $class, $u ) = @_;
-    return $u && $u->get_cap( 'textmessaging' ) ? 1 : 0;
+    return $u && $u->can_use_textmessaging;
 }
 
 sub label {
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/CProd/FriendsFriends.pm
--- a/cgi-bin/LJ/CProd/FriendsFriends.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/CProd/FriendsFriends.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -3,7 +3,7 @@ use base 'LJ::CProd';
 
 sub applicable {
     my ($class, $u) = @_;
-    return 0 unless LJ::get_cap($u, "friendsfriendsview");
+    return 0 unless $u->can_use_network_page;
     return 1;
 }
 
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/CProd/Polls.pm
--- a/cgi-bin/LJ/CProd/Polls.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/CProd/Polls.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -3,7 +3,7 @@ use base 'LJ::CProd';
 
 sub applicable {
     my ($class, $u) = @_;
-    return 0 unless LJ::get_cap($u, "makepoll");
+    return 0 unless $u->can_create_polls;
     my $dbcr = LJ::get_cluster_reader( $u )
         or return 0;
     my $used_polls = $dbcr->selectrow_array( "SELECT pollid FROM poll2 WHERE posterid=?",
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Comment.pm
--- a/cgi-bin/LJ/Comment.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Comment.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -903,7 +903,7 @@ sub user_can_edit {
     # comment editing must be enabled and the user must have the cap
     $$errref = LJ::Lang::ml('talk.error.cantedit');
     return 0 unless LJ::is_enabled("edit_comments");
-    return 0 unless $u->get_cap("edit_comments");
+    return 0 unless $u->can_edit_comments;
 
     # entry cannot be suspended
     return 0 if $self->entry->is_suspended;
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Console/Command/MoodthemeCreate.pm
--- a/cgi-bin/LJ/Console/Command/MoodthemeCreate.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/MoodthemeCreate.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -25,7 +25,7 @@ sub execute {
 
     my $remote = LJ::get_remote();
     return $self->error("Sorry, your account type doesn't let you create new mood themes")
-        unless $remote->get_cap("moodthemecreate");
+        unless $remote->can_create_moodthemes;
 
     my $dbh = LJ::get_db_writer();
     my $sth = $dbh->prepare("INSERT INTO moodthemes (ownerid, name, des, is_public) VALUES (?, ?, ?, 'N')");
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Console/Command/MoodthemeSetpic.pm
--- a/cgi-bin/LJ/Console/Command/MoodthemeSetpic.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/MoodthemeSetpic.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -28,7 +28,7 @@ sub execute {
 
     my $remote = LJ::get_remote();
     return $self->error("Sorry, your account type doesn't let you create new mood themes")
-        unless $remote->get_cap("moodthemecreate");
+        unless $remote->can_create_moodthemes;
 
     my $dbh = LJ::get_db_writer();
 
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Customize.pm
--- a/cgi-bin/LJ/Customize.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Customize.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -40,7 +40,7 @@ sub apply_theme {
     my $theme = shift;
 
     my %style;
-    my $has_cap = $u->get_cap("s2styles");
+    my $has_cap = $u->can_create_s2_styles;
     my $pub = LJ::S2::get_public_layers();
     my $userlay = LJ::S2::get_layers_of_user($u);
 
@@ -272,7 +272,7 @@ sub get_custom_layouts_for_dropdown {
 
     my @layers = ();
 
-    my $has_cap = LJ::get_cap($u, "s2styles");
+    my $has_cap = $u->can_create_s2_styles;
     my $userlay = LJ::S2::get_layers_of_user($u);
     my %style   = LJ::S2::get_style($u, "verify");
 
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Event/JournalNewComment.pm
--- a/cgi-bin/LJ/Event/JournalNewComment.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Event/JournalNewComment.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -447,7 +447,7 @@ sub matches_filter {
     # not a match if this user posted the comment and they don't
     # want to be notified of their own posts
     if (LJ::u_equals($comment->poster, $watcher)) {
-        return 0 unless $watcher->get_cap('getselfemail') && $watcher->prop('opt_getselfemail');
+        return 0 unless $watcher->can_get_self_email && $watcher->prop('opt_getselfemail');
     }
 
     # not a match if this user posted the entry and they don't want comments emailed,
@@ -504,7 +504,7 @@ sub available_for_user  {
     my ($class, $u, $subscr) = @_;
 
     # not allowed to track replies to comments
-    return 0 if ! $u->get_cap('track_thread') &&
+    return 0 if ! $u->can_track_thread &&
         $subscr->arg2;
 
     return 1;
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Event/NewUserpic.pm
--- a/cgi-bin/LJ/Event/NewUserpic.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Event/NewUserpic.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -132,7 +132,7 @@ sub available_for_user  {
 sub available_for_user  {
     my ($class, $u, $subscr) = @_;
 
-    return 0 if ! $u->get_cap('track_user_newuserpic') &&
+    return 0 if ! $u->can_track_new_userpic &&
         $subscr->journalid;
 
     return 1;
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Event/PollVote.pm
--- a/cgi-bin/LJ/Event/PollVote.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Event/PollVote.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -160,7 +160,7 @@ sub subscription_as_html {
 # only users with the track_pollvotes cap can use this
 sub available_for_user  {
     my ($class, $u, $subscr) = @_;
-    return $u->get_cap("track_pollvotes") ? 1 : 0;
+    return $u->can_track_pollvotes;
 }
 
 1;
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Event/RemovedFromCircle.pm
--- a/cgi-bin/LJ/Event/RemovedFromCircle.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Event/RemovedFromCircle.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -188,7 +188,7 @@ sub subscription_as_html {
 # only users with the track_defriended cap can use this
 sub available_for_user  {
     my ( $class, $u, $subscr ) = @_;
-    return $u->get_cap( 'track_defriended' ) ? 1 : 0;
+    return $u->can_track_defriending;
 }
 
 sub content {
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/S2.pm
--- a/cgi-bin/LJ/S2.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/S2.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -1539,7 +1539,7 @@ sub can_use_layer
 sub can_use_layer
 {
     my ($u, $uniq) = @_;  # $uniq = redist_uniq value
-    return 1 if LJ::get_cap($u, "s2styles");
+    return 1 if $u->can_create_s2_styles;
     return 0 unless $uniq;
     return 1 if LJ::run_hook('s2_can_use_layer', {
         u => $u,
@@ -1563,8 +1563,8 @@ sub can_use_prop
 sub can_use_prop
 {
     my ($u, $uniq, $prop) = @_;  # $uniq = redist_uniq value
-    return 1 if LJ::get_cap($u, "s2styles");
-    return 1 if LJ::get_cap($u, "s2props");
+    return 1 if $u->can_create_s2_styles;
+    return 1 if $u->can_create_s2_props;
     my $pol = get_policy();
     my $can = 0;
     my @layers = ('*');
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/S2/EntryPage.pm
--- a/cgi-bin/LJ/S2/EntryPage.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/S2/EntryPage.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -74,7 +74,7 @@ sub EntryPage
                     stc/lj_base.css
                     js/datasource.js
                     js/selectable_table.js
-                    )) if LJ::is_enabled('userpicselect') && $remote && $remote->get_cap('userpicselect');
+                    )) if LJ::is_enabled('userpicselect') && $remote && $remote->can_use_userpic_select;
 
     LJ::need_res(qw(
                     js/x_core.js
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Setting/Display/DomainMapping.pm
--- a/cgi-bin/LJ/Setting/Display/DomainMapping.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Setting/Display/DomainMapping.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -22,7 +22,7 @@ sub actionlink {
     my $upgrade_url = LJ::run_hook("upgrade_link", $u, "plus", url_only => 1) || "";
     my $upgrade_link = LJ::run_hook("upgrade_link", $u, "plus") || "";
 
-    if ($u->get_cap('domainmap')) {
+    if ( $u->can_map_domains ) {
         return "<a href='$LJ::SITEROOT/manage/domain?authas=" . $u->user . "'>" . $class->ml('setting.display.domainmapping.actionlink') . "</a>";
     } elsif ($has_domain) {
         return "<a href='$LJ::SITEROOT/manage/domain?authas=" . $u->user . "'>" . $class->ml('setting.display.domainmapping.actionlink.remove') . "</a> $upgrade_link";
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Setting/DomainMapping.pm
--- a/cgi-bin/LJ/Setting/DomainMapping.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Setting/DomainMapping.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -8,7 +8,7 @@ sub save {
 sub save {
     my ($class, $u, $args) = @_;
 
-    my $has_cap = $u->get_cap('domainmap');
+    my $has_cap = $u->can_map_domains;
 
     # sanitize POST value
 
@@ -60,7 +60,7 @@ sub as_html {
     my ($class, $u, $errs) = @_;
     $errs ||= {};
 
-    my $has_cap = $u->get_cap('domainmap');
+    my $has_cap = $u->can_map_domains;
     my $has_dom = $u->prop('journaldomain') ? 1 : 0;
 
     my $key = $class->pkgkey;
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Setting/EmailPosting.pm
--- a/cgi-bin/LJ/Setting/EmailPosting.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Setting/EmailPosting.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -25,7 +25,7 @@ sub option {
     my ($class, $u, $errs, $args) = @_;
     my $key = $class->pkgkey;
 
-    my $can_emailpost = $u->get_cap("emailpost") ? 1 : 0;
+    my $can_emailpost = $u->can_emailpost;
     my $upgrade_link = $can_emailpost ? "" : LJ::run_hook("upgrade_link", $u, "plus");
 
     my $addrlist = LJ::Emailpost::get_allowed_senders($u);
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Setting/NotifyWeblogs.pm
--- a/cgi-bin/LJ/Setting/NotifyWeblogs.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Setting/NotifyWeblogs.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -26,7 +26,7 @@ sub option {
     my $key = $class->pkgkey;
 
     my $notifyweblogs = $class->get_arg($args, "notifyweblogs") || $u->prop("opt_weblogscom");
-    my $can_use_notifyweblogs = $u->get_cap("weblogscom") ? 1 : 0;
+    my $can_use_notifyweblogs = $u->can_notify_weblogs;
     my $upgrade_link = $can_use_notifyweblogs ? "" : (LJ::run_hook("upgrade_link", $u, "paid") || "");
 
     my $ret = LJ::html_check({
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Setting/SelfCommentEmail.pm
--- a/cgi-bin/LJ/Setting/SelfCommentEmail.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Setting/SelfCommentEmail.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -12,7 +12,7 @@ sub disabled {
 sub disabled {
     my ($class, $u) = @_;
 
-    return $u->get_cap("getselfemail") ? 0 : 1;
+    return $u->can_get_self_email;
 }
 
 sub selected {
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/User.pm
--- a/cgi-bin/LJ/User.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/User.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -1785,6 +1785,57 @@ sub can_be_text_messaged_by {
     return 0;
 }
 
+sub can_beta_payments {
+    return $_[0]->get_cap( 'beta_payments' ) ? 1 : 0;
+}
+
+sub can_create_feeds {
+    return $_[0]->get_cap( 'synd_create' ) ? 1 : 0;
+}
+
+sub can_create_moodthemes {
+    return $_[0]->get_cap( 'moodthemecreate' ) ? 1 : 0;
+}
+
+sub can_create_polls {
+    return $_[0]->get_cap( 'makepoll' ) ? 1 : 0;
+}
+
+sub can_create_s2_props {
+    return $_[0]->get_cap( 's2props' ) ? 1 : 0;
+}
+
+sub can_create_s2_styles {
+    return $_[0]->get_cap( 's2styles' ) ? 1 : 0;
+}
+
+sub can_edit_comments {
+    return $_[0]->get_cap( 'edit_comments' ) ? 1 : 0;
+}
+
+sub can_emailpost {
+    return $_[0]->get_cap( 'emailpost' ) ? 1 : 0;
+}
+
+sub can_find_similar {
+    return $_[0]->get_cap( 'findsim' ) ? 1 : 0;
+}
+
+sub can_get_self_email {
+    return $_[0]->get_cap( 'getselfemail' ) ? 1 : 0;
+}
+
+sub can_have_email_alias {
+    return $_[0]->get_cap( 'useremail' ) ? 1 : 0;
+}
+
+sub can_map_domains {
+    return $_[0]->get_cap( 'domainmap' ) ? 1 : 0;
+}
+
+sub can_notify_weblogs {
+    return $_[0]->get_cap( 'weblogscom' ) ? 1 : 0;
+}
 
 sub can_show_location {
     my $u = shift;
@@ -1820,11 +1871,49 @@ sub can_show_onlinestatus {
     return 0;
 }
 
+sub can_track_defriending {
+    return $_[0]->get_cap( 'track_defriended' ) ? 1 : 0;
+}
+
+sub can_track_new_userpic {
+    return $_[0]->get_cap( 'track_user_newuserpic' ) ? 1 : 0;
+}
+
+sub can_track_pollvotes {
+    return $_[0]->get_cap( 'track_pollvotes' ) ? 1 : 0;
+}
+
+sub can_track_thread {
+    return $_[0]->get_cap( 'track_thread' ) ? 1 : 0;
+}
+
+sub can_use_daily_readpage {
+    return $_[0]->get_cap( 'friendspage_per_day' ) ? 1 : 0;
+}
+
+sub can_use_directory {
+    return $_[0]->get_cap( 'directory' ) ? 1 : 0;
+}
+
+sub can_use_fastlane {
+    return $_[0]->get_cap( 'fastserver' ) ? 1 : 0;
+}
+
+sub can_use_full_rss {
+    return $_[0]->get_cap( 'full_rss' ) ? 1 : 0;
+}
 
 sub can_use_google_analytics {
     return $_[0]->get_cap( 'google_analytics' ) ? 1 : 0;
 }
 
+sub can_use_latest_comments_rss {
+    return $_[0]->get_cap( 'latest_comments_rss' ) ? 1 : 0;
+}
+
+sub can_use_mass_privacy {
+    return $_[0]->get_cap( 'mass_privacy' ) ? 1 : 0;
+}
 
 sub can_use_network_page {
     return $_[0]->get_cap( 'friendsfriendsview' ) ? 1 : 0;
@@ -1834,6 +1923,18 @@ sub can_use_network_page {
 # Check if the user can use *any* page statistic module for their own journal.
 sub can_use_page_statistics {
     return $_[0]->can_use_google_analytics;
+}
+
+sub can_use_textmessaging {
+    return $_[0]->get_cap( 'textmessaging' ) ? 1 : 0;
+}
+
+sub can_use_userpic_select {
+    return $_[0]->get_cap( 'userpicselect' ) ? 1 : 0;
+}
+
+sub can_view_mailqueue {
+    return $_[0]->get_cap( 'viewmailqueue' ) ? 1 : 0;
 }
 
 sub clear_prop {
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/LJ/Widget/UserpicDisplay.pm
--- a/cgi-bin/LJ/Widget/UserpicDisplay.pm	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/LJ/Widget/UserpicDisplay.pm	Wed Oct 21 17:30:30 2009 +0000
@@ -35,7 +35,7 @@ sub render_body {
 
     my $u = $user;
     return "" unless $u;
-    return "" unless LJ::is_enabled('userpicselect') || $u->get_cap('userpicselect');
+    return "" unless LJ::is_enabled('userpicselect') || $u->can_use_userpic_select;
 
     my $res;
     $res = LJ::Protocol::do_request("login", {
@@ -176,7 +176,7 @@ sub render_body {
             });
             // ]]>
             </script>
-        } if LJ::is_enabled('userpicselect') && $u->get_cap('userpicselect');
+        } if LJ::is_enabled('userpicselect') && $u->can_use_userpic_select;
 
         $$pic .= "<div id='userpic' style='display: none;'><p id='userpic_preview'><a href='javascript:void(0);' id='lj_userpicselect_img'><img src='' alt='selected userpic' id='userpic_preview_image' /><span id='lj_userpicselect_img_txt'>$userpic_link_text</span></a></p></div>";
         $$pic .= "\n";
@@ -201,7 +201,7 @@ sub render_body {
                        userpic_preview();
                  };
         $$picform .= "insertViewThumbs()"
-            if LJ::is_enabled('userpicselect') && $u->get_cap('userpicselect');
+            if LJ::is_enabled('userpicselect') && $u->can_use_userpic_select;
         $$picform .= "</script>\n";
 
     } elsif (!$u)  {
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/ljemailgateway.pl
--- a/cgi-bin/ljemailgateway.pl	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/ljemailgateway.pl	Wed Oct 21 17:30:30 2009 +0000
@@ -172,7 +172,7 @@ sub process {
     }
 
     return $err->("Email gateway access denied for your account type.")
-        unless $LJ::T_ALLOW_EMAILPOST || LJ::get_cap($u, "emailpost");
+        unless $LJ::T_ALLOW_EMAILPOST || $u->can_emailpost;
 
     # Is this message from a sprint PCS phone?  Sprint doesn't support
     # MMS (yet) - when it does, we should just be able to rip this block
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/ljfeed.pl
--- a/cgi-bin/ljfeed.pl	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/ljfeed.pl	Wed Oct 21 17:30:30 2009 +0000
@@ -202,7 +202,7 @@ sub make_feed
 
             # users without 'full_rss' get their logtext bodies truncated
             # do this now so that the html cleaner will hopefully fix html we break
-            unless (LJ::get_cap($u, 'full_rss')) {
+            unless ( $u->can_use_full_rss ) {
                 my $trunc = LJ::text_trim($event, 0, 80);
                 $event = "$trunc $readmore" if $trunc ne $event;
             }
@@ -1010,7 +1010,7 @@ sub create_view_comments
         return 404;
     }
 
-    unless ($u->get_cap('latest_comments_rss')) {
+    unless ( $u->can_use_latest_comments_rss ) {
         $opts->{handler_return} = 403;
         return;
     }
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/ljlib.pl
--- a/cgi-bin/ljlib.pl	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/ljlib.pl	Wed Oct 21 17:30:30 2009 +0000
@@ -2317,7 +2317,7 @@ sub is_enabled {
     my $conf = shift;
     if ( $conf eq 'payments' ) {
         my $remote = LJ::get_remote();
-        return 1 if $remote && $remote->get_cap( 'beta_payments' );
+        return 1 if $remote && $remote->can_beta_payments;
     }
     return ! LJ::conf_test( $LJ::DISABLED{$conf}, @_ );
 }
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/ljprotocol.pl
--- a/cgi-bin/ljprotocol.pl	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/ljprotocol.pl	Wed Oct 21 17:30:30 2009 +0000
@@ -596,7 +596,7 @@ sub login
     }
 
     ## tell some users they can hit the fast servers later.
-    $res->{'fastserver'} = 1 if LJ::get_cap($u, "fastserver");
+    $res->{'fastserver'} = 1 if $u->can_use_fastlane;
 
     ## user info
     $res->{'userid'} = $u->{'userid'};
@@ -1207,9 +1207,8 @@ sub postevent
     if (LJ::Poll->contains_new_poll(\$event))
     {
         return fail($err,301,"Your account type doesn't permit creating polls.")
-            unless (LJ::get_cap($u, "makepoll")
-                    || ($uowner->is_community
-                        && LJ::get_cap($uowner, "makepoll")));
+            unless ( $u->can_create_polls
+                    || ( $uowner->is_community && $uowner->can_create_polls ) );
 
         my $error = "";
         @polls = LJ::Poll->new_from_html(\$event, \$error, {
@@ -1536,7 +1535,7 @@ sub postevent
     my @jobs;  # jobs to add into TheSchwartz
 
     # notify weblogs.com of post if necessary
-    if ( LJ::is_enabled('weblogs_com') && $u->{'opt_weblogscom'} && LJ::get_cap($u, "weblogscom") &&
+    if ( LJ::is_enabled('weblogs_com') && $u->{'opt_weblogscom'} && $u->can_notify_weblogs &&
         ($security eq "public") && !$req->{'props'}->{'opt_backdated'} ) {
         push @jobs, TheSchwartz::Job->new_from_array("LJ::Worker::Ping::WeblogsCom", {
             'user' => $u->{'user'},
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/talklib.pl
--- a/cgi-bin/talklib.pl	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/talklib.pl	Wed Oct 21 17:30:30 2009 +0000
@@ -2436,7 +2436,7 @@ sub mail_comments {
     # them, so it shouldn't matter.)
     my $u = $comment->{u};
     LJ::load_user_props($u, 'opt_getselfemail') if $u;
-    if ($u && $u->{'opt_getselfemail'} && LJ::get_cap($u, 'getselfemail')
+    if ($u && $u->{'opt_getselfemail'} && $u->can_get_self_email
         && !$u->gets_notified(journal => $journalu, arg1 => $ditemid, arg2 => $comment->{talkid})) {
         my $part;
 
diff -r d6762606a18d -r 6af3384bd954 cgi-bin/weblib.pl
--- a/cgi-bin/weblib.pl	Wed Oct 21 17:24:56 2009 +0000
+++ b/cgi-bin/weblib.pl	Wed Oct 21 17:30:30 2009 +0000
@@ -727,7 +727,7 @@ sub create_qr_div {
             # userpic browse button
             $qrhtml .= qq {
                 <input type="button" id="lj_userpicselect" value="Browse" />
-                } if LJ::is_enabled('userpicselect') && $remote->get_cap('userpicselect');
+                } if LJ::is_enabled('userpicselect') && $remote->can_use_userpic_select;
 
             $qrhtml .= LJ::help_icon_html("userpics", " ");
         }
@@ -891,7 +891,7 @@ QQ
                 }
             });
         </script>
-        } if LJ::is_enabled('userpicselect') && $remote->get_cap('userpicselect');
+        } if LJ::is_enabled('userpicselect') && $remote->can_use_userpic_select;
 
     return $ret;
 }
@@ -1191,7 +1191,7 @@ sub entry_form {
                     });
                     // ]]>
                     </script>
-                } if LJ::is_enabled('userpicselect') && $remote->get_cap('userpicselect');
+                } if LJ::is_enabled('userpicselect') && $remote->can_use_userpic_select;
 
                 # libs for userpicselect
                 LJ::need_res(qw(
@@ -1208,7 +1208,7 @@ sub entry_form {
                                 stc/ups.css
                                 js/datasource.js
                                 js/selectable_table.js
-                                )) if LJ::is_enabled('userpicselect') && $remote->get_cap('userpicselect');
+                                )) if LJ::is_enabled('userpicselect') && $remote->can_use_userpic_select;
 
                 $out .= "<div id='userpic' style='display: none;'><p id='userpic_preview'><a href='javascript:void(0);' id='lj_userpicselect_img'><img src='' alt='selected userpic' id='userpic_preview_image' /><span id='lj_userpicselect_img_txt'>$userpic_link_text</span></a></p></div>";
                 $out .= "\n";
@@ -1303,7 +1303,7 @@ sub entry_form {
                                         @pickws) . "\n";
                 $out .= "<a href='javascript:void(0);' id='lj_userpicselect'> </a>";
                 # userpic browse button
-                $$onload .= " insertViewThumbs();" if LJ::is_enabled('userpicselect') && $remote->get_cap('userpicselect');
+                $$onload .= " insertViewThumbs();" if LJ::is_enabled('userpicselect') && $remote->can_use_userpic_select;
                 $out .= LJ::help_icon_html("userpics", "", " ") . "\n";
                 $out .= "</p>\n\n";
 
@@ -2989,7 +2989,7 @@ sub rte_js_vars {
     # of the poll button in the RTE.
     # Also remove any RTE buttons that have been set to disabled.
     my $canmakepoll = "true";
-    $canmakepoll = "false" if ($remote && !LJ::get_cap($remote, 'makepoll'));
+    $canmakepoll = "false" if ($remote && ! $remote->can_create_polls );
     $ret .= "<script type='text/javascript'>\n";
     $ret .= "    var RTEdisabled = new Array();\n";
     my $rte_disabled = $LJ::DISABLED{rte_buttons} || {};
diff -r d6762606a18d -r 6af3384bd954 htdocs/customize/advanced/layeredit.bml
--- a/htdocs/customize/advanced/layeredit.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/customize/advanced/layeredit.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -44,7 +44,7 @@
 
     # check priv and ownership
     return $err->("You are not authorized to edit styles.")
-        unless LJ::get_cap($u, "s2styles");
+        unless $u->can_create_s2_styles;
 
     # at this point, they are authorized, allow viewing & editing
 
diff -r d6762606a18d -r 6af3384bd954 htdocs/customize/advanced/layers.bml
--- a/htdocs/customize/advanced/layers.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/customize/advanced/layers.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -62,11 +62,10 @@
     my $pub = LJ::S2::get_public_layers();
     my $ulay = LJ::S2::get_layers_of_user($u);
 
-    my $has_priv = LJ::get_cap($u, 's2styles');
     return $err->($remote->{user} eq $u->{user} ?
             $ML{'.error.youcantuseadvanced'} :
             $ML{'.error.usercantuseadvanced'} )
-        unless $has_priv || $viewall;
+        unless $u->can_create_s2_styles || $viewall;
 
     # start of output
     $title = $ML{'.title'};
diff -r d6762606a18d -r 6af3384bd954 htdocs/customize/advanced/styles.bml
--- a/htdocs/customize/advanced/styles.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/customize/advanced/styles.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -48,11 +48,10 @@
     return $err->($ML{'.error.cantbeauthenticated'})
         unless $u;
 
-    my $has_priv = LJ::get_cap($u, 's2styles');
     return $err->($remote->{user} eq $u->{user} ?
             $ML{'.error.youcantuseadvanced'} :
             $ML{'.error.usercantuseadvanced'} )
-        unless $has_priv || $viewall;
+        unless $u->can_create_s2_styles || $viewall;
 
     my $no_layer_edit = LJ::run_hook("no_theme_or_layer_edit", $u);
     return $err->($ML{'/customize/advanced/index.bml.error.advanced.editing.denied'})
diff -r d6762606a18d -r 6af3384bd954 htdocs/directory.bml
--- a/htdocs/directory.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/directory.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -18,7 +18,7 @@ body<=
     return "<?needlogin?>" unless $remote;
 
     return LJ::CProd->inline($remote, inline => 'Directory') || BML::ml('cprod.directory.text3.v1')
-        unless $remote->get_cap("directory");
+        unless $remote->can_use_directory;
 
     my $ret = '';
 
diff -r d6762606a18d -r 6af3384bd954 htdocs/directorysearch.bml
--- a/htdocs/directorysearch.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/directorysearch.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -30,7 +30,7 @@ _code?>
     return "<?needlogin?>" unless $remote;
 
     return LJ::CProd->inline($remote, inline => 'Directory') || BML::ml('cprod.directory.text3.v1')
-        unless $remote->get_cap("directory");
+        unless $remote->can_use_directory;
 
     return "";
 }
diff -r d6762606a18d -r 6af3384bd954 htdocs/editprivacy.bml
--- a/htdocs/editprivacy.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/editprivacy.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -16,9 +16,7 @@ body<=
     return "This feature is currently disabled."
         unless LJ::is_enabled('mass_privacy');
 
-    unless ($u->get_cap('mass_privacy')) {
-        return "<?standout $ML{'.unable'} standout?>";
-    }
+    return "<?standout $ML{'.unable'} standout?>" unless $u->can_use_mass_privacy;
 
     my $mode = $POST{'mode'} || $GET{'mode'} || "init";
     my $more_public = 0; # flag indiciating if security is becoming more public
diff -r d6762606a18d -r 6af3384bd954 htdocs/interests.bml
--- a/htdocs/interests.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/interests.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -131,7 +131,7 @@ body<=
     if (!$did_post && $GET{'mode'} eq "findsim_do") {
         return $ML{'error.tempdisabled'} unless LJ::is_enabled('interests-findsim');
 
-        return $ML{'.findsim_do.account.notallowed'} unless LJ::get_cap($remote, "findsim");
+        return $ML{'.findsim_do.account.notallowed'} unless $remote->can_find_similar;
 
         my $ret = "";
         my $u = LJ::load_user($GET{'user'});
@@ -525,7 +525,7 @@ body<=
     $ret .= LJ::html_submit(undef, $ML{'.interested.btn.find'});
     $ret .= "</form></td></tr>";
 
-    if ( LJ::is_enabled('interests-findsim') && $remote && LJ::get_cap($remote, 'findsim') ) {
+    if ( LJ::is_enabled('interests-findsim') && $remote && $remote->can_find_similar ) {
         $ret .= "<tr valign='top'><td>$ML{'.interests.findsim'}</td><td><form method='get' action='interests'>";
         $ret .= LJ::html_hidden('mode', 'findsim_do');
         $ret .= LJ::html_text({name => 'user', value => $remote->{'user'}, size => 20}) . "&nbsp;";
diff -r d6762606a18d -r 6af3384bd954 htdocs/manage/circle/edit.bml
--- a/htdocs/manage/circle/edit.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/manage/circle/edit.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -94,6 +94,7 @@ body<=
                     $ret .= "<td scope='col' abbr='" . $other_u->display_username . "'>";
                     $ret .= LJ::html_hidden( "editfriend_edit_${uid}_user" => 1 );
                     $ret .= $other_u->ljuser_display;
+                    $ret .= "<br /><span style='font-size: smaller;'>" . LJ::last_updated( $other_u ) . "</span>";
                     $ret .= "</td>";
 
                     # color
diff -r d6762606a18d -r 6af3384bd954 htdocs/manage/domain.bml
--- a/htdocs/manage/domain.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/manage/domain.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -49,7 +49,7 @@ body<=
         my %uprop;
 
         # journal domains
-        my $dom_cap = LJ::get_cap($u, 'domainmap');
+        my $dom_cap = $u->can_map_domains;
         if ( ( exists $POST{journaldomain} && $u->{journaldomain} ne $POST{journaldomain} ) ||
             ( !$dom_cap && $POST{journaldomain_del} ) ) {
 
@@ -106,7 +106,7 @@ body<=
     $ret .= "<form method='post' action='/manage/domain?authas=$authas'>\n";
     $ret .= LJ::form_auth();
 
-    my $has_cap = LJ::get_cap($u, 'domainmap');
+    my $has_cap = $u->can_map_domains;
     my $has_dom = $u->{journaldomain} ? 1 : 0;
     if ($LJ::OTHER_VHOSTS && ($has_cap || $has_dom)) {
         $ret .= "<?h2 $ML{'.domainalias.head'} h2?><?p $ML{'.domainalias.about'} p?>\n";
diff -r d6762606a18d -r 6af3384bd954 htdocs/manage/emailpost.bml
--- a/htdocs/manage/emailpost.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/manage/emailpost.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -364,7 +364,7 @@ body<=
     
     $ret .= "<?p " . BML::ml('.intro', {'aopts' => "href='$LJ::SITEROOT/manage/emailpost?mode=help'"}) . " p?><br />";
 
-    unless (LJ::get_cap($u, 'emailpost')) {
+    unless ( $u->can_emailpost ) {
         $ret .= $ML{'.sorry.acct'};
         return $ret;
     }
diff -r d6762606a18d -r 6af3384bd954 htdocs/manage/moodthemes.bml
--- a/htdocs/manage/moodthemes.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/manage/moodthemes.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -394,7 +394,7 @@ body<=
 
         my $moodtheme_upsell = LJ::run_hook("moodtheme_upsell");
 
-        unless (LJ::get_cap($u, "moodthemecreate")) {
+        unless ( $u->can_create_moodthemes ) {
             if ($moodtheme_upsell) {
                 $ret .= $moodtheme_upsell;
             } else {
diff -r d6762606a18d -r 6af3384bd954 htdocs/manage/profile/index.bml
--- a/htdocs/manage/profile/index.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/manage/profile/index.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -324,7 +324,7 @@ body<=
         # opt_whatemailshow
         $ret .= "<tr><td class='field_name'> $ML{'.fn.emaildisplay'}</td><td> ";
         my $cur = $u->opt_whatemailshow;
-        my @vals = ( ($LJ::USER_EMAIL && LJ::get_cap($u, "useremail"))
+        my @vals = ( ( $LJ::USER_EMAIL && $u->can_have_email_alias )
                      ? ("A" => BML::ml(".email.opt.actual"),
                         "D" => BML::ml(".email.opt.display"),
                         "L" => BML::ml(".email.opt.site", { sitenameshort => $LJ::SITENAMESHORT } ),
@@ -419,7 +419,7 @@ body<=
         ## TEXT MESSAGING
 
         $ret .= "<a name='txtmsg'></a><div class='section_head'>$ML{'.section.textmsg'}\n";
-        unless (LJ::get_cap($u, "textmessaging")) {
+        unless ( $u->can_use_textmessaging ) {
             my $inline;
             if ($inline .= LJ::run_hook("cprod_inline", $u, 'TextMessaging')) {
                 $ret .= "</div>$inline";
@@ -427,7 +427,7 @@ body<=
                 $ret .= "</div>".BML::ml('cprod.textmessaging.text3.v1');
             }
         }
-        if (LJ::get_cap($u, "textmessaging")) {
+        if ( $u->can_use_textmessaging ) {
             my $tminfo = LJ::TextMessage->tm_info($u, remap_result => 1);
             foreach (values %$tminfo) { LJ::text_out(\$_); }
             $tminfo->{'security'} = "N" if ($u->{'txtmsg_status'} eq 'off' || $u->{'txtmsg_status'} eq 'none');
diff -r d6762606a18d -r 6af3384bd954 htdocs/manage/subscriptions/user.bml
--- a/htdocs/manage/subscriptions/user.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/manage/subscriptions/user.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -47,7 +47,7 @@ body<=
                                                                      event    => "NewUserpic",
                                                                      journal  => $journal,
                                                                      flags    => LJ::Subscription::TRACKING,
-                                                                     disabled => ! $remote->get_cap('track_user_newuserpic'),
+                                                                     disabled => ! $remote->can_track_new_userpic,
                                                                      ),
                                       LJ::Subscription::Pending->new(
                                                                      $remote,
diff -r d6762606a18d -r 6af3384bd954 htdocs/poll/create.bml
--- a/htdocs/poll/create.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/poll/create.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -66,7 +66,7 @@
         return;
     }
 
-    my $remote_can_make_polls = LJ::get_cap($remote, "makepoll");
+    my $remote_can_make_polls = $remote->can_create_polls;
 
     my $authas = $GET{'authas'} || $remote->{'user'};
     my $u;
@@ -112,7 +112,7 @@
     }
 
     # does the remote or selected user have the 'makepoll' cap?
-    unless ($remote_can_make_polls || LJ::get_cap($u, "makepoll")) {
+    unless ( $remote_can_make_polls || $u->can_create_polls ) {
         $body .= "<?h1 $ML{'Sorry'} h1?><?p $ML{'.error.accttype2'} p?>";
         return;
     }
diff -r d6762606a18d -r 6af3384bd954 htdocs/syn/index.bml
--- a/htdocs/syn/index.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/syn/index.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -61,7 +61,7 @@ body<=
             unless ($su) {
                 # check cap to create new feeds
                 return $error->($ML{'.error.nocreate'})
-                    unless LJ::get_cap($u, 'synd_create');
+                    unless $u->can_create_feeds;
 
                 # if no account name, give them a proper entry form to pick one, but don't reprompt
                 # for the url, just pass that through (we'll recheck it anyway, though)
@@ -209,7 +209,7 @@ body<=
     $ret .= LJ::html_hidden("userid", $u->{'userid'});
 
     $ret .= "<?h1 $ML{'.add.byurl.title'} h1?><?p $ML{'.add.byurl.text'} p?>";
-    unless (LJ::get_cap($u, "synd_create")) {
+    unless ( $u->can_create_feeds ) {
         my $inline;
         if ($inline .= LJ::run_hook("cprod_inline", $u, 'Syn')) {
             $ret .= $inline;
diff -r d6762606a18d -r 6af3384bd954 htdocs/talkread.bml
--- a/htdocs/talkread.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/talkread.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -213,7 +213,7 @@ body<=
                        stc/lj_base.css
                        js/datasource.js
                        js/selectable_table.js
-                       )) if LJ::is_enabled('userpicselect') && $remote->get_cap('userpicselect');
+                       )) if LJ::is_enabled('userpicselect') && $remote->can_use_userpic_select;
 
          LJ::need_res(qw(
                          js/x_core.js
diff -r d6762606a18d -r 6af3384bd954 htdocs/tools/recent_email.bml
--- a/htdocs/tools/recent_email.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/tools/recent_email.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -40,7 +40,7 @@ body<=
     } else {
         # TODO: add a link to upgrading your account if you don't have the cap
         return "Sorry, you are not able to view outgoing email."
-            unless $u->get_cap("viewmailqueue");
+            unless $u->can_view_mailqueue;
 
         return LJ::error_list("You must <a href=\"$LJ::SITEROOT/register\">validate your email address</a> in order to view your outgoing mail.")
             unless $u->is_validated;
diff -r d6762606a18d -r 6af3384bd954 htdocs/tools/tellafriend.bml
--- a/htdocs/tools/tellafriend.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/tools/tellafriend.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -33,7 +33,7 @@
  # Get sender's email address
  my $u = LJ::load_userid($remote->{'userid'});
  $u->{'emailpref'} = $u->email_raw;
- if ($LJ::USER_EMAIL && LJ::get_cap($u, "useremail")) {
+ if ( $LJ::USER_EMAIL && $u->can_have_email_alias ) {
      $u->{'emailpref'} = $u->{'user'} . '@' . $LJ::USER_DOMAIN;
  }
 
diff -r d6762606a18d -r 6af3384bd954 htdocs/tools/textmessage.bml
--- a/htdocs/tools/textmessage.bml	Wed Oct 21 17:24:56 2009 +0000
+++ b/htdocs/tools/textmessage.bml	Wed Oct 21 17:30:30 2009 +0000
@@ -45,7 +45,7 @@ body<=
         $tminfo = LJ::TextMessage->tm_info($u);
     }
 
-    unless (LJ::get_cap($u, "textmessaging")) {
+    unless ( $u->can_use_textmessaging ) {
         $ret .= "<?h1 $ML{'.error.unavailable.head'} h1?><?p $ML{'.error.unavailable.notpermitted'} p?>";
         return add_footer( $ret );
     }
--------------------------------------------------------------------------------

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