/**
  * Save the changes to the form
  */
 function submit($data, $form)
 {
     $bt = defined('DB::USE_ANSI_SQL') ? "\"" : "`";
     $member = Member::currentUser();
     $newMember = false;
     Session::set("FormInfo.Form_Form.data", $data);
     $emailField = new EmailField("Email");
     $emailField->setValue($data["Email"]);
     if ($emailField) {
         if (!$emailField->validate($form->validator)) {
             $form->addErrorMessage("Blurb", $this->ErrorBadEmail, "bad");
             $this->redirectBack();
             return;
         }
     }
     if (!$member) {
         $newMember = true;
         $member = Object::create('Member');
         $form->sessionMessage($this->WelcomeTitle, 'good');
         $id = 0;
     } else {
         $form->sessionMessage($this->ThankYouTitle, 'good');
         $id = $member->ID;
     }
     //validation
     if ($existingMember = Member::get()->filter(array("Email" => Convert::raw2sql($data['Email'])))->exclude(array("ID" => $id))->first()) {
         $form->addErrorMessage("Blurb", $this->ErrorEmailAddressAlreadyExists, "bad");
         return $this->redirectBack();
     }
     // check password fields are the same before saving
     if ($data["Password"]["_Password"] != $data["Password"]["_ConfirmPassword"]) {
         $form->addErrorMessage("Password", $this->ErrorPasswordDoNotMatch, "bad");
         return $this->redirectBack();
     }
     if (!$id && !$data["Password"]["_Password"]) {
         $form->addErrorMessage("Password", $this->ErrorMustSupplyPassword, "bad");
         return $this->redirectBack();
     }
     $password = $member->Password;
     if (isset($data["Password"]["Password"]) && strlen($data["Password"]["Password"]) > 3) {
         $password = $data["Password"]["Password"];
     }
     $form->saveInto($member);
     $member->changePassword($password);
     $member->write();
     if ($newMember) {
         $form->saveInto($member);
         $member->write();
     }
     //adding to group
     $group = Group::get()->filter(array("Code" => self::$register_group_code))->first();
     if ($group) {
         $member->Groups()->add($group);
     }
     if ($newMember) {
         $member->logIn();
         $link = ContentController::join_links($this->Link(), 'welcome');
     } else {
         $link = ContentController::join_links($this->Link(), 'thanks');
     }
     if (!isset($_REQUEST["BackURL"]) && Session::get('BackURL')) {
         $_REQUEST["BackURL"] = Session::get('BackURL');
     }
     if (isset($_REQUEST["BackURL"])) {
         $link = urldecode($_REQUEST["BackURL"]);
         Session::set('BackURL', '');
     }
     if ($link) {
         return $this->redirect($link);
     }
     return array();
 }