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()); }
/** * 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')) { ?>