#!/usr/bin/perl -w -I/home/eprints3/perl_lib use EPrints::DataObj::User; use EPrints::Session; use strict; my $session = EPrints::Session->new( 1 , $ARGV[0] ); exit unless( defined $session ); # Set to 1 to actually make changes to the database my $forreal = 1; # Get user dataset my $user_ds = $session->get_archive()->get_dataset( "user" ); my $input_filename = $ARGV[1]; ( defined $input_filename ) or die "No input filename specified.\n"; # Try to open the input file. open INFILE, "<$input_filename" or die "ERROR: couldn't open file '$input_filename' for reading.\n"; while( <INFILE> ) { next if /^#/; next if /^$/; #username type password given name family name email department organisation address country homepage /^([^\t]+)\t([^\t]+)\t([^\t]+)\t([^\t]+)\t([^\t]+)\t([^\t]+)\t([^\t]+)\t([^\t]+)\t"?([^"]+)"?\t([^\t]+)\t(.*)$/; my $username = $1; my $usertype = $2; my $password = EPrints::Utils::crypt_password( $3 ); my $givenname = $4; my $familyname = $5; my $email = $6; my $department = $7; my $organisation = $8; my $address = $9; my $country = $10; my $homepage = $11; # Does account already exist? my $searchexp = new EPrints::SearchExpression( session=>$session, dataset=>$user_ds ); $searchexp->add_field( $user_ds->get_field( "username" ), $username ); my $searchid = $searchexp->perform_search; my( $user ) = $searchexp->get_records; $searchexp->dispose( ); if( !defined $user ) { # New account if( $forreal ) { $user = EPrints::User::create( $session, $usertype ); $user->set_value( "username", $username ); print "CREATING: $username\n"; } else { print "(WOULD BE) CREATING: $username\n"; } } else { # Update account if( $forreal ) { print "UPDATING: $username\n"; } else { print "(WOULD BE) UPDATING: $username\n"; } } # Set metadata if( $forreal ) { my $name = {}; $name->{family} = $familyname; $name->{given} = $givenname; $user->set_value( "name", $name ); $user->set_value( "email", $email ); $user->set_value( "password", $password ); $user->set_value( "dept", $department ); $user->set_value( "org", $organisation ); $user->set_value( "address", $address ); $user->set_value( "country", $country ); $user->set_value( "url", $homepage ); $user->commit(); } else { print "FAMILY = $familyname\n"; print "GIVEN = $givenname\n"; print "EMAIL = $email\n"; print "PASSWORD = $password\n"; print "DEPARTMENT = $department\n"; print "ORGANISATION = $organisation\n"; print "ADDRESS = $address\n"; print "COUNTRY = $country\n"; print "URL = $homepage\n\n"; } } # Clean up. close INFILE;