PHP Classes
elePHPant
Icontem

File: class.fbinbox.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Nurul Ferdous  >  Facebook Inbox Handler  >  class.fbinbox.php  >  Download  
File: class.fbinbox.php
Role: Class source
Content type: text/plain
Description: Class
Class: Facebook Inbox Handler
Access the inbox of Facebook users
Author: By
Last change: acl changed
Date: 5 years ago
Size: 5,785 bytes
 

Contents

Class file image Download
<?php require_once "lib/php/facebook.php";
/**
 * Facebook Inbox Class
 *
 * Fetch users inbox folders, threads, messages and search inbox
 *
 * @package Facebook
 * @subpackage Libraries
 * @author Nurul Ferdous <nurul.ferdous@gmail.com>
 * @link http://dynamicguy.com
 * @since Version 1.0
 * @license LGPL
 */

class FBInbox {

    private
$_uid; // Logged in user id
   
public $facebook;

   
/**
     * Constructor - Setup application credentials
     *
     * The constructor need to be called with the API key, API secret. It returns the logged in user id
     */
   
public function __construct($apiKey, $apiSecret, $session = true) {
       
$this->facebook = new Facebook($apiKey, $apiSecret, $session);
       
$this->_uid = $this->facebook->require_login();
    }

   
// --------------------------------------------------------------------

    /**
     * Get user's extended permission for reading inbox
     *
     * @access private
     * @return boolean
     */
   
private function _getExtendedPermission() {
        if (!
$this->facebook->api_client->users_hasAppPermission("read_mailbox")) {
            echo
'<fb:prompt-permission perms="read_mailbox">Read Mailbox</fb:prompt-permission>';
        }else {
            return
true;
        }
    }

   
// --------------------------------------------------------------------

    /**
     * Get user's folder informations
     *
     * @access public
     * @return Array
     */
   
public function getFolderInfo() {
        if(
$this->_getExtendedPermission()) {
           
$fql = "SELECT folder_id, name, unread_count, viewer_id FROM mailbox_folder WHERE viewer_id={$this->_uid}";
           
$status = $this->facebook->api_client->fql_query($fql);
            return
$status;
        }else {
            return
false;
        }
    }

   
// --------------------------------------------------------------------

    /**
     * Get user's extended permission for reading inbox
     * Currently, all users only have three Inbox folders: Inbox (folder_id = 0), Outbox (folder_id = 1), and Updates (folder_id = 4)
     * @access public
     * @param $folderId Integer
     * @return Array
     */
   
public function getAllThreads($folderId = 0) {
        if(
$this->_getExtendedPermission()) {
           
$fql = "SELECT thread_id, folder_id, subject, recipients, updated_time, parent_message_id, parent_thread_id, message_count, snippet, snippet_author, object_id, unread, viewer_id FROM thread WHERE folder_id = $folderId AND viewer_id={$this->_uid} LIMIT 20";
           
$threads = $this->facebook->api_client->fql_query($fql);
            return
$threads;
        }else {
            return
false;
        }
    }

   
// --------------------------------------------------------------------

    /**
     * Get user's extended permission for reading inbox
     * Currently, all users only have three Inbox folders: Inbox (folder_id = 0), Outbox (folder_id = 1), and Updates (folder_id = 4)
     * @access public
     * @param $folderId Integer
     * @return Array
     */
   
public function getUnreadThreads($folderId = 0) {
        if(
$this->_getExtendedPermission()) {
           
$fql = "SELECT thread_id, folder_id, subject, recipients, updated_time, parent_message_id, parent_thread_id, message_count, snippet, snippet_author, object_id, unread, viewer_id FROM thread WHERE folder_id = $folderId AND viewer_id={$this->_uid} AND unread != 0 LIMIT 20";
           
$threads = $this->facebook->api_client->fql_query($fql);
            return
$threads;
        }else {
            return
false;
        }
    }

   
// --------------------------------------------------------------------

    /**
     * Get user's extended permission for reading inbox
     * Currently, all users only have three Inbox folders: Inbox (folder_id = 0), Outbox (folder_id = 1), and Updates (folder_id = 4)
     *
     * @access public
     * @param $key String
     * @param $folderId Integer
     * @return Array
     */
   
public function searchInbox($key, $folderId = 0) {
        if(
$this->_getExtendedPermission()) {
           
$fql = "SELECT thread_id, folder_id, subject, recipients, updated_time, parent_message_id, parent_thread_id, message_count, snippet, snippet_author, object_id, unread, viewer_id FROM thread WHERE folder_id = $folderId AND viewer_id={$this->_uid} AND CONTAINS('$key') LIMIT 20";
           
$threads = $this->facebook->api_client->fql_query($fql);
            return
$threads;
        }else {
            return
false;
        }
    }

   
// --------------------------------------------------------------------

    /**
     * Get user's extended permission for reading inbox
     * Currently, all users only have three Inbox folders: Inbox (folder_id = 0), Outbox (folder_id = 1), and Updates (folder_id = 4)
     *
     * @access public
     * @param $threadId Integer
     * @param $messageId Integer
     * @return Array
     */
   
public function readMessage($threadId, $messageId = NULL) {
        if(
$this->_getExtendedPermission()) {
            if(
NULL == $messageId) {
               
$fql = "SELECT message_id, thread_id, author_id, body, created_time, viewer_id FROM message WHERE thread_id = $threadId";
            }else {
               
$fql = "SELECT message_id, thread_id, author_id, body, created_time, viewer_id FROM message WHERE thread_id = $threadId AND message_id = $messageId";
            }
           
$message = $this->facebook->api_client->fql_query($fql);
            return
$message;
        }else {
            return
false;
        }
    }
}