Changeset 24949 for main/trunk


Ignore:
Timestamp:
2012-01-16T15:12:39+13:00 (12 years ago)
Author:
sjm84
Message:

Adding the ability to specify metadata values to use to remove archive and index metadata. The code is untested at this point.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/cgiactions/metadataaction.pm

    r24943 r24949  
    8080                     
    8181    "remove-archives-metadata" => { 'compulsory-args' => [ "d", "metaname" ], #TODO: add f argument
    82                      'optional-args'   => [ "metapos" ] },
     82                     'optional-args'   => [ "metapos", "metavalue" ] },
    8383
    8484    "remove-live-metadata"  => { 'compulsory-args' => [ "d", "metaname" ],
     
    8686
    8787    "remove-metadata"       => { 'compulsory-args' => [ "d", "metaname" ],
    88                      'optional-args'   => [ "metapos" ] },
     88                     'optional-args'   => [ "metapos", "metavalue" ] },
    8989
    9090    "insert-metadata"       => { 'compulsory-args' => [ "d", "metaname", "metavalue" ],
     
    878878    my $import_filename = $doc_rec->{'doc-file'}->[0]; 
    879879
    880     my $status = $self->remove_from_doc_xml($gsdl_cgi, &util::filename_cat($archive_dir, $import_filename), $metaname, $metapos, $docid_secnum);
     880    my $status = $self->remove_from_doc_xml($gsdl_cgi, &util::filename_cat($archive_dir, $import_filename), $metaname, $metapos, null, $docid_secnum);
    881881   
    882882    # Release the lock once it is done
     
    905905{
    906906    my $self = shift @_;
    907     my ($gsdl_cgi, $doc_xml_filename, $metaname, $metapos, $secid) = @_;
     907    my ($gsdl_cgi, $doc_xml_filename, $metaname, $metapos, $metavalue, $secid) = @_;
    908908   
    909909    my @start_rules = ('Section' => \&dxml_start_section);
     
    950950        else {
    951951            binmode($MOUT,":utf8");
    952             $parser->filter($xml_in, $MOUT, {metaname => $metaname, metapos => $metapos, secid => $secid});
     952            $parser->filter($xml_in, $MOUT, {metaname => $metaname, metapos => $metapos, metavalue => $metavalue, secid => $secid});
    953953            close($MOUT);       
    954954        }
     
    980980   
    981981    if ((defined $parser->{'parameters'}->{'metapos'}) && ($parser->{'parameters'}->{'metaname'} eq $attrHash->{'name'}) && ($parser->{'parameters'}->{'poscount'} == $parser->{'parameters'}->{'metapos'}))
     982    {   
     983        return [];
     984    }
     985   
     986    if ((defined $parser->{'parameters'}->{'metavalue'}) && ($parser->{'parameters'}->{'metaname'} eq $attrHash->{'name'}) && ($parser->{'parameters'}->{'metavalue'} eq $attrHash->{'_content'}))
    982987    {   
    983988        return [];
     
    15191524    my $metaname  = $self->{'metaname'};
    15201525    my $metapos   = $self->{'metapos'};
     1526    my $metavalue = $self->{'metavalue'};
    15211527
    15221528    # To people who know $collect_tail please add some comments
     
    15611567    my $num_metadata_vals = scalar(@{$doc_rec->{$metaname}});   
    15621568    for (my $i=0; $i<$num_metadata_vals; $i++) {
    1563     my $metavalue = shift(@{$doc_rec->{$metaname}});
    1564 
    1565     if ($i != $metapos) {
    1566         push(@$filtered_metadata,$metavalue)
     1569    my $metaval = shift(@{$doc_rec->{$metaname}});
     1570
     1571    if (!defined $metavalue && $i != $metapos) {
     1572        push(@$filtered_metadata,$metaval)
     1573    }
     1574   
     1575    if(defined $metavalue && !($metavalue eq $metaval))
     1576    {
     1577        push(@$filtered_metadata,$metavalue)
    15671578    }
    15681579    }
Note: See TracChangeset for help on using the changeset viewer.