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