<?php

require_once "lib/ProxyAPIClient.php";
$fb_logged_in = FacebookExt::Instance();
//singleton
$this->code = $this->getRequestParameter('code');
$short_lived_access_token = $this->getRequestParameter('access_token');
$fb_logged_in::$arguments['short_lived_access_token'] = $short_lived_access_token;
//this function is called through a proxy design pattern
//Facebook server side flow
if ($this->code) {
    $fb_logged_in::$arguments['code'] = $this->code;
}
$this->user = $fb_logged_in->GetFBLoginStatus();
$this->photo = $fb_logged_in->MyFBPhoto();
 public function get_fb_login_status()
 {
     if (isset(parent::$arguments['short_lived_access_token'])) {
         $access_token = parent::$arguments['short_lived_access_token'];
     }
     if (isset(parent::$arguments['long_lived_access_token'])) {
         $access_token = parent::$arguments['long_lived_access_token'];
     }
     if (!isset($access_token)) {
         return FALSE;
     }
     $config = array();
     $config['appId'] = sfConfig::get('app_facebook_app_id');
     $config['secret'] = sfConfig::get('app_facebook_app_secret');
     $config['fileUpload'] = false;
     // optional
     $facebook = new Facebook($config);
     $facebook->setAccessToken($access_token);
     $access_token = $facebook->getAccessToken();
     //fb_long_lived_token(); //check which multiton key
     $user_id = $facebook->getUser();
     self::$fb_uid = $user_id;
     if ($user_id) {
         // We have a user ID, so probably a logged in user.
         // If not, we'll get an exception, which we handle below.
         try {
             $user_profile = $facebook->api('/me', 'GET');
             $this->email_from_facebook = $user_profile['email'];
             $this->user = Doctrine_Core::getTable('SfGuardUser')->findOneByEmailAddress($this->email_from_facebook);
             //die($this->user);
             //if sfguard doesn't have this user, create it
             if ($this->user == '') {
                 //$this->sync_accounts_maint();
                 $this->create_sf_user($user_profile);
                 $this->user = Doctrine_Core::getTable('SfGuardUser')->findOneByEmailAddress($this->email_from_facebook);
             }
             //return the user so the action can log in the user
             return $this->user;
         } catch (FacebookApiException $e) {
             return $e;
         }
     } else {
         // No user, print a link for the user to login
         //return $facebook->getLoginUrl() . "&redirect_uri=http://".sfConfig::get('app_host_name')."/frontend_dev.php/account/login";
         return FALSE;
     }
     return FALSE;
 }
 static function allInstances()
 {
     return FacebookExt::allInstances();
 }
 public function get_fb_login_status()
 {
     //get access token, exchange code for token
     parent::$arguments['access_token'] = $this->get_fb_access_token();
     //two types of access tokens, short lived and long lived
     //client side flow uses a short lived access token
     if (isset(parent::$arguments['access_token'])) {
         $access_token = parent::$arguments['access_token'];
     } else {
         return FALSE;
     }
     //Facebook SDK config
     $config = array();
     $config['appId'] = $this->fb_app_id;
     $config['secret'] = sfConfig::get('app_facebook_app_secret');
     $config['fileUpload'] = false;
     // optional
     $facebook = new Facebook($config);
     $facebook->setAccessToken($access_token);
     $access_token = $facebook->getAccessToken();
     //fb_long_lived_token(); //check which multiton key
     $user_id = $facebook->getUser();
     self::$fb_uid = $user_id;
     if ($user_id) {
         // We have a user ID, so probably a logged in user.
         // If not, we'll get an exception, which we handle below.
         try {
             $user_profile = $facebook->api('/me', 'GET');
             $this->email_from_facebook = $user_profile['email'];
             $this->user = Doctrine_Core::getTable('SfGuardUser')->findOneByEmailAddress($this->email_from_facebook);
             //if sfguard doesn't have this user, create it
             if ($this->user == '') {
                 //$this->sync_accounts_maint();
                 $this->CreateUser($user_profile);
                 $this->user = Doctrine_Core::getTable('SfGuardUser')->findOneByEmailAddress($this->email_from_facebook);
             }
             //return the user
             return $this->user;
         } catch (FacebookApiException $e) {
             return $e;
         }
     } else {
         return FALSE;
     }
     return FALSE;
     //default
 }