/** * @param $filterChain * @contextValues * - fbSession (session from Facebook) * - * @userValues * - fbuser (user uid) * - me. + $fbuser - user graph /me */ public function execute($filterChain) { $configFromBase = ConfigTable::getInstance()->findAll(); if ($configFromBase) { foreach ($configFromBase->toArray() as $option) { sfConfig::set('conf_' . $option['name'], $option['value']); } } header('P3P: CP="HONK"'); // Execute this filter only once if (!$this->isFirstCall()) { $filterChain->execute(); return; } $context = $this->getContext(); $this->user = $context->getUser(); $this->response = $context->getResponse(); $this->request = $context->getRequest(); $context->getConfiguration()->loadHelpers('Url'); $this->user->setCulture('pl_PL'); if ($this->request->hasParameter('signed_request')) { $this->user->setAttribute('signed_request', $this->request->getParameter('signed_request'), 'signed_request'); } $facebook = FacebookService::getFacebook(); $session = $facebook->getSession(); $nextLink = $this->_generateNextLink($context->getConfiguration()->getApplication()); $loginUrl = $facebook->getLoginUrl(array('canvas' => 1, 'fbconnect' => 0, 'req_perms' => sfConfig::get('app_facebook_permissions'), 'next' => $nextLink)); if (!$session) { if ($this->request->isXMLHttpRequest()) { $context->getResponse()->setHttpHeader("Content-Type", "application/json; charset=utf-8"); echo json_encode(array('status' => 200, 'redirect' => $loginUrl)); exit; } else { $this->_redirectToFacebook($loginUrl); } } $context->set('fbSession', $session); $fbuser = $facebook->getUser(); $this->user->setAttribute('fbuser', $fbuser); if (!$this->user->hasAttribute('me.' . $fbuser)) { try { $me = $facebook->api('/me'); $this->_saveUserData($facebook, $me); $this->user->setAttribute('me.' . $fbuser, $me); } catch (FacebookApiException $e) { $log = LogsService::getInstance($e); $log->fromArray(array('user_id' => $fbuser, 'type' => 'FacebookApi', 'message' => 'Problem with get ME from FB Api')); $log->save(); } } else { $this->getContext()->set('userFromBase', Doctrine_Query::create()->from('Users u')->select('u.*')->where('u.id = ?', $fbuser)->fetchOne()); } $this->userFromBase = $this->getContext()->get('userFromBase'); $this->_controlAccess($this->user->getAttribute('me.' . $fbuser)); $filterChain->execute(); }
public static function userLike($pageId, $userId) { try { $facebook = FacebookService::getFacebook(); $data = $facebook->api('' . $pageId . '/members/' . $userId . ''); if (array_key_exists('0', $data['data'])) { if (count($data['data'][0]) == 2) { return true; } } return false; } catch (FacebookApiException $e) { $log = LogsService::getInstance($e); $log->fromArray(array('user_id' => $userId, 'type' => 'Like Error', 'message' => 'problem with checking whether the user likes page')); $log->save(); return false; } }