diff --git a/docs/upgrades/upgrade_4.7.0-4.8.0.sql b/docs/upgrades/upgrade_4.7.0-4.8.0.sql
index cbf029184..29f4f2c20 100644
--- a/docs/upgrades/upgrade_4.7.0-4.8.0.sql
+++ b/docs/upgrades/upgrade_4.7.0-4.8.0.sql
@@ -27,5 +27,9 @@ pageTitle varchar(255)
);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (749,1,'WebGUI','Track page statistics?', 1036736182);
insert into settings values ("trackPageStatistics",0);
+alter table pageStatistics add column wobjectId int;
+alter table pageStatistics add column function varchar(60);
+
+
diff --git a/lib/WebGUI.pm b/lib/WebGUI.pm
index c21765481..50136e1dd 100644
--- a/lib/WebGUI.pm
+++ b/lib/WebGUI.pm
@@ -220,12 +220,13 @@ sub page {
$operationOutput = _processOperations();
$wobjectOutput = _processFunctions();
}
- if ($wobjectOutput eq "" && $operationOutput eq "" && $session{setting}{trackPageStatistics}) {
+ if ($operationOutput eq "" && $session{setting}{trackPageStatistics}) {
WebGUI::SQL->write("insert into pageStatistics (dateStamp, userId, username, ipAddress, userAgent, referer,
- pageId, pageTitle) values (".time().",".$session{user}{userId}.",".quote($session{user}{username}).",
+ pageId, pageTitle, wobjectId, function) values (".time().",".$session{user}{userId}
+ .",".quote($session{user}{username}).",
".quote($session{env}{REMOTE_ADDR}).", ".quote($session{env}{HTTP_USER_AGENT}).",
".quote($session{env}{HTTP_REFERER}).", ".$session{page}{pageId}.",
- ".quote($session{page}{title}).")");
+ ".quote($session{page}{title}).", ".quote($session{form}{wid}).", ".quote($session{form}{func}).")");
}
if ($session{header}{mimetype} ne "text/html") {
$httpHeader = WebGUI::Session::httpHeader();
diff --git a/lib/WebGUI/Operation/Statistics.pm b/lib/WebGUI/Operation/Statistics.pm
index be067941c..7eadda87a 100644
--- a/lib/WebGUI/Operation/Statistics.pm
+++ b/lib/WebGUI/Operation/Statistics.pm
@@ -24,7 +24,8 @@ use WebGUI::Session;
use WebGUI::SQL;
our @ISA = qw(Exporter);
-our @EXPORT = qw(&www_viewStatistics &www_killSession &www_viewLoginHistory &www_viewActiveSessions);
+our @EXPORT = qw(&www_viewPageReport &www_viewStatistics &www_viewTrafficReport &www_killSession
+ &www_viewLoginHistory &www_viewActiveSessions);
#-------------------------------------------------------------------
sub www_killSession {
@@ -103,6 +104,39 @@ sub www_viewLoginHistory {
return $output;
}
+#-------------------------------------------------------------------
+sub www_viewPageReport {
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
+ my ($output, $count, $user, $data, $sth, $page, $pageId);
+ $sth = WebGUI::SQL->read("select pageTitle,pageId,userId,ipAddress,wobjectId from pageStatistics order by pageTitle,userId,ipAddress");
+ while ($data = $sth->hashRef) {
+ if ($data->{userId} == 1) {
+ $user = $data->{ipAddress};
+ } else {
+ $user = $data->{userId};
+ }
+ $page->{$data->{pageId}}{pageTitle} = $data->{pageTitle};
+ $page->{$data->{pageId}}{users}{$user}++;
+ $page->{$data->{pageId}}{views}++;
+ $page->{$data->{pageId}}{interact}++ if ($data->{wobjectId});
+ }
+ $sth->finish;
+ $output = '
Page Statistics
';
+ $output .= '| Page Title | Page Views | Unique Visitors | Wobject Interactions |
';
+ foreach $pageId (keys %{$page}) {
+ $output .= '| '.$page->{$pageId}{pageTitle}.' | ';
+ $output .= ''.$page->{$pageId}{views}.' | ';
+ $count = 0;
+ foreach (keys %{$page->{$pageId}{users}}) {
+ $count++;
+ }
+ $output .= ''.$count.' | ';
+ $output .= ''.$page->{$pageId}{interact}.' |
';
+ }
+ $output .= '
';
+ return $output;
+}
+
#-------------------------------------------------------------------
sub www_viewStatistics {
my ($output, $data, $header, $userAgent, $request, $response, $version, $referer);
@@ -143,7 +177,29 @@ sub www_viewStatistics {
return $output;
}
-
+#-------------------------------------------------------------------
+sub www_viewTrafficReport {
+ return WebGUI::Privilege::adminOnly() unless WebGUI::Privilege::isInGroup(3);
+ my ($output, $data);
+ $output = 'Pages
';
+ ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-2592000));
+ $output .= "Last 30 days: ".$data."
";
+ ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-604800));
+ $output .= "Last 7 days: ".$data."
";
+ ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-86400));
+ $output .= "Last 24 hours: ".$data."
";
+ $output .= 'Visitors
';
+ ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-2592000)
+ ." group by ipAddress,userId");
+ $output .= "Last 30 days: ".$data."
";
+ ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-604800)
+ ." group by ipAddress,userId");
+ $output .= "Last 7 days: ".$data."
";
+ ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-86400)
+ ." group by ipAddress,userId");
+ $output .= "Last 24 hours: ".$data."
";
+ return $output;
+}
1;
diff --git a/lib/WebGUI/Operation/User.pm b/lib/WebGUI/Operation/User.pm
index 77c2f19ad..53390ccfd 100644
--- a/lib/WebGUI/Operation/User.pm
+++ b/lib/WebGUI/Operation/User.pm
@@ -18,6 +18,7 @@ use WebGUI::DateTime;
use WebGUI::HTMLForm;
use WebGUI::Icon;
use WebGUI::International;
+use WebGUI::Operation::Shared;
use WebGUI::Paginator;
use WebGUI::Privilege;
use WebGUI::Session;
@@ -30,129 +31,113 @@ our @ISA = qw(Exporter);
our @EXPORT = qw(&www_editUserKarma &www_editUserKarmaSave &www_editUserGroup &www_editUserProfile &www_editUserProfileSave &www_addUserToGroupSave &www_deleteGrouping &www_editGrouping &www_editGroupingSave &www_becomeUser &www_addUser &www_addUserSave &www_deleteUser &www_deleteUserConfirm &www_editUser &www_editUserSave &www_listUsers);
#-------------------------------------------------------------------
-sub _subMenu {
- my ($output);
- $output = '| ';
- $output .= $_[0];
- $output .= ' |
';
- return $output;
+ $menu{WebGUI::URL::page("op=listUsers")} = WebGUI::International::get(456);
+ return menuWrapper($_[0],\%menu);
}
#-------------------------------------------------------------------
sub www_addUser {
my (@array, $output, $groups, %hash, $f);
tie %hash, 'Tie::IxHash';
- if (WebGUI::Privilege::isInGroup(3)) {
- $output .= helpIcon(5);
- $output .= ''.WebGUI::International::get(163).'
';
- $f = WebGUI::HTMLForm->new;
- if ($session{form}{op} eq "addUserSave") {
- $output .= '- '.WebGUI::International::get(77).' '.$session{form}{username}.'Too or '.$session{form}{username}.'02
';
- }
- $f->hidden("op","addUserSave");
- $f->text("username",WebGUI::International::get(50),$session{form}{username});
- $f->password("identifier",WebGUI::International::get(51));
- $f->email("email",WebGUI::International::get(56));
- %hash = ('WebGUI'=>'WebGUI', 'LDAP'=>'LDAP');
- $f->select("authMethod",\%hash,WebGUI::International::get(164),[$session{setting}{authMethod}]);
- $f->url("ldapURL",WebGUI::International::get(165),$session{setting}{ldapURL});
- $f->text("connectDN",WebGUI::International::get(166),$session{form}{connectDN});
- 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;
- } else {
- $output = WebGUI::Privilege::adminOnly();
- }
- return $output;
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
+ $output .= helpIcon(5);
+ $output .= ''.WebGUI::International::get(163).'
';
+ $f = WebGUI::HTMLForm->new;
+ if ($session{form}{op} eq "addUserSave") {
+ $output .= '- '.WebGUI::International::get(77).' '.$session{form}{username}.'Too or '.$session{form}{username}.'02
';
+ }
+ $f->hidden("op","addUserSave");
+ $f->text("username",WebGUI::International::get(50),$session{form}{username});
+ $f->password("identifier",WebGUI::International::get(51));
+ $f->email("email",WebGUI::International::get(56));
+ %hash = ('WebGUI'=>'WebGUI', 'LDAP'=>'LDAP');
+ $f->select("authMethod",\%hash,WebGUI::International::get(164),[$session{setting}{authMethod}]);
+ $f->url("ldapURL",WebGUI::International::get(165),$session{setting}{ldapURL});
+ $f->text("connectDN",WebGUI::International::get(166),$session{form}{connectDN});
+ 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;
+ return _submenu($output);
}
#-------------------------------------------------------------------
sub www_addUserSave {
- my ($output, @groups, $uid, $u, $gid, $encryptedPassword, $expireAfter);
- if (WebGUI::Privilege::isInGroup(3)) {
- ($uid) = WebGUI::SQL->quickArray("select userId from users where username=".quote($session{form}{username}));
- unless ($uid) {
- $encryptedPassword = Digest::MD5::md5_base64($session{form}{identifier});
- $u = WebGUI::User->new("new");
- $u->username($session{form}{username});
- $u->identifier($encryptedPassword);
- $u->connectDN($session{form}{connectDN});
- $u->ldapURL($session{form}{ldapURL});
- $u->authMethod($session{form}{authMethod});
- @groups = $session{cgi}->param('groups');
- $u->addToGroups(\@groups);
- $u->profileField("email",$session{form}{email});
- $session{form}{uid}=$u->userId;
- $output = www_editUser();
- } else {
- $output = www_addUser();
- }
- } else {
- $output = WebGUI::Privilege::adminOnly();
- }
- return $output;
+ my (@groups, $uid, $u, $gid, $encryptedPassword, $expireAfter);
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
+ ($uid) = WebGUI::SQL->quickArray("select userId from users where username=".quote($session{form}{username}));
+ unless ($uid) {
+ $encryptedPassword = Digest::MD5::md5_base64($session{form}{identifier});
+ $u = WebGUI::User->new("new");
+ $u->username($session{form}{username});
+ $u->identifier($encryptedPassword);
+ $u->connectDN($session{form}{connectDN});
+ $u->ldapURL($session{form}{ldapURL});
+ $u->authMethod($session{form}{authMethod});
+ @groups = $session{cgi}->param('groups');
+ $u->addToGroups(\@groups);
+ $u->profileField("email",$session{form}{email});
+ $session{form}{uid}=$u->userId;
+ return www_editUser();
+ } else {
+ $session{form}{op} = "addUser";
+ return www_addUser();
+ }
}
#-------------------------------------------------------------------
sub www_addUserToGroupSave {
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
my (@groups, $u);
- if (WebGUI::Privilege::isInGroup(3)) {
- @groups = $session{cgi}->param('groups');
- $u = WebGUI::User->new($session{form}{uid});
- $u->addToGroups(\@groups);
- return www_editUserGroup();
- } else {
- return WebGUI::Privilege::adminOnly();
- }
+ @groups = $session{cgi}->param('groups');
+ $u = WebGUI::User->new($session{form}{uid});
+ $u->addToGroups(\@groups);
+ return www_editUserGroup();
}
#-------------------------------------------------------------------
sub www_becomeUser {
- my ($output);
- if (WebGUI::Privilege::isInGroup(3)) {
- WebGUI::Session::end($session{var}{sessionId});
- WebGUI::Session::start($session{form}{uid});
- $output = "";
- } else {
- $output = WebGUI::Privilege::adminOnly();
- }
- return $output;
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
+ WebGUI::Session::end($session{var}{sessionId});
+ WebGUI::Session::start($session{form}{uid});
+ return "";
}
#-------------------------------------------------------------------
sub www_deleteGrouping {
my ($u);
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
if (($session{user}{userId} == $session{form}{uid} || $session{form}{uid} == 3) && $session{form}{gid} == 3) {
return WebGUI::Privilege::vitalComponent();
- } elsif (WebGUI::Privilege::isInGroup(3)) {
+ } else {
$u = WebGUI::User->new($session{form}{uid});
$u->deleteFromGroups([$session{form}{gid}]);
return www_editUserGroup();
- } else {
- return WebGUI::Privilege::adminOnly();
}
}
#-------------------------------------------------------------------
sub www_deleteUser {
my ($output);
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
if ($session{form}{uid} < 26) {
return WebGUI::Privilege::vitalComponent();
- } elsif (WebGUI::Privilege::isInGroup(3)) {
+ } else {
$output .= helpIcon(7);
$output .= ''.WebGUI::International::get(42).'
';
$output .= WebGUI::International::get(167).'';
@@ -162,306 +147,267 @@ sub www_deleteUser {
$output .= ' '.
WebGUI::International::get(45).'';
return $output;
- } else {
- return WebGUI::Privilege::adminOnly();
}
}
#-------------------------------------------------------------------
sub www_deleteUserConfirm {
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
my ($u);
if ($session{form}{uid} < 26) {
return WebGUI::Privilege::vitalComponent();
- } elsif (WebGUI::Privilege::isInGroup(3)) {
+ } else {
$u = WebGUI::User->new($session{form}{uid});
$u->delete;
return www_listUsers();
- } else {
- return WebGUI::Privilege::adminOnly();
}
}
#-------------------------------------------------------------------
sub www_editGrouping {
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
my ($output, $username, $group, $expireDate, $f);
- if (WebGUI::Privilege::isInGroup(3)) {
- $output .= '
'.WebGUI::International::get(370).'
';
- $f = WebGUI::HTMLForm->new;
- $f->hidden("op","editGroupingSave");
- $f->hidden("uid",$session{form}{uid});
- $f->hidden("gid",$session{form}{gid});
- ($username) = WebGUI::SQL->quickArray("select username from users where userId=$session{form}{uid}");
- ($group) = WebGUI::SQL->quickArray("select groupName from groups where groupId=$session{form}{gid}");
- ($expireDate) = WebGUI::SQL->quickArray("select expireDate from groupings where groupId=$session{form}{gid} and userId=$session{form}{uid}");
- $f->readOnly($username,WebGUI::International::get(50));
- $f->readOnly($group,WebGUI::International::get(84));
- $f->date("expireDate",WebGUI::International::get(369),$expireDate);
- $f->submit;
- $output .= $f->print;
- return _subMenu($output);
- } else {
- return WebGUI::Privilege::adminOnly();
- }
+ $output .= ''.WebGUI::International::get(370).'
';
+ $f = WebGUI::HTMLForm->new;
+ $f->hidden("op","editGroupingSave");
+ $f->hidden("uid",$session{form}{uid});
+ $f->hidden("gid",$session{form}{gid});
+ ($username) = WebGUI::SQL->quickArray("select username from users where userId=$session{form}{uid}");
+ ($group) = WebGUI::SQL->quickArray("select groupName from groups where groupId=$session{form}{gid}");
+ ($expireDate) = WebGUI::SQL->quickArray("select expireDate from groupings where groupId=$session{form}{gid} and userId=$session{form}{uid}");
+ $f->readOnly($username,WebGUI::International::get(50));
+ $f->readOnly($group,WebGUI::International::get(84));
+ $f->date("expireDate",WebGUI::International::get(369),$expireDate);
+ $f->submit;
+ $output .= $f->print;
+ return _submenu($output);
}
#-------------------------------------------------------------------
sub www_editGroupingSave {
- if (WebGUI::Privilege::isInGroup(3)) {
- WebGUI::SQL->write("update groupings set expireDate=".setToEpoch($session{form}{expireDate})." where groupId=$session{form}{gid} and userId=$session{form}{uid}");
- return www_editUserGroup();
- } else {
- return WebGUI::Privilege::adminOnly();
- }
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
+ WebGUI::SQL->write("update groupings set expireDate=".setToEpoch($session{form}{expireDate})." where groupId=$session{form}{gid} and userId=$session{form}{uid}");
+ return www_editUserGroup();
}
#-------------------------------------------------------------------
sub www_editUser {
- my ($output, $f, $u, %data);
- tie %data, 'Tie::IxHash';
- if (WebGUI::Privilege::isInGroup(3)) {
- $u = WebGUI::User->new($session{form}{uid});
- $output .= helpIcon(5);
- $output .= ''.WebGUI::International::get(168).'
';
- $f = WebGUI::HTMLForm->new;
- $f->hidden("op","editUserSave");
- $f->hidden("uid",$session{form}{uid});
- $f->readOnly($session{form}{uid},WebGUI::International::get(378));
- $f->readOnly($u->karma,WebGUI::International::get(537)) if ($session{setting}{useKarma});
- $f->readOnly(epochToHuman($u->dateCreated,"%z"),WebGUI::International::get(453));
- $f->readOnly(epochToHuman($u->lastUpdated,"%z"),WebGUI::International::get(454));
- $f->text("username",WebGUI::International::get(50),$u->username);
- $f->password("identifier",WebGUI::International::get(51),"password");
- %data = ('WebGUI'=>'WebGUI', 'LDAP'=>'LDAP');
- $f->select("authMethod",\%data,WebGUI::International::get(164),[$u->authMethod]);
- $f->url("ldapURL",WebGUI::International::get(165),$u->ldapURL);
- $f->text("connectDN",WebGUI::International::get(166),$u->connectDN);
- $f->submit;
- $output .= $f->print;
- $output = _subMenu($output);
- } else {
- $output = WebGUI::Privilege::adminOnly();
- }
- return $output;
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
+ my ($output, $f, $u);
+ $u = WebGUI::User->new($session{form}{uid});
+ $output .= helpIcon(5);
+ $output .= ''.WebGUI::International::get(168).'
';
+ $f = WebGUI::HTMLForm->new;
+ $f->hidden("op","editUserSave");
+ $f->hidden("uid",$session{form}{uid});
+ $f->readOnly($session{form}{uid},WebGUI::International::get(378));
+ $f->readOnly($u->karma,WebGUI::International::get(537)) if ($session{setting}{useKarma});
+ $f->readOnly(epochToHuman($u->dateCreated,"%z"),WebGUI::International::get(453));
+ $f->readOnly(epochToHuman($u->lastUpdated,"%z"),WebGUI::International::get(454));
+ $f->text("username",WebGUI::International::get(50),$u->username);
+ $f->password("identifier",WebGUI::International::get(51),"password");
+ $f->select(
+ -name=>"authMethod",
+ -options=>{
+ 'WebGUI'=>'WebGUI',
+ 'LDAP'=>'LDAP'
+ },
+ -label=>WebGUI::International::get(164),
+ -value=>[$u->authMethod]
+ );
+ $f->url("ldapURL",WebGUI::International::get(165),$u->ldapURL);
+ $f->text("connectDN",WebGUI::International::get(166),$u->connectDN);
+ $f->submit;
+ $output .= $f->print;
+ return _submenu($output);
}
#-------------------------------------------------------------------
sub www_editUserSave {
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
my ($error, $uid, $u, $encryptedPassword, $passwordStatement);
- if (WebGUI::Privilege::isInGroup(3)) {
- ($uid) = WebGUI::SQL->quickArray("select userId from users where username=".
- quote($session{form}{username}));
- if ($uid == $session{form}{uid} || $uid < 1) {
- $u = WebGUI::User->new($session{form}{uid});
- if ($session{form}{identifier} ne "password") {
- $encryptedPassword = Digest::MD5::md5_base64($session{form}{identifier});
- $u->identifier($encryptedPassword);
- }
- $u->username($session{form}{username});
- $u->authMethod($session{form}{authMethod});
- $u->connectDN($session{form}{connectDN});
- $u->ldapURL($session{form}{ldapURL});
- } else {
- $error = '- '.WebGUI::International::get(77).' '.$session{form}{username}.'Too or '.$session{form}{username}.'02
';
- }
- return $error.www_editUser();
- } else {
- return WebGUI::Privilege::adminOnly();
- }
+ ($uid) = WebGUI::SQL->quickArray("select userId from users where username=".quote($session{form}{username}));
+ if ($uid == $session{form}{uid} || $uid < 1) {
+ $u = WebGUI::User->new($session{form}{uid});
+ if ($session{form}{identifier} ne "password") {
+ $encryptedPassword = Digest::MD5::md5_base64($session{form}{identifier});
+ $u->identifier($encryptedPassword);
+ }
+ $u->username($session{form}{username});
+ $u->authMethod($session{form}{authMethod});
+ $u->connectDN($session{form}{connectDN});
+ $u->ldapURL($session{form}{ldapURL});
+ } else {
+ $error = '- '.WebGUI::International::get(77).' '.$session{form}{username}.'Too or '.$session{form}{username}.'02
';
+ }
+ return $error.www_editUser();
}
#-------------------------------------------------------------------
sub www_editUserGroup {
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
my ($output, $f, $groups, @array, $sth, %hash);
tie %hash, 'Tie::CPHash';
- if (WebGUI::Privilege::isInGroup(3)) {
- $output .= ''.WebGUI::International::get(372).'
';
- $f = WebGUI::HTMLForm->new;
- $f->hidden("op","addUserToGroupSave");
- $f->hidden("uid",$session{form}{uid});
- @array = WebGUI::SQL->buildArray("select groupId from groupings where userId=$session{form}{uid}");
- 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 .= '
';
- $sth = WebGUI::SQL->read("select groups.groupId,groups.groupName,groupings.expireDate
- from groupings,groups where groupings.groupId=groups.groupId and
- groupings.userId=$session{form}{uid} order by groups.groupName");
- while (%hash = $sth->hash) {
- $output .= '| '
- .deleteIcon('op=deleteGrouping&uid='.$session{form}{uid}.'&gid='.$hash{groupId})
- .editIcon('op=editGrouping&uid='.$session{form}{uid}.'&gid='.$hash{groupId})
- .' | ';
- $output .= ''.$hash{groupName}.' | ';
- $output .= ''.epochToHuman($hash{expireDate},"%z").' |
';
- }
- $sth->finish;
- $output .= '
';
- $output = _subMenu($output);
- } else {
- return WebGUI::Privilege::adminOnly();
+ $output .= ''.WebGUI::International::get(372).'
';
+ $f = WebGUI::HTMLForm->new;
+ $f->hidden("op","addUserToGroupSave");
+ $f->hidden("uid",$session{form}{uid});
+ @array = WebGUI::SQL->buildArray("select groupId from groupings where userId=$session{form}{uid}");
+ 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 .= '
';
+ $sth = WebGUI::SQL->read("select groups.groupId,groups.groupName,groupings.expireDate
+ from groupings,groups where groupings.groupId=groups.groupId and
+ groupings.userId=$session{form}{uid} order by groups.groupName");
+ while (%hash = $sth->hash) {
+ $output .= '| '
+ .deleteIcon('op=deleteGrouping&uid='.$session{form}{uid}.'&gid='.$hash{groupId})
+ .editIcon('op=editGrouping&uid='.$session{form}{uid}.'&gid='.$hash{groupId})
+ .' | ';
+ $output .= ''.$hash{groupName}.' | ';
+ $output .= ''.epochToHuman($hash{expireDate},"%z").' |
';
}
- return $output;
+ $sth->finish;
+ $output .= '
';
+ return _submenu($output);
}
#-------------------------------------------------------------------
sub www_editUserKarma {
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
my ($output, $f, $a, %user, %data, $method, $values, $category, $label, $default, $previousCategory);
- if (WebGUI::Privilege::isInGroup(3)) {
- $output = helpIcon(36);
- $output .= ''.WebGUI::International::get(558).'
';
- $f = WebGUI::HTMLForm->new;
- $f->hidden("op","editUserKarmaSave");
- $f->hidden("uid",$session{form}{uid});
- $f->integer("amount",WebGUI::International::get(556));
- $f->text("description",WebGUI::International::get(557));
- $f->submit;
- $output .= $f->print;
- $output = _subMenu($output);
- } else {
- $output .= WebGUI::Privilege::adminOnly();
- }
- return $output;
+ $output = helpIcon(36);
+ $output .= ''.WebGUI::International::get(558).'
';
+ $f = WebGUI::HTMLForm->new;
+ $f->hidden("op","editUserKarmaSave");
+ $f->hidden("uid",$session{form}{uid});
+ $f->integer("amount",WebGUI::International::get(556));
+ $f->text("description",WebGUI::International::get(557));
+ $f->submit;
+ $output .= $f->print;
+ return _submenu($output);
}
#-------------------------------------------------------------------
sub www_editUserKarmaSave {
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
my ($u);
- if (WebGUI::Privilege::isInGroup(3)) {
- $u = WebGUI::User->new($session{form}{uid});
- $u->karma($session{form}{amount},$session{user}{username}." (".$session{user}{userId}.")",$session{form}{description});
- return www_editUser();
- } else {
- return WebGUI::Privilege::adminOnly();
- }
+ $u = WebGUI::User->new($session{form}{uid});
+ $u->karma($session{form}{amount},$session{user}{username}." (".$session{user}{userId}.")",$session{form}{description});
+ return www_editUser();
}
#-------------------------------------------------------------------
sub www_editUserProfile {
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
my ($output, $f, $a, %user, %data, $method, $values, $category, $label, $default, $previousCategory);
- if (WebGUI::Privilege::isInGroup(3)) {
- $output = helpIcon(32);
- $output .= ''.WebGUI::International::get(455).'
';
- $f = WebGUI::HTMLForm->new;
- $f->hidden("op","editUserProfileSave");
- $f->hidden("uid",$session{form}{uid});
- %user = WebGUI::SQL->buildHash("select fieldName,fieldData from userProfileData where userId=$session{form}{uid}");
- $a = WebGUI::SQL->read("select * from userProfileField,userProfileCategory
- where userProfileField.profileCategoryId=userProfileCategory.profileCategoryId
- order by userProfileCategory.sequenceNumber,userProfileField.sequenceNumber");
- while(%data = $a->hash) {
- $category = eval $data{categoryName};
- if ($category ne $previousCategory) {
- $f->raw('
');
- }
- $values = eval $data{dataValues};
- $method = $data{dataType};
- $label = eval $data{fieldLabel};
- if ($method eq "select") {
- # note: this big if statement doesn't look elegant, but doing regular
- # ORs caused problems with the array reference.
- if ($session{form}{$data{fieldName}}) {
- $default = [$session{form}{$data{fieldName}}];
- } elsif ($user{$data{fieldName}} && (defined($values->{$user{$data{fieldName}}}))) {
- $default = [$user{$data{fieldName}}];
- } else {
- $default = eval $data{dataDefault};
- }
- $f->select($data{fieldName},$values,$label,$default);
- } else {
- $default = $session{form}{$data{fieldName}}
- || $user{$data{fieldName}}
- || eval $data{dataDefault};
- $f->$method($data{fieldName},$label,$default);
- }
- $previousCategory = $category;
+ $output = helpIcon(32);
+ $output .= ''.WebGUI::International::get(455).'
';
+ $f = WebGUI::HTMLForm->new;
+ $f->hidden("op","editUserProfileSave");
+ $f->hidden("uid",$session{form}{uid});
+ %user = WebGUI::SQL->buildHash("select fieldName,fieldData from userProfileData where userId=$session{form}{uid}");
+ $a = WebGUI::SQL->read("select * from userProfileField,userProfileCategory
+ where userProfileField.profileCategoryId=userProfileCategory.profileCategoryId
+ order by userProfileCategory.sequenceNumber,userProfileField.sequenceNumber");
+ while(%data = $a->hash) {
+ $category = eval $data{categoryName};
+ if ($category ne $previousCategory) {
+ $f->raw('
');
}
- $a->finish;
- $f->submit;
- $output .= $f->print;
- $output = _subMenu($output);
- } else {
- $output .= WebGUI::Privilege::adminOnly();
+ $values = eval $data{dataValues};
+ $method = $data{dataType};
+ $label = eval $data{fieldLabel};
+ if ($method eq "select") {
+ # note: this big if statement doesn't look elegant, but doing regular
+ # ORs caused problems with the array reference.
+ if ($session{form}{$data{fieldName}}) {
+ $default = [$session{form}{$data{fieldName}}];
+ } elsif ($user{$data{fieldName}} && (defined($values->{$user{$data{fieldName}}}))) {
+ $default = [$user{$data{fieldName}}];
+ } else {
+ $default = eval $data{dataDefault};
+ }
+ $f->select($data{fieldName},$values,$label,$default);
+ } else {
+ $default = $session{form}{$data{fieldName}} || $user{$data{fieldName}} || eval $data{dataDefault};
+ $f->$method($data{fieldName},$label,$default);
+ }
+ $previousCategory = $category;
}
- return $output;
+ $a->finish;
+ $f->submit;
+ $output .= $f->print;
+ return _submenu($output);
}
#-------------------------------------------------------------------
sub www_editUserProfileSave {
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
my ($a, %field, $u);
- if (WebGUI::Privilege::isInGroup(3)) {
- tie %field, 'Tie::CPHash';
- $u = WebGUI::User->new($session{form}{uid});
- $a = WebGUI::SQL->read("select * from userProfileField");
- while (%field = $a->hash) {
- if ($field{fieldType} eq "date") {
- $session{form}{$field{fieldName}} = setToEpoch($session{form}{$field{fieldName}});
- }
- $u->profileField($field{fieldName},$session{form}{$field{fieldName}}) if (exists $session{form}{$field{fieldName}});
- }
- $a->finish;
- return www_editUserProfile();
- } else {
- return WebGUI::Privilege::adminOnly();
- }
+ tie %field, 'Tie::CPHash';
+ $u = WebGUI::User->new($session{form}{uid});
+ $a = WebGUI::SQL->read("select * from userProfileField");
+ while (%field = $a->hash) {
+ if ($field{fieldType} eq "date") {
+ $session{form}{$field{fieldName}} = setToEpoch($session{form}{$field{fieldName}});
+ }
+ $u->profileField($field{fieldName},$session{form}{$field{fieldName}}) if (exists $session{form}{$field{fieldName}});
+ }
+ $a->finish;
+ return www_editUserProfile();
}
#-------------------------------------------------------------------
sub www_listUsers {
+ return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
my ($output, $sth, %data, $f, @row, $p, $i, $search);
tie %data, 'Tie::CPHash';
- if (WebGUI::Privilege::isInGroup(3)) {
- $output = helpIcon(8);
- $output .= ''.WebGUI::International::get(149).'
';
- $output .= '| ';
- $output .= ''.WebGUI::International::get(169).'';
- $output .= ' | ';
- $f = WebGUI::HTMLForm->new(1);
- $f->raw('');
- $f->hidden("op","listUsers");
- $f->text("keyword",'',$session{form}{keyword});
- $f->submit(WebGUI::International::get(170));
- $f->raw(' | ');
- $output .= $f->print;
- $output .= '
';
- if ($session{form}{keyword} ne "") {
- $search = " where (users.username like '%".$session{form}{keyword}."%') ";
- }
- $sth = WebGUI::SQL->read("select * from users $search order by users.username");
- while (%data = $sth->hash) {
- $row[$i] = '
| '
- .deleteIcon('op=deleteUser&uid='.$data{userId})
- .editIcon('op=editUser&uid='.$data{userId})
- .becomeIcon('op=becomeUser&uid='.$data{userId});
- $row[$i] .= ' | ';
- $row[$i] .= ''.$data{username}.' | ';
- #$row[$i] .= ''.epochToHuman($data{dateCreated},"%z").' | ';
- #$row[$i] .= ''.epochToHuman($data{lastUpdated},"%z").' | ';
- $row[$i] .= '
';
- $i++;
- }
- $sth->finish;
- $p = WebGUI::Paginator->new(WebGUI::URL::page('op=listUsers&keyword='.$session{form}{keyword}),\@row);
- $output .= '';
- $output .= '
-
';
- #
- # ';
- $output .= $p->getPage($session{form}{pn});
- $output .= '
';
- $output .= $p->getBarTraditional($session{form}{pn});
- return $output;
- } else {
- return WebGUI::Privilege::adminOnly();
- }
+ $output = helpIcon(8);
+ $output .= ''.WebGUI::International::get(149).'
';
+ $output .= '';
+ $f = WebGUI::HTMLForm->new(1);
+ $f->hidden("op","listUsers");
+ $f->text("keyword",'',$session{form}{keyword});
+ $f->submit(WebGUI::International::get(170));
+ $output .= $f->print;
+ $output .= '
';
+ if ($session{form}{keyword} ne "") {
+ $search = " where (users.username like '%".$session{form}{keyword}."%') ";
+ }
+ $sth = WebGUI::SQL->read("select * from users $search order by users.username");
+ while (%data = $sth->hash) {
+ $row[$i] = '| '
+ .deleteIcon('op=deleteUser&uid='.$data{userId})
+ .editIcon('op=editUser&uid='.$data{userId})
+ .becomeIcon('op=becomeUser&uid='.$data{userId});
+ $row[$i] .= ' | ';
+ $row[$i] .= ''.$data{username}.' | ';
+ #$row[$i] .= ''.epochToHuman($data{dateCreated},"%z").' | ';
+ #$row[$i] .= ''.epochToHuman($data{lastUpdated},"%z").' | ';
+ $row[$i] .= '
';
+ $i++;
+ }
+ $sth->finish;
+ $p = WebGUI::Paginator->new(WebGUI::URL::page('op=listUsers&keyword='.$session{form}{keyword}),\@row);
+ $output .= '';
+ $output .= '
+
';
+#
+# ';
+ $output .= $p->getPage($session{form}{pn});
+ $output .= '
';
+ $output .= $p->getBarTraditional($session{form}{pn});
+ return _submenu($output);
}
-
1;