Example #1
0
 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;
 }