diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 471d9e82c..43664a135 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,5 +1,6 @@ 7.0.2 - fix: upgrade from 6.99.4-6.99-5 can fail if site contains groups tied to ldap with no users in it. + - GroupText macro returns an error message if it can't find the group by the name the user supplies. 7.0.1 diff --git a/lib/WebGUI/Macro/GroupText.pm b/lib/WebGUI/Macro/GroupText.pm index a2726a803..7da5ff7de 100644 --- a/lib/WebGUI/Macro/GroupText.pm +++ b/lib/WebGUI/Macro/GroupText.pm @@ -42,13 +42,17 @@ Text to be shown to someone not in the group. #------------------------------------------------------------------- sub process { my $session = shift; - my @param = @_; - my ($groupId) = $session->dbSlave->quickArray("select groupId from groups where groupName=".$session->db->quote($param[0])); - $groupId = 3 if ($groupId eq ""); - if ($session->user->isInGroup($groupId)) { - return $param[1]; - } else { - return $param[2]; + my ($groupName, $inGroupText, $outGroupText ) = @_; + my ($groupId) = $session->dbSlave->quickArray("select groupId from groups where groupName=?",[$groupName]); + if ($groupId eq "") { + my $i18n = WebGUI::International->new($session, 'Macro_GroupText'); + return sprintf $i18n->get('group not found'), $groupName + } + elsif ($session->user->isInGroup($groupId)) { + return $inGroupText; + } + else { + return $outGroupText; } } diff --git a/lib/WebGUI/i18n/English/Macro_GroupText.pm b/lib/WebGUI/i18n/English/Macro_GroupText.pm index 2b5296266..29e863f3a 100644 --- a/lib/WebGUI/i18n/English/Macro_GroupText.pm +++ b/lib/WebGUI/i18n/English/Macro_GroupText.pm @@ -7,6 +7,12 @@ our $I18N = { lastUpdated => 1128838520, }, + 'group not found' => { + message => q|Group %s was not found|, + lastUpdated => 1112466408, + context => q|Error message when a group is not found during a by-name lookup of groups.|, + }, + 'group text title' => { message => q|Group Text Macro|, lastUpdated => 1112466408, diff --git a/t/Macro/GroupText.t b/t/Macro/GroupText.t index 160bff625..e20bed2f0 100644 --- a/t/Macro/GroupText.t +++ b/t/Macro/GroupText.t @@ -23,13 +23,13 @@ my $session = WebGUI::Test->session; use Test::More; # increment this value for each test you create -plan tests => 2 + 4; +plan tests => 4 + 4; unless ($session->config->get('macros')->{'GroupText'}) { Macro_Config::insert_macro($session, 'GroupText', 'GroupText'); } -my $macroText = q!^GroupText("Admin","admin","visitor");!; +my $macroText = q!^GroupText("Admins","admin","visitor");!; my $output; $session->user({userId => 1}); @@ -42,6 +42,10 @@ $output = $macroText; WebGUI::Macro::process($session, \$output); is($output, 'admin', 'user is admin'); +$output = q!^GroupText("Not a Group","in group","outside group");!; +WebGUI::Macro::process($session, \$output); +is($output, 'Group Not a Group was not found', 'Non-existant group returns an error message'); + ##Bug test setup ##Create a small database