public function executeSignup($request) { // check invite id $this->invite = InvitePeer::getFromField(InvitePeer::ID, $request->getParameter('invite_id')); if (!$this->invite) { $this->invite = InvitePeer::getFromField(InvitePeer::ID, $this->getUser()->getInviteId()); } if ($request->isMethod('post')) { $this->form = new SignupForm(); // process signup $this->form->bind($request->getParameter('signup')); if ($this->form->isValid()) { $user = new User(); $profile = new Profile(); $email = new Email(); $tag = new Tag(); // setup profile $profile->setFirstName($this->form->getValue('first_name')); $profile->setLastName($this->form->getValue('last_name')); // set prefered language $current_language = LanguagePeer::retrieveByCulture($this->getUser()->getCulture()); if (!$current_language) { $current_language = LanguagePeer::getDefaultLanguage(); } $profile->setLanguage($current_language); // set email $email->setEmail($this->form->getValue('email')); $email->setIsConfirmed(false); $email->setIsPrimary(true); $email->setConfirmCode($email->generateConfirmCode()); $email->setType(ContactPeer::TP_PERSONAL); // setup new user $user->setPasswd($this->form->getValue('password')); // add profile and contact to user $user->addProfile($profile); $user->addEmail($email); if ($this->invite) { $user->setUserRelatedByInvitedBy($this->invite->getUser()); // add jotags to bookmark if ($this->invite->getInviteTagsJoinTag()) { foreach ($this->invite->getInviteTagsJoinTag() as $tagbm) { // add to bookmark $b = new Bookmark(); $b->setTag($tagbm->getTag()); $user->addBookmark($b); } } // delete invite from db $this->invite->delete(); // add initial credit to the user $user->setCredits(OptionPeer::retrieveOption('BONUS_INVITE_CREDIT')); } else { $user->setCredits(OptionPeer::retrieveOption('BONUS_INIT_CREDIT')); } // save $user->save(); $this->getUser()->clearInviteId(); // generate JOTAG. We must do it after save because we use ID in the algorithm $tag->setJotag($user->generateRandomJOTAG()); $tag->setIsPrimary(true); $tag->setStatus(TagPeer::ST_NEW); $tag->setBadge(BadgePeer::getDefaultBadge()); $tag->setUser($user); // link primary email to tag $tm = new TagEmail(); $tm->setEmail($email); $tag->addTagEmail($tm); // save new tag $tag->save(); // send confirmation email Mailer::sendEmail($email->getEmail(), 'signupConfirmation', array('user' => $user, 'email' => $email), $user->getPreferedLanguage()); $this->setMessage("SIGNUP", "SUCCESS", array($email->getEmail())); if (!$this->isWebserviceCall()) { $this->redirect('@homepage'); } } } else { $first = $last = $email = ""; if ($this->invite) { // pre-populate first/last name, if available from invite $first = $this->invite->getFirstName(); $last = $this->invite->getLastName(); $email = $this->invite->getEmail(); } $this->form = new SignupForm(array('first_name' => $first, 'last_name' => $last, 'email' => $email)); // set invite id, if available $this->getUser()->setInviteId($this->invite ? $this->invite->getId() : null); } }
public function actionProfile() { $name = ''; $sname = ''; $phone = ''; $country = ''; $region = ''; $city = ''; $address = ''; $index = ''; $userId = ''; $user = new User(); $result = false; if (isset($_POST['add_profile'])) { $name = $_POST['u_name']; $sname = $_POST['u_sname']; $phone = $_POST['u_phone']; $country = $_POST['u_country']; $region = $_POST['u_region']; $city = $_POST['u_city']; $address = $_POST['u_address']; $index = $_POST['u_index']; $userId = $user->getUserById($user->isUser()); $errors = false; if (!User::checkName($name)) { $errors[] = 'Имя должно быть более 2-х символов'; } if (!User::checkSname($sname)) { $errors[] = 'Фамилия должна быть более 2-х символов'; } if (!User::checkPhone($phone)) { $errors[] = 'Телефон должен быть более 7-ми символов'; } if (!User::checkCountry($country)) { $errors[] = 'Страна должна быть более 2-х символов'; } if (!User::checkRegion($region)) { $errors[] = 'Область должна быть более 2-х символов'; } if (!User::checkCity($city)) { $errors[] = 'Город должен быть более 2-х символов'; } if (!User::checkAddress($address)) { $errors[] = 'Адрес должен быть более 5-ти символов'; } if (!User::checkIndex($index)) { $errors[] = 'Индекс должен быть более 4-х символов'; } if ($errors == false) { $result = $user->addProfile($name, $sname, $phone, $country, $region, $city, $address, $index, $userId['id']); header("Location: /"); } } require_once ROOT . '/views/user/profile.php'; return true; }