diff --git a/dspace-api/src/main/java/org/dspace/eperson/EPersonConsumer.java b/dspace-api/src/main/java/org/dspace/eperson/EPersonConsumer.java new file mode 100644 index 0000000000..3f35a2846d --- /dev/null +++ b/dspace-api/src/main/java/org/dspace/eperson/EPersonConsumer.java @@ -0,0 +1,160 @@ +/* + * EPersonConsumer.java + * + * Version: $Revision$ + * + * Date: $Date$ + * + * Copyright (c) 2002-2007, Hewlett-Packard Company and Massachusetts + * Institute of Technology. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Hewlett-Packard Company nor the name of the + * Massachusetts Institute of Technology nor the names of their + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +package org.dspace.eperson; + +import org.apache.log4j.Logger; +import org.dspace.core.*; +import org.dspace.event.Consumer; +import org.dspace.event.Event; + +import javax.mail.MessagingException; +import java.util.Date; + +/** + * Class for handling updates to EPersons + * + * Recommended filter: EPerson+Create + * + * @version $Revision$ + * + * @author Stuart Lewis + */ +public class EPersonConsumer implements Consumer +{ + /** log4j logger */ + private static Logger log = Logger.getLogger(EPersonConsumer.class); + + /** + * Initalise the consumer + * + * @throws Exception + */ + public void initialize() + throws Exception + { + + } + + /** + * Consume the event + * + * @param context + * @param event + * @throws Exception + */ + public void consume(Context context, Event event) + throws Exception + { + int st = event.getSubjectType(); + int et = event.getEventType(); + int id = event.getSubjectID(); + + switch (st) + { + // If an EPerson is changed + case Constants.EPERSON: + if (et == Event.CREATE) + { + // Notify of new user registration + String notifyRecipient = ConfigurationManager.getProperty("registration.notify"); + if (notifyRecipient == null) { + notifyRecipient = ""; + } + notifyRecipient = notifyRecipient.trim(); + + if(!notifyRecipient.equals("")) + { + try + { + EPerson eperson = EPerson.find(context, id); + Email adminEmail = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "registration_notify")); + adminEmail.addRecipient(notifyRecipient); + + adminEmail.addArgument(eperson.getFirstName() + " " + eperson.getLastName()); // Name + adminEmail.addArgument(eperson.getEmail()); + adminEmail.addArgument(new Date()); + + adminEmail.setReplyTo(eperson.getEmail()); + + adminEmail.send(); + + log.info(LogManager.getHeader(context, "registerion_alert", "user=" + + eperson.getEmail())); + } + catch (MessagingException me) + { + log.warn(LogManager.getHeader(context, + "error_emailing_administrator", ""), me); + } + } + } else if (et == Event.DELETE) + { + // TODO: Implement this if required + } + break; + default: + log.warn("consume() got unrecognized event: " + event.toString()); + } + + } + + /** + * Handle the end of the event + * + * @param ctx + * @throws Exception + */ + public void end(Context ctx) + throws Exception + { + + } + + /** + * Finish the event + * + * @param ctx + */ + public void finish(Context ctx) + { + + } +} \ No newline at end of file diff --git a/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/RegisterServlet.java b/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/RegisterServlet.java index f626476e66..e1392cce5c 100644 --- a/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/RegisterServlet.java +++ b/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/RegisterServlet.java @@ -528,42 +528,6 @@ public class RegisterServlet extends DSpaceServlet request.setAttribute("eperson", eperson); - - // Notify of new user registration - String notifyRecipient = ConfigurationManager.getProperty("registration.notify"); - if (notifyRecipient == null) { - notifyRecipient = ""; - } - notifyRecipient = notifyRecipient.trim(); - - if(!notifyRecipient.equals("")) - { - try - { - Email adminEmail = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "registration_notify")); - adminEmail.addRecipient(notifyRecipient); - - adminEmail.addArgument(eperson.getFirstName() + " " + eperson.getLastName()); // Name - adminEmail.addArgument(eperson.getEmail()); // Email - - adminEmail.setReplyTo(eperson.getEmail()); - - adminEmail.send(); - - log.info(LogManager.getHeader(context, "registerion_alert", "user=" - + eperson.getEmail())); - } - catch (MessagingException me) - { - log.warn(LogManager.getHeader(context, - "error_emailing_administrator", ""), me); - - JSPManager.showInternalError(request, response); - } - } - - - JSPManager.showJSP(request, response, "/register/registered.jsp"); context.complete(); } diff --git a/dspace/CHANGES b/dspace/CHANGES index 5fedf4dbd5..76d051d1cc 100644 --- a/dspace/CHANGES +++ b/dspace/CHANGES @@ -5,9 +5,6 @@ SF Patch 1794700 Bug fix for stat-monthly and stat-report-monthly - Authentication code moved to new org.dspace.authenticate package - Added IP Authentication (SF patch #1566820) -(Graham Triggs) -- Admin browser for withdrawn items (implements feature request #1221957) - (Richard Jones) - S.F. Patch 1670093 More stable metadata and schema registry import @@ -33,6 +30,7 @@ SF Patch 1794700 Bug fix for stat-monthly and stat-report-monthly - ConfigurationManager fix to honour log4j.configuration - S.F. Patch 1749196 Oracle SQL in Bitstream Checker - S.F. Patch 1740579 Patch for bug 1740454 (Concurrency) +- Admin browser for withdrawn items (implements feature request #1221957) (Larry Stone, Richard Rodgers, Sands Fish, Mark Diggory) - S.F. Patch 1633596 Event System for DSpace 1.5 @@ -63,6 +61,7 @@ SF Patch 1794700 Bug fix for stat-monthly and stat-report-monthly - SF Patch #1737792 Patch for bug 1552760 - Submit interface looks bad in Safari - Removal of message for Netscape users in choose-file.jsp + removal of supporting text and images in the help file - SF Patch #1591871 Docs for google and html sitemaps +- SF Patch #1799575 New EPersonConsumer event consumer (Chris yates) - SF Patch #1724330 Removes "null" being displayed in community-home.jsp diff --git a/dspace/config/dspace.cfg b/dspace/config/dspace.cfg index 44380b2e9c..10001f53af 100644 --- a/dspace/config/dspace.cfg +++ b/dspace/config/dspace.cfg @@ -80,7 +80,7 @@ mail.admin = dspace-help@myu.edu # alert.recipient = email-address-here # Recipient for new user registration emails -# registration.notify.new = email-address-here +# registration.notify = email-address-here ##### File Storage ###### @@ -915,7 +915,7 @@ plugin.named.org.dspace.content.packager.PackageIngester = \ # default synchronous dispatcher (same behavior as traditional DSpace) event.dispatcher.default.class = org.dspace.event.BasicDispatcher -event.dispatcher.default.consumers = search, browse +event.dispatcher.default.consumers = search, browse, eperson # consumer to maintain the search index event.consumer.search.class = org.dspace.search.SearchConsumer @@ -925,6 +925,10 @@ event.consumer.search.filters = Item|Collection|Community|Bundle+Create|Modify|M event.consumer.browse.class = org.dspace.browse.BrowseConsumer event.consumer.browse.filters = Item+Create|Modify|Modify_Metadata:Collection+Add|Remove +# consumer related to EPerson changes +event.consumer.eperson.class = org.dspace.eperson.EPersonConsumer +event.consumer.eperson.filters = EPerson+Create + # test consumer for debugging and monitoring #event.consumer.test.class = org.dspace.event.TestConsumer #event.consumer.test.filters = All+All diff --git a/dspace/config/emails/registration_notify b/dspace/config/emails/registration_notify index 3950230b6f..cd2efef35b 100644 --- a/dspace/config/emails/registration_notify +++ b/dspace/config/emails/registration_notify @@ -10,6 +10,6 @@ Subject: DSpace: Registration Notification A new user has registered on the system: -Name: {0} -Email: {1} +Name: {0} +Email: {1} Date: {2} diff --git a/dspace/docs/install.html b/dspace/docs/install.html index 452f3bd613..7e075a8265 100644 --- a/dspace/docs/install.html +++ b/dspace/docs/install.html @@ -183,6 +183,9 @@ cp * ..
mail.admin -- mailbox for DSpace site administrator.
alert.recipient -- mailbox for server errors/alerts (not essential but very useful!) + +
registration.notify -- mailbox for emails when new users register (optional) +

NOTE: You can interpolate the value of one configuration variable in the value of another one. For example, to set feedback.recipient