diff --git a/docs/upgrades/upgrade_4.8.0-4.9.0.sql b/docs/upgrades/upgrade_4.8.0-4.9.0.sql
index fed9dc39e..8eb641cbb 100644
--- a/docs/upgrades/upgrade_4.8.0-4.9.0.sql
+++ b/docs/upgrades/upgrade_4.8.0-4.9.0.sql
@@ -956,10 +956,9 @@ INSERT INTO template VALUES (3,'Ordered List','\r\n \r\n
\r\n
\r\n\r\n\r\n \r\n\r\n\r\n\r\n \">\r\n\r\n\r\n\r\n \r\n
\r\n \r\n\r\n \r\n target=\"_blank\"\r\n \r\n >\r\n\r\n \r\n - \r\n \r\n \r\n\r\n','LinkList');
insert into settings (name, value) values ('snippetsPreviewLength', 30);
alter table users add column status enum('Active','Deactivated','Selfdestructed') not null default 'Active';
-insert into international (internationalId,languageId,namespace,message,lastUpdated) values (822,1,'WebGUI','Search users within selected status.', 1038433447);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (821,1,'WebGUI','Any', 1038432387);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (820,1,'WebGUI','Your account is not activated. Therefore you cannot log in until it\'s activated, which only can be done by the admin.', 1038431645);
-insert into international (internationalId,languageId,namespace,message,lastUpdated) values (819,1,'WebGUI','Selfdestructed', 1038431323);
+insert into international (internationalId,languageId,namespace,message,lastUpdated) values (819,1,'WebGUI','Self-Deactivated', 1038431323);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (818,1,'WebGUI','Deactivated', 1038431300);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (817,1,'WebGUI','Active', 1038431287);
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (816,1,'WebGUI','Status', 1038431169);
diff --git a/lib/WebGUI/Operation/User.pm b/lib/WebGUI/Operation/User.pm
index 5c7f247ff..1b8f677bd 100644
--- a/lib/WebGUI/Operation/User.pm
+++ b/lib/WebGUI/Operation/User.pm
@@ -72,11 +72,14 @@ sub www_addUser {
tie %status, 'Tie::IxHash';
%status = (
Active =>WebGUI::International::get(817),
- Deactivated =>WebGUI::International::get(818),
- Selfdestructed =>WebGUI::International::get(819)
+ Deactivated =>WebGUI::International::get(818)
);
$f->select("status",\%status,WebGUI::International::get(816), ['Active']);
-
+ 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);
%hash = map {$_ => $_} @{$session{authentication}{available}};
$f->select("authMethod",\%hash,WebGUI::International::get(164),[$session{setting}{authMethod}]);
@@ -86,12 +89,6 @@ sub www_addUser {
WebGUI::ErrorHandler::fatalError("Unable to load method formAddUser on Authentication module: $_. ".$@) if($@);
$f->raw($html);
}
-
- 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);
@@ -400,64 +397,59 @@ sub www_editUserProfileSave {
#-------------------------------------------------------------------
sub www_listUsers {
return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3));
- my ($output, $sth, %data, $f, @row, $p, $i, $search, %status, $selectedStatus);
- tie %data, 'Tie::CPHash';
+ WebGUI::Session::setScratch("userSearchKeyword",$session{form}{keyword});
+ WebGUI::Session::setScratch("userSearchStatus",$session{form}{status});
+ my ($output, $data, $f, $rows, $p, $search, %status, $selectedStatus);
$output = helpIcon(8);
$output .= '
'.WebGUI::International::get(149).'
';
$output .= '';
tie %status, 'Tie::IxHash';
%status = (
- "status like '%'" => WebGUI::International::get(821),
- "status='Active'" => WebGUI::International::get(817),
- "status='Deactivated'" => WebGUI::International::get(818),
- "status='Selfdestructed'" => WebGUI::International::get(819)
+ "" => WebGUI::International::get(821),
+ Active => WebGUI::International::get(817),
+ Deactivated => WebGUI::International::get(818),
+ Selfdestructed => WebGUI::International::get(819)
);
$f = WebGUI::HTMLForm->new(1);
$f->hidden("op","listUsers");
- $f->text("keyword",'',$session{form}{keyword});
+ $f->text("keyword",'',$session{scratch}{userSearchKeyword});
$f->select(
-name => "status",
-value => [$session{form}{status} || "status like '%'"],
-options=> \%status
);
$f->submit(WebGUI::International::get(170));
- $f->readOnly(WebGUI::International::get(822));
- $f->checkbox (
- -name => "searchWithinStatus",
- -label => "searchWithinStatus",
- -checked=> $session{form}{searchWithinStatus},
- );
$output .= $f->print;
$output .= '
';
- $selectedStatus = $session{form}{status} || "status like '%'";
- if ($session{form}{keyword} ne "") {
- $selectedStatus = "status like '%'" unless ($session{form}{searchWithinStatus});
- $search = " where (users.username like '%".$session{form}{keyword}."%' and ".$selectedStatus.") ";
- } else {
- $search = " where (".$selectedStatus.") ";
- }
- $sth = WebGUI::SQL->read("select * from users $search order by users.username");
- while (%data = $sth->hash) {
- $row[$i] = '';
- $row[$i] .= ($data{status} eq 'Active') ? '| | ' : ''.$data{status}.' | ';
- $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 .= '
+
+
+
+
';
+ if ($session{scratch}{userSearchStatus}) {
+ $selectedStatus = "status='".$session{scratch}{userSearchStatus}."'";
+ } else {
+ $selectedStatus = "status like '%'";
+ }
+ if ($session{scratch}{userSearchKeyword} ne "") {
+ $search = " and users.username like ".quote("%".$session{scratch}{userSearchKeyword}."%");
+ }
+ $p = WebGUI::Paginator->new(WebGUI::URL::page("op=listUsers"));
+ $p->setDataByQuery("select userId,username,status,dateCreated,lastUpdated from users
+ where $selectedStatus $search order by users.username");
+ $rows = $p->getPageData;
+ foreach $data (@$rows) {
+ $output .= '';
+ $output .= '| '.$status{$data->{status}}.' | ';
+ $output .= ''.$data->{username}.' | ';
+ $output .= ''.epochToHuman($data->{dateCreated},"%z").' | ';
+ $output .= ''.epochToHuman($data->{lastUpdated},"%z").' | ';
+ $output .= '
';
+ }
$output .= '
';
- $output .= $p->getBarTraditional($session{form}{pn});
+ $output .= $p->getBarTraditional;
return _submenu($output);
}