my @base_elements = (
"user_id",
"user_altid",
- "user_pin",
+# "user_pin",
"user_profile",
"user_status",
"user_library",
"middle_name",
"suffix_name",
"note",
- "note1",
+# "note1",
+ "patron",
"comment",
- "staff",
- "webcatpref",
+# "staff",
+# "webcatpref",
"user_category1",
- "user_category2",
+# "user_category2",
"user_category3",
- "user_category4",
- "dept",
- "guardian",
- "license",
- "aup",
- "photo",
- "notify_via",
- "user_claims_ret",
- "user_environment",
- "user_department",
- "ums_id"
+# "user_category4",
+# "dept",
+# "guardian",
+# "license",
+ # "aup",
+# "photo",
+# "notify_via",
+# "user_claims_ret",
+# "user_environment",
+# "user_department",
+ "ums_id",
+ "user_last_activity",
+ "placcard",
+ "user_email",
);
my @addr_elements = (
"std_city",
"std_state",
"std_zip",
- "phone",
- "dayphone",
+# "phone",
+# "dayphone",
"homephone",
- "workphone",
- "cellphone",
- "email",
- "location",
- "usefor",
- "care_of",
- "known_bad"
+# "workphone",
+# "cellphone",
+# "email",
+# "location",
+# "usefor",
+# "care_of",
+# "known_bad",
+ "ums_addrid",
);
print STDOUT join("\t", @base_elements);
print STDOUT "\n";
for my $patron ( $doc->documentElement->childNodes ) {
- next if ($patron->nodeType == 3);
-
- my $bc = $patron->findvalue( 'user_id' ); $bc =~ s/^\s+//; $bc =~ s/\s+$//;
- if (exists($s_map{$bc})) {
- $count++;
- warn "\n!!! already saw barcode $bc, skipping\n";
- next;
- } else {
- $s_map{$bc} = 1;
- }
-
- unless (defined($bc)) {
- my $xml = $patron->toString;
- warn "\n!!! no barcode found in UMS data, user number $count, xml => $xml \n";
- $count++;
- next;
- }
-
+ next if ($patron->nodeType == 3);
+
+ my $bc = $patron->findvalue( 'user_id' ); $bc =~ s/^\s+//; $bc =~ s/\s+$//;
+ if (exists($s_map{$bc})) {
+ $count++;
+ warn "\n!!! already saw barcode $bc, skipping\n";
+ next;
+ } else {
+ $s_map{$bc} = 1;
+ }
+
+ unless (defined($bc)) {
+ my $xml = $patron->toString;
+ warn "\n!!! no barcode found in UMS data, user number $count, xml => $xml \n";
+ $count++;
+ next;
+ }
+
foreach my $e ( @base_elements ) {
my $v = $patron->findvalue( $e ); $v =~ s/^\s+//; $v =~ s/\s+$//;
if ( $v && ( $e eq 'birthdate' || $e eq 'user_priv_granted' || $e eq 'user_priv_expires' ) ) { $v = parse_date($v); }
print STDOUT ( $v ? $v : '' ) . "\t";
}
- my %addresses;
-
- for my $addr ( $patron->findnodes( "Address" ) ) {
- my $addr_type = $addr->getAttribute('addr_type');
- $addresses{$addr_type} = $addr;
- }
-
+ my %addresses;
+
+ for my $addr ( $patron->findnodes( "Address" ) ) {
+ my $addr_type = $addr->getAttribute('addr_type');
+ $addresses{$addr_type} = $addr;
+ }
+
foreach my $t ( 1..3 ) {
if ($addresses{$t}) {
foreach my $e ( @addr_elements ) {
foreach ( @addr_elements ) { print STDOUT "\t"; }
}
}
-
+
my $inactive_barcode1 = '';
my $inactive_barcode2 = '';
my $userid_active = 't';
}
sub parse_date {
- my $string = shift;
- my $group = shift;
-
- my ($y,$m,$d);
-
- if ($string eq 'NEVER') {
- my (undef,undef,undef,$d,$m,$y) = localtime();
- return sprintf('%04d-%02d-%02d', $y + 1920, $m + 1, $d);
- } elsif (length($string) == 8 && $string =~ /^(\d{4})(\d{2})(\d{2})$/o) {
- ($y,$m,$d) = ($1,$2,$3);
- } elsif ($string =~ /(\d+)\D(\d+)\D(\d+)/o) { #looks like it's parsable
- if ( length($3) > 2 ) { # looks like mm.dd.yyyy
- if ( $1 < 99 && $2 < 99 && $1 > 0 && $2 > 0 && $3 > 0) {
- if ($1 > 12 && $1 < 31 && $2 < 13) { # well, actually it looks like dd.mm.yyyy
- ($y,$m,$d) = ($3,$2,$1);
- } elsif ($2 > 12 && $2 < 31 && $1 < 13) {
- ($y,$m,$d) = ($3,$1,$2);
- }
- }
- } elsif ( length($1) > 3 ) { # format probably yyyy.mm.dd
- if ( $3 < 99 && $2 < 99 && $1 > 0 && $2 > 0 && $3 > 0) {
- if ($2 > 12 && $2 < 32 && $3 < 13) { # well, actually it looks like yyyy.dd.mm -- why, I don't konw
- ($y,$m,$d) = ($1,$3,$2);
- } elsif ($3 > 12 && $3 < 31 && $2 < 13) {
- ($y,$m,$d) = ($1,$2,$3);
- }
- }
- } elsif ( $1 < 99 && $2 < 99 && $3 < 99 && $1 > 0 && $2 > 0 && $3 > 0) {
- if ($3 < 7) { # probably 2000 or greater, mm.dd.yy
- $y = $3 + 2000;
- if ($1 > 12 && $1 < 32 && $2 < 13) { # well, actually it looks like dd.mm.yyyy
- ($m,$d) = ($2,$1);
- } elsif ($2 > 12 && $2 < 32 && $1 < 13) {
- ($m,$d) = ($1,$2);
- }
- } else { # probably before 2000, mm.dd.yy
- $y = $3 + 1900;
- if ($1 > 12 && $1 < 32 && $2 < 13) { # well, actually it looks like dd.mm.yyyy
- ($m,$d) = ($2,$1);
- } elsif ($2 > 12 && $2 < 32 && $1 < 13) {
- ($m,$d) = ($1,$2);
- }
- }
- }
- }
-
- my $date = $string;
- if ($y && $m && $d) {
- eval {
- $date = sprintf('%04d-%02d-%-2d',$y, $m, $d)
- if (new DateTime ( year => $y, month => $m, day => $d ));
- }
- }
-
- return $date;
+ my $string = shift;
+ my $group = shift;
+
+ my ($y,$m,$d);
+
+ if ($string eq 'NEVER') {
+ my (undef,undef,undef,$d,$m,$y) = localtime();
+ return sprintf('%04d-%02d-%02d', $y + 1920, $m + 1, $d);
+ } elsif (length($string) == 8 && $string =~ /^(\d{4})(\d{2})(\d{2})$/o) {
+ ($y,$m,$d) = ($1,$2,$3);
+ } elsif ($string =~ /(\d+)\D(\d+)\D(\d+)/o) { #looks like it's parsable
+ if ( length($3) > 2 ) { # looks like mm.dd.yyyy
+ if ( $1 < 99 && $2 < 99 && $1 > 0 && $2 > 0 && $3 > 0) {
+ if ($1 > 12 && $1 < 31 && $2 < 13) { # well, actually it looks like dd.mm.yyyy
+ ($y,$m,$d) = ($3,$2,$1);
+ } elsif ($2 > 12 && $2 < 31 && $1 < 13) {
+ ($y,$m,$d) = ($3,$1,$2);
+ }
+ }
+ } elsif ( length($1) > 3 ) { # format probably yyyy.mm.dd
+ if ( $3 < 99 && $2 < 99 && $1 > 0 && $2 > 0 && $3 > 0) {
+ if ($2 > 12 && $2 < 32 && $3 < 13) { # well, actually it looks like yyyy.dd.mm -- why, I don't konw
+ ($y,$m,$d) = ($1,$3,$2);
+ } elsif ($3 > 12 && $3 < 31 && $2 < 13) {
+ ($y,$m,$d) = ($1,$2,$3);
+ }
+ }
+ } elsif ( $1 < 99 && $2 < 99 && $3 < 99 && $1 > 0 && $2 > 0 && $3 > 0) {
+ if ($3 < 7) { # probably 2000 or greater, mm.dd.yy
+ $y = $3 + 2000;
+ if ($1 > 12 && $1 < 32 && $2 < 13) { # well, actually it looks like dd.mm.yyyy
+ ($m,$d) = ($2,$1);
+ } elsif ($2 > 12 && $2 < 32 && $1 < 13) {
+ ($m,$d) = ($1,$2);
+ }
+ } else { # probably before 2000, mm.dd.yy
+ $y = $3 + 1900;
+ if ($1 > 12 && $1 < 32 && $2 < 13) { # well, actually it looks like dd.mm.yyyy
+ ($m,$d) = ($2,$1);
+ } elsif ($2 > 12 && $2 < 32 && $1 < 13) {
+ ($m,$d) = ($1,$2);
+ }
+ }
+ }
+ }
+
+ my $date = $string;
+ if ($y && $m && $d) {
+ eval {
+ $date = sprintf('%04d-%02d-%-2d',$y, $m, $d)
+ if (new DateTime ( year => $y, month => $m, day => $d ));
+ }
+ }
+
+ return $date;
}