Ejemplo n.º 1
0
 public function executeEdit($request)
 {
     $userId = sfContext::getInstance()->getUser()->getAttribute('subscriber_id', null, 'subscriber');
     $this->miles = true;
     $this->kilo = false;
     if ($userId) {
         $this->user = UsersPeer::retrieveByPK($userId);
     }
     $this->forward404Unless($this->user);
     if ($this->user) {
         $profile = UserProfilePeer::retrieveByPK($this->user->getUserId());
         if ($profile->getMiles() == 1) {
             $this->miles = true;
             $this->kilo = false;
         } else {
             $this->miles = false;
             $this->kilo = true;
         }
     }
     if (!$profile) {
         $profile = new UserProfile();
         $profile->setUserId($this->user->getUserId());
         $profile->setMiles(1);
     }
     $this->user->setUserProfile($profile);
     if ($request->isMethod('post')) {
         $userName = $this->getRequestParameter('userName');
         $fname = $this->getRequestParameter('fname');
         $lname = $this->getRequestParameter('lname');
         $email = $this->getRequestParameter('email');
         $bday = join("/", $this->getRequestParameter('bday'));
         $weight = $this->getRequestParameter('weight');
         $height = $this->getRequestParameter('height');
         $zip = $this->getRequestParameter('zip');
         $units = $this->getRequestParameter('units');
         $country = $this->getRequestParameter('country');
         $city = $this->getRequestParameter('city');
         $state = $this->getRequestParameter('state');
         //        sfContext::getInstance()->getLogger()->info($message);
         //make sure have profile
         if (!$this->user->getUserProfile()) {
             $profile = UserProfilePeer::retrieveByPK($user->getUserId());
             if ($profile) {
                 $this->user->setUserProfile($profile);
             } else {
                 $profile = new UserProfile();
                 $profile->setUserId($user->getUserId());
                 $profile->setMiles(1);
                 $profile->save();
                 $this->user->setUserProfile($profile);
             }
         }
         // pre-populate country, state and city in order to filter select boxes
         $profile = $this->user->getUserProfile();
         //set up profile data
         $profile->setBirthdate($bday);
         $profile->setWeight($weight);
         $profile->setHeight($height);
         $profile->setZip($zip);
         $profile->setCountry($country);
         $profile->setState($state);
         $profile->setCity($city);
         if ($units && count($units) > 0) {
             $u = $units[0];
             if ($u == "kilo") {
                 $profile->setMiles(0);
             } else {
                 $profile->setMiles(1);
             }
         } else {
             $profile->setMiles(1);
         }
         //set up user
         $this->user->setUsername($userName);
         $this->user->setFname($fname);
         $this->user->setLname($lname);
         $this->user->setEmail($email);
         $this->user->setUserProfile($profile);
         $this->user->save();
         $profile->save();
         //set mileage preference
         $this->getUser()->setAttribute('mileage', $profile->getMiles(), 'subscriber');
         return $this->redirect('users/profile');
     }
 }