Added more docs for find method in Group.pm Fixed a latent bug that would probably never occur in Macro/GroupAdd.pm If Group->find is called with the name of a group that doesn't exist, then Group will return an object with defaults, and the guid of the group is undef, not ''. However, since by default autoAdd is off, the Macro will still do the right thing. GroupDelete has the same bug, but it shouldn't be patched until there's a test written for it.
67 lines
1.8 KiB
Perl
67 lines
1.8 KiB
Perl
package WebGUI::Macro::GroupAdd;
|
|
|
|
#-------------------------------------------------------------------
|
|
# WebGUI is Copyright 2001-2006 Plain Black Corporation.
|
|
#-------------------------------------------------------------------
|
|
# Please read the legal notices (docs/legal.txt) and the license
|
|
# (docs/license.txt) that came with this distribution before using
|
|
# this software.
|
|
#-------------------------------------------------------------------
|
|
# http://www.plainblack.com info@plainblack.com
|
|
#-------------------------------------------------------------------
|
|
|
|
use strict;
|
|
use WebGUI::Group;
|
|
use WebGUI::Asset::Template;
|
|
|
|
=head1 NAME
|
|
|
|
Package WebGUI::Macro::GroupAdd
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Macro that allows users to add themselves to a group.
|
|
|
|
=head2 process ( groupName, text, [ template ] )
|
|
|
|
=head3 groupName
|
|
|
|
The name of a group. The group must exist and be set up for auto adds for the link
|
|
to be shown.
|
|
|
|
=head3 text
|
|
|
|
The text that will be displayed to the user in the link for adding themselves
|
|
to the group.
|
|
|
|
=head3 template
|
|
|
|
An optional template for formatting the text and link.
|
|
|
|
=cut
|
|
|
|
|
|
#-------------------------------------------------------------------
|
|
sub process {
|
|
my @param = @_;
|
|
my $session = shift;
|
|
return "" if ($param[0] eq "");
|
|
return "" if ($param[1] eq "");
|
|
return "" if ($session->user->userId eq '1');
|
|
my $g = WebGUI::Group->find($param[0]);
|
|
return "" unless defined $g->getId;
|
|
return "" unless ($g->autoAdd);
|
|
return "" if ($session->user->isInGroup($g->getId));
|
|
my %var = ();
|
|
$var{'group.url'} = $session->url->page("op=autoAddToGroup;groupId=".$g->getId);
|
|
$var{'group.text'} = $param[1];
|
|
if ($param[2]) {
|
|
return WebGUI::Asset::Template->newByUrl($session,$param[2])->process(\%var);
|
|
} else {
|
|
return WebGUI::Asset::Template->new($session,"PBtmpl0000000000000040")->process(\%var);
|
|
}
|
|
}
|
|
|
|
|
|
1;
|
|
|