EPrints Technical Mailing List Archive
See the EPrints wiki for instructions on how to join this mailing list and related information.
Message: #09020
< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First
Re: [EP-tech] email notification on a specific metadata field value change
- To: John Salter <J.Salter@leeds.ac.uk>, "eprints-tech@ecs.soton.ac.uk" <eprints-tech@ecs.soton.ac.uk>
- Subject: Re: [EP-tech] email notification on a specific metadata field value change
- From: Tomasz Neugebauer <Tomasz.Neugebauer@concordia.ca>
- Date: Fri, 5 Aug 2022 21:20:45 +0000
CAUTION: This e-mail originated outside the University of Southampton.
Thank you, John! Yes, that worked for me, the function looks like this: $c->add_dataset_trigger( 'eprint', EPrints::Const::EP_TRIGGER_BEFORE_COMMIT, sub { my( %args ) = @_; my( $session, $eprint, $changed ) = @args{qw( repository dataobj changed )}; if( exists $changed->{'field_of_interest'} ) { my $old_val = $changed->{'field_of_interest'}; my $new_val = $eprint->get_value( 'field_of_interest');
my $user = $eprint->get_user(); my $username = EPrints::Utils::tree_to_utf8( $user->render_description() ); # generate an email alert if ($old_val eq 'FALSE' && $new_val eq 'TRUE') { print STDERR "field_of_interest Changed from ".$old_val." ".$new_val." SEND NOTIFICATION EMAIL";
my $message = $session->make_element( "p" ); $message->appendChild( $session->make_text("Hello " . $username.",")); $message->appendChild($session->make_element( "br" )); $message->appendChild($session->make_element( "br" )); my $title = $session->make_element( "strong" ); $title->appendChild($session->make_text($eprint->get_value("title"))); $message->appendChild($session->make_text( "This email is to let you know that the following item
you deposited: ")); $message->appendChild($title); $message->appendChild($session->make_text(" (".$eprint->get_url().")")); $message->appendChild($session->make_text(" has changed in a specific way.")); my $ok = $user->mail("field_change_phrase",$message); }
} }, priority => 73); This works! The only thing is, I would like the action to register in the history for the item, any idea how would I do that? Tomasz From: John Salter <J.Salter@leeds.ac.uk>
Attention This email originates from outside the concordia.ca domain. // Ce courriel provient de l'exterieur du domaine de concordia.ca This sounds like a job for a commit trigger. You can check whether the field you are interested in is a key in the changed hash, and use that as a basis for sending
an email. NB The example below may not be syntactically correct. It's lashed together late at night (for me anyway), but I think
you'll get the idea. Happy to answer questions about it in (my) morning! Cheers, John $c->add_dataset_trigger( 'eprint', EPrints::Const::EP_TRIGGER_BEFORE_COMMIT, sub { my( %args ) = @_; my( $repo, $user, $changed ) = @args{qw( repository dataobj changed )}; if( exists $changed->{'the_field_youre_interested_in'} ) { my $old_val = $changed->{'the_field_youre_interested_in'}; my $new_val = $eprint->get_value( 'the_field_youre_interested_in' ); # generate an email alert } }, priority => 73);
From:
eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk]
On Behalf Of Tomasz Neugebauer via Eprints-tech CAUTION: This
e-mail originated outside the University of Southampton. Another question from me, I hope I don’t get blocked for posting too many!
I would like to add an email notification that would be sent out to the depositor when a specific editor-only metadata field changes in a deposit. What would be the best/easiest way to get that done?
This method is the only way that comes to mind, but it seems complicated. Would I need to
1.
add an item field with a date value,
2.
use “automatic fields.pl” to insert a date of when the field changes into it whenver the field that I want monitored changes, and
3.
run a batch script nightly to send the notification email to for all those items that have “today’s” date in the monitor field Or could I use a trigger mechanism on this field to send out the email?
Tomasz
|
- Follow-Ups:
- Re: [EP-tech] email notification on a specific metadata field value change
- From: Tomasz Neugebauer <Tomasz.Neugebauer@concordia.ca>
- Re: [EP-tech] email notification on a specific metadata field value change
- References:
- [EP-tech] email notification on a specific metadata field value change
- From: Tomasz Neugebauer <Tomasz.Neugebauer@concordia.ca>
- Re: [EP-tech] email notification on a specific metadata field value change
- From: John Salter <J.Salter@leeds.ac.uk>
- Re: [EP-tech] email notification on a specific metadata field value change
- From: Tomasz Neugebauer <Tomasz.Neugebauer@concordia.ca>
- [EP-tech] email notification on a specific metadata field value change
- Prev by Date: Re: [EP-tech] depositing user email in the Review table
- Next by Date: Re: [EP-tech] email notification on a specific metadata field value change
- Previous by thread: [EP-tech] EPrints/CRIS
- Next by thread: [EP-tech] DOI handling in orcid_support_advance
- Index(es):