Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Campaign\Controller\Plugin;
- use Zend\Mvc\Controller\Plugin\AbstractPlugin;
- class CampaignPlugin extends AbstractPlugin
- {
- private static function ifMobileDetect()
- {
- // taken from http://mobiforge.com/developing/story/lightweight-device-detection-php
- $mobile = '0';
- if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
- $mobile++;
- }
- if ((strpos(strtolower($_SERVER['HTTP_ACCEPT']), 'application/vnd.wap.xhtml+xml') > 0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
- $mobile++;
- }
- $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 4));
- $mobile_agents = array(
- 'w3c ', 'acs-', 'alav', 'alca', 'amoi', 'audi', 'avan', 'benq', 'bird', 'blac',
- 'blaz', 'brew', 'cell', 'cldc', 'cmd-', 'dang', 'doco', 'eric', 'hipt', 'inno',
- 'ipaq', 'java', 'jigs', 'kddi', 'keji', 'leno', 'lg-c', 'lg-d', 'lg-g', 'lge-',
- 'maui', 'maxo', 'midp', 'mits', 'mmef', 'mobi', 'mot-', 'moto', 'mwbp', 'nec-',
- 'newt', 'noki', 'oper', 'palm', 'pana', 'pant', 'phil', 'play', 'port', 'prox',
- 'qwap', 'sage', 'sams', 'sany', 'sch-', 'sec-', 'send', 'seri', 'sgh-', 'shar',
- 'sie-', 'siem', 'smal', 'smar', 'sony', 'sph-', 'symb', 't-mo', 'teli', 'tim-',
- 'tosh', 'tsm-', 'upg1', 'upsi', 'vk-v', 'voda', 'wap-', 'wapa', 'wapi', 'wapp',
- 'wapr', 'webc', 'winw', 'winw', 'xda ', 'xda-');
- if (in_array($mobile_ua, $mobile_agents)) {
- $mobile++;
- }
- if (isset($_SERVER['ALL_HTTP'])) {
- if (strpos(strtolower($_SERVER['ALL_HTTP']), 'OperaMini') > 0) {
- $mobile++;
- }
- }
- if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') > 0) {
- $mobile = 0;
- }
- return $mobile;
- }
- public function facebook($config)
- {
- // DEREK, in order to operate the campaigns through FB, you should uncomment session_start();
- // session_start();
- /* GET FACEBOOK WARMED UP */
- $facebook = new Facebook($config);
- die('ouaaissss');
- $FacebookInfo = array();
- $FacebookInfo['fbuser'] = FALSE;
- $FacebookInfo['like'] = FALSE;
- $FacebookInfo['isfb'] = FALSE;
- if (self::ifMobileDetect() == 0) {
- if (isset($_REQUEST['signed_request'])) {
- $FacebookInfo['isfb'] = true;
- function parse_signed_request($signed_request, $secret)
- {
- list($encoded_sig, $payload) = explode('.', $signed_request, 2);
- // decode the data
- $sig = base64_url_decode($encoded_sig);
- $data = json_decode(base64_url_decode($payload), true);
- if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
- error_log('Unknown algorithm. Expected HMAC-SHA256');
- return null;
- }
- // check sig
- $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
- if ($sig !== $expected_sig) {
- error_log('Bad Signed JSON signature!');
- return null;
- }
- return $data;
- }
- function base64_url_decode($input)
- {
- return base64_decode(strtr($input, '-_', '+/'));
- }
- // GET LOGGED IN USER DETAILS
- $user = parse_signed_request($_REQUEST['signed_request'], $config['secret']);
- // var_dump($user);
- //GET PAGE ID
- if (isset($user['page']['id'])) {
- $_SESSION['pageId'] = $user['page']['id'];
- } else {
- $_SESSION['pageId'] = false;
- }
- $pageId = $_SESSION['pageId'];
- // THESE VARIABLES CAN BE USED TO SEND THE USER BACK TO THE APP WHEN BEING LOGGED IN / APPROVING APP / OTHER TRICKERY WHERE THEY HAVE TO LEAVE THE SITE
- $state = rand(100000, 999999);
- $redirectUrl = "https%3A%2F%2Fwww.facebook.com%2Fpages%2Fnull%2F$pageId%2Fapp_$appId";
- $loginUrl = urldecode("https://www.facebook.com/dialog/oauth?client_id=$appId&redirect_url=$redirectUrl&state=$state");
- // SEE IF PAGE IS LIKED
- if ($user['page']['liked'] != NULL) {
- $_SESSION['like'] = true;
- } else {
- $_SESSION['like'] = false;
- }
- $FacebookInfo['like'] = $_SESSION['like'];
- //GET USER LANGUAGE
- $locale = explode('_', $user['user']['locale']);
- $_SESSION['language'] = $locale[0];
- $language = $_SESSION['language'];
- //GET USER ID
- if (isset($user['user_id'])) {
- $_SESSION['fbuser'] = $user['user_id'];
- } else {
- $_SESSION['fbuser'] = false;
- }
- $FacebookInfo['fbuser'] = $_SESSION['fbuser'];
- //GET USER NAME
- if ($FacebookInfo['fbuser'] != false) {
- $user_info = json_decode(file_get_contents("http://graph.facebook.com/".$FacebookInfo['fbuser']));
- $_SESSION['name'] = $user_info->name;
- } else {
- $_SESSION['name'] = false;
- return $FacebookInfo;
- }
- $name = $_SESSION['name'];
- } else {
- $FacebookInfo['isfb'] = false;
- return $FacebookInfo;
- }
- } else {
- $FacebookInfo['isfb'] = false;
- return $FacebookInfo;
- }
- }
- }
Add Comment
Please, Sign In to add comment