Beispiel #1
0
 public function init()
 {
     self::$user = $this->getUser();
     if (!osc_is_web_user_logged_in()) {
         self::$loginUrl = self::$facebook->getLoginUrl(array('scope' => 'email'));
     }
     if (!self::$user) {
         return self::$facebook;
     }
     try {
         self::$user_profile = self::$facebook->api('/me');
         $this->dao->select($this->getFields());
         $this->dao->from($this->getTableName());
         $this->dao->where('i_facebook_uid', self::$user);
         $rs = $this->dao->get();
         if ($rs !== false && $rs->numRows() === 1) {
             $fbUser = $rs->row();
             if (count($fbUser) > 0) {
                 require_once osc_lib_path() . 'osclass/UserActions.php';
                 $uActions = new UserActions(false);
                 $logged = $uActions->bootstrap_login($fbUser['fk_i_user_id']);
                 switch ($logged) {
                     case 0:
                         osc_add_flash_error_message(__('The username doesn\'t exist', 'facebook'));
                         break;
                     case 1:
                         osc_add_flash_error_message(__('The user has not been validated yet', 'facebook'));
                         break;
                     case 2:
                         osc_add_flash_error_message(__('The user has been suspended', 'facebook'));
                         break;
                     case 3:
                         //osc_add_flash_ok_message( __( 'Login successfull', 'facebook' ) );
                         break;
                 }
                 return self::$facebook;
             }
         }
         if (!isset(self::$user_profile['email'])) {
             osc_add_flash_error_message(__('Some error occured trying to connect with Facebook.', 'facebook'));
             header('Location: ' . self::$logoutUrl);
             exit;
         }
         $manager = User::newInstance();
         $oscUser = $manager->findByEmail(self::$user_profile['email']);
         // exists on our DB, we merge both accounts
         if (count($oscUser) > 0) {
             require_once osc_lib_path() . 'osclass/UserActions.php';
             $uActions = new UserActions(false);
             $manager->dao->from($this->getTableName());
             $manager->dao->set('fk_i_user_id', $oscUser['pk_i_id']);
             $manager->dao->set('i_facebook_uid', self::$user_profile['id']);
             $manager->dao->insert();
             osc_add_flash_ok_message(__("You already have an user with this e-mail address. We've merged your accounts", 'facebook'));
             // activate user in case is not activated
             $manager->update(array('b_active' => '1'), array('pk_i_id' => $oscUser['pk_i_id']));
             $logged = $uActions->bootstrap_login($oscUser['pk_i_id']);
         } else {
             // Auto-register him
             $this->register_user(self::$user_profile);
         }
         // redirect to log in
         header('Location: ' . osc_base_url());
         exit;
     } catch (FacebookApiException $e) {
         self::$user = null;
     }
     return self::$facebook;
 }