Newer
Older
Digital_Repository / OARiNZ / DIY / deb_package / eprints-3.0 / perl_lib / EPrints / Plugin / Export / FOAF.pm
package EPrints::Plugin::Export::FOAF;

use Unicode::String qw( utf8 );

use EPrints::Plugin::Export;

@ISA = ( "EPrints::Plugin::Export" );

use strict;

sub new
{
	my( $class, %opts ) = @_;

	my $self = $class->SUPER::new( %opts );

	$self->{name} = "FOAF Export";
	$self->{accept} = [ 'dataobj/user' ];
	$self->{visible} = "all";
	$self->{suffix} = ".rdf";
	$self->{mimetype} = "text/xml";
	
	return $self;
}


sub output_dataobj
{
	my( $plugin, $dataobj ) = @_;

	my $session = $plugin->{session};
	
	my $response = $session->make_element( "rdf:RDF",
		"xmlns:rdf"=>"http://www.w3.org/1999/02/22-rdf-syntax-ns#",
		"xmlns:rdfs"=>"http://www.w3.org/2000/01/rdf-schema#",
		"xmlns:foaf"=>"http://xmlns.com/foaf/0.1/",
		"xmlns:dc"=>"http://purl.org/dc/elements/1.1/" );

	my $person = $session->make_element( "foaf:Person" );
	
	my %fields = (
		nick => $session->make_text( $dataobj->get_value( "username" ) ),
		name => $dataobj->get_value( "name" ),
	);

	foreach my $field ( keys %fields )
	{
		my $el = $session->make_element( "foaf:$field" );
		$el->appendChild( $fields{$field} );
		$person->appendChild( $el );
	}

	$response->appendChild( $person );

	my $foaf = <<END;
<?xml version="1.0" encoding="utf-8" ?>
END
	$foaf.= EPrints::XML::to_string( $response );
	EPrints::XML::dispose( $response );
	
	return $foaf;
}

1;