Вход Регистрация
Файл: upload/include/library/facebook/facebook_mobile.php
Строк: 317
<?php
// Copyright 2004-2009 Facebook. All Rights Reserved.
//
// +---------------------------------------------------------------------------+
// | Facebook Platform PHP5 client                                             |
// +---------------------------------------------------------------------------+
// | Copyright (c) 2007 Facebook, Inc.                                         |
// | All rights reserved.                                                      |
// |                                                                           |
// | Redistribution and use in source and binary forms, with or without        |
// | modification, are permitted provided that the following conditions        |
// | are met:                                                                  |
// |                                                                           |
// | 1. Redistributions of source code must retain the above copyright         |
// |    notice, this list of conditions and the following disclaimer.          |
// | 2. Redistributions in binary form must reproduce the above copyright      |
// |    notice, this list of conditions and the following disclaimer in the    |
// |    documentation and/or other materials provided with the distribution.   |
// |                                                                           |
// | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR      |
// | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
// | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.   |
// | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,          |
// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT  |
// | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     |
// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF  |
// | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.         |
// +---------------------------------------------------------------------------+
// | For help with this library, contact developers-help@facebook.com          |
// +---------------------------------------------------------------------------+
//
/**
 *  This class extends and modifies the "Facebook" class to better suit wap
 *  apps. Since there is no javascript support, we need to use server redirect
 *  to implement Facebook connect functionalities such as authenticate,
 *  authorize, feed form etc.. This library provide many helper functions for
 *  wap developer to locate the right wap url. The url here is targed at
 *  facebook wap site or wap-friendly url.
 */
class FacebookMobile extends Facebook {
  
// the application secret, which differs from the session secret

  
public function __construct($api_key$secret$generate_session_secret=false) {
    
parent::__construct($api_key$secret$generate_session_secret);
  }

  public function 
redirect($url) {
    
header('Location: '$url);
  }

  public function 
get_m_url($action$params) {
    
$page parent::get_facebook_url('m'). '/' .$action;
    foreach(
$params as $key => $val) {
      if (!
$val) {
        unset(
$params[$key]);
      }
    }
    return 
$page '?' http_build_query($params);
  }

  public function 
get_www_url($action$params) {
    
$page parent::get_facebook_url('www'). '/' .$action;
    foreach(
$params as $key => $val) {
      if (!
$val) {
        unset(
$params[$key]);
      }
    }
    return 
$page '?' http_build_query($params);
  }

  public function 
get_add_url($next=null) {

    return 
$this->get_m_url('add.php', array('api_key' => $this->api_key,
                                             
'next'    => $next));
  }

  public function 
get_tos_url($next=null$cancel null$canvas=null) {
    return 
$this->get_m_url('tos.php', array('api_key' => $this->api_key,
                                             
'v'       => '1.0',
                                             
'next'    => $next,
                                             
'canvas'  => $canvas,
                                             
'cancel'   => $cancel));
  }

  public function 
get_logout_url($next=null) {
    
$params = array('api_key'     => $this->api_key,
                    
'session_key' => $this->api_client->session_key,
                   );

    if (
$next) {
      
$params['connect_next'] = 1;
      
$params['next'] = $next;
    }

    return 
$this->get_m_url('logout.php'$params);
  }
  public function 
get_register_url($next=null$cancel_url=null) {
    return 
$this->get_m_url('r.php',
      array(
'fbconnect' => 1,
            
'api_key' => $this->api_key,
            
'next' => $next $next parent::current_url(),
            
'cancel_url' => $cancel_url $cancel_url parent::current_url()));
  }
  
/**
   * These set of fbconnect style url redirect back to the application current
   * page when the action is done. Developer can also use the non fbconnect
   * style url and provide their own redirect link by giving the right parameter
   * to $next and/or $cancel_url
   */
  
public function get_fbconnect_register_url() {
    return 
$this->get_register_url(parent::current_url(), parent::current_url());
  }
  public function 
get_fbconnect_tos_url() {
    return 
$this->get_tos_url(parent::current_url(), parent::current_url(), $this->in_frame());
  }

  public function 
get_fbconnect_logout_url() {
    return 
$this->get_logout_url(parent::current_url());
  }

  public function 
logout_user() {
    
$this->user null;
  }

  public function 
get_prompt_permissions_url($ext_perm,
                                             
$next=null,
                                             
$cancel_url=null) {

    return 
$this->get_www_url('connect/prompt_permissions.php',
      array(
'api_key' => $this->api_key,
            
'ext_perm' => $ext_perm,
            
'next' => $next $next parent::current_url(),
            
'cancel' => $cancel_url $cancel_url parent::current_url(),
            
'display' => 'wap'));

  }

  
/**
   * support both prompt_permissions.php and authorize.php for now.
   * authorized.php is to be deprecate though.
   */
  
public function get_extended_permission_url($ext_perm,
                                              
$next=null,
                                              
$cancel_url=null) {
    
$next $next $next parent::current_url();
    
$cancel_url $cancel_url $cancel_url parent::current_url();

    return 
$this->get_m_url('authorize.php',
                      array(
'api_key' => $this->api_key,
                            
'ext_perm' => $ext_perm,
                            
'next' => $next,
                            
'cancel_url' => $cancel_url));

  }

  public function 
render_prompt_feed_url($action_links=NULL,
                                         
$target_id=NULL,
                                         
$message='',
                                         
$user_message_prompt='',
                                         
$caption=NULL,
                                         
$callback ='',
                                         
$cancel='',
                                         
$attachment=NULL,
                                         
$preview=true) {

    
$params = array('api_key'     => $this->api_key,
                    
'session_key' => $this->api_client->session_key,
                   );
    if (!empty(
$attachment)) {
      
$params['attachment'] = urlencode(json_encode($attachment));
    } else {
      
$attachment = new stdClass();
      
$app_display_info $this->api_client->admin_getAppProperties(array('application_name',
                                                                          
'callback_url',
                                                                          
'description',
                                                                          
'logo_url'));
      
$app_display_info $app_display_info;
      
$attachment->name $app_display_info['application_name'];
      
$attachment->caption = !empty($caption) ? $caption 'Just see what'new!';
      $attachment->description = $app_display_info['
description'];
      $attachment->href = $app_display_info['
callback_url'];
      if (!empty($app_display_info['
logo_url'])) {
        $logo = new stdClass();
        $logo->type = '
image';
        $logo->src = $app_display_info['
logo_url'];
        $logo->href = $app_display_info['
callback_url'];
        $attachment->media = array($logo);
      }
      $params['
attachment'] = urlencode(json_encode($attachment));
    }
    $params['
preview'] = $preview;
    $params['
message'] = $message;
    $params['
user_message_prompt'] = $user_message_prompt;
    if (!empty($callback)) {
      $params['
callback'] = $callback;
    } else {
      $params['
callback'] = $this->current_url();
    }
    if (!empty($cancel)) {
      $params['
cancel'] = $cancel;
    } else {
      $params['
cancel'] = $this->current_url();
    }

    if (!empty($target_id)) {
      $params['
target_id'] = $target_id;
    }
    if (!empty($action_links)) {
      $params['
action_links'] = urlencode(json_encode($action_links));
    }

    $params['
display'] = 'wap';
    header('
Location'. $this->get_www_url('connect/prompt_feed.php', $params));
  }

//use template_id
  public function render_feed_form_url($template_id=NULL,
                                       $template_data=NULL,
                                       $user_message=NULL,
                                       $body_general=NULL,
                                       $user_message_prompt=NULL,
                                       $target_id=NULL,
                                       $callback=NULL,
                                       $cancel=NULL,
                                       $preview=true) {

    $params = array('
api_key' => $this->api_key);
    $params['
preview'] = $preview;
    if (isset($template_id) && $template_id) {
      $params['
template_id'] = $template_id;
    }
    $params['
message'] = $user_message ? $user_message['value'] : '';
    if (isset($body_general) && $body_general) {
      $params['
body_general'] = $body_general;
    }
    if (isset($user_message_prompt) && $user_message_prompt) {
      $params['
user_message_prompt'] = $user_message_prompt;
    }
    if (isset($callback) && $callback) {
      $params['
callback'] = $callback;
    } else {
      $params['
callback'] = $this->current_url();
    }
    if (isset($cancel) && $cancel) {
      $params['
cancel'] = $cancel;
    } else {
      $params['
cancel'] = $this->current_url();
    }
    if (isset($template_data) && $template_data) {
      $params['
template_data'] = $template_data;
    }
    if (isset($target_id) && $target_id) {
      $params['
to_ids'] = $target_id;
    }
    $params['
display'] = 'wap';
    header('
Location'. $this->get_www_url('connect/prompt_feed.php', $params));
  }
}
Онлайн: 2
Реклама