package WebGUI::Operation::Group; #------------------------------------------------------------------- # WebGUI is Copyright 2001-2002 Plain Black LLC. #------------------------------------------------------------------- # 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 Exporter; use strict; use Tie::CPHash; use WebGUI::DateTime; use WebGUI::HTMLForm; use WebGUI::Icon; use WebGUI::International; use WebGUI::Paginator; use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; use WebGUI::URL; use WebGUI::Utility; our @ISA = qw(Exporter); our @EXPORT = qw(&www_deleteGroup &www_deleteGroupConfirm &www_editGroup &www_editGroupSave &www_listGroups); #------------------------------------------------------------------- sub www_deleteGroup { my ($output); if ($session{form}{gid} < 26) { return WebGUI::Privilege::vitalComponent(); } elsif (WebGUI::Privilege::isInGroup(3)) { $output .= helpIcon(15); $output .= '

'.WebGUI::International::get(42).'

'; $output .= WebGUI::International::get(86).'

'; $output .= '

'.WebGUI::International::get(44).''; $output .= '    '. WebGUI::International::get(45).'
'; return $output; } else { return WebGUI::Privilege::adminOnly(); } } #------------------------------------------------------------------- sub www_deleteGroupConfirm { if ($session{form}{gid} < 26) { return WebGUI::Privilege::vitalComponent(); } elsif (WebGUI::Privilege::isInGroup(3)) { WebGUI::SQL->write("delete from groups where groupId=$session{form}{gid}"); WebGUI::SQL->write("delete from groupings where groupId=$session{form}{gid}"); return www_listGroups(); } else { return WebGUI::Privilege::adminOnly(); } } #------------------------------------------------------------------- sub www_editGroup { my ($output, $sth, %group, %hash, $f); tie %group, 'Tie::CPHash'; tie %hash, 'Tie::CPHash'; if (WebGUI::Privilege::isInGroup(3)) { if ($session{form}{gid} eq "new") { $group{expireAfter} = 314496000; $group{karmaThreshold} = 1000000000; } else { %group = WebGUI::SQL->quickHash("select * from groups where groupId=$session{form}{gid}"); } $output .= helpIcon(17); $output .= '

'.WebGUI::International::get(87).'

'; $f = WebGUI::HTMLForm->new; $f->hidden("op","editGroupSave"); $f->hidden("gid",$session{form}{gid}); $f->readOnly($session{form}{gid},WebGUI::International::get(379)); $f->text("groupName",WebGUI::International::get(84),$group{groupName}); $f->textarea("description",WebGUI::International::get(85),$group{description}); $f->interval("expireAfter",WebGUI::International::get(367), WebGUI::DateTime::secondsToInterval($group{expireAfter})); if ($session{setting}{useKarma}) { $f->integer("karmaThreshold",WebGUI::International::get(538),$group{karmaThreshold}); } else { $f->hidden("karmaThreshold",$group{karmaThreshold}); } $f->submit; $output .= $f->print; unless ($session{form}{gid} eq "new") { $output .= '

'.WebGUI::International::get(88).'

'; $output .= ''; $sth = WebGUI::SQL->read("select users.username,users.userId,groupings.expireDate from groupings,users where groupings.groupId=$session{form}{gid} and groupings.userId=users.userId order by users.username"); while (%hash = $sth->hash) { $output .= ''; $output .= ''; $output .= ''; } $sth->finish; $output .= '
  '.WebGUI::International::get(50).' '.WebGUI::International::get(369).'
' .deleteIcon('op=deleteGrouping&uid='.$hash{userId}.'&gid='.$session{form}{gid}) .editIcon('op=editGrouping&uid='.$hash{userId}.'&gid='.$session{form}{gid}) .'' .$hash{username}.''.epochToHuman($hash{expireDate},"%z").'
'; } } else { $output = WebGUI::Privilege::adminOnly(); } return $output; } #------------------------------------------------------------------- sub www_editGroupSave { if (WebGUI::Privilege::isInGroup(3)) { if ($session{form}{gid} eq "new") { $session{form}{gid} = getNextId("groupId"); WebGUI::SQL->write("insert into groups (groupId) values ($session{form}{gid})"); } WebGUI::SQL->write("update groups set groupName=".quote($session{form}{groupName}).", description=".quote($session{form}{description}).", expireAfter='".WebGUI::DateTime::intervalToSeconds($session{form}{expireAfter_interval}, $session{form}{expireAfter_units})."', karmaThreshold='$session{form}{karmaThreshold}' where groupId=".$session{form}{gid}); return www_listGroups(); } else { return WebGUI::Privilege::adminOnly(); } } #------------------------------------------------------------------- sub www_listGroups { my ($output, $p, $sth, @data, @row, $i); if (WebGUI::Privilege::isInGroup(3)) { $output = helpIcon(10); $output .= '

'.WebGUI::International::get(89).'

'; $output .= '
'.WebGUI::International::get(90).'
'; $output .= ''; $sth = WebGUI::SQL->read("select groupId,groupName,description from groups where groupId<>1 and groupId<>2 and groupId<>7 order by groupName"); while (@data = $sth->array) { $row[$i] = ''; $row[$i] .= ''; $row[$i] .= ''; $i++; } $sth->finish; $p = WebGUI::Paginator->new(WebGUI::URL::page('op=listGroups'),\@row); $output .= '
' .deleteIcon('op=deleteGroup&gid='.$data[0]) .editIcon('op=editGroup&gid='.$data[0]) .''.$data[1].''.$data[2].'
'; $output .= $p->getPage($session{form}{pn}); $output .= '
'; $output .= $p->getBarTraditional($session{form}{pn}); return $output; } else { return WebGUI::Privilege::adminOnly(); } } 1;