Changeset 325 for trunk/DNSDB.pm
- Timestamp:
- 05/02/12 15:03:07 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/DNSDB.pm
r324 r325 44 44 &getGroupCount &getGroupList 45 45 &addUser &updateUser &delUser &userFullName &userStatus &getUserData 46 &getUserCount &getUserList 46 47 &getSOA &updateSOA &getRecLine &getDomRecs &getRecCount 47 48 &addRec &updateRec &delRec … … 68 69 &getGroupCount &getGroupList 69 70 &addUser &updateUser &delUser &userFullName &userStatus &getUserData 71 &getUserCount &getUserList 70 72 &getSOA &updateSOA &getRecLine &getDomRecs &getRecCount 71 73 &addRec &updateRec &delRec … … 2356 2358 return ('OK',"User $username ($fname $lname) added"); 2357 2359 } # end addUser 2360 2361 2362 ## DNSDB::getUserCount() 2363 # Get count of users in group 2364 # Takes a database handle and hash containing at least the current group, and optionally: 2365 # - a reference list of secondary groups 2366 # - a filter string 2367 # - a "Starts with" string 2368 sub getUserCount { 2369 my $dbh = shift; 2370 2371 my %args = @_; 2372 2373 my @filterargs; 2374 2375 $args{startwith} = undef if $args{startwith} && $args{startwith} !~ /^(?:[a-z]|0-9)$/; 2376 push @filterargs, "^$args{startwith}" if $args{startwith}; 2377 push @filterargs, $args{filter} if $args{filter}; 2378 2379 2380 my $sql = "SELECT count(*) FROM users ". 2381 "WHERE group_id IN ($args{curgroup}".($args{childlist} ? ",$args{childlist}" : '').")". 2382 ($args{startwith} ? " AND username ~* ?" : ''). 2383 ($args{filter} ? " AND username ~* ?" : ''); 2384 my ($count) = $dbh->selectrow_array($sql, undef, (@filterargs) ); 2385 $errstr = $dbh->errstr if !$count; 2386 return $count; 2387 } # end getUserCount() 2388 2389 2390 ## DNSDB::getUserList() 2391 # Get list of users 2392 # Takes the same arguments as getUserCount() above, plus optional: 2393 # - sort field 2394 # - sort order 2395 # - offset/return-all-everything flag (defaults to $perpage records) 2396 sub getUserList { 2397 my $dbh = shift; 2398 2399 my %args = @_; 2400 2401 my @filterargs; 2402 2403 $args{startwith} = undef if $args{startwith} && $args{startwith} !~ /^(?:[a-z]|0-9)$/; 2404 push @filterargs, "^$args{startwith}" if $args{startwith}; 2405 push @filterargs, $args{filter} if $args{filter}; 2406 2407 # better to request sorts on "simple" names, but it means we need to map it to real columns 2408 my %sortmap = (user => 'u.username', type => 'u.type', group => 'g.group_name', status => 'u.status', 2409 fname => 'fname'); 2410 $args{sortby} = $sortmap{$args{sortby}}; 2411 2412 # protection against bad or missing arguments 2413 $args{sortorder} = 'ASC' if !$args{sortorder}; 2414 $args{sortby} = 'u.username' if !$args{sortby}; 2415 $args{offset} = 0 if !$args{offset}; 2416 2417 my $sql = "SELECT u.user_id, u.username, u.firstname || ' ' || u.lastname AS fname, u.type, g.group_name, u.status ". 2418 "FROM users u ". 2419 "INNER JOIN groups g ON u.group_id=g.group_id ". 2420 "WHERE u.group_id IN ($args{curgroup}".($args{childlist} ? ",$args{childlist}" : '').")". 2421 ($args{startwith} ? " AND u.username ~* ?" : ''). 2422 ($args{filter} ? " AND u.username ~* ?" : ''). 2423 " ORDER BY $args{sortby} $args{sortorder} ". 2424 ($args{offset} eq 'all' ? '' : " LIMIT $config{perpage} OFFSET ".$args{offset}*$config{perpage}); 2425 my $ulist = $dbh->selectall_arrayref($sql, { Slice => {} }, (@filterargs) ); 2426 $errstr = $dbh->errstr if !$ulist; 2427 return $ulist; 2428 } # end getUserList() 2358 2429 2359 2430
Note:
See TracChangeset
for help on using the changeset viewer.