Exemplo n.º 1
0
 public static function authenticate(User_Form_Login $form)
 {
     // Facebook login
     if ('none' == Engine_Api::_()->getApi('settings', 'core')->core_facebook_enable) {
         $form->removeElement('facebook');
     } else {
         $facebook = self::getFBInstance();
         if ($facebook->getSession()) {
             $form->removeElement('facebook');
             try {
                 $me = $facebook->api('/me');
                 $uid = Engine_Api::_()->getDbtable('Facebook', 'User')->fetchRow(array('facebook_uid = ?' => $facebook->getUser()));
                 if ($uid && $uid->user_id) {
                     if (Engine_Api::_()->user()->getUser($uid->user_id)->getIdentity()) {
                         // already integrated user account; sign in
                         Engine_Api::_()->user()->getAuth()->getStorage()->write($uid->user_id);
                         return true;
                     } else {
                         // no longer a site member
                         $uid->delete();
                         return false;
                     }
                 } else {
                     $notice = Zend_Registry::get('Zend_Translate')->translate('USER_FORM_AUTH_FACEBOOK_NOACCOUNT');
                     $router = Zend_Controller_Front::getInstance()->getRouter();
                     $notice = sprintf($notice, $router->assemble(array(), 'user_signup', true), $router->assemble(array('controller' => 'settings', 'action' => 'general'), 'user_extended', true));
                     $form->addNotice($notice);
                 }
             } catch (Facebook_Exception $e) {
                 $log = Zend_Registry::get('Zend_Log');
                 if ($log) {
                     $log->log($e->__toString(), Zend_Log::WARN);
                 }
             }
         }
     }
 }