Changeset 12231


Ignore:
Timestamp:
2006-07-14T14:06:28+12:00 (18 years ago)
Author:
mdewsnip
Message:

Now includes the architect name (and links to their page) in the "Date(s) of Construction" table on the place page.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/cic-hcap/perllib/plugins/CICPlug.pm

    r12224 r12231  
    287287
    288288
     289my %designer_name_to_id_mapping;
     290my %designer_name_to_place_ids_mapping;
     291
     292
    289293sub read
    290294{
     
    503507
    504508    # Prepare SQL statement for getting the Place construction dates
    505     my $place_construction_dates_sql_statement = "SELECT Prefix,Date,Note FROM tblConstruction_and_Dates WHERE Entry_ID=?";
     509    my $place_construction_dates_sql_statement = "SELECT Prefix,Date,Note,Architect_Name FROM tblConstruction_and_Dates WHERE Entry_ID=?";
    506510    my $place_construction_dates_sql_handle = $dbh->prepare($place_construction_dates_sql_statement);
    507511
     
    634638        # Convert the construction date to a time period (for searching and browsing)
    635639        if ($place_construction_date =~ /^(\d{1,4}).*$/) {
    636         $place_construction_date = $1;
     640        my $place_construction_year = $1;
    637641
    638642        my $place_time_period;
    639         if ($place_construction_date < 1800) { $place_time_period = "pre-1800"; }
    640         elsif ($place_construction_date < 1850) { $place_time_period = "1800-1850"; }
    641         elsif ($place_construction_date < 1900) { $place_time_period = "1850-1900"; }
    642         elsif ($place_construction_date < 1945) { $place_time_period = "1900-1945"; }
    643         elsif ($place_construction_date <= 1995) { $place_time_period = "1945-1995"; }
    644         elsif ($place_construction_date > 1995) { $place_time_period = "post-1995"; }
     643        if ($place_construction_year < 1800) { $place_time_period = "pre-1800"; }
     644        elsif ($place_construction_year < 1850) { $place_time_period = "1800-1850"; }
     645        elsif ($place_construction_year < 1900) { $place_time_period = "1850-1900"; }
     646        elsif ($place_construction_year < 1945) { $place_time_period = "1900-1945"; }
     647        elsif ($place_construction_year <= 1995) { $place_time_period = "1945-1995"; }
     648        elsif ($place_construction_year > 1995) { $place_time_period = "post-1995"; }
    645649        push(@{$place_date_to_ids_mapping{$place_time_period}}, $place_doc_obj->get_OID());
    646650        &new_metadata_entry($place_doc_obj, "Time_period", $place_time_period);
     
    662666        next;
    663667        }
     668
     669        # Get the architects for this construction and remember them for later for the designer objects
     670        my $place_construction_architect = $place_construction_dates_match_hashref->{"Architect_Name"} || "";
     671        my $place_construction_architect_links = "";
     672        foreach my $designer_name (split(/;/, $place_construction_architect)) {
     673        $designer_name =~ s/\(.*?\)//g;
     674        $designer_name =~ s/^\s*//;
     675        $designer_name =~ s/\s*$//;
     676
     677        my $designer_id = $designer_name_to_id_mapping{$designer_name};
     678        if (!defined($designer_id)) {
     679            $designer_id = scalar(keys(%designer_name_to_id_mapping)) + 1;
     680            $designer_name_to_id_mapping{$designer_name} = $designer_id;
     681        }
     682        $place_construction_architect_links .= "<a href=\"_gwcgi_?a=d&d=d$designer_id\">$designer_name</a> ";
     683        push(@{$designer_name_to_place_ids_mapping{$designer_name}}, $place_id);
     684        }
     685
    664686        my $place_construction_date_prefix = $place_construction_dates_match_hashref->{"Prefix"} || "";
    665         $place_construction_dates_table_html .= "<tr><td valign=\"top\"><nobr>$place_construction_date_prefix $place_construction_date</nobr>&nbsp;</td><td valign=\"top\">$place_construction_note</td></tr>";
     687        $place_construction_dates_table_html .= "<tr><td valign=\"top\"><nobr>$place_construction_date_prefix $place_construction_date</nobr>&nbsp;</td><td valign=\"top\">$place_construction_note $place_construction_architect_links</td></tr>";
    666688    }
    667689    &new_metadata_entry($place_doc_obj, "PlaceConstructionDatesTableHTML", "<table cellpadding=\"0\" cellspacing=\"0\">" . $place_construction_dates_table_html . "</table>");
     
    732754        # Check it is one of the valid function values
    733755        if (!defined($place_functions_mapping->{$place_function_to_index})) {
    734         # print STDERR "<ProcessingError n='Place $place_id' p='CICPlug' r='Warning: Unknown function: $place_function_to_index'>\n" if ($self->{'gli'});
     756        print STDERR "<ProcessingError n='Place $place_id' p='CICPlug' r='Warning: Unknown function: $place_function_to_index'>\n" if ($self->{'gli'});
    735757        print STDERR "Warning: Place $place_id -- Unknown function: $place_function_to_index.\n";
    736758        print $fail_log_handle "Warning: Place $place_id -- Unknown function: $place_function_to_index.\n";
     
    853875    my $fail_log_handle = $self->{'failhandle'};
    854876
    855     # Prepare SQL statement for getting all the Architects from the Place table
    856     my $designer_sql_statement = "SELECT Architect_Name,Entry_ID FROM tblConstruction_and_dates";
    857     my $designer_sql_handle = $dbh->prepare($designer_sql_statement);
    858     $designer_sql_handle->{LongReadLen} = 65536;
    859     $designer_sql_handle->execute() or die "Could not execute SQL statement.";
    860 
    861877    # Prepare SQL statement for getting the Place name
    862878    my $place_name_sql_statement = "SELECT Current_name FROM tblPlace WHERE Entry_ID=?";
     
    876892    $place_images_sql_handle->{LongReadLen} = 65536;
    877893
    878     # Get a list of all the designers, and the places they worked on
    879     my %designer_name_to_place_ids_mapping;
    880     my %designer_name_to_id_mapping;
     894    # Create a document object for each designer
    881895    my %designer_id_to_name_mapping;
    882     my $designer_count = 0;
    883     while (my $designer_hashref = $designer_sql_handle->fetchrow_hashref) {
    884     my $designer_names_string = $designer_hashref->{"Architect_Name"};
    885     next if !defined($designer_names_string);
    886     foreach my $designer_name (split(/;/, $designer_names_string)) {
    887         $designer_name =~ s/\(.*?\)//g;
    888         $designer_name =~ s/^\s*//;
    889         $designer_name =~ s/\s*$//;
    890 
    891         if (!defined($designer_name_to_id_mapping{$designer_name})) {
    892         $designer_count++;
    893         $designer_name_to_id_mapping{$designer_name} = "d" . $designer_count;
    894         }
    895 
    896         $designer_id_to_name_mapping{$designer_name_to_id_mapping{$designer_name}} = $designer_name;
    897         push(@{$designer_name_to_place_ids_mapping{$designer_name}}, $designer_hashref->{"Entry_ID"});
    898     }
    899     }
    900 
    901     # Create a document object for each designer
    902     foreach my $designer_name (keys %designer_name_to_place_ids_mapping) {
     896    foreach my $designer_name (keys %designer_name_to_id_mapping) {
    903897    my $designer_id = $designer_name_to_id_mapping{$designer_name};
    904898    # print STDERR "       Designer $designer_id\n";
    905899    my $designer_doc_obj = new doc($self->{'filename'} . "-", "indexed_doc");
    906     $designer_doc_obj->set_OID($designer_id);
     900    $designer_doc_obj->set_OID("d$designer_id");
    907901    &new_metadata_entry($designer_doc_obj, "DocumentType", "Designer");
    908902
    909903    &new_metadata_entry($designer_doc_obj, "Designer_name", $designer_name);
    910904
    911     my $designer_places_list_html = "";
    912     foreach my $designer_place_id (@{$designer_name_to_place_ids_mapping{$designer_name}}) {
     905    # Get designer places
     906    my $designer_places_list_html = "";
     907        foreach my $designer_place_id (@{$designer_name_to_place_ids_mapping{$designer_name}}) {
    913908        # Get place name
    914909        $place_name_sql_handle->execute($designer_place_id) or die "Could not execute SQL statement.";
     
    943938    $self->{'processor'}->process($designer_doc_obj);
    944939    $self->{'num_processed'}++;
     940
     941    $designer_id_to_name_mapping{$designer_doc_obj->get_OID()} = $designer_name;
    945942    }
    946943
     
    1001998    else {
    1002999        print STDERR "<ProcessingError n='Place $place_id' p='CICPlug' r='Could not parse reference: $place_reference'>\n" if ($self->{'gli'});
    1003         print STDERR "Warning: Place $place_id -- Could not parse reference: $place_reference\n";
     1000        # print STDERR "Warning: Place $place_id -- Could not parse reference: $place_reference\n";
    10041001        print $fail_log_handle "Warning: Place $place_id -- Could not parse reference: $place_reference\n";
    10051002    }
Note: See TracChangeset for help on using the changeset viewer.