Created
January 29, 2012 00:21
-
-
Save readysetawesome/1696394 to your computer and use it in GitHub Desktop.
Livefyre's WordPress/PHP sync mechanism
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
//on page load the "is this a postback?" filter function runs: | |
function livefyre_comment_update() { | |
if (isset($_GET['lf_wp_comment_postback_request']) && $_GET['lf_wp_comment_postback_request']=='1') { | |
livefyre_do_sync(); | |
// Instruct the backend to use the site sync postback mechanism for future updates. | |
echo "{\"status\":\"ok\",\"message\":\"sync-initiated\"}"; | |
exit; | |
} | |
} | |
function livefyre_do_sync() { | |
/*fetch 200 comments from the livefyre server, providing last activity id we have | |
schedule the next sync if we get a full 200. if there are no more comments, no new sync | |
*/ | |
$max_activity = livefyre_get_activity_id(); //the last activity_id from the last sync you did | |
if ($max_activity == null) { | |
$final_path_seg=''; | |
} else { | |
$final_path_seg=$max_activity.'/'; | |
} | |
$url=livefyre_site_rest_url().'/sync/'.$final_path_seg; | |
$sigcreated_param='sig_created='.time(); | |
$key=get_option('livefyre_secret'); | |
$url.='?'.$sigcreated_param.'&sig='.urlencode(getHmacsha1Signature(base64_decode($key), $sigcreated_param)); | |
$str_comments=livefyre_request($url); | |
$json_array=json_decode($str_comments); | |
if (!is_array($json_array)) { | |
// error reporting confirmed | |
return; | |
} | |
foreach ($json_array as $json) { | |
if ($json->message_type=='more-data') { | |
livefyre_schedule_sync(true); //schedule a new job almost immediately using WordPress's cron mechanism | |
return; | |
} else if ($json->message_type=='lf-activity') { | |
$comment_date =(int) $json->created; | |
$comment_date = get_date_from_gmt(date('Y-m-d H:i:s', $comment_date)); | |
$data = array( | |
'lf_activity_id' => $json->activity_id, | |
'lf_action_type' => $json->activity_type, | |
'comment_post_ID' => $json->article_identifier, | |
'comment_author' => $json->author, | |
'comment_author_email' => $json->author_email, | |
'comment_author_url' => $json->author_url, | |
'comment_type' => '', | |
'lf_comment_parent' => $json->lf_parent_id, | |
'lf_comment_id' => $json->lf_comment_id, | |
'user_id' => null, | |
'comment_author_IP' => $json->author_ip, | |
'comment_agent' => 'Livefyre, Inc. Comments Agent', | |
'comment_date' => $comment_date, | |
'lf_state' => $json->state | |
); | |
if (isset($json->wp_comment_id)) { | |
$data['wp_comment_id']=$json->wp_comment_id; | |
} | |
if (isset($json->body_text)) { | |
$data['comment_content'] = $json->body_text; | |
} | |
livefyre_insert_activity($data); | |
} | |
} | |
livefyre_schedule_sync(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment