Пример #1
0
 public function processAction(Request $req, Application $app)
 {
     $form_data = array('formAction' => '/signup', 'first_name' => $req->get('first_name'), 'last_name' => $req->get('last_name'), 'company' => $req->get('company'), 'twitter' => $req->get('twitter'), 'email' => $req->get('email'), 'password' => $req->get('password'), 'password2' => $req->get('password2'), 'airport' => $req->get('airport'), 'buttonInfo' => 'Create my speaker profile');
     $form_data['speaker_info'] = $req->get('speaker_info') ?: null;
     $form_data['speaker_bio'] = $req->get('speaker_bio') ?: null;
     $form_data['transportation'] = $req->get('transportation') ?: null;
     $form_data['hotel'] = $req->get('hotel') ?: null;
     $form_data['speaker_photo'] = null;
     if ($req->files->get('speaker_photo') !== null) {
         $form_data['speaker_photo'] = $req->files->get('speaker_photo');
     }
     $form = new SignupForm($form_data, $app['purifier']);
     $form->sanitize();
     $isValid = $form->validateAll();
     if ($isValid) {
         $sanitized_data = $form->getCleanData();
         // process the speaker photo
         $this->processSpeakerPhoto($form_data, $app);
         // Remove leading @ for twitter
         $sanitized_data['twitter'] = preg_replace('/^@/', '', $sanitized_data['twitter']);
         // Create account using Sentry
         try {
             $user_data = array('first_name' => $sanitized_data['first_name'], 'last_name' => $sanitized_data['last_name'], 'company' => $sanitized_data['company'], 'twitter' => $sanitized_data['twitter'], 'email' => $sanitized_data['email'], 'password' => $sanitized_data['password'], 'airport' => $sanitized_data['airport'], 'activated' => 1);
             $user = $app['sentry']->getUserProvider()->create($user_data);
             // Add them to the proper group
             $user->addGroup($app['sentry']->getGroupProvider()->findByName('Speakers'));
             // Add in the extra speaker information
             $mapper = $app['spot']->mapper('\\OpenCFP\\Entity\\User');
             $speaker = $mapper->get($user->id);
             $speaker->info = $sanitized_data['speaker_info'];
             $speaker->bio = $sanitized_data['speaker_bio'];
             $speaker->photo_path = $sanitized_data['speaker_photo'];
             $mapper->save($speaker);
             // Set Success Flash Message
             $app['session']->set('flash', array('type' => 'success', 'short' => 'Success', 'ext' => "You've successfully created your account!"));
             return $app->redirect($app['url'] . '/login');
         } catch (UserExistsException $e) {
             $app['session']->set('flash', array('type' => 'error', 'short' => 'Error', 'ext' => 'A user already exists with that email address'));
         }
     }
     if (!$isValid) {
         // Set Error Flash Message
         $app['session']->set('flash', array('type' => 'error', 'short' => 'Error', 'ext' => implode("<br>", $form->getErrorMessages())));
     }
     $template = $app['twig']->loadTemplate('user/create.twig');
     $form_data['flash'] = $this->getFlash($app);
     return $template->render($form_data);
 }
Пример #2
0
 public function processAction(Request $req, Application $app)
 {
     if (!$app['sentry']->check()) {
         return $app->redirect($app['url'] . '/login');
     }
     $user = $app['sentry']->getUser();
     if ($user->getId() !== $req->get('id')) {
         $app['session']->set('flash', array('type' => 'error', 'short' => 'Error', 'ext' => "You cannot edit someone else's profile"));
         return $app->redirect($app['url'] . '/dashboard');
     }
     $form_data = array('email' => $req->get('email'), 'user_id' => $req->get('id'), 'first_name' => $req->get('first_name'), 'last_name' => $req->get('last_name'), 'company' => $req->get('company'), 'twitter' => $req->get('twitter'), 'airport' => $req->get('airport'), 'transportation' => $req->get('transportation'), 'hotel' => $req->get('hotel'), 'speaker_info' => $req->get('speaker_info') ?: null, 'speaker_bio' => $req->get('speaker_bio') ?: null);
     if ($req->files->get('speaker_photo') != null) {
         // Upload Image
         $form_data['speaker_photo'] = $req->files->get('speaker_photo');
     }
     $form = new SignupForm($form_data, $app['purifier']);
     $isValid = $form->validateAll('update');
     if ($isValid) {
         $sanitized_data = $form->getCleanData();
         // Remove leading @ for twitter
         $sanitized_data['twitter'] = preg_replace('/^@/', '', $sanitized_data['twitter']);
         if (isset($form_data['speaker_photo'])) {
             // Move file into uploads directory
             $fileName = uniqid() . '_' . $form_data['speaker_photo']->getClientOriginalName();
             $form_data['speaker_photo']->move(APP_DIR . '/web/' . $app['uploadPath'], $fileName);
             // Resize Photo
             $speakerPhoto = Image::make(APP_DIR . '/web/' . $app['uploadPath'] . '/' . $fileName);
             if ($speakerPhoto->height > $speakerPhoto->width) {
                 $speakerPhoto->resize(250, null, true);
             } else {
                 $speakerPhoto->resize(null, 250, true);
             }
             $speakerPhoto->crop(250, 250);
             // Give photo a unique name
             $sanitized_data['speaker_photo'] = $form_data['first_name'] . '.' . $form_data['last_name'] . uniqid() . '.' . $speakerPhoto->extension;
             // Resize image and destroy original
             if ($speakerPhoto->save(APP_DIR . '/web/' . $app['uploadPath'] . $sanitized_data['speaker_photo'])) {
                 unlink(APP_DIR . '/web/' . $app['uploadPath'] . $fileName);
             }
         }
         $mapper = $app['spot']->mapper('\\OpenCFP\\Entity\\User');
         $user = $mapper->get($user->getId());
         $user->email = $sanitized_data['email'];
         $user->first_name = $sanitized_data['first_name'];
         $user->last_name = $sanitized_data['last_name'];
         $user->company = $sanitized_data['company'];
         $user->twitter = $sanitized_data['twitter'];
         $user->airport = $sanitized_data['airport'];
         $user->transportation = $sanitized_data['transportation'];
         $user->hotel = $sanitized_data['hotel'];
         $user->info = $sanitized_data['speaker_info'];
         $user->bio = $sanitized_data['speaker_bio'];
         $response = $mapper->save($user);
         if ($response == true) {
             $app['session']->set('flash', array('type' => 'success', 'short' => 'Success', 'ext' => "Successfully updated your information!"));
             return $app->redirect($app['url'] . '/profile/edit/' . $form_data['user_id']);
         }
         if ($response == false) {
             $app['session']->set('flash', array('type' => 'error', 'short' => 'Error', 'ext' => "We were unable to update your information. Please try again."));
         }
     } else {
         $app['session']->set('flash', array('type' => 'error', 'short' => 'Error', 'ext' => implode('<br>', $form->getErrorMessages())));
     }
     $form_data['formAction'] = '/profile/edit';
     $form_data['buttonInfo'] = 'Update Profile';
     $form_data['id'] = $user->getId();
     $form_data['user'] = $user;
     $form_data['flash'] = $this->getFlash($app);
     $template = $app['twig']->loadTemplate('user/edit.twig');
     return $template->render($form_data);
 }