From 4bd546b81d480c80e51825b42bc84ef6306fa023 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Sat, 30 Nov 2002 16:36:24 +0000 Subject: [PATCH] Converted user manager to use new pagination and scratch systems. Cleaned up some unnecessary code introduced by the new user status search. --- docs/upgrades/upgrade_4.8.0-4.9.0.sql | 3 +- lib/WebGUI/Operation/User.pm | 90 ++++++++++++--------------- 2 files changed, 42 insertions(+), 51 deletions(-) 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 .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + } $output .= '
'.WebGUI::International::get(816).''.WebGUI::International::get(50).'
'.WebGUI::International::get(453).''.WebGUI::International::get(454).'
'.WebGUI::International::get(816).''.WebGUI::International::get(50).''.WebGUI::International::get(453).''.WebGUI::International::get(454).'
'.$status{$data->{status}}.''.$data->{username}.''.epochToHuman($data->{dateCreated},"%z").''.epochToHuman($data->{lastUpdated},"%z").'
'; - $output .= $p->getBarTraditional($session{form}{pn}); + $output .= $p->getBarTraditional; return _submenu($output); }