From 40c9303d630f0a70415be00d69e2c767f74a52a4 Mon Sep 17 00:00:00 2001 From: rWatcher Date: Mon, 11 Jun 2012 14:05:12 -0400 Subject: [PATCH] Support linking to user profiles (if viewable). --- 3.0/modules/rwinfo/helpers/rwinfo_block.php | 41 +++++++++++++++++++-- 3.0/modules/rwinfo/helpers/rwinfo_theme.php | 38 ++++++++++++++++++- 2 files changed, 74 insertions(+), 5 deletions(-) diff --git a/3.0/modules/rwinfo/helpers/rwinfo_block.php b/3.0/modules/rwinfo/helpers/rwinfo_block.php index 57d654f2..319e58c2 100644 --- a/3.0/modules/rwinfo/helpers/rwinfo_block.php +++ b/3.0/modules/rwinfo/helpers/rwinfo_block.php @@ -116,11 +116,19 @@ class rwinfo_block_Core { if ($theme->item->owner && module::get_var("rwinfo", "show_owner")) { $display_name = $theme->item->owner->display_name(); - if ($theme->item->owner->url) { + + // rWatcher Edit: Display profile instead of web site, if viewable. + $str_owner_url = $theme->item->owner->url; + if (rwinfo_block_Core::_can_view_profile_pages(identity::lookup_user($theme->item->owner->id))) { + $str_owner_url = user_profile::url($theme->item->owner->id); + } + // rWatcher End Edit + + if ($str_owner_url) { //rW Edit $str_owner_url. $info["owner"] = array( "label" => t("Owner:"), - "value" => "item->owner->url}\">" . - html::clean($display_name) . "" + "value" => "" . + html::clean($display_name) . "" //rW Edit $str_owner_url. ); } else { $info["owner"] = array( @@ -137,4 +145,31 @@ class rwinfo_block_Core { } return $block; } + + // This came from modules/gallery/controllers/user_profile.php. + private function _can_view_profile_pages($user) { + if (!$user->loaded()) { + return false; + } + + if ($user->id == identity::active_user()->id) { + // You can always view your own profile + return true; + } + + switch (module::get_var("gallery", "show_user_profiles_to")) { + case "admin_users": + return identity::active_user()->admin; + + case "registered_users": + return !identity::active_user()->guest; + + case "everybody": + return true; + + default: + // Fail in private mode on an invalid setting + return false; + } + } } \ No newline at end of file diff --git a/3.0/modules/rwinfo/helpers/rwinfo_theme.php b/3.0/modules/rwinfo/helpers/rwinfo_theme.php index 566f7417..874ce8a2 100644 --- a/3.0/modules/rwinfo/helpers/rwinfo_theme.php +++ b/3.0/modules/rwinfo/helpers/rwinfo_theme.php @@ -44,12 +44,19 @@ class rwinfo_theme_Core { } // rWatcher End Edit + // rWatcher Edit: Display profile instead of web site, if viewable. + $str_owner_url = $item->owner->url; + if (rwinfo_theme_Core::_can_view_profile_pages(identity::lookup_user($item->owner->id))) { + $str_owner_url = user_profile::url($item->owner->id); + } + // rWatcher End Edit + if ($item->owner) { $results .= "
  • "; - if ($item->owner->url) { + if ($str_owner_url) { //rW Edit str_owner_url $results .= t("By: %owner_name", array("owner_name" => $item->owner->display_name(), - "owner_url" => $item->owner->url)); + "owner_url" => $str_owner_url)); // rW Edit str_owner_url } else { $results .= t("By: %owner_name", array("owner_name" => $item->owner->display_name())); } @@ -57,4 +64,31 @@ class rwinfo_theme_Core { } return $results; } + + // This came from modules/gallery/controllers/user_profile.php. + private function _can_view_profile_pages($user) { + if (!$user->loaded()) { + return false; + } + + if ($user->id == identity::active_user()->id) { + // You can always view your own profile + return true; + } + + switch (module::get_var("gallery", "show_user_profiles_to")) { + case "admin_users": + return identity::active_user()->admin; + + case "registered_users": + return !identity::active_user()->guest; + + case "everybody": + return true; + + default: + // Fail in private mode on an invalid setting + return false; + } + } } \ No newline at end of file