Added the ability to email groups and to create groups of groups.
This commit is contained in:
parent
8966e401c3
commit
e828ff8663
4 changed files with 130 additions and 5 deletions
|
|
@ -202,6 +202,18 @@ delete from help where helpId=47 and namespace='WebGUI';
|
|||
insert into help (helpId,namespace,titleId,bodyId,seeAlso) values (47, 'WebGUI', 697, 698, '1,Article;17,WebGUI;1,MessageBoard;1,Poll;2,WebGUI;1,USS;');
|
||||
delete from help where helpId=2 and namespace='FileManager';
|
||||
insert into help (helpId,namespace,titleId,bodyId,seeAlso) values (2, 'FileManager', 72, 73, '1,FileManager;');
|
||||
create table groupGroupings (
|
||||
groupId int not null,
|
||||
inGroup int not null
|
||||
);
|
||||
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (813,1,'WebGUI','Groups In This Group', 1037583186);
|
||||
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (812,1,'WebGUI','Your message has been sent.', 1037580328);
|
||||
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (811,1,'WebGUI','From', 1037580145);
|
||||
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (810,1,'WebGUI','send', 1037579743);
|
||||
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (809,1,'WebGUI','Email Group', 1037579611);
|
||||
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (808,1,'WebGUI','Email this group.', 1037579487);
|
||||
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (807,1,'WebGUI','Manage the groups in this group.', 1037579473);
|
||||
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (806,1,'WebGUI','Delete this group.', 1037579396);
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ use WebGUI::DateTime;
|
|||
use WebGUI::HTMLForm;
|
||||
use WebGUI::Icon;
|
||||
use WebGUI::International;
|
||||
use WebGUI::Mail;
|
||||
use WebGUI::Operation::Shared;
|
||||
use WebGUI::Paginator;
|
||||
use WebGUI::Privilege;
|
||||
|
|
@ -27,7 +28,8 @@ use WebGUI::Utility;
|
|||
|
||||
our @ISA = qw(Exporter);
|
||||
our @EXPORT = qw(&www_manageUsersInGroup &www_deleteGroup &www_deleteGroupConfirm &www_editGroup
|
||||
&www_editGroupSave &www_listGroups);
|
||||
&www_editGroupSave &www_listGroups &www_emailGroup &www_emailGroupSend &www_manageGroupsInGroup
|
||||
&www_addGroupsToGroupSave &www_deleteGroupGrouping);
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub _submenu {
|
||||
|
|
@ -39,12 +41,25 @@ sub _submenu {
|
|||
|| $session{form}{op} eq "deleteGroupConfirm") {
|
||||
$menu{WebGUI::URL::page("op=editGroup&gid=".$session{form}{gid})} = WebGUI::International::get(753);
|
||||
$menu{WebGUI::URL::page("op=manageUsersInGroup&gid=".$session{form}{gid})} = WebGUI::International::get(754);
|
||||
$menu{WebGUI::URL::page("op=deleteGroup&gid=".$session{form}{gid})} = WebGUI::International::get(755);
|
||||
$menu{WebGUI::URL::page("op=manageGroupsInGroup&gid=".$session{form}{gid})} = WebGUI::International::get(807);
|
||||
$menu{WebGUI::URL::page("op=emailGroup&gid=".$session{form}{gid})} = WebGUI::International::get(808);
|
||||
$menu{WebGUI::URL::page("op=deleteGroup&gid=".$session{form}{gid})} = WebGUI::International::get(806);
|
||||
}
|
||||
$menu{WebGUI::URL::page("op=listGroups")} = WebGUI::International::get(756);
|
||||
return menuWrapper($_[0],\%menu);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_addGroupsToGroupSave {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
my (@groups, $group);
|
||||
@groups = $session{cgi}->param('groups');
|
||||
foreach $group (@groups) {
|
||||
WebGUI::SQL->write("insert into groupGroupings values ($group,$session{form}{gid})");
|
||||
}
|
||||
return www_manageGroupsInGroup();
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_deleteGroup {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
|
|
@ -69,6 +84,13 @@ sub www_deleteGroupConfirm {
|
|||
return www_listGroups();
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_deleteGroupGrouping {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
WebGUI::SQL->write("delete from groupGroupings where inGroup=$session{form}{gid} and groupId=$session{form}{delete}");
|
||||
return www_manageGroupsInGroup();
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_editGroup {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
|
|
@ -115,6 +137,48 @@ sub www_editGroupSave {
|
|||
return www_listGroups();
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_emailGroup {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
my ($output,$f);
|
||||
$output = '<h1>'.WebGUI::International::get(809).'</h1>';
|
||||
$f = WebGUI::HTMLForm->new;
|
||||
$f->hidden("op","emailGroupSend");
|
||||
$f->hidden("gid",$session{form}{gid});
|
||||
$f->email(
|
||||
-name=>"from",
|
||||
-value=>$session{setting}{companyEmail},
|
||||
-label=>WebGUI::International::get(811)
|
||||
);
|
||||
$f->text(
|
||||
-name=>"subject",
|
||||
-label=>WebGUI::International::get(229)
|
||||
);
|
||||
$f->textarea(
|
||||
-name=>"message",
|
||||
-label=>WebGUI::International::get(230),
|
||||
-rows=>(5+$session{setting}{textAreaRows})
|
||||
);
|
||||
$f->submit(WebGUI::International::get(810));
|
||||
$output = $f->print;
|
||||
return _submenu($output);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_emailGroupSend {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
my ($sth, $email);
|
||||
$sth = WebGUI::SQL->read("select b.fieldData from groupings a left join userProfileData b
|
||||
on a.userId=b.userId and b.fieldName='email' where a.groupId=$session{form}{gid}");
|
||||
while (($email) = $sth->array) {
|
||||
if ($email ne "") {
|
||||
WebGUI::Mail::send($email,$session{form}{subject},$session{form}{message},'',$session{form}{from});
|
||||
}
|
||||
}
|
||||
$sth->finish;
|
||||
return _submenu(WebGUI::International::get(812));
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_listGroups {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
|
|
@ -145,6 +209,42 @@ sub www_listGroups {
|
|||
return _submenu($output);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_manageGroupsInGroup {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
my ($output, $p, $group, $groups, @array, $f);
|
||||
$output = '<h1>'.WebGUI::International::get(813).'</h1><div align="center">';
|
||||
$f = WebGUI::HTMLForm->new;
|
||||
$f->hidden("op","addGroupsToGroupSave");
|
||||
$f->hidden("gid",$session{form}{gid});
|
||||
@array = WebGUI::SQL->buildArray("select groupId from groupGroupings where inGroup=$session{form}{gid}");
|
||||
push(@array,$session{form}{gid});
|
||||
# push(@array,1); #visitors
|
||||
# push(@array,2); #registered users
|
||||
# push(@array,7); #everyone
|
||||
$groups = WebGUI::SQL->buildHashRef("select groupId,groupName from groups where groupId not in (".join(",",@array).") order by groupName");
|
||||
$f->select("groups",$groups,WebGUI::International::get(605),[],5,1);
|
||||
$f->submit;
|
||||
$output .= $f->print;
|
||||
|
||||
$output .= '</div><p/><table class="tableData" align="center">';
|
||||
$output .= '<tr class="tableHeader"><td></td><td>'.WebGUI::International::get(84).'</td></tr>';
|
||||
$p = WebGUI::Paginator->new(WebGUI::URL::page('op=manageGroupsInGroup'));
|
||||
$p->setDataByQuery("select a.groupName as name,a.groupId as id from groups a
|
||||
left join groupGroupings b on a.groupId=b.groupId
|
||||
where b.inGroup=$session{form}{gid} order by a.groupName");
|
||||
$groups = $p->getPageData;
|
||||
foreach $group (@$groups) {
|
||||
$output .= '<tr><td>'
|
||||
.deleteIcon('op=deleteGroupGrouping&gid='.$session{form}{gid}.'&delete='.$group->{id})
|
||||
.'</td><td><a href="'.WebGUI::URL::page('op=editGroup&gid='.$group->{id}).'">'
|
||||
.$group->{name}.'</a></td></tr>';
|
||||
}
|
||||
$output .= '</table>';
|
||||
$output .= $p->getBarTraditional;
|
||||
return _submenu($output);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_manageUsersInGroup {
|
||||
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@ sub insufficient {
|
|||
=cut
|
||||
|
||||
sub isInGroup {
|
||||
my ($gid, $uid, @data, %group, %user);
|
||||
my ($gid, $uid, @data, %group, %user, $groupId);
|
||||
($gid, $uid) = @_;
|
||||
$uid = $session{user}{userId} if ($uid eq "");
|
||||
### The "Everyone" group automatically returns true.
|
||||
|
|
@ -254,10 +254,22 @@ sub isInGroup {
|
|||
}
|
||||
}
|
||||
### Admins can do anything!
|
||||
if ($gid != 3) {
|
||||
if ($gid != 3 && $session{isInGroup}{3} eq "") {
|
||||
$session{isInGroup}{3} = isInGroup(3, $uid);
|
||||
return $session{isInGroup}{3};
|
||||
if ($session{isInGroup}{3}) {
|
||||
$session{isInGroup}{$gid} = 1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
### Check for groups of groups.
|
||||
@data = WebGUI::SQL->buildArray("select groupId from groupGroupings where inGroup=$gid");
|
||||
foreach $groupId (@data) {
|
||||
$session{isInGroup}{$groupId} = isInGroup($groupId, $uid);
|
||||
if ($session{isInGroup}{$groupId}) {
|
||||
$session{isInGroup}{$gid} = 1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -296,6 +296,7 @@ sub refreshSessionVars {
|
|||
#-------------------------------------------------------------------
|
||||
sub refreshUserInfo {
|
||||
$session{user} = _getUserInfo($_[0],$session{dbh});
|
||||
$session{isInGroup} = ();
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue