/**
  * Get Local Expert populated with info from Facebook account
  *
  * @param string $code
  * @return LocalAuthor
  */
 public function getFBPrefilledLocalAuthor($fbInfo)
 {
     $localAuthor = new LocalAuthor();
     $localAuthor->setFirstName($fbInfo['firstName']);
     $localAuthor->setLastName($fbInfo['lastName']);
     $localAuthor->setPassword(null);
     return $localAuthor;
 }
 public function indexAction(Request $request)
 {
     $session = $this->getRequest()->getSession();
     if (!$session->has('redirect')) {
         $session->set('redirect', $request->headers->get('referer'));
     }
     $securityContext = $this->get('security.context');
     if ($securityContext->isGranted('IS_AUTHENTICATED_FULLY')) {
         return new RedirectResponse($this->generateUrl('buggl_homepage'));
     }
     $session = $this->getRequest()->getSession();
     $token = $request->get('ref', '');
     if (!empty($token)) {
         $session->set('invitation_token', $token);
     }
     $facebookRegistrationUrl = $this->generateUrl('signup_via_facebook_url');
     $twitterRegistrationUrl = $this->generateUrl('signup_via_twitter_url');
     $googlePlusRegistrationUrl = $this->generateUrl('signup_via_google_plus_url');
     $localAuthor = new LocalAuthor();
     if ($session->get('via_modal')) {
         $email = $session->remove('email');
         $firstName = $session->remove('first_name');
         $lastName = $session->remove('last_name');
         $localAuthor->setEmail($email);
         $localAuthor->setFirstName($firstName);
         $localAuthor->setLastName($lastName);
         $session->remove('via_modal');
     }
     $form = $this->createForm(new LocalAuthorType(0), $localAuthor);
     $response = $this->handleRegistration($request, $form);
     if (!is_null($response)) {
         return $response;
     }
     $slug = substr(strrchr($request->getUri(), "/"), 1);
     $metas = $this->get('buggl_seo.static_page')->buildMetaAttributes($slug);
     $googleApiKey = $this->get('buggl_main.constants')->get('google_maps_api_key');
     $data = array('form' => $form->createView(), 'googleApiKey' => $googleApiKey, 'facebookRegistrationUrl' => $facebookRegistrationUrl, 'twitterRegistrationUrl' => $twitterRegistrationUrl, 'googlePlusRegistrationUrl' => $googlePlusRegistrationUrl, 'requirePassword' => true, 'metas' => $metas);
     return $this->render('BugglMainBundle:Frontend/Registration:registration.html.twig', $data);
 }
 public function __sleep()
 {
     return array_merge(array('__isInitialized__'), parent::__sleep());
 }
 public function getAllNotInLocalSecretsByType(\Buggl\MainBundle\Entity\EGuide $eGuide, LocalAuthor $author, $type, $offset = 0, $limit = 0)
 {
     $typeClause = !is_null($type) ? 'AND sd.spot_type_id = ?' : '';
     $sql = "SELECT sd . *\n\t\t\t\t\tFROM `spot_detail` AS sd\n\t\t\t\t\tWHERE 1\n\t\t\t\t\t\tAND sd.local_author_id = ?\n\t\t\t\t\t\tAND sd.id NOT IN (\n\t\t\t\t\t\t\tSELECT egts.spot_detail_id\n\t\t\t\t\t\t\tFROM e_guide_to_spot_detail AS egts\n\t\t\t\t\t\t\tWHERE egts.e_guide_id = ?\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{$typeClause}";
     // echo $sql;
     $params = array($author->getId(), $eGuide->getId());
     if (!is_null($type)) {
         $params = array_merge($params, array($type->getId()));
     }
     if ($limit > 0) {
         $sql .= " LIMIT ?,?";
         $params = array_merge($params, array($offset, $limit));
     }
     $spotDetails = $this->executeNativeQuery($sql, $params);
     return $spotDetails;
 }
 public function registerLocalAuthor($data)
 {
     $password = isset($data['password']['first']) ? $this->encoder->encodePassword($data['password']['first'], '') : null;
     $email = isset($data['fbId']) ? $data['email'] : $data['email']['first'];
     $localAuthor = new LocalAuthor();
     $localAuthor->setFirstName($data['firstName']);
     $localAuthor->setLastName($data['lastName']);
     $localAuthor->setEmail($email);
     $localAuthor->setPassword($password);
     $localAuthor->setEmailVerified(1);
     // (isset($data['fbEmail']) && $email == $data['fbEmail']) ?  $this->constants->get('EMAIL_VERIFIED') : $this->constants->get('EMAIL_UNVERIFIED')
     $localAuthor->setIsLocalAuthor($data['type']);
     $localAuthor->setDateJoined(new \DateTime(date('Y-m-d H:i:s')));
     $localAuthor->setStatus(0);
     $localAuthor->setStreetCredit(0);
     $localAuthor->setIsApproved(1);
     $localAuthor->setIsBetaParticipant(isset($data['betaToken']));
     $localAuthor->setLastActive(new \DateTime(date('Y-m-d H:i:s')));
     $localAuthor->setLastInactiveNotificationSent(new \DateTime(date('Y-m-d H:i:s')));
     $this->entityManager->persist($localAuthor);
     $bypassLocation = true;
     if ($data['type'] == 1 and !$bypassLocation) {
         // this is in preparation for when location would be non-required : Nash Lesigon - May 8, 2014
         if (strlen(trim($data['country'])) && strlen(trim($data['city']))) {
             $location = new Location();
             $location->setLocalAuthor($localAuthor);
             // find city by name, if not found create new city
             // data['city], data['country']
             $country = $this->entityManager->getRepository('BugglMainBundle:Country')->findOneByName($data['country']);
             if (!is_null($country)) {
                 $city = $this->entityManager->getRepository('BugglMainBundle:City')->findOneBy(array('name' => $data['city'], 'country' => $country));
                 if (is_null($city)) {
                     $city = new City();
                     $city->setCountry($country);
                     $city->setName($data['city']);
                     $this->entityManager->persist($city);
                 }
                 $location->setCity($city);
                 $this->entityManager->persist($location);
             }
         }
     }
     $this->entityManager->flush();
     $profile = new Profile();
     $profile->setLocalAuthor($localAuthor);
     if (isset($data['fbId'])) {
         $this->socialMediaService->saveFacebookInfo($data, $localAuthor);
         $tempPath = 'uploads/profile_pics';
         $uploadRootDir = $this->serviceContainer->get('kernel')->getRootdir() . '/../web/' . $tempPath;
         $filename = 'fb_' . $data['fbId'] . '.jpg';
         copy('https://graph.facebook.com/' . $data['fbId'] . '/picture?width=285&height=285', $uploadRootDir . '/' . $filename);
         $profile->setProfilePic($filename);
         $profile->setWork($data['fbWork']);
         $profile->setBirthDate($data['fbBirthday']);
         $this->entityManager->persist($profile);
         $this->entityManager->flush();
     } else {
         if (isset($data['twitterId'])) {
             $this->socialMediaService->saveTwitterInfo($data, $localAuthor);
         } else {
             if (isset($data['googlePlusId'])) {
                 $this->socialMediaService->saveGooglePlusInfo($data, $localAuthor);
             } else {
                 $this->entityManager->persist($profile);
                 $this->entityManager->flush();
             }
         }
     }
     return $localAuthor;
 }