[open-ils-commits] r13648 - trunk/Open-ILS/src/perlmods/OpenILS/Application (dbs)

svn at svn.open-ils.org svn at svn.open-ils.org
Tue Jul 21 01:29:33 EDT 2009


Author: dbs
Date: 2009-07-21 01:29:29 -0400 (Tue, 21 Jul 2009)
New Revision: 13648

Modified:
   trunk/Open-ILS/src/perlmods/OpenILS/Application/Cat.pm
Log:
Add some crude methods for creating and deleting MFHD records


Modified: trunk/Open-ILS/src/perlmods/OpenILS/Application/Cat.pm
===================================================================
--- trunk/Open-ILS/src/perlmods/OpenILS/Application/Cat.pm	2009-07-21 05:28:59 UTC (rev 13647)
+++ trunk/Open-ILS/src/perlmods/OpenILS/Application/Cat.pm	2009-07-21 05:29:29 UTC (rev 13648)
@@ -853,5 +853,92 @@
 }
 
 
+__PACKAGE__->register_method(
+	method	=> "create_serial_record_xml",
+	api_name	=> "open-ils.cat.serial.record.xml.create.override",
+	signature	=> q/@see open-ils.cat.serial.record.xml.create/);
 
+__PACKAGE__->register_method(
+	method		=> "create_serial_record_xml",
+	api_name		=> "open-ils.cat.serial.record.xml.create",
+	signature	=> q/
+		Inserts a new serial record with the given XML
+	/
+);
+
+sub create_serial_record_xml {
+	my( $self, $client, $login, $source, $owning_lib, $record, $xml ) = @_;
+
+	my $override = 1 if $self->api_name =~ /override/;
+
+	my( $user_obj, $evt ) = $U->checksesperm($login, 'CREATE_MFHD_RECORD');
+	return $evt if $evt;
+
+	$logger->activity("user ".$user_obj->id." creating new MFHD record");
+
+	my $e = new_editor(xact=>1, authtoken=>$login);
+	return $e->die_event unless $e->checkauth;
+
+	my $aou = $e->retrieve_actor_org_unit($owning_lib) or return $e->die_event;
+
+	my $mfhd = Fieldmapper::serial::record_entry->new;
+
+	$mfhd->source(1) if $source;
+	$mfhd->record($record);
+	$mfhd->creator($e->requestor->id);
+	$mfhd->editor($e->requestor->id);
+	$mfhd->create_date('now');
+	$mfhd->edit_date('now');
+	$mfhd->owning_lib($owning_lib);
+	$xml = "<record xsi:schemaLocation=\"http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/MARC21/slim\"> <leader>00307cy  a22001094  4500</leader> <controlfield tag=\"001\">42153</controlfield> <controlfield tag=\"005\">20090601182414.0</controlfield> <controlfield tag=\"008\">051011                eng 090309</controlfield> <datafield tag=\"852\" ind1=\" \" ind2=\" \"> <subfield code=\"b\">" . $aou->name . "</subfield> </datafield></record>";
+	my $marcxml = XML::LibXML->new->parse_string($xml);
+	$marcxml->documentElement->setNamespace("http://www.loc.gov/MARC21/slim", "marc", 1 );
+	$marcxml->documentElement->setNamespace("http://www.loc.gov/MARC21/slim");
+
+	$mfhd->marc($U->entityize($marcxml->documentElement->toString));
+
+    	my $mfhd_record = $e->create_serial_record_entry($mfhd) or return $e->die_event;
+	$logger->info("MFHD created new record ".$mfhd_record->id);
+
+	$e->commit unless $U->event_code($e);
+	return $e;
+}
+
+__PACKAGE__->register_method(
+	method	=> "delete_serial_record",
+	api_name	=> "open-ils.cat.serial.record.delete.override",
+	signature	=> q/@see open-ils.cat.serial.record.delete/);
+
+__PACKAGE__->register_method(
+	method		=> "delete_serial_record",
+	api_name		=> "open-ils.cat.serial.record.delete",
+	signature	=> q/
+		Deletes a serial record with the given ID
+	/
+);
+
+sub delete_serial_record {
+	my( $self, $client, $login, $mfhd_id ) = @_;
+
+	my $override = 1 if $self->api_name =~ /override/;
+
+	my( $user_obj, $evt ) = $U->checksesperm($login, 'DELETE_MFHD_RECORD');
+	return $evt if $evt;
+
+	$logger->activity("user ".$user_obj->id." deleting MFHD record " . $mfhd_id);
+
+	my $e = new_editor(xact=>1, authtoken=>$login);
+	return $e->die_event unless $e->checkauth;
+
+	my $record = $e->retrieve_serial_record_entry($mfhd_id)
+		or return $e->die_event;
+
+	$record->deleted('t');
+	$record->edit_date('now');
+	$e->update_serial_record_entry($record) or return $e->die_event;
+
+	$e->commit unless $U->event_code($e);
+	return $e;
+}
+
 1;



More information about the open-ils-commits mailing list