21302 Posts in 5736 Topics by 2603 members
General Questions
SilverStripe Forums » General Questions » [solved] Newsletter subscription error on existing user email
General questions about getting started with SilverStripe that don't fit in any of the categories above.
Moderators: martimiz, Howard, Sean, Ryan M., biapar, Willr, Ingo, swaiba, simon_w
|
Page:
1
|
Go to End | |
| Author | Topic: | 324 Views |
-
[solved] Newsletter subscription error on existing user email

10 February 2012 at 4:31am
Hi everybody.
On bugfixin our latest project we discovered a strange newsletter subscription error. On the homepage there is a form saving all subscribers as a new member in the db. if a mailadress is already saved β no matter whether teh user is an admin or in another usergroup β a exception is thrwon.
throw new ValidationException(new ValidationResult(false, sprintf(
629 _t(
630 'Member.ValidationIdentifierFailed',
631 'Can\'t overwrite existing member #%d with identical identifier (%s = %s))',
632 PR_MEDIUM,
633 'The values in brackets show a fieldname mapped to a value, usually denoting an existing email address'
634 ),The code on Homepage.php
// Make sure you set this to the right group.
// See http://doc.silverstripe.com/doku.php?do=show&id=recipes%3Aforms
private $defaultGroupID = 3;/**
* This function lets you put a form on your page, using $Form.
*/
function NewsletterForm() {
return new Form($this, "NewsletterForm", new FieldSet(// List your fields here
new TextField("Surname", "Name"),
new EmailField("Email", "E-Mail")), new FieldSet(
// List the action buttons here
new FormAction("SignupAction", "Eintragen")), new RequiredFields(
'Email',
'Surname'
));
}/**
* This function is called when the user submits the form.
*/
function SignupAction($data, $form) {// Create a new Member object and load the form data into it
$member = new Member();
$form->saveInto($member);// Write it to the database. This needs to happen before we add it to a group
$member->write();// Add the member to group. (Check if it exists first)
if($group = DataObject::get_one('Group', "ID = $this->defaultGroupID")) {$member->Groups()->add($group);
// Redirect to a page thanking people for registering
Director::redirect('newsletter-erfolgreich-eingetragen/');}else{
// Redirect to a failure page
Director::redirect('newsletter-registristrierungs-fehler/');}
}
$defaultGroupID = 3 is the newsletter user group created in the security section of the cms.
Why does the Director::redirect('newsletter-registristrierungs-fehler/'); not work?
What to edit on this code to catch this error?Thanks. Pipifix
Silverstripe 2.46
-
Re: [solved] Newsletter subscription error on existing user email

10 February 2012 at 5:09am
What to edit on this code to catch this error?
You will need to validate the mailadress yourself. Silverstripe will just throw the error, because double user identifier is a bad thing.
Why does the Director::redirect('newsletter-registristrierungs-fehler/'); not work?
Because you check in your if clause if a group with the ID 3 exists. Which of course is always the case since you created it.
-
Re: [solved] Newsletter subscription error on existing user email

10 February 2012 at 6:38am
Thanks Devlin.
The double user issue was clear. See the thread headline ;) The second things was too obviously. ^^
You're right. This condition is always true. My problem is i'm a php-noob. I need a lot more programming exercise to write creative and useful code. The most of the code provided here, im able to read and understand. Thats why i ask for a little coding help.I found this snippet of code http://www.silverstripe.org/all-other-modules/show/15228?start=8#post311707 and tried to adapt it. This checkt the user and sanitize the mailadress. But this piece dont write in the usergroup and the redirection is something weird. (404) I like the idea to set the NewsletterSubscriber as a 'quiet' user and redirect them to a sucess-page or a failure-page. No login should be seen.
Thanks again. Pipifix.
-
Re: [solved] Newsletter subscription error on existing user email

14 February 2012 at 7:05am
[solved]
Hello verybody , hello Devlin.
I found a snippet/tutorial that do exactly what i want so i wana share this with you.
http://www.clickheredigital.co.uk/blog/how-to-include-a-silverstripe-form-on-any-every-page/happy coding. Pipifix
| 324 Views | ||
|
Page:
1
|
Go to Top |


