package WebGUI::Macro::GroupAdd; #------------------------------------------------------------------- # WebGUI is Copyright 2001-2009 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 The URL of an optional template for formatting the text and link. =cut #------------------------------------------------------------------- sub process { my ($session, $groupName, $text, $template) = @_; return "" if ($groupName eq ""); return "" if ($text eq ""); return "" if ($session->user->isVisitor); my $g = WebGUI::Group->find($session, $groupName); 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'} = $text; if ($template) { return WebGUI::Asset::Template->newByUrl($session,$template)->process(\%var); } else { return WebGUI::Asset::Template->new($session,"PBtmpl0000000000000040")->process(\%var); } } 1;