Eddz

Untitled

Sep 12th, 2013
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.04 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Campaign\Controller\Plugin;
  4.  
  5. use Zend\Mvc\Controller\Plugin\AbstractPlugin;
  6.  
  7.  
  8. class CampaignPlugin extends AbstractPlugin
  9. {
  10.  
  11.     private static function ifMobileDetect()
  12.     {
  13.         // taken from http://mobiforge.com/developing/story/lightweight-device-detection-php
  14.  
  15.         $mobile = '0';
  16.  
  17.         if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
  18.             $mobile++;
  19.         }
  20.  
  21.         if ((strpos(strtolower($_SERVER['HTTP_ACCEPT']), 'application/vnd.wap.xhtml+xml') > 0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
  22.             $mobile++;
  23.         }
  24.  
  25.         $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 4));
  26.         $mobile_agents = array(
  27.             'w3c ', 'acs-', 'alav', 'alca', 'amoi', 'audi', 'avan', 'benq', 'bird', 'blac',
  28.             'blaz', 'brew', 'cell', 'cldc', 'cmd-', 'dang', 'doco', 'eric', 'hipt', 'inno',
  29.             'ipaq', 'java', 'jigs', 'kddi', 'keji', 'leno', 'lg-c', 'lg-d', 'lg-g', 'lge-',
  30.             'maui', 'maxo', 'midp', 'mits', 'mmef', 'mobi', 'mot-', 'moto', 'mwbp', 'nec-',
  31.             'newt', 'noki', 'oper', 'palm', 'pana', 'pant', 'phil', 'play', 'port', 'prox',
  32.             'qwap', 'sage', 'sams', 'sany', 'sch-', 'sec-', 'send', 'seri', 'sgh-', 'shar',
  33.             'sie-', 'siem', 'smal', 'smar', 'sony', 'sph-', 'symb', 't-mo', 'teli', 'tim-',
  34.             'tosh', 'tsm-', 'upg1', 'upsi', 'vk-v', 'voda', 'wap-', 'wapa', 'wapi', 'wapp',
  35.             'wapr', 'webc', 'winw', 'winw', 'xda ', 'xda-');
  36.  
  37.         if (in_array($mobile_ua, $mobile_agents)) {
  38.             $mobile++;
  39.         }
  40.  
  41.         if (isset($_SERVER['ALL_HTTP'])) {
  42.             if (strpos(strtolower($_SERVER['ALL_HTTP']), 'OperaMini') > 0) {
  43.                 $mobile++;
  44.             }
  45.         }
  46.  
  47.         if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') > 0) {
  48.             $mobile = 0;
  49.         }
  50.  
  51.         return $mobile;
  52.     }
  53.  
  54.     public function facebook($config)
  55.     {
  56.         // DEREK, in order to operate the campaigns through FB, you should uncomment session_start();
  57. //        session_start();
  58.  
  59.         /* GET FACEBOOK WARMED UP */
  60.  
  61.         $facebook = new Facebook($config);
  62.         die('ouaaissss');
  63.         $FacebookInfo = array();
  64.         $FacebookInfo['fbuser'] = FALSE;
  65.         $FacebookInfo['like'] = FALSE;
  66.         $FacebookInfo['isfb'] = FALSE;
  67.         if (self::ifMobileDetect() == 0) {
  68.             if (isset($_REQUEST['signed_request'])) {
  69.                 $FacebookInfo['isfb'] = true;
  70.  
  71.                 function parse_signed_request($signed_request, $secret)
  72.                 {
  73.                     list($encoded_sig, $payload) = explode('.', $signed_request, 2);
  74.  
  75.                     // decode the data
  76.                     $sig = base64_url_decode($encoded_sig);
  77.                     $data = json_decode(base64_url_decode($payload), true);
  78.  
  79.                     if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
  80.                         error_log('Unknown algorithm. Expected HMAC-SHA256');
  81.                         return null;
  82.                     }
  83.  
  84.                     // check sig
  85.                     $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
  86.                     if ($sig !== $expected_sig) {
  87.                         error_log('Bad Signed JSON signature!');
  88.                         return null;
  89.                     }
  90.  
  91.                     return $data;
  92.                 }
  93.  
  94.                 function base64_url_decode($input)
  95.                 {
  96.                     return base64_decode(strtr($input, '-_', '+/'));
  97.                 }
  98.  
  99.                 // GET LOGGED IN USER DETAILS
  100.                 $user = parse_signed_request($_REQUEST['signed_request'], $config['secret']);
  101.                 // var_dump($user);
  102.                 //GET PAGE ID
  103.                 if (isset($user['page']['id'])) {
  104.                     $_SESSION['pageId'] = $user['page']['id'];
  105.                 } else {
  106.                     $_SESSION['pageId'] = false;
  107.                 }
  108.                 $pageId = $_SESSION['pageId'];
  109.  
  110.                 // 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
  111.                 $state = rand(100000, 999999);
  112.                 $redirectUrl = "https%3A%2F%2Fwww.facebook.com%2Fpages%2Fnull%2F$pageId%2Fapp_$appId";
  113.                 $loginUrl = urldecode("https://www.facebook.com/dialog/oauth?client_id=$appId&redirect_url=$redirectUrl&state=$state");
  114.  
  115.                 // SEE IF PAGE IS LIKED
  116.                 if ($user['page']['liked'] != NULL) {
  117.                     $_SESSION['like'] = true;
  118.                 } else {
  119.                     $_SESSION['like'] = false;
  120.                 }
  121.  
  122.                 $FacebookInfo['like'] = $_SESSION['like'];
  123.  
  124.                 //GET USER LANGUAGE
  125.                 $locale = explode('_', $user['user']['locale']);
  126.                 $_SESSION['language'] = $locale[0];
  127.                 $language = $_SESSION['language'];
  128.  
  129.                 //GET USER ID
  130.                 if (isset($user['user_id'])) {
  131.                     $_SESSION['fbuser'] = $user['user_id'];
  132.                 } else {
  133.                     $_SESSION['fbuser'] = false;
  134.                 }
  135.                 $FacebookInfo['fbuser'] = $_SESSION['fbuser'];
  136.  
  137.                 //GET USER NAME
  138.                 if ($FacebookInfo['fbuser'] != false) {
  139.                     $user_info = json_decode(file_get_contents("http://graph.facebook.com/".$FacebookInfo['fbuser']));
  140.                     $_SESSION['name'] = $user_info->name;
  141.                 } else {
  142.                     $_SESSION['name'] = false;
  143.                     return $FacebookInfo;
  144.                 }
  145.                 $name = $_SESSION['name'];
  146.             } else {
  147.                 $FacebookInfo['isfb'] = false;
  148.                 return $FacebookInfo;
  149.             }
  150.         } else {
  151.             $FacebookInfo['isfb'] = false;
  152.             return $FacebookInfo;
  153.         }
  154.     }
  155.  
  156. }
Add Comment
Please, Sign In to add comment