예제 #1
0
    public function graph_load_latest_page_data($debug = false)
    {
        // serialise this result into facebook_data.
        if (!$this->facebook_account) {
            echo 'No facebook account linked, please try again';
            return;
        }
        $access_token = $this->get('facebook_token');
        // get the machine id from the parent facebook_account
        $machine_id = $this->facebook_account->get('machine_id');
        if (!$access_token) {
            echo 'No access token for facebook page found';
            return;
        }
        $facebook_page_id = $this->get('page_id');
        if (!$facebook_page_id) {
            echo 'No facebook page id found';
            return;
        }
        if ($debug) {
            echo "Getting the latest page data for FB Page: " . $facebook_page_id . "<br>";
        }
        // we keep a record of the last message received so we know where to stop checking in the FB feed
        $last_message_received = (int) $this->get('last_message');
        if ($debug) {
            echo "The last message we received for this page was on: " . print_date($last_message_received, true) . '<br>';
        }
        $newest_message_received = 0;
        if ($debug) {
            echo "Getting /tagged page posts... <br>";
        }
        $facebook_api = new ucm_facebook();
        $page_feed = $facebook_api->graph('/' . $facebook_page_id . '/tagged', array('access_token' => $access_token, 'machine_id' => $machine_id));
        $count = 0;
        if (isset($page_feed['error']) && !empty($page_feed['error'])) {
            if ($debug) {
                echo " FACEBOOK ERROR : " . $page_feed['error']['message'] . "<br>";
            }
        }
        if (isset($page_feed['data']) && !empty($page_feed['data'])) {
            foreach ($page_feed['data'] as $page_feed_message) {
                if (!$page_feed_message['id']) {
                    continue;
                }
                $message_time = strtotime(isset($page_feed_message['updated_time']) && strlen($page_feed_message['updated_time']) ? $page_feed_message['updated_time'] : $page_feed_message['created_time']);
                $newest_message_received = max($message_time, $newest_message_received);
                if ($last_message_received && $last_message_received >= $message_time) {
                    // we've already processed messages after this time.
                    if ($debug) {
                        echo " - Skipping this message because it was received on " . print_date($message_time, true) . ' and we only want ones after ' . print_date($last_message_received, true) . '<br>';
                    }
                    break;
                } else {
                    if ($debug) {
                        echo ' - storing message received on ' . print_date($message_time, true) . '<br>';
                    }
                }
                // check if we have this message in our database already.
                $facebook_message = new ucm_facebook_message($this->facebook_account, $this, false);
                if ($facebook_message->load_by_facebook_id($page_feed_message['id'], $page_feed_message, 'feed')) {
                    $count++;
                }
                if ($debug) {
                    ?>
					<div>
					<pre> <?php 
                    echo $facebook_message->get('facebook_id');
                    ?>
						<?php 
                    print_r($facebook_message->get('data'));
                    ?>
					</pre>
					</div>
				<?php 
                }
            }
        }
        if ($debug) {
            echo " got {$count} new posts <br>";
        }
        // instead of /feed
        if ($debug) {
            echo "Getting /posts page posts... <br>";
        }
        $facebook_api = new ucm_facebook();
        $page_feed = $facebook_api->graph('/' . $facebook_page_id . '/posts', array('access_token' => $access_token, 'machine_id' => $machine_id));
        $count = 0;
        if (isset($page_feed['error']) && !empty($page_feed['error'])) {
            if ($debug) {
                echo " FACEBOOK ERROR: " . $page_feed['error']['message'] . "<br>";
            }
        }
        if (isset($page_feed['data']) && !empty($page_feed['data'])) {
            foreach ($page_feed['data'] as $page_feed_message) {
                if (!$page_feed_message['id']) {
                    continue;
                }
                $message_time = strtotime(isset($page_feed_message['updated_time']) && strlen($page_feed_message['updated_time']) ? $page_feed_message['updated_time'] : $page_feed_message['created_time']);
                $newest_message_received = max($message_time, $newest_message_received);
                if ($last_message_received && $last_message_received >= $message_time) {
                    // we've already processed messages after this time.
                    if ($debug) {
                        echo " - Skipping this message because it was received on " . print_date($message_time, true) . ' and we only want ones after ' . print_date($last_message_received, true) . '<br>';
                    }
                    break;
                } else {
                    if ($debug) {
                        echo ' - storing message received on ' . print_date($message_time, true) . '<br>';
                    }
                }
                // check if we have this message in our database already.
                $facebook_message = new ucm_facebook_message($this->facebook_account, $this, false);
                if ($facebook_message->load_by_facebook_id($page_feed_message['id'], $page_feed_message, 'feed')) {
                    $count++;
                }
                if ($debug) {
                    ?>
					<div>
					<pre> <?php 
                    echo $facebook_message->get('facebook_id');
                    ?>
						<?php 
                    print_r($facebook_message->get('data'));
                    ?>
					</pre>
					</div>
				<?php 
                }
            }
        }
        if ($debug) {
            echo " got {$count} new posts <br>";
        }
        if ($debug) {
            echo "Getting /conversations inbox messages... <br>";
        }
        // get conversations (inbox) from fb:
        $conversation_feed = $facebook_api->graph('/' . $facebook_page_id . '/conversations', array('access_token' => $access_token, 'machine_id' => $machine_id));
        $count = 0;
        if (isset($conversation_feed['error']) && !empty($conversation_feed['error'])) {
            if ($debug) {
                echo " FACEBOOK ERROR: " . $conversation_feed['error']['message'] . "<br>";
            }
        }
        if (isset($conversation_feed['data']) && !empty($conversation_feed['data'])) {
            foreach ($conversation_feed['data'] as $conversation) {
                if (!$conversation['id']) {
                    continue;
                }
                $message_time = strtotime(isset($conversation['updated_time']) && strlen($conversation['updated_time']) ? $conversation['updated_time'] : $conversation['created_time']);
                $newest_message_received = max($message_time, $newest_message_received);
                if ($last_message_received && $last_message_received >= $message_time) {
                    // we've already processed messages after this time.
                    if ($debug) {
                        echo " - Skipping this message because it was received on " . print_date($message_time, true) . ' and we only want ones after ' . print_date($last_message_received, true) . '<br>';
                    }
                    break;
                } else {
                    if ($debug) {
                        echo ' - storing message received on ' . print_date($message_time, true) . '<br>';
                    }
                }
                // check if we have this message in our database already.
                $facebook_message = new ucm_facebook_message($this->facebook_account, $this, false);
                if ($facebook_message->load_by_facebook_id($conversation['id'], $conversation, 'conversation')) {
                    $count++;
                }
            }
        }
        if ($debug) {
            echo " got {$count} new messages <br>";
        }
        if ($debug) {
            echo "The last message we received for this page was now on: " . print_date($newest_message_received, true) . '<br>';
        }
        if ($debug) {
            echo "Finished checking this page messages at " . print_date(time(), true) . "<br>";
        }
        $this->update('last_message', $newest_message_received);
        $this->update('last_checked', time());
    }
예제 #2
0
/** 
 * Copyright: dtbaker 2012
 * Licence: Please check CodeCanyon.net for licence details. 
 * More licence clarification available here:  http://codecanyon.net/wiki/support/legal-terms/licensing-terms/ 
 * Deploy: 9809 f200f46c2a19bb98d112f2d32a8de0c4
 * Envato: 4ffca17e-861e-4921-86c3-8931978c40ca
 * Package Date: 2015-11-25 02:55:20 
 * IP Address: 67.79.165.254
 */
$social_facebook_id = isset($_REQUEST['social_facebook_id']) ? (int) $_REQUEST['social_facebook_id'] : 0;
$social_facebook_message_id = isset($_REQUEST['social_facebook_message_id']) ? (int) $_REQUEST['social_facebook_message_id'] : 0;
if ($social_facebook_id && $social_facebook_message_id && module_social::can_i('view', 'Facebook Comments', 'Social', 'social')) {
    $facebook = new ucm_facebook_account($social_facebook_id);
    if ($social_facebook_id && $facebook->get('social_facebook_id') == $social_facebook_id) {
        $facebook_message = new ucm_facebook_message($facebook, false, $social_facebook_message_id);
        if ($social_facebook_message_id && $facebook_message->get('social_facebook_message_id') == $social_facebook_message_id && $facebook_message->get('social_facebook_id') == $social_facebook_id) {
            $module->page_title = $facebook->get('facebook_name');
            $comments = $facebook_message->get_comments();
            $facebook_message->mark_as_read();
            ?>

			<form action="" method="post" id="facebook_edit_form">
				<div id="facebook_message_header">
					<div style="float:right; text-align: right; margin-top:-4px;">
						<small><?php 
            echo print_date($facebook_message->get('last_active'), true);
            ?>
 </small><br/>
						<?php 
            if (module_social::can_i('edit', 'Facebook Comments', 'Social', 'social')) {
                ?>