Changeset 237 for trunk/DNSDB.pm
- Timestamp:
- 02/17/12 17:55:18 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/DNSDB.pm
r236 r237 30 30 &loadConfig &connectDB &finish 31 31 &addDomain &delDomain &domainName &domainID 32 &getZoneCount &getZoneList 32 33 &addGroup &delGroup &getChildren &groupName 33 34 &addUser &updateUser &delUser &userFullName &userStatus &getUserData … … 51 52 &loadConfig &connectDB &finish 52 53 &addDomain &delDomain &domainName &domainID 54 &getZoneCount &getZoneList 53 55 &addGroup &delGroup &getChildren &groupName 54 56 &addUser &updateUser &delUser &userFullName &userStatus &getUserData … … 1184 1186 return $domid if $domid; 1185 1187 } # end domainID() 1188 1189 1190 ## DNSDB::getZoneCount 1191 # Get count of zones in group or groups 1192 # Takes a database handle and hash containing: 1193 # - the "current" group 1194 # - an array of "acceptable" groups 1195 # - a flag for forward/reverse zones 1196 # - Optionally accept a "starts with" and/or "contains" filter argument 1197 # Returns an integer count of the resulting zone list. 1198 sub getZoneCount { 1199 my $dbh = shift; 1200 1201 my %args = @_; 1202 1203 my @filterargs; 1204 $args{filter} =~ s/\./\[\.\]/g if $args{filter}; 1205 push @filterargs, $args{startwith} if $args{startwith}; 1206 push @filterargs, $args{filter} if $args{filter}; 1207 1208 my $sql; 1209 # Not as compact, and fix-me-twice if the common bits get wrong, but much easier to read 1210 if ($args{revrec} eq 'n') { 1211 $sql = "SELECT count(*) FROM domains". 1212 " WHERE group_id IN ($args{curgroup}".($args{childlist} ? ",$args{childlist}" : '').")". 1213 ($args{startwith} ? " AND domain ~* ?" : ''). 1214 ($args{filter} ? " AND domain ~* ?" : ''); 1215 } else { 1216 $sql = "SELECT count(*) FROM revzones". 1217 " WHERE group_id IN ($args{curgroup}".($args{childlist} ? ",$args{childlist}" : '').")". 1218 ($args{startwith} ? " AND CAST(revnet AS VARCHAR) ~* ?" : ''). 1219 ($args{filter} ? " AND CAST(revnet AS VARCHAR) ~* ?" : ''); 1220 } 1221 my ($count) = $dbh->selectrow_array($sql, undef, @filterargs); 1222 return $count; 1223 } # end getZoneCount() 1224 1225 1226 ## DNSDB::getZoneList() 1227 # Get a list of zones in the specified group(s) 1228 # Takes the same arguments as getZoneCount() above 1229 # Returns a reference to an array of hashrefs suitable for feeding to HTML::Template 1230 sub getZoneList { 1231 my $dbh = shift; 1232 1233 my %args = @_; 1234 1235 my @zonelist; 1236 1237 $args{sortorder} = 'ASC' if !grep $args{sortorder}, ('ASC','DESC'); 1238 $args{offset} = 0 if !$args{offset}; 1239 1240 my @filterargs; 1241 $args{filter} =~ s/\./\[\.\]/g if $args{filter}; 1242 push @filterargs, $args{startwith} if $args{startwith}; 1243 push @filterargs, $args{filter} if $args{filter}; 1244 1245 my $sql; 1246 # Not as compact, and fix-me-twice if the common bits get wrong, but much easier to read 1247 if ($args{revrec} eq 'n') { 1248 $args{sortby} = 'domain' if !grep $args{sortby}, ('revnet','group','status'); 1249 $sql = "SELECT domain_id,domain,status,groups.group_name AS group FROM domains". 1250 " INNER JOIN groups ON domains.group_id=groups.group_id". 1251 " WHERE domains.group_id IN ($args{curgroup}".($args{childlist} ? ",$args{childlist}" : '').")". 1252 ($args{startwith} ? " AND domain ~* ?" : ''). 1253 ($args{filter} ? " AND domain ~* ?" : ''); 1254 } else { 1255 $args{sortby} = 'revnet' if !grep $args{sortby}, ('domain','group','status'); 1256 $sql = "SELECT rdns_id,revnet,status,groups.group_name AS group FROM revzones". 1257 " INNER JOIN groups ON revzones.group_id=groups.group_id". 1258 " WHERE revzones.group_id IN ($args{curgroup}".($args{childlist} ? ",$args{childlist}" : '').")". 1259 ($args{startwith} ? " AND CAST(revnet AS VARCHAR) ~* ?" : ''). 1260 ($args{filter} ? " AND CAST(revnet AS VARCHAR) ~* ?" : ''); 1261 } 1262 # A common tail. 1263 $sql .= " ORDER BY ".($args{sortby} eq 'group' ? 'groups.group_name' : $args{sortby}). 1264 " $args{sortorder} ".($args{offset} eq 'all' ? '' : " LIMIT $config{perpage}". 1265 " OFFSET ".$args{offset}*$config{perpage}); 1266 my $sth = $dbh->prepare($sql); 1267 $sth->execute(@filterargs); 1268 my $rownum = 0; 1269 1270 while (my @data = $sth->fetchrow_array) { 1271 my %row; 1272 $row{domainid} = $data[0]; 1273 $row{domain} = $data[1]; 1274 $row{status} = ($data[2] ? 'Active' : 'Inactive'); 1275 $row{group} = $data[3]; 1276 $row{bg} = ($rownum++)%2; 1277 $row{mkactive} = !$data[2]; 1278 # $row{sid} = $args{sid}; 1279 $row{offset} = $args{offset}; 1280 # ACLs 1281 # $row{domain_edit} = ($permissions{admin} || $permissions{domain_edit}); 1282 # $row{domain_delete} = ($permissions{admin} || $permissions{domain_delete}); 1283 push @zonelist, \%row; 1284 } 1285 1286 return \@zonelist; 1287 } # end getZoneList() 1186 1288 1187 1289
Note:
See TracChangeset
for help on using the changeset viewer.