Add managed Friends network, allowing a designated group to add and remove

friends from each other groups.
This commit is contained in:
Colin Kuskie 2009-05-14 02:25:36 +00:00
commit 535621e8b6
7 changed files with 80 additions and 18 deletions

View file

@ -22,6 +22,7 @@ use Getopt::Long;
use WebGUI::Session;
use WebGUI::Storage;
use WebGUI::Asset;
use WebGUI::Utility;
my $toVersion = "7.7.6";
my $quiet;
@ -44,6 +45,8 @@ installSMSUserProfileFields($session);
installSMSSettings($session);
upgradeSMSMailQueue($session);
addPayDrivers($session);
installFriendManagerSettings($session);
installFriendManagerConfig($session);
finish($session);
@ -231,6 +234,35 @@ sub addPayDrivers {
print "DONE!\n" unless $quiet;
}
sub installFriendManagerSettings {
my $session = shift;
print "\tInstalling FriendManager into settings...";
$session->setting->add('groupIdAdminFriends', '3');
$session->setting->add('fmViewTemplateId', '64tqS80D53Z0JoAs2cX2VQ');
$session->setting->add('fmEditTemplateId', 'lG2exkH9FeYvn4pA63idNg');
$session->setting->add('groupsToManageFriends', '2');
$session->setting->add('overrideAbleToBeFriend', 0);
print "\tDone\n";
}
sub installFriendManagerConfig {
my $session = shift;
my $config = $session->config;
my $account = $config->get('account');
my @classes = map { $_->{className} } @{ $account };
return if isIn('WebGUI::Account::FriendManager', @classes);
print "\tInstalling FriendManager into config file...";
push @{ $account },
{
identifier => 'friendManager',
title => '^International(title,Account_FriendManager);',
className => 'WebGUI::Account::FriendManager',
}
;
$config->set('account', $account);
print "\tDone\n";
}
# -------------- DO NOT EDIT BELOW THIS LINE --------------------------------

View file

@ -700,6 +700,11 @@
"title" : "^International(title,Account_User);",
"className" : "WebGUI::Account::User"
},
{
"identifier" : "friendManager",
"title" : "^International(title,Account_FriendManager);",
"className" : "WebGUI::Account::FriendManager"
},
],
# Specify which of the modules in the above list is used

View file

@ -87,8 +87,6 @@ Optionally set bare to be true, or false.
=cut
public bare => my %bare;
#-------------------------------------------------------------------
=head2 store ( [ hashRef ] )
@ -102,7 +100,9 @@ A hash reference of data to store.
=cut
public store => my %store; #This is an all purpose hash to store stuff in: $self->store->{something} = "something"
public bare => my %bare; #This flag indicates that neither the layout nor style template should be applied
#to the output of the method. Think JSON/XML, etc.
#-------------------------------------------------------------------
=head2 appendCommonVars ( var )
@ -211,6 +211,9 @@ sub displayContent {
##Don't do any templating if we're sending back data like JSON or XML.
return $content if $self->bare;
##Don't do any templating if we're sending back data like JSON or XML.
return $content if $self->bare;
#Wrap content into the layout
my $var = {};
$var->{content} = $content;
@ -437,6 +440,7 @@ sub new {
$store { $id } = {};
$method { $id } = "view";
$uid { $id } = undef;
$bare { $id } = 0;
return $self;
}

View file

@ -49,16 +49,16 @@ sub appendCommonVars {
my $session = $self->session;
my $var = shift;
my $inbox = shift || WebGUI::Inbox->new($session);
my $user = $session->user;
my $user = $self->getUser;
my $method = $self->method;
$self->SUPER::appendCommonVars($var);
$var->{'view_inbox_url' } = $self->getUrl("module=inbox;do=view");
$var->{'view_inbox_url' } = $self->getUrl("module=inbox;do=view", 'useUid');
$var->{'view_invitations_url' } = $self->getUrl("module=inbox;do=manageInvitations");
$var->{'unread_message_count' } = $inbox->getUnreadMessageCount;
$var->{'unread_message_count' } = $inbox->getUnreadMessageCount($user->userId);
$var->{'invitation_count' } = $self->getInvitationCount;
$var->{'invitations_enabled' } = $session->user->profileField('ableToBeFriend');
$var->{'invitations_enabled' } = $user->profileField('ableToBeFriend');
$var->{'user_invitations_enabled'} = $session->setting->get("inboxInviteUserEnabled");
$var->{'invite_friend_url' } = $self->getUrl("module=inbox;do=inviteUser");
@ -77,7 +77,9 @@ Returns whether or not the user can view the inbox tab
sub canView {
my $self = shift;
return ($self->uid eq "");
my $session = $self->session;
return $self->uid eq ""
|| $self->uid ne "" && $session->user->isInGroup($session->setting->get('groupIdAdminUser'));
}
#-------------------------------------------------------------------
@ -1321,7 +1323,8 @@ The main view page for editing the user's profile.
sub www_view {
my $self = shift;
my $session = $self->session;
my $user = $session->user;
my $user = $self->getUser;
my $var = {};
$self->store->{tab} = "inbox";
@ -1343,7 +1346,7 @@ sub www_view {
my $userFilter_url = ";userFilter=$userFilter";
#Cache the base url
my $inboxUrl = $self->getUrl;
my $inboxUrl = $self->getUrl('', 'useUid');
my $urlFrag = $sortDir_url . $rpp_url . $userFilter_url;
@ -1366,7 +1369,7 @@ sub www_view {
if ($userFilter ne 'all') {
$messageOptions->{whereClause} = sprintf 'ibox.sentBy=%s', $session->db->quote($session->form->get('userFilter'));
}
my $p = $inbox->getMessagesPaginator($session->user, $messageOptions);
my $p = $inbox->getMessagesPaginator($user, $messageOptions);
#Export page to template
my @msg = ();
@ -1376,7 +1379,7 @@ sub www_view {
my $hash = {};
$hash->{'message_id' } = $message->getId;
$hash->{'message_url' } = $self->getUrl("module=inbox;do=viewMessage;messageId=".$message->getId);
$hash->{'message_url' } = $self->getUrl("module=inbox;do=viewMessage;messageId=".$message->getId,'useUid');
$hash->{'subject' } = $message->get("subject");
$hash->{'status_class' } = $message->get("status");
$hash->{'status' } = $message->getStatus;
@ -1543,7 +1546,7 @@ The page on which users view their messages
sub www_viewMessage {
my $self = shift;
my $session = $self->session;
my $user = $session->user;
my $user = $self->getUser;
my $var = {};
my $messageId = shift || $session->form->get("messageId");

View file

@ -98,18 +98,22 @@ WebGUI::User object to test against. Defaults to the current user.
sub canRead {
my $self = shift;
my $session = $self->session;
my $message = shift;
my $user = shift || $self->session->user;
my $user = shift || $session->user;
unless (ref $message eq "WebGUI::Inbox::Message") {
$self->session->log->warn("Message passed in was either empty or not a valid WebGUI::Inbox::Message. Got: ".(ref $message));
$session->log->warn("Message passed in was either empty or not a valid WebGUI::Inbox::Message. Got: ".(ref $message));
return 0
}
my $userId = $message->get("userId");
my $userId = $message->get("userId");
my $groupId = $message->get("groupId");
return ($user->userId eq $userId || (defined $groupId && $user->isInGroup($groupId)));
return ($user->userId eq $userId
|| (defined $groupId && $user->isInGroup($groupId))
|| ($user->isInGroup($session->setting->get('groupIdAdminUser')))
);
}

View file

@ -3749,7 +3749,6 @@ LongTruncOk=1</p>
lastUpdated => 0,
},
'settings groupIdAdminAdSpace label' => {
message => q{AdSpace},
lastUpdated => 0,
@ -3791,6 +3790,15 @@ LongTruncOk=1</p>
},
'settings groupIdAdminFriends label' => {
message => q{Friends},
lastUpdated => 0,
},
'settings groupIdAdminFriends hoverHelp' => {
message => q{Group to manage friends.},
lastUpdated => 0,
},
'settings groupIdAdminGraphics label' => {
message => q{Graphics},
lastUpdated => 0,
@ -4387,6 +4395,12 @@ Users may override this setting in their profile.
message => q|The email address that this site would use to send an SMS message.|,
lastUpdated => 1235695517,
},
'Select One' => {
message => q|Select One|,
context => q|Label in dropdown lists, indicating that the user should use the list to select 1 entry. It is implied that if nothing is chosen, that nothing will happen.|,
lastUpdated => 1239057119,
},
};